Number.round()

2010.05.27. 18:44 stack

Number.prototype.round = function (decimals) {
    var t = Math.pow(10, decimals || 0);
    return Math.round(this * t) / t;
};

var n1 = 2/3;
n1.round(2);    // 0.67
var n2 = 12345;
n2.round(-3);   // 12000
var n3 = 100/3;
n3.round();     // 33

Szólj hozzá!

Címkék: number round

pixel.gif

2010.05.18. 12:04 stack

A legtöbb ExtJS tutorial azzal kezdődik, hogy a pixel.gif helyét felülírják. Ahogy több fórumban látom, sokakat zavar is, hogy az alapértelmezett érték ExtJS 2-ben még egységesen a http://www.extjs.com/s.gif volt. Engem meglepne, ha valóban az Ext-nél vizsgálnák, hogy milyen referrer-rel kérik le ezeket a képeket. De persze nem tudható. :) Már csak azért is érdemes felülírni ezt az értéket, hogy eggyel kevesebb hosztról szedjük a fájlokat. De mielőtt egy Ext.BLANK_IMAGE_URL = 'img/pixel.gif'; értékadással felülírnánk, érdemes megnézni a ExtJS 3-ban használt alapértelmezett megoldást:

...
BLANK_IMAGE_URL : Ext.isIE6 || Ext.isIE7 || Ext.isAir ?
    'http:/' + '/extjs.com/s.gif' :
    'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
...

Azaz IE6, IE7, illetve Air-ban használ már az Ext csak valódi képet. A többi böngésző ugyanis érti a fenti formát. Hagyjuk meg ezt mi is:

if (Ext.isIE6 || Ext.isIE7 || Ext.isAir) {
    Ext.BLANK_IMAGE_URL = 'img/pixel.gif';
}

Szólj hozzá!

Címkék: image

Forgatás

2010.05.07. 08:46 stack

Alkalmanként hátránynak tűnt, hogy míg az asztali alkalmazásoknál könnyedén lehet elemeket forgatni, addig a weben ez rendkívül körülményes. (Több helyen szerver oldali képeket használtam erre)

Mostanában egyre több CSS-sel foglalkozó blogon kerül elő a forgatás témája. Számomra meglepő volt, hogy még IE 6 alatt is (ha nem is könnyedén, de) megoldható tetszőleges fokú forgatás.

(sok bejegyzés még csak a progid:DXImageTransform.Microsoft.BasicImage(rotation=X); filtert használja, amelyben 0, 90, 180, 270 szögek valósíthatóak meg, ellenben a DXImageTransform.Microsoft.Matrix(...) filterrel már a teljes forgatás kivitelezhető)

Azt persze meg kell jegyezni, hogy IE nem az elem középpontja körül forgat, így kénytelenek vagyunk forgatás után a pozíciót javítani. De ilyen apróságon már meg sem lepődünk. :) Ám a többi böngésző sem büszkélkedhet nagyon, egyáltalán nem értem, hogy miért kell minden böngészőnek más-más property-t használni ugyanarra. Gondolom sokat gondolkodhattak az Operánál a 10.5 kiadása előtt, hogy vajon használják a szabvány transform property-t, vagy álljanak be a sorba és a -o-transform alakot használják. Gratulálok nekik. :)

Túlzottan nem mentem bele, csak próbálgattam a lehetőségeket: http://stack.hu/extjs/rotate.php

Szólj hozzá!

Címkék: element rotate

Budapest.JS

2010.04.18. 09:48 stack

Még márciusban Budapest.JS néven indult egy remek kezdeményezés. Havonta egy aklalommal 3-4 előadást tartanak JavaScript témában! A mostani alkalmon az Ext.core –ról is volt egy előadás.

Fejér Sándor: Ext.core - Egymagos kiterjesztés

Az előadáshoz tartozó PDF: http://theba.hu/Presentations/Ext.core.20100414.pdf

További előadásokhoz tartozó videók megtalálhatóak itt: http://palocz.hu/taxonomy/term/93

Érdekes témák, érdekes előadások, JavaScript iránt érdeklődőknek kötelező! :)

Szólj hozzá!

Címkék: core budapest.js

Mandelbrot halmaz CANVAS elemmel

2010.03.27. 18:07 stack

Nagy érdeklődéssel figyelem a HTML5-ről, illetve a CANVAS elemről szóló jóslatokat. Nincs kétségem, hogy még szép jövő áll előttük. Már régóta terveztem, hogy legalább egy hello world típusú példát összedobok magamnak, de idő sem volt rá, illetve érdekes minta feladatot sem sikerült kitalálni.

Igaz, miután eszembe jutott, hogy milyen jópofa lenne Mandelbrot halmazokat rajzolni rákerestem a neten és láttam, hogy előttem már vagy százan megcsinálták. :) Mindegy... érdekes feladatnak tűnt. http://stack.hu/mandelbrot/
Ja, és megfelelő böngésző szükséges hozzá! :)

1 komment

Címkék: mandelbrot html5 nem extjs canvas

Resizable HtmlEditor

2010.03.24. 23:10 stack

