kolmapäev, 13. jaanuar 2010

timefield jQuery plugin

Tegin uue jQuery plugina, mis võimaldab luua Facebook stiilis ajainfo tekste - ehk selliseid mis uuendavad end ise. Näiteks kui jätad lehe lahti, siis 10 minuti pärast ei ole lehel tekst "lisatud 8 sekundit tagasi", vaid "lisatud 10 minutit tagasi" nii nagu peab.

Dokumentatsiooni ja lähtekoodi leiab Google Code lehelt. Demo saab näha siit.

Mõtlesin küll Google Code asemel Githubi kasutada, aga kogu see täiendav majandamine (võtmete genereerimine, kohalik ja globaalne checkout jne) tundus nii väikse jupi jaoks liiga tüütu. SVN on ses suhtes minu meelest mugavam.

jQuery jaoks on plugin seetõttu, et jQueryl on olemas vastav "ökosüsteem". Ma isiklikult eelistan Prototype't, aga selle jaoks tehtud pluginaid ei ole kuskile ühtsesse kohta võimalik üles laadida.

2 kommentaari:

Rene Saarsoo ütles ...

Midagi väga sarnast postitas John Resig kunagi ammu. Ja mul on tunne, et ma olen sellest veel ka mingit edasiarendust näinud, aga ei tule kohe teps mitte meelde kus ja millal see võis olla.

Igatahes näen ma sinu lahenduses mõningaid probleeme:

UNIXi timestampid pole vähemasti minu jaoks kuigi kergesti loetavad. Ka tühjad span-elemendid on raskesti loetavad kui JavaScript on välja lülitatud. Palju parem oleks mu meelest kasutada juba väljatöötatud mikroformaati.

Erinevate keelte tugi on muidugi tervitatav. Kahjuks pole kõik keeled nii lihtsate mitmusevormidega kui eesti ja inglise. Näiteks vene keeles on kolm mitmuse vormi.

Samuti ei saa ma nõus olla sellega, et su kood näikse aasta pikkuseks arvavat 365 päeva. Antud kontekstis on see ehk juuksekarva lõhki ajamine, aga siiski. 365.25 on enamasti aktsepteeritav täpsus.

Umbes aasta tagasi sai ise kirjutatud väike ajavahemike formaatimise vahend jintervals. See katsub lahendada seda ajavahemike esitamise probleemi natuke laiemalt ja natuke teise nurga alt, aga osaliselt funktsionaalsus sinu timefield'iga kattub. Kuid eks temalgi ole omad probleemid. Kogu aeg olen pidanud plaani selle edasiarendamiseks, aga nood plaanitud edasiarendused nõuavad päris suuri ümberehitusi, mistõttu on see projekt veninud.

Võibolla pakub huvi...

Andris ütles ...

Suur tänu sisuka kommentaari eest!

Resigi versiooniga ma pole tuttav. Niiöelda professionaalsest huvist hoian muidugi Resigi blogil kergelt silma peal, aga kuna pole suurem asi jQuery huviline (põhjustest võibolla kunagi hiljem, pealegi otsus timefield just jQuery pluginana välja panna tuli faktist, et jQuery lehel on lisamise võimalus olemas, aga Prototype lehel mitte - ma ise kasutan samast asjast just Prototype versiooni), siis päris kõike Resigi avaldatut ei tea.

Otsus vormindatud ajastringi asemel timestampi kasutada (eriti arvestades kui kergesti on bugid tekkima unixi ja javascripti timestampide vahel teisendamisel, kuskil läheb ikka meelest tuhandega korrutamine või jagamine) tuli faktist, et see oli ainus triviaalne viis lisada vastavat infot elemendile, ilma title tag'i kasutamata. Mulle mõningatel põhjustel ei sobinud see title kohe üldse kuna hiirega elemendi peal olles tekib tooltip ja seda mul polnud vaja. class tag'is aga ei saa vormindatud teksti kasutada.