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

Array.unique()

2009.06.15. 21:26 stack

csak úgy, mert hasznos...

Array.prototype.has = function(v) {
    for(var i = this.length; i;) {
        if (this[--i] === v) {
            return true;
        }
    }
    return false;
};

Array.prototype.unique = function() {
    var a = [];
    for(var i = this.length; i;) {
        if (!a.has(this[--i])) {
            a.push(this[i]);
        }
    }
    return a;
};

UPDATE: az eredeti script közel kétszer annyi futási idővel dolgozott, ezért le lett cserélve...

14 komment

Címkék: unique array nem extjs

preloadCssImages()

2009.06.11. 20:43 stack

A legeslegelső JavaScript próbálkozásom - legalább tíz éve - egy képnél az egér események lekezelése volt. Egérrel a kép felé mentünk és megváltozott a kép. Nagyon örültem, amikor sikerült. :)  Rögtön a második script ezután az volt, hogy betöltöttem ezeket a képeket a memóriába, hogy ne csak a mouseover eseménykor induljon el a letöltés.

Nosztalgikus hangulatba kerültem, amikor azzal a feladattal szembesültem, hogy az egyik alkalmazásban lassú net esetén egy-egy kép zavaróan lassúan jön le, és ezért jó lenne az egyik CSS fájlban lévő képeket előre letölteni.

Az alap script-et még régebben az Ajaxian-on láttam, de két okból át kellett alakítani. 1. a JQuery-t lecseréltem Ext-base -re. 2. nekem csak egyetlen egy CSS fájlban lévő képekre volt szükségem, a teljes ext-all.css tartalmára nem.

Szólj hozzá!

Címkék: css image preload

Rendezés magyar ékezetekkel

2009.06.05. 22:53 stack

A táblázatoknál kevés adat esetén gyakori, hogy a rendezést nem a szerver, hanem a kliens oldalon végezzük. Amellett, hogy a szervert is kíméljük, még gyorsabb is. Szöveges mezők esetében a rendezés az ékezetekre nincs felkészítve.

Sajnos a Store-ban nem az összehasonlító függvényt írhatjuk felül, hanem az összehasonlításhoz használt értéket. Szerintem az előbbi verzió rugalmasabb. Lásd. PHP usort függvényét.

Mindenesetre a magyar ékezetes szavak rendezését így is könnyen megvalósíthatjuk. Nem kell mást tenni, minthogy az adott szó helyett vizsgáljuk meg az ékezet nélküli verzióját. (és ha már ott vagyunk, akkor a kis-nagy betű különbségeket is hagyjuk figyelmen kívül)

4 komment

Címkék: magyar sort store

Google Analytics

2009.05.28. 09:10 stack

Az ingyenes statisztikák közül vitathatatlanul legjobb a Google Analytics. Néhány soros HTML kód beillesztés után egész komoly rálátásunk lehet a látogatóink oldalon eltöltött viselkedéséről.
Az Ajax-os oldalak elterjedésének köszönhetően, megoldották, hogy tetszőleges url-t is szimulálhassunk a következő módon:

if (typeof pageTracker != 'undefined') {
    pageTracker._trackPageview('/szia/vilag');
}

A fenti kódsort hozzárendeljük bármely eseményhez, amivel egy új oldalletöltést kapunk a statisztikában. (ablak megnyitása, tab váltás stb.)

4 komment

Címkék: google analytics

PagingToolbar.pageSize

2009.05.16. 10:57 stack

Néha nehezen magyarázható meg az ügyfeleknek, hogy egy Grid-ben miért kell egyszerre lapozó is, meg görgetősáv is. Talán azért is, mert ezt én sem látom logikusnak. :)

Arra, hogy csak görgetősáv legyen, létezik több kezdeményezés is. (lásd. LiveGrid, vagy a BufferView) Ahhoz, hogy csak lapozó legyen, nem kell mást csinálni, mint meghatározni, hogy egy oldalra maximum hány sor fér ki, és csak annyit kell egyszerre megjeleníteni.

36 komment

Címkék: plugin toolbar grid pagesize paging

LIKE BINARY

2009.05.13. 15:36 stack

MySql alapértelmezetten nem érzékeny a kis és nagybetűkre, ami néha talán még előnyös is lehet. Ám vannak esetek, amikor nem, ilyen például az azonosító és jelszó bekérése. A BINARY kulcsszó megadásával szigoríthatjuk a vizsgálatot.

SELECT 'A' LIKE 'a', 'A' LIKE BINARY 'a', 'A'= 'a', 'A' = BINARY 'a'

Az eredmény meg: 1, 0, 1, 0

Szólj hozzá!

Címkék: mysql nem extjs case sensitive

Eszköz gombok

2009.05.06. 09:32 stack

Egy ablak vagy egy panel elemhez nem csak a szokványos bezár, összecsuk stb. eszköz gombokat lehet hozzárendelni, hanem még egy tucat másikat. Kérdőjelet, fogaskereket és még ki tudja miket... már sokadszorra fordult velem elő, hogy a "ki tudja mik"-en gondolkodtam, majd minden alkalommal eldöntöttem, hogy ezeket valahol összegyűjtöm.

A doksiban fel van sorolva a lista. Ám mégiscsak többet nyújt, ha az ember látja is maga előtt ezeket.
Az, hogy miket használhatunk, legegyszerűbben úgy nézhetjük meg, hogy a css szabályok között kikeressük azokat, melyek .x-tool-akármi alakúak.

2 komment

Címkék: css tools

pozicionálás

2009.05.02. 12:03 stack

Az ExtJs előnyeit leginkább akkor látja meg az ember, ha egy feladatot a körülmények miatt más eszközökkel kell megoldani, és tudja, hogy mindez Ext-ben csupán néhány sor lenne.
E gondolat nemrég az elemek pozicionálása okán jutottak eszembe.

Például hozzunk létre egy 300x300-as piros négyzetet és tegyük a képernyő közepére:

var el = Ext.getBody().createChild({
    style: 'width: 300px;height:300px;background-color:red;'
});
el.alignTo(Ext.getBody(), 'c-c');

A második utasításhoz némi magyarázat:
Az újonnan létrehozott elemet helyezzük el a document.body-hoz képest úgy, hogy a body közepe illeszkedjen az elem közepéhez.

Ha azt szeretnénk, hogy a böngésző átméretezése után is legyen középen, akkor az alignTo függvény helyett használjuk az anchorTo függvényt.

Vegyünk egy másik példát, hozzunk létre két 100x100-as négyzetet, és tegyük úgy a képernyő közepére őket, hogy egymás mellett helyezkedjenek el és köztük legyen 10 pixel távolság.

Szólj hozzá!

Címkék: pozicionálás element alignto anchorto

Array.shuffle()

2009.04.27. 22:57 stack

Tömb elemeinek összekeverése:

Array.prototype.shuffle = function () {
    var result = [];
    while (this.length) {
        result.push(this.splice(Math.round(Math.random() * this.length - 1), 1)[0]);
    }
    return result;
};

Szólj hozzá!

Címkék: shuffle array nem extjs

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