Tetszik, ahogy az ExtJS-ben megoldották az átméretezést, véleményem szerint kellően rugalmas. Egy-egy komponens átméretezést egy külön Resizable elem végzi. Létrehozásakor megadjuk az komponens id-ját, illetve az átméretezés konfigurációját. (minimum, maximum méret, átméretezés iránya, dinamikusan változzon az elem mérete, vagy csak egér felengedése után, átméretezés közben legyen-e animáció, tetszőleges méret helyett léptetés stb.)

Egy sima TextArea-nál egyszerű dolgunk van, létrehozzuk a szövegmezőt, majd a Resizable elemnek megadjuk az ő azonosítóját, illetve az átméretezés mikéntjét. Annyit emelnék ki egyedül, hogy néhány elem átméretezéséhez szükség van egy befoglaló div-re, ilyen a textarea is, emiatt van szükség a wrap: true megadására:

var textArea = new Ext.form.TextArea({
    renderTo: Ext.getBody(),
    width: 500,
    height: 250
});

new Ext.Resizable(textArea.id, {
    handles: 's',
    minHeight: 100,
    wrap: true
});

HtmlEditor-nál már kicsit bonyolultabb a helyzet...

Szólj hozzá!

Címkék: resizable htmleditor

String Replace All

2010.03.20. 11:32 stack

Nem tudom miért, legalább félévente egyszer belefutok abba a hibába, hogy megfeledkezem arról, hogy JavaScript-ben a String replace alapértelmezetten csak az első előfordulást cseréli. Az első előfordulás leginkább abból következik, hogy a replace nem stringet vár az első paraméterként, hanem egy reguláris kifejezés, ahol külön paraméter jelzi, hogy több előfordulásról van-e szó.

var src = 'foo foo foo';
alert(src.replace('foo', 'bar'));
alert(src.replace(/foo/g, 'bar'));
// a poszt megírása után kaptam a következő formát:
alert(src.replace('foo', 'bar', 'g'));

Találkoztam már olyan megoldással is, ahol a split és a join kombinációját használta valaki a replace helyett, de ez semmiképpen sem szép megoldás: src.split('foo').join('bar');

Szólj hozzá!

Címkék: string napi szívás replace

Ext.lib.Ajax.isWorking()

2010.03.18. 18:55 stack

Gyakran vannak olyan Ajax hívásaim, amelyek esetleges késleltetése nem okozna semmiféle problémát akkor, ha ezzel fontosabb műveleteket előnybe részesíthetünk. Például az, hogy félpercenként vizsgáljuk, hogy kaptunk-e új üzeneteket kevésbé fontos akkor, ha éppen mi szeretnénk küldeni egy üzenetet.

Ennek vizsgálatához szükségem volt egy olyan függvényre, amely megadja, hogy van-e most futó Ajax hívás. Először még az Ext.Ajax eseményeihez rendeltem hozzá egy számlálót, de ezt már az elején éreztem, hogy ágyúval verébre effektus.

Utána az Ext.lib.Ajax.isLoading(...) függvényt szerettem volna általánosítani. Ám eközben észrevettem, hogy az Ext.lib.Ajax.poll pont az, ami nekem kell. (ez egy olyan objektum, amelynek elemei egy-egy Ajax híváshoz tartozó setInterval elem, az Ajax hívás befejezésekor ExtJs verziótól függően az elem vagy törlődik, vagy null lesz) Tehát abban az esetben, ha létezik a poll objektumnak eleme, amely nem null, akkor létezik folyamatban lévő Ajax hívás, különben nem létezik.

Ext.lib.Ajax.isWorking = function () {
    for (var i in this.poll) {
        if (this.poll.hasOwnProperty(i) && this.poll[i] !== null) {
            return true;
        }
    }
    return false;
};

Szólj hozzá!

Címkék: ajax

Array.filter()

2010.03.16. 21:46 stack

if (typeof Array.prototype.filter === 'undefined') {
    Array.prototype.filter = function (fn, scope) {
        var result = [];
        for (var i = 0; i < this.length; i++) {
            if (fn.call(scope, this[i], i, this)) {
                result.push(this[i]);
            }
        }
        return result;
    };
}

var array = [1, 2, 3, 4];
alert(array.filter(function (n) {return n > 2;})); // [3, 4]

Szólj hozzá!

Címkék: filter array

iframe.print()

2010.03.07. 11:07 stack

Ha egy ExtJS-sel készült alkalmazásban nyomtatásról van szó, akkor vagy PDF-et használok, vagy a kinyomtatandó tartalmat létrehozom egy iframe-ben, majd az iframe-t nyomtatom ki. Iframe nyomtatásával nem is lenne gond, de mégis érdemes figyelni az IE sokadik hülyeségére, miszerint ha nem kapja meg az iframe a fókuszt, akkor nem az, hanem a teljes document kerül nyomtatásra.

var iframe = Ext.select('iframe').first();
if (Ext.isIE) {
    iframe.dom.contentWindow.focus();
}
iframe.dom.contentWindow.print();

Szólj hozzá!

Címkék: print iframe

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