Az első karakter legyen nagybetűs...
return this.charAt(0).toUpperCase() + this.substr(1);
};
Az első karakter legyen nagybetűs...
Hosszan nézegettem a doksit, de nem találtam olyan függvényt, ami megadná a ComboBox-hoz tartozó kiválasztott rekordot. Ellentmondásos számomra, hogy ha van függvény a Store lekérésére, akkor miért nincs a kiválasztott rekord lekérésére, illetve ehhez miért kell egy privát (és ezáltal a doksiban sem szereplő) eljárást használni?
Példa:
Eredetileg arra gondoltam, hogy ebben a blogban nem fogok ExtJS-es híreket publikálni, mondván, hogy arra ott a hivatalos blog. Minek átmásolni onnan bármit ide?
Ám a mostani bejelentés annyira meglepett, hogy mégiscsak… az ExtJS 3.0 kiadása előtt ma kiadták a ExtJS 3.0 Core beta-t (az alapmag teszt verzióját), de nem szimplán bemutatásra, hanem önálló termékként. Míg a teljes rendszer (2.1-től) GPL licensszel használható, addig ez az alapmag MIT Open Source licensszel. (pontos definíciókat nem tudom, a lényeg, hogy ha nem nyílt forráskóddal írsz, akkor sem kell developer licenszet fizetni)
Első ránézésre a Core tartalmaz mindent, amit a JQuery, vagy a Prototype tud, így véleményem szerint nekik komoly kihívást jelent majd mindez.
Mindemellett reméljük, hogy hamarosan jön a teljes ExtJS 3 is... merthogy ott is több érdekesség várható: google.hu/search?q=site=http://extjs.com/playpen/ext-3.0-dev/
A szövegmező readOnly tulajdonsága is egy olyan tulajdonság, amit alapértelmezetten nem lehet módosítani. Pedig szerintem volna rá szükség.
Ha a ComboBox elemei között az egyiknek a displayField mezője üres, akkor a legördülő listában az adott elem csupán néhány pixel magas lesz.
Triviális megoldás lehet, hogy nem csinálunk ilyet :), mondjuk úgy, hogy az üres string helyett -t használunk. (olyan szóköz, ami nem választható el) Editálható ComboBox esetén nem lesz jó, mivel kiválasztásakor megjelenik az input mezőben is a szóköz.
Másik megoldás lehetne, hogy css-ben beállítjuk a minimum magasságot. (azt leszámítva, hogy az IE nem ismeri a minimum magasságot, illetve nem tudhatjuk, hogy pontosan mekkora is az a minimum magasság, tehát ezeket leszámítva teljesen jó megoldás)
Végül megoldható úgy, hogy a lenyiló lista template-jét átszerkesztjük.
ExtJS-ben az ablakok alapértelmezetten 9000-es z-index-szel jelennek meg. (Ext.WindowMgr.zseed) Egészen addig nem is volt ez érdekes számomra, míg nem akartam a vonalzóval (MeasureIt) megméri valaminek a szélességét. Nem tudom, hogy honnan vehették az alapértelmezett z-index-et, de jelen helyzetben kevésnek bizonyul a 4721-es érték. Megoldás lehetne a Window Maneger értékét módosítani, de egyszerűbbnek tűnik a vonalzót "magasabbra" vinni:
Valahogy mindig is a JavaScript, PHP, MySql hármasban a leggyengébb láncszem szerepét a MySql töltötte be. A komolyabb JavaScript keretrendszerek megjelenése előtt a hangsúlyt a PHP kapta, majd idővel átvette (nálam) a JavaScript, ám az sosem volt kérdés, hogy utolsó helyen a MySql áll.
Pedig vannak benne olyan lehetőségek, amelyeket érdemes kihasználni, még akkor is, ha összességében ma még nagyon messze van attól, hogy az üzleti logika egy az egyben ott legyen…
Amikor egy grid-hez elemeket gyártunk, legyártjuk az adott szakaszhoz tartozó listát, és az össz. darabszámot.
Ezt megoldhatjuk így:
Vagy használhatjuk a SQL_CALC_FOUND kitételt:
Gyorsabb és átláthatóbb.
Szöveg vágásnál sokan nem tőrödnek azzal, hogy szavakat vágnak ketté, pedig néha egy félbevágott szó kifejezetten csúnya, illetve előnytelen lehet.
Az alábbi kód szinte egy az egyben a PHP-Smarty-ból vet kód JavaScript implementációja:
És akkor egy példa, hogy miről is van szó:
Szinte csak új típusú komponensek készítésekor foglalkozok CSS szabályok írásával, máskülönben mindig az ExtJS alapértelmezett elemeit használom. Meg is lepődtem, amikor egy olyan feladat előtt álltam, ami egy az egyben CSS-sel megoldható, mégpedig gomboknál kellett az ikont jobb oldalra helyezni. Bár úgy is mondhatnám, hogy meglepődtem, amiért ezt nekem kellett megírni, és nem volt benne az ExtJS-ben alapértelmezetten. :)
Tehát a CSS kiegészítés:
Nem is gondolná az ember, hogy egy toolbar eltüntetése milyen komoly feladat, míg nem próbálta egyszerűen a hide() függvényt erre használni, ekkor az eltüntetés után a toolbar helye üresen marad és a panel body része nem változik. Ám ahhoz, hogy ez ne így legyen meglepően sok dolgot kell állítanunk.
Először is adjuk meg, hogy a toolbar méreteit másként számoljuk (ezt nem is értem, hogy miért nem ilyen alapértelmezetten), utána tüntessük el magát a toolbart (itt is megemlítendő, hogy a this.bbar az a this.getBottomToolbar().container -rel egyenlő, csakhogy ha az egyiket eltüntetjük, attól még a másik isVisible() függvény eredménye nem lesz hamis), ezután a panel méretét újraszámolhatjuk, és végül, ha a panel egy másik elembe van benne, akkor azt is újra kell rajzoltatni. Azaz: