String.ucFirst()

2009.04.19. 21:56 stack

Az első karakter legyen nagybetűs...

String.prototype.ucFirst = function() {
    return this.charAt(0).toUpperCase() + this.substr(1);
};

1 komment

Címkék: string nem extjs ucfirst

ComboBox.getSelectedRecord()

2009.04.16. 11:18 stack

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?

Ext.override(Ext.form.ComboBox, {
    getSelectedRecord: function() {
        return this.findRecord(this.valueField, this.getValue());
    }
});

Példa:

2 komment

Címkék: combobox override record

ExtJS 3.0 Core

2009.04.04. 22:17 stack

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/

7 komment

Címkék: hirek core

Field.setReadOnly

2009.03.24. 22:15 stack

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.

Ext.override(Ext.form.Field, {
    setReadOnly: function (value) {
        if (this.rendered && this.readOnly != value) {
            var el = this.getEl();
            el.dom.setAttribute('readOnly', value);
            el.dom.readOnly = value;
        }
        this.readOnly = value;
        return this;
    }
});

Szólj hozzá!

Címkék: override field readonly

ComboBox.tpl

2009.03.17. 22:37 stack

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.

new Ext.form.ComboBox({
    renderTo: Ext.getBody(),
    displayField: 'display',
    valueField: 'value',
    store: new Ext.data.SimpleStore({
        fields: ['display', 'value'],
        data: [['', '0'], ['hello', '1']]
    }),
    typeAhead: true,
    mode: 'local',
    triggerAction: 'all'
});

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.

Szólj hozzá!

Címkék: combobox template

MeasureIt.zIndex

2009.03.13. 15:01 stack

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:

#measureit_back {
    z-index: 10000 !important;
}
#measureit_box,
#measureit_toolbar {
    z-index: 10001 !important;
}

Szólj hozzá!

Címkék: css zindex firefox extension

SELECT FOUND_ROWS();

2009.03.02. 10:30 stack

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:

SELECT ... FROM ... LIMIT ...;
SELECT COUNT(*) FROM ...;

Vagy használhatjuk a SQL_CALC_FOUND kitételt:

SELECT SQL_CALC_FOUND_ROWS ... FROM ... LIMIT ...;
SELECT FOUND_ROWS();

Gyorsabb és átláthatóbb.

3 komment

Címkék: mysql total count

String.truncate

2009.02.18. 22:44 stack

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:

String.prototype.truncate = function(length, etc, break_words) {
    if (typeof length == 'undefined') length = 80;
    if (typeof etc == 'undefined') etc = '...';

    if (!length) return '';
    if (this.length <= length) return this.toString();

    length -= etc.length;

    if (break_words) {
        return this.substr(0, length) + etc;
    }
    return this.substr(0, length+1).replace(/\s+?(\S+)?$/,'') + etc;
};

És akkor egy példa, hogy miről is van szó:

var str = 'Lorem ipsum dolor sit amet consectetur adipiscing elit.';
for (var i = 0; i < 60; i++) {
    console.log( i, str.truncate(i) );
}

Szólj hozzá!

Címkék: string nem extjs truncate

button.iconAlign: right

2009.02.17. 09:21 stack

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:

table.x-btn-icon-right button {
    background-position: right 2px !important;
    padding-left: 0 !important;
    padding-right: 18px !important;
}

Szólj hozzá!

Címkék: css button icon

toolbar.hide() és toolbar.show()

2009.01.21. 09:07 stack

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:

Szólj hozzá!

Címkék: panel toolbar override

ExtJS blog, mi ez?

Az ExtJS egy JavaScript keretrendszer, melyet a blog írója elfogultan a legjobbnak tart, és ez a blog olyan apróságok gyűjteménye, melyek ExtJS használata közben felmerültek, eszébe jutottak...

Címkék

ajax (4) alignto (1) állás (3) analytics (1) anchorto (1) android (4) animate (2) array (9) auto (1) back button (1) beautifier (1) beforeevent (1) benchmark (1) blur (1) budapest.js (1) button (1) canvas (1) capture (1) case sensitive (1) center (1) change (1) cikkajánló (1) class (2) closure compiler (1) collapse (1) combobox (3) comment (1) console.log (2) contextmenu (2) core (2) count (1) css (15) csv (1) dataview (1) date (4) datefield (3) datepicker (1) debug (1) doksi (1) dragdrop (1) easing (1) eclipse (1) editor (1) element (5) error (5) eval (2) event (1) fejtörő (1) field (2) fieldset (1) filter (1) firefox (4) firefox extension (2) focus (3) fonts (1) fun (1) function (1) google (2) google chrome (1) grayscale (1) grid (4) group contact (1) header (3) height (2) hidden (1) hirek (2) history (1) htaccess (1) html5 (2) htmleditor (2) https (1) icon (3) id (2) ie (2) ie6 (1) ie9 (1) iframe (3) image (2) indexof (1) javascript (1) jquery (2) jslint (2) jsmin (1) json (7) keymap (1) kipróbálom (2) könyvajánló (2) label (1) layout (1) lint (1) log (1) loop (1) magyar (2) mandelbrot (1) mask (1) math (1) maxlength (1) mistake (1) mysql (5) napi szívás (16) nem extjs (12) node (1) nth child (1) number (1) off (5) offline (1) operator (1) override (20) pagesize (1) paging (2) panel (2) php (7) picker (1) plugin (3) pozicionálás (2) preload (1) print (1) propertygrid (1) pseudo (3) readonly (2) record (1) regexp (1) replace (1) resizable (1) rotate (1) round (1) scale (1) sencha touch (2) server (1) shuffle (1) slider (1) sort (3) sortable (1) store (2) string (7) sum (1) tabchange (1) tabpanel (1) tab key (2) tdd (1) template (1) textarea (2) textfield (1) textitem (1) theme (2) throw (1) timer (1) timestamp (1) title (2) toggle (1) toolbar (6) tools (1) total count (1) transparent (1) tree (1) treenode (1) trigger (1) truncate (1) try (1) ucfirst (1) undefined (2) unique (1) unload (1) urlencode (1) utf8 (2) verzió (1) video (1) viewer (1) viewport (2) visible (2) vtype (1) window (2) xtype (1) zindex (2)

Extjs.blog.hu - RSS

Kérdés?

süti beállítások módosítása