2006-11-20

Dojo dátumválasztó agyműtét

Még mindig Dojo. Két baj volt a DropdownDatePicker-rel ami miatt bele kellett kicsit másznom a kódba. Az egyik, hogy ha érvénytelen értéket írok bele a HTML-ben, akkor hülyén jelenik meg a dátumválasztó (mindenhol NaN van), márpedig nem ártana ha megjelenítené azt az érvénytelen értéket is a szövegmezőben, a dátumválasztó komponensben meg pl. a mai napot. A másik, hogy a 0.3-0.4 verzióváltás egy kicsit döcögősre sikerült. Megváltoztak mezők nevei (date-value, displazFormat-dateFormat) és senki sem védi meg tőle a doksikkal nem elhalmozott programozót hogy keverve használja ezeket a dolgokat.

Állítólag az első problémát már próbálják orvosolni a 0.4.1-re, de nem nagyon bízom benne hogy úgy sikerül ahogy kellene neki. A repo-ban is olyat olvastam, hogy valaki bekommitolt valamit, a másik kipróbálta és nem működött. Verziók...

Szóval a következőt csinálja ez a dropdowndatepicker:

  1. A value mezőből kiolvassa a string értéket és megpróbálja dátummá konvertálni. Próbálja Rfc3339-es (yyyy-mm-dd) formátumban is meg más formátumban is. Közben warningol, mert Rfc3339 lesz a támogatott 0.5-től és senki sem azt használja. Ha sikerül neki a parse-olás akkor a value változóban egy szép érvényes dátum objektum lesz, ha nem sikerül akkor egy érvénytelen dátum. (Ami baj, mert máris elveszett az eredetileg beírt érték.)
  2. Ezután a dátum szerint beállítja a dátumválasztó komponenst. Ha érvénytelen volt a dátum, mindenhol NaN lesz.
  3. Végül a dátumválasztó állapota szerint visszaírja a szövegmezőbe a dátumot a megadott formátummal. Tehát ha véletlenül megmaradt volna az érvénytelen érték, még itt is felülvágná.
Ráadásul Post-olás előtt, ha érvénytelen dátum van a szövegmezőben, akkor felülvágja a komponensen kiválasztott dátummal, de ez csak a 0.4-es verzióban támogatott displayFormat használatánál jelentkezik. Van is egy szép TODO komment ezzel kapcsolatban a forrásban.

Szóval a következő helyeken nyúltam bele az agyába:

  • Ha a kiolvasásnál nem tudja dátummá konvertálni, nem ír vissza érvénytelen dátumot, hanem magát a string-et írja vissza.
  • Ha a dátumválasztó komponens beállítása előtt érzékeli hogy a value típusa string, a komponensen a mai napot jeleníti meg.
  • Ha a value típusa string, nem frissíti a szövegmezőt a komponens értéke szerint (mai nap).

Ha lenne attach-olási lehetőség, beraknám ide a kódot.

2006-11-03

This page contains both secure and nonsecure items, dojo 0.3

Csináltam egy SSL-en keresztül működő webalkalmazást amiben egy javascript frameworköt használtam. Az Exploreres felhasználók beszóltak, hogy minden egyes kattintásra egy kedves "This page contains both secure and nonsecure items" figyelmeztető ablak jelenik meg, és ez nem jó.

Szerencsére kéznél volt a Google, beírtam a figyelmeztető üzenet szövegét és már jöttek is a találatok, köztük ez a link, ami szépen -ábrákkal tűzdelve- leírja, hogy mit kell beállítani az exploreren.

Feljött még egy fórumos találat, amiben leírták, hogy ez azért van, mert az alkalmazás SSL-en keresztül megy, de lehet hogy valahol belül HTTP hivatkozást használ HTTPS helyett. Valami iframe-s témát is emlegettek és valaki leírta, hogy ő olyan webalkalmazást csinál, amit több ezren használnak és kicsit durva lenne minden felhasználónak leveleket küldözgetni. Illetve főleg azok a felhasználók lehetnek problémásak akik ennél komolyabb leveleket szoktak kapni, pl. vezérigazgató.

Szóval frankó lett volna egy olyan megoldás amit a szerveren programozással meg lehet oldani, de biztos voltam benne, hogy minden hivatkozást relatíven adtam meg, tehát nálam minden HTTPS volt. A javascript keretrendszerben lehet a kutya elásva, ami Dojo. Egészen pontosan Dojo 0.3.1

Nos, azt hittem itt további trükközésekről, kód és fórumbányászatról fogok írni, de nem: Letöltöttem a Dojo 0.4-et és működött. (Működik.)

2006-10-26

Dojo 0.4

Kijött a Dojo 0.4-es verziója, bele is raktam az éppen aktuális projektbe a 0.3 verzió helyett. Ez ugye elvileg úgy megy java webalkalmazás esetén, hogy bele kell tenni a dojo src könyvtárát a webalkalmazás WEB-INF könyvtárába. Verziókövető rendszer szempontjából ez kicsit macerás, mert rengeteg kis fájlról van szó és ha az egészet le kell cserélni az kissé sokáig tart. Nekem például tíz percig tartott mire betettem a VSS-be az Eclipse pluginnel, persze VPN-en keresztül.

