Dashboardkonfiguration
Die Dashboardkonfiguration ist ein Formularelement, welches die Daten aus dessen Datenservice so aufbereitet, dass sie von einem Chartelement angezeigt werden können.
Dabei kann nach bestimmten Werten geclustert (gruppiert) und Werteserien über Kategorien erzeugt werden (ähnlich einem Olap-Würfel).
Das Vorgehen folgt dabei immer dem selben Prinzip.
|
Quelle |
|
|
|
Dashboardkonfiguration (Verdichtung) |
|
|
|
Charts (Visualisierung) |
Achtung: Beim Lobster_pro Dashboard handelt es sich um eine reine Visualisierungsschicht für statistische Daten. Die Anzahl an zu verarbeitenden Datensätzen hat daher natürliche Grenzen. Wo diese Grenze liegt ist von der Rechenleistung des Client-Systems abhängig und muss vorallem durch Testen herausgefunden werden. Das Laden und Verdichten der Daten in der Dashboardkonfiguration wird ausschließlich vom Client (Browser) durchgeführt, was die Performance der Anwendung, abhängig von der Datenmenge, signifikant beeinträchtigen kann. In solchen Fällen wird empfohlen die Daten extern vorzuverdichten (z.B. über ein Data-Mining Tool oder durch inkrementelles Exportieren der relevanten Daten in eine externe Datenbanktabelle) und diese dann z.B. via Profilaufruf (Lobster_data) zur Verarbeitung in das Lobster_pro Dashboard zu laden.
Eigenschaften-Kategorie "Dashboard"
1) Legt fest, ob der Benutzer die Dashboardkonfiguration (wenn sichtbar) manipulieren darf.
2) Beinhaltet die Liste an Attributen/Feldern, welche zur Erhebung statistischer Daten zur Verfügung stehen. Hier tauchen automatisch Felder auf, wenn die Dashboardkonfiguration bereits einmal im Testmodus mit korrekten Daten befüllt wurde (siehe Erste Schritte). Durch Doppelklick auf einen Eintrag können weitere Einstellmöglichkeiten bezogen auf diesen Eintrag vorgenommen werden.
Hinweis: Sollte hier ein Feld nicht aufgelistet worden sein, kann dieses auch manuell über "Wert hinzufügen"
hinzugefügt werden.
3) Synchronisiert die Feldliste manuell mit den Feldern der Einträge aus der Datenquelle
4) Bietet die Möglichkeit Datenkategorien zu sortieren. Wenn aktiviert, werden die Kategorien standardmäßig nach dem Mittelwert ihrer Serienwerte aufsteigend sortiert. Zusätzlich wird ein Berechnungsausdruck eingeblendet, welcher zur Anpassung des Sortierverhaltens dient. Siehe Sortieren der Kategorien für Details.
Erste Schritte
Zur Demonstration der Möglichkeiten wird im Folgenden das Erstellen eines Dashboards gezeigt, welches Statistiken über den Anmeldeverlauf von Benutzern erstellt und diese mit verschiedenen Diagrammtypen visualisiert.
Als Quelle dient ein simpler Button, welcher bei Klick und beim Laden der Formulardaten eine Tupelsuche nach Anmeldungsverlauf Objekten ausführt und die resultierenden Einträge in einen geteilten Datenprovider mit der ID "sourceData" schreibt (Aktion: Geteilten Datenprovider setzen).
Tipp: In der Editor-Elementsektion "Datenquellen" können hierfür Vorlagen in das Formular gezogen werden.
Quelle (Button) |
Dashboardkonfiguration (Datenservice) |
In der Tupelsuche wird nach "Anmeldungsverlauf" Objekten gesucht.
Es wird via Aktion der geteilte Datenprovider "sourceData" befüllt. |
Als Datenquelle für das Dashbaord wird der |
Tipp: Durch die Verwendung eines "Geteilten Datenproviders" können auch mehrere verschiedene Dashboardkonfigurationen die selbe Datenquelle verarbeiten.
Die Dashboardkonfiguration wird nun bereits mit Quelldaten befüllt, wenn das Formular geladen wird.
Wichtig: Damit die verfügbaren Datenfelder der Quelle bekannt werden und nachfolgend damit Konfigurationen angestellt werden können, muss die Dashboardkonfiguration einmal im Testmodus mit Daten befüllt werden.
In diesem Beispiel reicht es daher den Testmodus zu starten und wieder zu beenden.
Zusätzlich: Dies muss auch beim erneuten Öffnen des Dashboard Designers geschehen, damit die Chartkomponenten überhaupt erst gezeichnet werden.
Nach dem Beenden des Testmodus sind die Tupelfelder bekannt und stehen zur Konfiguration zur Verfügung.
Die Felder erscheinen nun in der Eigenschaftenrubrik "Dashboard" des Dashboardkonfiguration Elements, nachdem auf den "Aktualisieren" Knopf gedrückt wurde.
Hinweis: Das Feld mit der Aufschrift "*" dient als Platzhalter, um es später zum Zählen von Ergebnissen verwenden zu können ohne extra ein Feld (wie hier id) konfigurieren zu müssen.
|
Diese Felder sind zugleich auch als Kindelemente der Dashboardkonfiguration verfügbar
|
Feldkonfiguration
Durch Doppelklicken eines Feldes in der Liste (links) oder durch Auswahl des entsprechenden Kindelementes im Elementbaum kann die Konfiguration des Feldes vorgenommen werden.
Das Datenfeld entspricht dabei dem Datenfeld der Einträge aus der Quelle.
Die Beschriftung wird an sämtlichen Stellen verwendet, wo der Wert dieses Feldes in Charts und Listen visualisiert wird.
Handelt es sich bei den Werten des Feldes um numerische Werte, so kann über die Genauigkeit definiert werden, wieviele Stellen nach dem Komma dargestellt werden sollen. Der Wert wird entsprechend auf- oder abgerundet.
Wird die Option "Berechnungsfeld" aktiviert, können die Werte dieses Feldes zusätzlich über einen Berechnungsausdruck umgewandelt werden. So kann beispielsweise aus einem Unix Zeitstempel ein formatiertes Datum werden.
Der Eingabewert der Berechnung ist dabei jeweils ein Quelldatensatz. Somit kann über die {DATENFELDNAME} Syntax direkt auf die Felder der Quelldatensätze zugegriffen werden.
Beispiel: Der Wert des Feldes "volume" soll verdreifacht werden. Dann ist der Berechnungsausdruck $calc(3 * {volume})
Dashboardkonfiguration (Cluster, Kategorien und Serien)
Nachdem die Eingabedaten und Dashboardfelder konfiguriert sind, können die Daten, welche von der Dashboardkonfiguration erzeugt werden sollen definiert werden.
Die Konfiguration der Cluster, Kategorien und Serien erfolgt über einen Klick auf das Einstellungen-Symbol (
) des Dashboardkonfiguration Elements.
Der erscheinende Dialog konfiguriert die Bedeutung der Datenfelder im Bezug auf die zu erstellenden statistischen Daten. Dabei können die Felder aus (1) via Drag&Drop in die entsprechenden Bereiche (1-5) gezogen werden.
Erklärung des Dialogs:
In (1) werden sämtliche Felder aufgelistet die der Dashboardkonfiguration bekannt sind (die Felder aus den Einträgen der Datenquelle). Das Feld mit der Aufschrift "*" fungiert als Platzhalter, wenn nur ein Feld vorhanden ist und schlicht die Anzahl an Einträgen ausgewertet werden soll.
(2) Gibt an, welche Information als Werte einer Graphserie herangezogen werden sollen. Was die Messwerte sind, wird wiederum in der Sektion "Messwerte" (3) definiert.
Im Bereich "Kategorie Attribute" (4) wird definiert, welches Feld zur Erstellung von Kategorien herangezogen wird.
"Cluster Attribute" (5) geben an, nach welchem Datenfeld Datengruppen (Cluster) erstellt werden sollen (dazu mehr im Unterkapitel Cluster).
Zum Anwenden von Änderungen oder zum Schließen des Dialogs muss der "Übernehmen" Knopf (6) gedrückt werden.
Beispiel
Oben gezeigte Einstellung erhebt die Anzahl an Benutzerlogins je Browser. Das Feld "Browser" bildet die Kategorien und auf Basis des Feldes "id" werden über sogenannte Aggregationen die Messwerte generiert.
Aggregationen
Zur Erhebung von Messwerten stehen im Bereich "Messwerte" für jedes Feld verschiedene Aggregationsfunktionen zur Verfügung, welche über alle Werte des Feldes innerhalb einer Kategorie angewendet werden (z.B.: Summe über alle Werte von Feld X in einer Kategorie).
Aggregationsfunktionen können hinzugefügt
oder entfernt
werden. Dabei können auch mehrere Aggregationen hinzugefügt werden. Jede Aggregation bildet dabei eine eigenständige Messwertserie (z.B. eine Linie in einem Graphen) ab.
Tipp: Weitere Felder bilden ebenfalls weitere Serien nach dem gleichen Prinzip.
Via Drag&Drop kann die Reihenfolge der Aggregationsfunktionen verändert werden.
Über den Menüknopf (
) können weitere Optionen pro Aggregationsfunktion eingestellt werden. Für Details siehe Kapitel Serien- und Datenabhängige Einstellungen.
Folgende Aggregationen stehen zur Verfügung:
Aggregation |
Erklärung |
Summe |
Bildet die Summe über alle Werte des Feldes |
Mittelwert |
Bildet den Mittelwert über alle Werte des Feldes |
Minimum/Maximum |
Liefert den Minimalen/Maximalen aller Werte des Feldes |
Erster/Letzter |
Liefert den Feldwert des ersten/letzten Eintrags aus der Quelle passend zur Kategorie |
Visualisierung der Daten in Chartkomponenten
Sobald der Datenprovider der Dashboardkonfiguration geupdatet wird oder die Einstellungen des Dashboards verändert werden, wertet das Dashboardkonfigurationselement die statistischen Daten neu aus.
Der Fortschritt dieses Vorgangs wird von einem Fortschrittsbalken angezeigt.
Sind die Daten fertig aufbereitet, löst das Dashboardkonfigurationselement das Ereignis "Dashboardabfrage ausgeführt (Dashboards)" aus (Stichwort: Verhalten).
Der resultierende Datenprovider wird dabei an das konfigurierte Verhalten weitergegeben.
Auf diese Weise kann ein geteilter Datenprovider mit eindeutiger ID über die Aktion "Geteilten Datenprovider setzen" gesetzt werden, welcher dann wiederum von beliebigen Chartkomponente als Datenquelle verwendet wird.
Dashboardkonfiguration |
Chart (Datenservice) |
Die vorbereiteten Daten werden als geteilter |
Als Datenquelle für ein beliebiges Chart wird nun |
Tipp: Durch die Verwendung eines "geteilten Datenproviders" können auch mehrere verschiedene Charts die selbe Dashboardquelle visualisieren.
Beispiel mit Charttyp "Summenübersicht":
Beispiel mit Charttyp "Balkendiagramm" und Charttyp "Kuchen" nebeneinander (beide verwenden den gleichen geteilten Datenprovider "chartData"):
Cluster (gruppierte Daten)
Es ist möglich neben der Deklaration von Messwertattributen und Kategorieattributen auch Attribute zu definieren, nach welchen die verdichteten Daten zusätzlich in einzelne Cluster aufgeteilt werden.
Cluster könnten beispielsweise (bezogen auf das oben aufgeführte Szenario) die Auflistung der Benutzerloginzahlen je Monat und das separat für jeden Browsertyp sein.
Chartkomponenten zeichnen für jeden Cluster ein separates Diagramm.
Achtung: Das Darstellen von sehr vielen Diagrammen kann die Performance des Clients stark beeinträchtigen.
Beispiel: Benutzerloginzahlen je Monat gruppiert nach Browsertyp
Wieviele Diagramme pro Zeile dargestellt werden kann über die Einstellung "Max. Spalten bei Cluster-Charts" definiert werden.
Durch Aktivieren der "Chartanzeige" Option "Zeige Überschrift" werden auch die Cluster Attributbeschriftungen über jedem Diagramm sichtbar.
Zur Konfiguration dieses Beispiels muss in der Anmeldungsverlauf Tupelsuche zusätzlich das Feld "Anmeldezeitpunkt (loginTime)" selektiert werden. Nach dem Starten des Dashboard Testmodus, welcher die Suche neu ausführt, steht im Dashboardkonfigurationselement das neue Datenfeld "loginTime" zur Verfügung. Da dieses Feld später als Kategorieattribut dienen soll, jedoch viele verschiedene Werte beinhaltet, soll hierbei nur das Jahr und der Monat der Werte zur Kategorisierung herangezogen werden.
Dies geschieht über einen Berechnungsausdruck in der Eigenschaftenrubrik "Berechnungen", in welcher die Option "Berechnungsfeld" aktiviert wird.
Folgender Berechnungsausdruck liefert die Werte als Jahr/Monat: $fd({loginTime},yyyy/MM)
In den Dashboardeinstellungen (
) können die Attribute nun wie folgt konfiguriert werden:
Bemerkung: Das Datenfeld "loginTime" wurde in den Einstellungen des Feldes "Anmeldezeitpunkt" genannt (Beschriftung).
Serien- und Datenabhängige Einstellungen
In den Dashboardeinstellungen (
) gibt es die Möglichkeit zusätzliche Konfigurationen für die Serien und deren Daten vorzunehmen.
Hierzu muss lediglich auf das Menüsymbol hinter einer Messwertzeile geklickt werden. Es öffnet sich ein Auswahlmenü, welches für jeden konfigurierten Aggregator (z.B. Anzahl) weitere Einstellmöglichkeiten bietet (siehe Bild).
In den nachfolgenden Abschnitten werden die verschiedenen Punkte vorgestellt.
Beschriftungsausdruck (Beschriftung einer Serie)
Öffnet einen Dialog zur Eingabe eines Berechnungsausdrucks, welcher die Beschriftung der resultierenden Werteserie (z.B. ein Graph in einem Diagramm) bestimmt.
Diese Beschriftung wird Beispielsweise in der Legende eines Graphen oder beim Schweben über einer Serie oder einem Wert mit dem Mauszeiger angezeigt.
Im Berechnungsausdruck stehen zwei Felder zur Verfügung, welche mit geschweiften Klammern zugegriffen werden können:
aggregator Der verwendete Aggregator (z.B. Anzahl). Als Text verwendet, wird hier einfach der übersetzte Name des Aggregators gelesen
attribute Die Konfiguration des Attributfeldes. Als Text verwendet, wird hier einfach die Beschriftung des Feldes gelesen
Der Standardausdruck ist "{aggregator} [common,$of] {attribute}" wobei "[common,$of]" den Sprachverwaltungswert "$of" aus dem Bundle "common" liest.
Am Beispiel des Aggregators "Anzahl" mit dem Feld "id" ergäbe der Standardausdruck die Beschriftung: "Anzahl von id".
Farb-Ausdruck der Serie (Farbe der Serie)
Öffnet einen Dialog zur Eingabe eines Berechnungsausdrucks, welcher die Farbe der gesamten Werteserie (z.B. ein Graph in einem Diagramm) bestimmt.
Der Ausdruck muss einen RGB-Farbwert in (Hexa-)Dezimalschreibweise liefern. Z.B. ff0000, #ff0000, 0xff0000, 16711680 für Rot oder z.B. $getStyleVar(primaryColor) für die Primärfarbe aus den Styles Farben.
Die Farbe einer Serie wird ebenfalls in der Legende eines Diagramms angezeigt.
Hinweis: Liefert der Farbausdruck einen leeren oder ungültigen Wert zurück, wird die Serienfarbe von der Chart-Farbpalette (Styles) bezogen.
Beispiel für eine Serie mit der Farbe Grün
Der Charttyp ist ein Liniendiagramm und der Berechnungsausdruck für "Anzahl Farb-Ausdruck der Serie" wurde einfach als "#00ff00" (Grün) angegeben.
Farb-Ausdruck der Werte (Farben der Werte)
Öffnet einen Dialog zur Eingabe eines Berechnungsausdrucks, welcher die Farbe für jeden einzelnen Wert einer Serie bestimmt.
Der Ausdruck muss einen RGB-Farbwert in (Hexa-)Dezimalschreibweise liefern. Z.B. 0000ff, #0000ff, 0x0000ff, 255 für Blau oder z.B. $getStyleVar(secondaryColor) für die Sekundärfarbe aus den Styles Farben.
Hinweis: Liefert der Farbausdruck einen leeren oder ungültigen Wert zurück, wird der Farbwert der Serie verwendet oder der Standardfarbwert (wenn die Serie keine Farbe definiert).
Im Berechnungsausdruck stehen mehrere Felder zur Verfügung, welche mit geschweiften Klammern zugegriffen werden können:
category Der Wert der Kategorie (im Beispiel oben z.B. "chrome" oder "firefox" als Text. Der Typ hängt vom Kategorie-Attributfeld ab und kann beispielsweise auch der Wert einer dynamischen Aufzählung sein)
value Der numerische Wert (Der Wert der Serie für die Kategorie)
default Der Standardfarbwert von der Chart-Farbpalette (Styles)
index Der Kategorieindex beginnend bei 0 (0 <= index < Anzahl Kategorien)
Diese Felder ermöglichen es, dynamische Einfärbungen abhängig von der Kategorie und des Wertes vorzunehmen.
Beispiele für Wertefarben:
Ausdruck |
Wirkung |
Leer |
Ohne einen Farbausdruck für Werte wird entweder die Serienfarbe (wenn explizit definiert)
|
$if($cmp({value},<,100,n),#ff0000,#0000ff) |
Wenn der Wert kleiner 100, zeichne den Wert rot, ansonsten blau.
|
$if($cmp({category},=,ie),#808080,) |
Wenn die Kategorie "ie" ist, zeichne den Wert grau, ansonsten die Farbe der Serie oder die Standardfarbe.
|
$if($cmp($calc({index} % 2),=,0),#ff0000,#0000ff) |
Zeichne Werte jeder Kategorie mit geradem Index (index modulo 2 = 0) rot, mit ungeradem Index blau.
|
Sortieren der Kategorien
In der Eigenschaften-Kategorie "Dashboard" lässt sich die Sortierung der Kategorien aktivieren.
Zusätzlich erscheinen zwei Berechnungsausdruck, welche das Sortierverhalten steuern.
Standardmäßig werden hier die Ausdrück so gesetzt, dass nach dem Mittelwert der Kategorieserienwerte aufsteigend sortiert wird.
Der Berechnungsausdruck "Kategorie Sortierwert" ermittelt dabei einen beliebigen Wert pro Kategorie, welcher dann im "Kategorie Sortier-Ausdruck" im value Feld verwendet werden kann.
Folgende Felder stehen in diesem Ausdruck zur Verfügung:
seriesValues Die Werte aller Serien innerhalb der Kategorie als Liste (Array). Tipp: Diese kann direkt als Parameter der Math-Funktionen übergeben werden. z.B. $avg( {a.seriesValues} )
category Der Wert der Kategorie (Abhängig vom Typ des Dashboardattributs, z.B. String, dyn. Aufzählung, Datum, ...)
categoryLabel Die Beschriftung der Kategorie
Der "Kategorie Sortier-Ausdruck" steuert wie sortiert wird, indem er immer zwei Kategorien (a und b) miteinander vergleicht. Der Rückgabewert des Ausdrucks muss dabei ein numerischer Wert sein, welcher entscheidet, ob a vor oder nach b einsortiert wird.
Dabei gilt:
Wenn der Rückgabewert < 0, wird a hinter b einsortiert, bei > 0 wird a vor b einsortiert. Bei 0 werden die Positionen von a und b nicht verändert.
Der Ausdruck wird dann für jedes Nachbarpaar von Kategorien aufgerufen, bis keine Kategorieposition mehr verändert wurde und die Kategorien somit vollständig sortiert sind.
Dadurch ist es durch eine einfache Subtraktion der Werte von b von den Werten von a möglich die gewünschte Sortierung zu erhalten. Für andere Fälle kann simpel mit den Werten -1, 0 und 1 gearbeitet werden.
Dem Berechnungsausdruck stehen folgende Felder für jeweils a und b zur Verfügung:
seriesValues Die Werte aller Serien innerhalb der Kategorie als Liste (Array). Tipp: Diese kann direkt als Parameter der Math-Funktionen übergeben werden. z.B. $avg( {a.seriesValues} )
value Der Wert welcher vom "Kategorie Sortierwert-Ausdruck" ermittelt wurde oder der erste Serienwert, wenn der Ausdruck nicht angegeben wurde.
category Der Wert der Kategorie (Abhängig vom Typ des Dashboardattributs, z.B. String, dyn. Aufzählung, Datum, ...)
categoryLabel Die Beschriftung der Kategorie
Tipp: Wenn die Reihenfolge von Aufsteigend nach Absteigend geändert werden soll, muss das Berechnungsergebnis lediglich negiert werden.
Laufzeitbeispiel für die oben angegebenen Standardausdrücke
Beispiel mit statisch sortierten Kategorien
"Bekannte" Kategorien können nach vorne oder hinten sortiert werden, indem als Sortierwert einfach eine fortlaufende Zahl definiert wird.
Konfiguration |
Ergebnis |
Kategorie Sortierwert-Ausdruck $trim( $if($cmp({category},=,safari),5,) $if($cmp({category},=,firefox),4,) $if($cmp({category},=,chrome),3,) $if($cmp({category},=,ie),2,) $if($cmp({category},=,edge),1,) )
$calc( {a.value} - {b.value} ) |
|
Tipp: "Unbekannte" Kategorien würden mit diesem Ansatz immer nach hinten sortiert werden.