StackWidget =============================================================================== ``maongo.core.toolkit.StackWidget extends Widget`` Das StackWidget dient dazu, aus einer Sammlung von CardWidgets genau eines zu einem gegebenen Zeitpunkt darzustellen. Beispiel für einen einfachen Stack:: Dieser Stack enthält zwei statische Karten, die unterschiedliche Bilder anzeigen werden. Das Setzen der ``Index``-Property des Stacks auf ``0`` bewirkt, dass bei Start der Presentation das erste definierte CardWidget angezeigt wird. Klick auf den Button bewirkt, dass die zweite Karte angezeigt wird. Als Bestandteile des StackWidgets kommen nur CardWidgets in Frage. CardWidgets sind entweder direkt aktivierbar (``StaticCard == true``, Default-Modus), oder sie werden erst durch einlaufende Daten gefüllt und anzeigbar (``StaticCard == false``). Das StackWidget bietet die Möglichkeit, Karten zu verwalten (``DataManager == true``, Default-Modus), diese gezielt per Index zu aktivieren und durch diese zu blättern. Daneben ist es auch möglich, den ``DataManager`` zu deaktivieren und das Routing direkt zum Anzeigen der Karten zu benutzen (jedes eintreffende Data wird direkt angezeigt). Ist ``DataManager == true``, so erlaubt die ``Index``-Property, direkt eine Karte anhand der Position in der Liste der Kartenobjekte auszuwählen. Das JavaScript-Interface bietet außerdem Methoden zum Blättern. Die Property ``Size`` hält die Gesamtzahl der Karten. .. image:: ../images/stack1.png Abbildung für ``DataManager == true`` Der Stack enthält zwei "statische Karten", die direkt vom DataManager verwaltet werden. Einlaufende Daten (Routing **muss** auf ein CardWidget erfolgen) werden ebenfalls vom DataManager verwaltet. In diesem Fall würde die Route auf CardWidget 1 zeigen. Der eingezeichnete Button aktiviert Index 0, also die erste Karte im DataManager des Widgets. Das StackWidget schaltet evtl. sichtbare andere CardWidgets aus und das CardWidget 1 an. .. image:: ../images/stack2.png Abbildung für ``DataManager == false`` Routing erfolgt auf Card-Widget 1. Es benachrichtigt den Stack (Ausschalten anderer CardWidgets) und wird automatisch vom Stack selektiert. Beispiel mit Routing und Datamanager:: ToDo Beispiel mit Routing, aber ohne Datamanager:: ToDo Properties ---------- **StackMode** (Symbol) Schaltet zwischen den "Betriebsmodus" des StackWidgets um. 'managed' oder 'routing' Default: ``managed`` (Das Widget hat eine interne Datenverwaltung und kann auch statische CardWidgets anzeigen.) **Index** (Integer) Position der aktuell sichtbaren Karte in der internen Kartenliste (r/w). Die erste Karte hat den Index ``0``. Das Sichtbarschalten einer Karte erfolgt durch Zuweisen eines Integers. Default: -1 (keine Karte ausgewählt) Liefert im ``StackMode == single`` null, wenn keine Karte angezeigt wird, und ``0``, wenn eine Karte sichtbar ist. Wird im ``StackMode == stack`` Index nicht gesetzt, so ist keine Karte sichtbar. Wird Index auf null gesetzt, so werden alle Cards unsichtbar geschaltet. Wird ein negativer Wert zugewiesen, so wird Index auf 0 gesetzt. Wird ein Wert >= getTotalCards() zugewiesen, so wird Index auf getTotalCards() -1 gesetzt. **Size** (Integer, read-only) Liefert die Anzahl der Kartenobjekte. 0, wenn keine Kartenobjekte vorhanden sind oder wenn ``DataManager == false``. **SelectedCardWidget** (Widget) Liefert das aktuell sichtbare CardWidget. Read-only. .. note:: **Sortierung: zurückgestellt** Ich schätze, statische Karten brauchen eine String-Property Sort, und für Data kann man mit SortField angeben, welche Data-Property zum Sortieren genutzt werden soll. SortType könnte dann noch erlauben, numerisch oder alphanumerisch zu sortieren. **SortField** **SortType** Methoden -------- Die folgenden Methoden sind nur bei ``DataManager == true`` sinnvoll einsetzbar. **showFirst()** Aktiviert das erste Card-Objekt der internen Liste. Entspricht ``Index = 0``. **showLast()** (nur bei ``DataManager == true``) Enspricht dem Setzen des ``Index`` auf den Wert ``getTotalCards() -1``. **showNext()** Aktiviert das nächste Card-Objekt der internen Liste. Entspricht dem Hochzählen des Index um eine Position bis ``getTotalCards() -1``. **showPrevious()** Aktiviert das vorangehende Card-Objekt der internen Liste. Entspricht dem Herunterzählen des Index um eine Position bis ``0``. Beispiel:: ToDo Signals -------- **card-activated** Beim Setzen des Index und bei allen JavaScript-show*()-Funktionen, wenn dadurch eine neue Karte angezeigt wird. **card-deactivated** Beim Setzen des Index und bei allen JavaScript-show*()-Funktionen, wenn dadurch ein CardWdiget deaktiviert (ausgeblendet) wird. CardWidget =============================================================================== ``maongo.core.toolkit.CardWidget extends Widget`` Das CardWidget ist stets Bestandteil eines Stacks. Es hat besondere Funktionen innerhalb des Stacks: Der Weg eines Data in den Stack beginnt auf dem CardWidget, das StackWidget hat keine besonderen Routingfunktionen. Das CardWidget gibt das Data zurück an den Stack mit der Information, welches CardWidget zuständig ist. Diese Information wird zusammen mit den Data an das DataManagement übergeben (wenn auf dem Stack ``DataManager == true`` ist, oder der Stack nutzt sie direkt, um das CardWidget zu aktivieren (wenn ``DataManager == false``). Properties ---------- **StaticCard** (Boolean) Zeige diese Card unabhängig von einlaufenden Data an. Default: ``true`` Schalten Sie StaticCard eines CardWidgets auf ``false``, wenn Sie das entsprechende Widget nur zur Darstellung von einlaufenden Data nutzen wollen. Methoden -------- n/a Signals -------- n/a