Túl sok dolgot nem használok még a Dojo-ból, csak egy dátumválasztó komponenst, ami kicsit változott a két verzió között. Na nem sokat, csak annyit, hogy date helyett most már value -vel kell megmondani az értékét. Remélem jó okuk volt rá hogy átírják. Nem okozott túl nagy törést, megoldottam pár perc alatt, de azért nem jó ha ok nélkül változgatnak elnevezések. Ha valami közös nevezőre akarták hozni valamivel akkor oké. Még a dojo.require("dojo.widget.html.DatePicker"); sort kellett kiszednem a kódból, mert egyrészt enélkül is megy, másrészt az IE javascript warning-ot dobált miatta.

Akartam használni a SortableTable-t is, de több probléma is volt vele. Meg kell adni az oszlopok típusát és erre még nincs felkészítve az alkalmazásunk, ha pedig mindent String-ként kezelek, a számok rosszul lesznek rendezve. Pl. "123"-nál nagyobb lesz a "2". A dátumok is rosszul kezelődnek a dátumformátumtól függően. Ezekre van megoldás a Dojo-ban, viszont a másik gond, hogy elrontja a táblacellák elrendezését. Hiába mondom meg, hogy egy TD align Left és Top legyen, visszateszi az alapértékre. class-ot is hiába mondok meg.

Kicsit gyér a Dojo dokumentációja még, (persze látszik hogy igyekeznek) emiatt próbáltam keresni Dojo fórumokat, de egyelőre nem találtam meggyőzőt. A dojotoolkit.org-on van egy levlista, de arra nem íratkozok fel, mert nem kérek napi 100 levelet, aminek X százaléka szemét. A Nabble-s fórumot gyakorlatilag elsőnek dobta ki a Google. Azzal az idióta rendszerrel megy, hogy 1 kérdés 1 téma és elég ömlesztett, de még majd barátkozom vele. Lehet hogy be fog jönni.

2006-10-10

Acegi Security

Végül mégiscsak maradtam a Springnél és a JSP-nél. Ha nem renitens módon próbálja meg használni az ember, hanem úgy ahogy javasolják, akkor viszonylag használható. Ezenkívül az utóbbi időben találkoztam még egy elég egzotikus, webes prezentációs megvalósítással, ami saját taglibekkel és XSL transzformációval operál. Marha bonyolult, táncol a használhatóság szélén. XSL trafót nagyon ésszel kell használni ilyen célokra.

Most az Acegi Security-vel ismerkedem, ahelyett hogy saját authentikációs és authorizációs komponensen kezdenék el agyalni. Nem egyszerű, olvasgatni kell hozzá, de még mindig jobb, mintha házon belül csinálnánk meg és aztán tesztelhetnénk hónapokig. Használható tutorial róla.

Egyébként most jött ki belőle az 1.0.2-es verzió, ami lényegében ugyanaz mint az 1.0.0 vagy 1.0.1, csak belső megvalósítás változott.

2006-06-01

GWT

Miközben a magyar szcéna web 2.0 moguljai kiosztották egymás között az észt, lement a JavaOne és a 24-órás programozói verseny, a Google publikált egy webfejlesztő eszközt ami java kódból Ajax-os javascriptes alkalmazást csinál.

(A JAvaOne-het visszatérve egy pillanatra: volt egy slot car race nevezetű kis játék, ahol modellautókat kellett programozni valós idejű jávában. Ahogy a 24 órás versenyről elkészült képeket nézem ott is lehetett valami hasonló feladat. Jó poén lehet.)

Szóval, GWT: Letöltöttem, kipróbáltam. Vicces srácok ezek a guglinál, ennek az eszköznek semmihez semmi köze. Saját javadoc formátumuk van, saját futtató eszközük, ant helyett cmd fájlokkal lehet fura formátumú sablon projekteket generálni eclipse alá. Amúgy az alapgondolat nagyon jó és a leírás is ami alapján a kezdő lépéseket meg lehet tenni használható. A Gugli fórumokkal (vagy mi) még nem sikerült megbarátkoznom és érdekes módon nem nagyon van leírva hogy tulajdonképpen ez az ajaxos alkalmazás hogyan kommunikál a szerverrel. Mintha standalone webes alkalmazások írása lenne a cél. Egyébként a Gmail és társai nem ezt az eszközt használják. Ez az eszköz ugyanis csak nemrég, a JavaOne előtt lett kész. Inkább úgy néz ki, mintha valami komolyabb eszköz kis része vagy mellékterméke lenne. Meg kell hallgatni az 56-os javaposse-t amiben Brett Taylor biztos megmondja a frankót ezzel kapcsolatban. (Még nem hallgattam meg.)