Unknown xtype

2012.05.15. 08:01 stack

Hasznos, ha hibás xtype esetén nem egyszerű index hibát kapunk, hanem a hibát megmagyarázó üzenetet:

Ext.create = Ext.ComponentMgr.create = function (config, defaultType) {
    if (config.render) {
        return config;
    }
    var xtype = config.xtype || defaultType;
    if (!Ext.ComponentMgr.types[xtype]) {
        throw 'Unknown xtype: ' + xtype;
    }
    return new Ext.ComponentMgr.types[xtype](config);
};

Szerencsére ExtJS4 esetén ezzel már nincsen gond, az ext-all-dev.js számtalan hasonló ellenőrzést tartalmaz.

Szólj hozzá!

Címkék: error override xtype

Slider.zIndex

2011.07.04. 07:39 stack

Ha egy SliderField-nél a csúszkát mozgatjuk, akkor megváltozik a hozzá tartozó z-index értéke.

(A SliderField is a MultiSlider elemet használja, ahol több thumb elem is használható, így szükséges, hogy mozgatás közben az aktuális elem magasabban legyen, mint a többi)

Az nem világos, hogy miért kell alapértelmezetten ilyen extrém nagy értéket (10.000) megadni ennek a z-index-nek? Egy ablak alapértelmezetten 9.000 körüli z-index-et kap.
Példa itt: stack.hu/extjs/slider_zindex.php (csúszka mozgatás, majd ablak ráhelyezés)

A MultiSlider egyik paramétere, hogy mekkora értéket kapjon a z-index, ennek felülírásával javítható ez a probléma.

Ext.slider.MultiSlider.prototype.topThumbZIndex = 1;

Javított verzió megnézhető itt: stack.hu/extjs/slider_zindex.php?fix

Szólj hozzá!

Címkék: override zindex slider

createContextualFragment

2011.05.30. 08:02 stack

Sajnos az IE 9-nek van egy kis problémája az ExtJS-sel: Error: Object doesn't support property or method 'createContextualFragment'. Adjuk hozzá a hiányzó metódust:

if (typeof Range !== "undefined" && !Range.prototype.createContextualFragment) {
    Range.prototype.createContextualFragment = function (html) {
        var frag = document.createDocumentFragment(),
            div = document.createElement("div");
        frag.appendChild(div);
        div.outerHTML = html;
        return frag;
    };
}

2 komment

Címkék: override ie9

Array.chunk()

2011.03.22. 13:16 stack

// [1, 2, 3, 4, 5, 6].chunk(2); -> [[1, 2], [3, 4], [5, 6]]
if (typeof Array.prototype.chunk === 'undefined') {
    Array.prototype.chunk = function (size) {
        for (var x, i = 0, c = -1, l = this.length, n = []; i < l; i++) {
            (x = i % size) ? n[c][x] = this[i] : n[++c] = [this[i]];
        }
        return n;
    };
}

Szólj hozzá!

Címkék: override array

cmp.toggleVisible();

2010.07.21. 07:33 stack

Ext.override(Ext.Component, {
    toggleVisible: function () {
        this.setVisible(!this.isVisible());
    }
});

Szólj hozzá!

Címkék: override visible

String.isJSON()

2009.12.01. 22:58 stack

Egy string-ről legkönnyebben úgy tudjuk megállapítani, hogy JSON vagy sem, hogy megpróbáljuk átalakítani. Ha sikerült, akkor az, ellenkező esetben pedig nem, ilyen egyszerű. :)

Ext.override(String, {
    isJSON: function () {
        try {
            Ext.decode(this);
            return true;
        } catch(e) {
            return false;
        }
    }
});

Szólj hozzá!

Címkék: override string json

Store.toJSON()

2009.11.26. 23:20 stack

Store teljes tartalma JSON alakban:

Ext.override(Ext.data.Store, {
    toJSON: function () {
        var items = [];
        this.each(function (record) {
            items.push(Ext.encode(record.data));
        });
        return '[' + items.join(',') + ']';
    }
});

Szólj hozzá!

Címkék: store override json

Ext.getViewport()

2009.07.12. 14:20 stack

A bevezetőbe eredetileg arról akartam írni, hogy logikusabb lett volna, ha a Viewport singelton osztályként működne, mivel hosszas tanakodás után sem találtam életrevaló példát, ahol egyszerre két/több Viewport-ot használnék. (A párhuzamosan több képernyő lekezelésére is inkább egy darab fit layout-os Viewportot használnék, és abban váltogatnám az aktív elemeket.)  Ám miközben az érveket, ellenérveket soroltam fel, rájöttem, hogy igaz az, hogy csak legfeljebb egyetlenegy példányt hozunk létre, de működésben szükséges, hogy pontosan ugyanúgy viselkedjen, ahogy a többi konténer elem. Felesleges csavar lenne, ha egyke osztályként működne.

Az persze továbbra is megmaradt, hogy én csak egy Viewport-ot használok, ahogy az is, hogy szükségem lehet arra, hogy azt közvetlenül elérjem. (megoldás persze a Ext.getCmp(viewport_id) is, ám ez szerintem rugalmatlan)

4 komment

Címkék: override viewport

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

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

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?