• Home
  • About Me

Christoph M. Lütjen

Mein persönlicher Beitrag zur Netzvermüllung

Kategorie:

  • Diverses
  • Ext JS
  • JavaScript
  • webEdition WebCMS

Archiv:

  • April 2009
  • Februar 2009
  • Mai 2008
  • April 2008
  • Januar 2008
  • Dezember 2007

Blogroll:

  • living-e AG

Meta:

  • RSS
  • Kommentare als RSS
  • Gültiges XHTML
  • XFN

ExtJS: ComboBox mit JSON Loader

April 12th, 2009 by chris

Kleines Beispiel, für eine ComboBox, die Ihre Daten einmalig per JSON vom Server holt und anschließend innerhalb dieser Daten beim Tippen automatisch auswählt bzw. vervollständigt.


// innerhalb von initComponent Methode

var store = new Ext.data.JsonStore({
    url: '/admin/spider/categorylist',
    root: 'rows',
    autoLoad: true,
    fields: ['id', 'name']
});

Ext.apply(this, {
    items:
    [{
        xtype: 'combo',
        fieldLabel: 'Kategorie',
        name: 'category',
	store: store,
        forceSelection: true,
        mode: 'local',
        triggerAction: 'all',
        typeAhead: true,
        displayField: 'name',
        valueField: 'id'
    }]
});

Das “autoLoad” beim Store sorgt dafür, dass die Daten überhaupt mal geladen werden. Das “mode=’local’” bei der ComboBox hält diese davon ab, während der Eingabe Requests an den Server zu senden. Dieses Beispiel eignet sich somit für überschaubare Datenmengen.

Posted in Diverses | 1 Comment

ExtJS: TextField in Toolbar mit Reaktion auf Return-Taste

April 12th, 2009 by chris

Und noch ein kleines Beispiel. Diesmal die häufige Anforderung ein Suchfeld in einen Toolbar einzubauen, welches sich per Button oder natürlich per Enter/Return Taste absenden läßt.

tbar: [{
  xtype: 'textfield',
  id:'websearch-query',
  width:300,
  enableKeyEvents: true,
  listeners: {
    "keydown": function(field, event) {
      if(event.getKey() == 13){
        cmp.webSearch(field.getValue());
      }
    }
  }
}, {
  text:'Suchen',
  handler: function(){ cmp.webSearch(Ext.getCmp('websearch-query').getValue()); },
  scope: cmp
}]

“cmp” ist dabei eine zuvor gesetzte Referenz auf ein Objekt mit der Methode “webSearch”, hier muss natürlich individueller Code rein. Fallstrick ist eigentlich nur die Config-Option “enableKeyEvents”. Solange diese nicht gesetzt ist, wird das Textfeld nämlich keinerlei Key Events senden.

Posted in Diverses | 5 Comments

ExtJS: Kontextmenü für GridRow

April 12th, 2009 by chris

Erstellt ein Kontextmenü für eine Zeile in einem Ext.grid.GridPanel. Das Event kann über die “listeners” Konfigurationsoption oder die Methoden “on”, bzw. “addListener” registriert werden.

{
  "contextmenu": function(grid, rowIndex, event)
  {
    var menu = new Ext.menu.Menu();
    menu.showAt(event.getXY());
    event.stopEvent();
  }
}

Einträge können dem Menü über die Methoden “add” bzw. “addItem” hinzugefügt werden, wobei letztere nur ein bereits existierendes Objekt der Klasse Ext.menu.Item akzeptiert und erstere alles, was sich innerhalb eines Menüs darstellen läßt:

// Create the menu
var menu = new Ext.menu.Menu();

// Create a menu item to add by reference
var menuItem = new Ext.menu.Item({ text: ‘New Item!’ });

// Add a bunch of items at once using different methods.
// Only the last item added will be returned.
var item = menu.add(
    menuItem,                // add existing item by ref
    ‘Dynamic Item’,          // new TextItem
    ‘-’,                     // new separator
    { text: ‘Config Item’ }  // new item by config
);

Posted in Ext JS, JavaScript | 7 Comments

The Home of Guinness

Februar 19th, 2009 by chris

Wer nicht gerade der Gattung Mönch angehört oder ein Schweigegelöbnis abgelegt hat (was ich bei Frauen mal pauschal auszuschließen wage), dürfte Einsamkeit doch eher als ein unwünschenswerten Gemütszustand bezeichen - und so zog ich los, meinen Bruder zu retten der seit einem halben Jahr auf der Guinness-Insel wohnt. Gut, vielleicht waren da auch ein wenig chronische Reiselust dabei, aber das soll hier nicht so betont werden.

