<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Axel Jung &#187; ExtJs</title>
	<atom:link href="http://www.ajung.de/tag/extjs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Mon, 03 May 2010 19:12:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ExtJs Erweiterter List Filter</title>
		<link>http://www.ajung.de/2009/03/24/extjs-erweiterter-list-filter/</link>
		<comments>http://www.ajung.de/2009/03/24/extjs-erweiterter-list-filter/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 16:29:32 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[ExtJs]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=506</guid>
		<description><![CDATA[In dem ExtJS Framework gibt es für die Grids, die praktischen Grid Filter. Diese lassen sich ganz einfach einbauen und das ganze sieht dann zum Beispiel so aus: Mit dem List Filter lassen sich diese Checkboxen darstellen. Die Werte darin sind aber statisch hinterlegt. Man kann auch einen Store im Filter hinterlegen und dann die [...]]]></description>
			<content:encoded><![CDATA[<p>In dem ExtJS Framework gibt es für die Grids, die praktischen Grid Filter. Diese lassen sich ganz einfach einbauen und das ganze sieht dann zum Beispiel so aus:</p>
<p><img class="alignnone size-full wp-image-507" title="grid_filter" src="http://www.ajung.de/wp-content/uploads/2009/03/grid_filter.jpg" alt="grid_filter" width="442" height="292" /></p>
<p>Mit dem List Filter lassen sich diese Checkboxen darstellen. Die Werte darin sind aber statisch hinterlegt. Man kann auch einen Store im Filter hinterlegen und dann die Werte serverseitig laden. In meinen Fall sollte ich aber die Werte aus den Daten des Grid automatisch ermitteln.</p>
<p>Dazu habe ich erst mal den <strong>Ext.data.Store</strong> um einen Methode erweitert, die mir die eindeutigen Wert einer Spalte zurückgibt:</p>
<pre>Ext.override(Ext.data.Store, {
    getUniqueData:function (index){
        this.unique_data = new Array();
        this.each(function(record){
            var value = record.get(index);
            if(this.unique_data.indexOf(value)==-1){
                this.unique_data.push(value);
            }

        },this);
        return this.unique_data;
    }
});</pre>
<p>Dann habe ich mir einen neuen Filter erzeugt, abgeleitet von der Klasse:<strong> Ext.ux.grid.filter.ListFilter</strong> die nur zwei Optionen benötigt:</p>
<ol>
<li>uniqueStore: eine Referenz auf den Store des Grid</li>
<li>dataIndex: der Spalten Index</li>
</ol>
<p>Der Filter hängt sich an den load Event des Store vom Grid und erzeugt danach seine eigenen Optionen:</p>
<pre>Ext.ux.grid.filter.UniqueListFilter  = Ext.extend(Ext.ux.grid.filter.ListFilter, {
    init : function(){
        this.uniqueStore.addListener('load',function(){
            this.options = [];
            var values = this.uniqueStore.getUniqueData(this.dataIndex);
            Ext.each(values,function(value){
                this.options.push([value, value]);
            },this);
            Ext.ux.grid.filter.UniqueListFilter.superclass.init.call(this);
        },
        this
        );
    }
});</pre>
<p>Diesen Filter kann einfach in meinen GridFilters instanzieren:</p>
<pre>var filters = new Ext.ux.grid.GridFilters(
            {
                local:true,
                filters:[
                    {type: 'string',  dataIndex: 'Account'},
                    {type: 'numeric', dataIndex: 'BasePrice'},
                    new Ext.ux.grid.filter.UniqueListFilter({
                        uniqueStore:ds,
                        dataIndex: 'BaseCurrency'

                    }),
                ]
            }
        );</pre>
<p>Im Grid werden die filter über die plugin Schnittstelle eingebunden:</p>
<pre>plugins: [filters,...],</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/03/24/extjs-erweiterter-list-filter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Im XmlReader von ExtJS individuell konvertieren.</title>
		<link>http://www.ajung.de/2009/01/27/im-xmlreader-von-extjs-individuell-konvertieren/</link>
		<comments>http://www.ajung.de/2009/01/27/im-xmlreader-von-extjs-individuell-konvertieren/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 17:59:15 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[ExtJs]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=492</guid>
		<description><![CDATA[Der Ext.data.XmlReader in dem ExtJs Framework ist einer wunderbare Sache. Mit ihm lassen sich XML Daten per Ajax wunderbar auslesen und verarbeiten. Dieser Reader wird in der Regel in Grids verwendet. Im Reader definiert man auch den Dataindex für das Grid und dessen Header. Darauf wiederum greifen bestimmte Plugin, wie das Grid Filter Plugin zu. [...]]]></description>
			<content:encoded><![CDATA[<p>Der <strong>Ext.data.XmlReader </strong>in dem ExtJs Framework ist einer wunderbare Sache. Mit ihm lassen sich XML Daten per Ajax wunderbar auslesen und verarbeiten. Dieser Reader wird in der Regel in Grids verwendet. Im Reader definiert man auch den Dataindex für das Grid und dessen Header. Darauf wiederum greifen bestimmte Plugin, wie das Grid Filter Plugin zu.</p>
<p>In meinen Projekt kam es öfters vor das die Werte nicht eins zu eins aus der XML Datei übernommen wurden, sondern mittels einer individuellen Render Funktion für die Ausgabe abgepasst wurde.</p>
<pre>cm: new Ext.grid.ColumnModel([
            {
                header: "XY",
                width:80,
                sortable:true,
                dataIndex:'abc',
                renderer :function(...
            },</pre>
<p>Das funktioniert zwar einwandfrei, aber da das nur in der Ausgabe geschieht, kann ich nicht nach dieser Spalte sortieren, oder in dieser per Filter suchen.</p>
<p>Auch an anderen Stellen habe ich deshalb nach einer Möglichkeit gesucht, den Wert im Reader manuell anzupassen.Versteckt in der der Dokumentation der Klasse Ext.data.Record habe ich die Möglichkeit einer <strong>convert</strong> Funktion gefunden.</p>
<p>Neben dem Mapping kann man über die Eigenschaft convert eine Callback Funktion angeben mit der man den Wert individuell bearbeiten kann.</p>
<pre>reader: new Ext.data.XmlReader({
                    record: 'item'
                }, [{
                    name: 'nominal',
                    mapping: 'price@nominal',
                    convert:function(v,r){
                        var value = "K";
                        if(parseFloat(v)&lt;0){
                            value =  "V";
                        }

                        value += '-' + Ext.DomQuery.selectValue('base-currency', r);
                        value += '/' +Ext.DomQuery.selectValue('quote-currency', r);
                        return value;
                    }
                }</pre>
<p>Somit erzeuge ich einen individuellen Dataindex nach dem ich auch sortieren und filtern kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/01/27/im-xmlreader-von-extjs-individuell-konvertieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJS vs. Jquery UI</title>
		<link>http://www.ajung.de/2008/09/24/extjs-vs-jquery-ui/</link>
		<comments>http://www.ajung.de/2008/09/24/extjs-vs-jquery-ui/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 18:00:34 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[ExtJs]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jquery Ui]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=289</guid>
		<description><![CDATA[Beim Erstellen von Webseiten mit umfangreicher Client Funktionalität (Rich Clients) setzt man heutzutage eines der zahlreichen Javascript Frameworks ein. Auf den ersten Blick wirken diese perfekt und es scheint so als könnte man alles damit machen. Doch leider sind diese Frameworks noch neu, und das Zusammenspiel der verschiedenen Kompoenten klappt nicht immer. Beim Einsatz von [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Erstellen von Webseiten mit umfangreicher Client Funktionalität (Rich Clients) setzt man heutzutage eines der zahlreichen Javascript Frameworks ein. Auf den ersten Blick wirken diese perfekt und es scheint so als könnte man alles damit machen.</p>
<p>Doch leider sind diese Frameworks noch neu, und das Zusammenspiel der verschiedenen Kompoenten klappt nicht immer.</p>
<p>Beim Einsatz von <a href="http://script.aculo.us/"><strong>script.aculo.us</strong></a> kamm ich schnell an die <strong>Grenzen des Machbaren</strong>. Trotzdem konnte das Projekt wie gewünscht umgesetzt werden. In der nachfolgenden Zeit hatte ich erstmal keine aufwendigen Rich Clients zu entwicklen und bin deshalb auf das Framework <strong><span style="color: #888888;"><a href="http://jquery.com/">Jquery</a></span></strong> umgestiegen. Dieses eignet sich besonders für kleinere Aufgaben. Die Syntax ist sehr <strong>leicht verständlich</strong> und intuitiv, auch für Benutzer die von dem eigentlichen JavaScript keine Ahnung haben.</p>
<p><a href="http://ui.jquery.com/"><img class="alignright size-full wp-image-291" title="jquery1" src="http://www.ajung.de/wp-content/uploads/2008/09/jquery1.gif" alt="" width="197" height="59" /></a>Als ich dann mal wieder eine aufwendigere Oberfläche erstellen musste wollte ich kein neues Framework einbinden um Ladenzeit zu sparen und habe deshalb <strong><a href="http://ui.jquery.com/">Jquery UI</a></strong> eingesetzt. Dieses war zu den damaligen Zeitpunkt noch nicht so richtig stabil und es kamen einige Beschwerden von Kunden. Ich musste deshalb einiges der Funktionalität in bestimmten Browsern ausschalten.</p>
<p>Neuerdings ist es scheinbar stabil und ein Update hat die Kundenprobleme gelöst.</p>
<p>Jquery UI ist aber noch <strong>nicht so umfangreich </strong>wie ich es mir wünschen würde und und die Features scheinen <strong>nicht einheitlich</strong> programmiert zu sein.</p>
<p><a href="http://extjs.com/"><img class="alignright size-full wp-image-292" title="extjs2" src="http://www.ajung.de/wp-content/uploads/2008/09/extjs2.png" alt="" width="227" height="18" /></a><strong><span style="color: #888888;"><a href="http://extjs.com/">ExtJS</a></span></strong> ist auch ein Javascript Framework das sich besonders durch seine <strong>schicken Widgets</strong> auszeichnet.<br />
Die Basis Sprache erinnert mich an <em>prototype </em>und ist im Gegensatz zu <em>Jquery </em>mehr für Erfahrene Nutzer und nicht für &#8220;Gelegenheit&#8217;s-Javascript Programmierer&#8221;. Das ist nicht abwertend gemeint, aber es gibt viele Programmierer die sich nicht ernsthaft mit JavaScript auseinander setzen wollen.</p>
<p>Genau wie in Jquery gibt es die Möglichkeit einfach durch den DOM zu wandeln und diesen zu modifizieren. Wirklich interessant wird ExtJS mit seinen genialen Widgets. Mit diesen Wigdet lassen sich ganz einfach schicke DataGrids, Tabs, Fenster, Dialoge, Tooltips, Menübäume und aufwendige Formulare darstellen. Wenn man sich die ausführliche Dokumentation anschaut erkennt man, dass ExtJS sehr mächtig ist und man sich nicht erst viele Plugins besorgen muss.</p>
<p>Ajax Requests lassen sich in ExtJS und in Jquery genauso einfach umsetzen.</p>
<p>Besonders schön finde ich das <strong>Interface Design</strong> bei ExtJS. Dieses ist einheitlich und bietet eine gute Basis.</p>
<p><img class="alignnone size-full wp-image-294" title="extjs1" src="http://www.ajung.de/wp-content/uploads/2008/09/extjs1.jpg" alt="" width="246" height="163" /></p>
<p>Auch für ExtJS gibt es unzählige <a href="http://extjs.com/learn/Ext_Extensions">Plugins</a>.</p>
<p>Der Vorteil an ExtJS ist die Firma die dahinter steht. Es ist nur für Open Source Anwendungen kostenfrei, ansonsten kostet eine Lizenz ab 289$. Ich denke durch dieses Konzept ist der Umfang des Frameworks möglich und es gewährleistet auch eine gewisse Code Qualität und Sicherheit den ich bei anderen Frameworks zur Zeit vermisse.</p>
<p>Wenn man seine Seiten mit einfache Lightbox Effekten oder Tabs aufwerten möchte, dann ist Jquery UI die bessere Wahl. Wenn man aber eine aufwendige Anwendung im Desktop Stil erstellen will, würde ich eher  ExtJS einsetzen und die Lizenskosten in Kauf nehmen. Mit Jquery UI lassen sich einfacher Anwenungen schreiben, die auch <strong>ohne JavaScript</strong> zu verwenden sind.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/09/24/extjs-vs-jquery-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