Allein der Flug mit Ryanair ist doch immer wieder ein Erlebnis für sich, das stark an Busfahren erinnert - immerhin jedoch mit garantiertem Sitzplatz und grausamer Reiseverpflegung. Gut, für € 15,- pro Strecke inkl. Gebühren gilt hinsetzen und Klappe halten. Immerhin, halbe Stunde zu früh in Dublin gelandet - nicht schlecht und das sogar auf einer Rollbahn und beim richtigen Flughafen - dafür gibt’s dann natürlich auch Applaus vom begeisterten Publikum. Warum können es einige denn immer noch nicht lassen? Ich klatsch doch auch nicht, wenn’s der Bäcker schafft mir meine Brötchen einzupacken…

Sollte wohl aufhören zu meine Lieblings-Flugusgesellschaft zu dizzen und erzähl’ Euch lieber von der City! Wirkt auf den ersten Blick etwas heruntergekommen und erinnert stellenweise an Berlin und anderswo eher an ein verschlafenes Dorf in Norddeutschland. Mal Stadt mit unendlich viel Verkehr (vor allem Busse), mal Vorstadt-Feeling in Rüsselsheim. Hat aber was: Direkt am Meer, eigener Hafen, Fluss durch die Stadt und spätestens Nachmittags garantiert schlechtes Wetter. Immerhin war ich wohl nicht der einzige, der Probleme mit dem Linksverkehr hatte (s. Foto).

Look right

So zu finden an jeder Ampel, wobei diese für Fußgänger eher dekorativen Charakter haben. Auch wenn das Risiko durch vorbeifahrende Busse nicht zu unterschätzen ist. Apropos Busse: In Dublin gibt es Busse. Diese haben Bushaltestellen. An denen Steht ein Schild. Auf dem Schild steht der Fahrplan - mit Uhrzeiten wann die Busse abfahren… Jetzt hat aber noch keiner gesagt, dass diese Uhrzeiten für diese Haltestelle gelten. Nenenene, .. das sind die Zeiten, an denen es an der ERSTEN Haltestelle los geht - wann der Bus dann an DIESER Haltestelle ankommt bleibt dem Zufall bzw. dem Erfahrungswert des Reisenden überlassen - kann man mögen, muss man aber nicht. Bringt aber den lustigen Effekt, dass manchmal ewig kein Bus kommt, dann drei direkt hintereinander. Dafür geht’s aber ordentlich zu bei den Arbeitszeiten: Fahrt im Bus, Halt, Fahrerwechsel, Stehen, … wie? und jetzt? … ah, die erlösende Ansage: Dem neuen Fahrer seine Schicht beginnt erst in 15 Minuten! Alles klar, dann stehen wir halt noch bis die Schicht beginnt…

Wer nach dem Weg fragen muss, sollte auch ein gewisses Maß an Englisch-Kenntnissen mitbringen - schließlich gibt es nicht einfach Blocks wie in USA und man braucht sich nur geradeaus, drei Straßen zählen usw.. merken. Besser wäre es sich, auf ausführliche Schilderungen der Form: Geradeausschräglinksderkurvefolgenbeifünfstrassenrechts… einzustellen. Nix ist einfach Quadratisch immer schön Schlangenlinie, oder - um auf den Thread-Titel zurück zu kommen: “Dublin is designed for alcoholics”.

Was dann auch einen nicht unwesentlichen Teil des weiteren Reiseverlaufs vorweg nimmt. Tempelbar, wir kommen! Viel Live-Musik, sehr viel nette Menschen und die Erkenntnis, dass € 35,-  pro Person beim China-Mann günstiges Essen ist.

Posted in Diverses | No Comments

Ext js “vorkonfigurierter” Tree

Mai 30th, 2008 by chris

Jozef Sakalos beschreibt in seinem Beitrag Writing_a_Big_Application_in_Ext wie man durch Erweiterung der GUI Klassen von Ext JS zu sauber gekapselten Komponenten kommt. Leider bin zumindest ich noch nicht dahinter gekommen, was genau man zu welchem Zeitpunkt machen darf - und die JS Fehlermeldungen irgendwo in der ext-all.js sind da nicht wirklich hilfreich.

Hier ein funktionierendes Beispiel für den Tree. Wie einfach zu erkennen, wird fast alles über die Konfig-Optionen gesetzt - bis auf die Root-Node des Trees. Diese kann nicht über Optionen und auch nicht in der initComponent Funktion gesetzt werden. Vielleicht spart es dem ein oder anderen, ein paar Minuten suchen ;-)


/**
* Logviewer tree panel
* TreePanel für die Auswahl der anzuzeigenden Section
*
* @author christoph.luetjen
*/
Logviewer.TreePanel = Ext.extend(Ext.tree.TreePanel, {
region: 'west',
animate: true,
title: 'Logdatei',
split: true,
width: 225,
minSize: 175,
maxSize: 400,
useArrows: true,
autoScroll: true,
rootVisible: false,
collapsible: true,
containerScroll: true,
loader: new Ext.tree.TreeLoader({
dataUrl: 'http://acbase.chris.intra/htdocs/logviewer/sections'
}),


/**
* Set root node
* Scheinbar kann man die nicht innerhalb von initComponent
* setzen. Daher beim Rendern.
*
*/
onRender: function(){
var root = new Ext.tree.AsyncTreeNode({
text: 'root',
draggable: false
});
this.setRootNode(root);


Logviewer.TreePanel.superclass.onRender.apply(this, arguments);
}
});

Posted in Ext JS | No Comments

Excel Sheet zum Vergleich von Handytarifen

April 20th, 2008 by chris

Vor einigen Tagen schickte mir mein Handy Provider das “supergünstige” Angeobt zur Vertragsverlängerung: Wenn ich kein neues Handy benötige, bekomm’ ich den Tarif mit niedriger Grundgebühr und nur 0,19 Euro pro Minute. Toll, da ist ja der Minutenpreis nur noch doppelt so hoch wie bei den Prepaid-Anbietern üblich, aber dauernd Karte kaufen? Das klingt doch ziemlich nervtötend. Wie auch immer, 100% mehr überzeugt mich dann doch, mir das ganze mal näher anzuschauen.

Handy aufladen

Geht z.B. bei Congstar per Lastschrift und somit per SMS, im Ausland und über’s Internet. Damit hat sich mein größes Problem mit Prepaid-Handys erledigt.

Taktung

Bei meinem Vertrag hab’ ich eine 10/10 Taktung, da die meisten meiner Gespräche recht kurz sind. Alle Prepaid Anbieter, die ich gefunden habe, bieten diese Option nicht an. D.h. Taktung ist immer 60/60 - 3 Sekunden telefonieren = 60 Sekunden zahlen.

Nachgerechnet

Letztendlich habe ich beschlossen einfach mal meine Einzelverbindungsnachweise in Excel zu erfassen und auszurechnen, was mich die einzelnen Tarife genau gekostet hätten. Zumindest eine spontane Google Suche brachte leider keine geeignete Vorlage, daher habe ich schnell selber eine erstellt. Vielleicht kann Sie ja noch jemand gebrauchen, daher hier die Excel Vorlage für den Tarifvergleich als Download. Tarifvergleich auf Basis von Einzelverbindungsnachweis (EVN)

… bei mir kam übrigens raus, dass 9ct Prepaid das billigste wäre. Trotz 60/60 Taktung ;-)

Posted in Diverses | 1 Comment

webEdition CMS Blog online!

Januar 21st, 2008 by chris

Auch mein Arbeitgeber die living-e AG, ist nun mit einem eigenen Blog gestartet - zu finden unter der Adresse http://blog-de.webedition.de/. Warum das Ganze? Eigentlich ganz einfach: Mittlerweile ist aus der kleinen beschaulichen Software-Schmiede eine börsennotierte AG geworden und von webEdition wurden mittlerweile mehr als 50.000 Lizenzen verkauft. Dadurch ist es nur schwer möglich jeden Kunden persönlich zu kennen. Trotzdem möchten wir die gewohnte Kundennähe erhalten. Auf der anderen Seite profitieren wir seit Jahren von den Ideen unsere Kunden und ich denke wir sollten hier, außer guter Software, auch hin und wieder etwas zurückgeben.

Der Blog gibt uns nun die Gelegenheit genau dies zu tun: Zum einen können wir Sie über aktuelle Ideen und Neuigkeiten schnell und ohne großen Aufwand auf dem Laufenden halten zum anderen können wir auch neue Ideen aus der Internetwelt direkt an Sie weitergeben. Dieser Blog wird daher auch nicht von unserem Vertrieb gefüttert, sondern ausschließlich vom Produktmanagementteam.

Kurz gesagt wird dieser Blog also zwei wesentliche Themen haben, zum einen “News rund um webEdition”, zum anderen “was haben wir interessantes in der Internetwelt gefunden” - und, ganz klar, “wie kann man diese in webEdition umsetzen”. Der erste Beitrag von Dirk Einecke beschäftigt sich mit dem Thema “Google-Sitemaps” und wie diese in webEdition erstellt werden.

Posted in webEdition WebCMS | 40 Comments

<?php echo “Hello World”; ?>

Dezember 19th, 2007 by chris

Es führt wohl nichts an diesen immer gleichen, leider auch vollständig sinnbefreiten “Hello World” Postings vorbei. Gut, man könnte argumentieren, dass sie das Bedürfnis des Schreibenden ausdrücken, sein Ab-Nun-Am-Leben-Sein auch der weltweiten Internet-Gemeinschaft kundzutun - nur: Wollte das wirklich jemand wissen?

Wie auch immer. Ich für meinen Teil habe den Technik-Part hinter mich gebracht und in meiner unendlichen Kreativität auch schon ein neues Design ausgesucht. Das muss definitiv für’s Erste reichen. Hello World!

Posted in Diverses | 3 Comments

 
Wordpress Themes by and Website Templates by Blogcut