de Scripting Dokumentation (comments)
Die graphomate comments integrieren sich nahtlos in die SAP Analytics Cloud. So wird auch das Scripting im Application Designer der SAP Analytics Cloud unterstützt.
Die im Propertysheet dargestellten Eigenschaften, lassen sich per Scripting von der Komponente abrufen und setzen. Daneben gibt es noch Methoden, die der Vereinfachung des setztens von Kontexten für Kommentare dienen:
createDataContext(key: string, value: string): DynamicContext;
Über diese Methode kann ein Datenkontext erstellt werden, der dann über die Methode setDynamicContexts, der ein Array aus Kontexten übergeben wird, gesetzt werden kann. Ein Datenkontext beinhaltet in der Regel eine Kombination aus Dimension und Member. Also bspw. ist der key “year” und der value “2021”.
createDataContextWithText(key: string, value: string, keyText: string, valueText, string): DynamicContext;
Unterscheidet Ihre Datenquelle zwischen IDs für Dimensionen und Membern und deren Anzeigetext, so kann diese Methode wie createDataContext verwendet werden, mit der zusätzlichen Möglichkeit auch die Anzeigetexte zu setzen. Bpsw. ist hier der key “CAL_YEAR” und der keyText “Year”.
createEnvironmentContext(key: string, value: string): DynamicContext;
Ein Umgebungskontext kann dazu genutzt werden, um den Kommentarraum auf bspw. eine bestimmte Umgebung oder ein Dashboard einzuschränken. Hierbei könnte dann key etwas wie “Dashboard Name” sein und value dazu “Global Sales 2021”.
addOrReplaceDataContext(key: string, value: string): void;
Diese Methode funktioniert grundsätzlich wie die createDataContext. Abweichend davon fügt sie aber den hier definierten Kontext direkt dem Widget zu bzw. ändern ihn ab. Der Weg über setDynamicContexts ist damit nicht notwendig.
addOrReplaceDataContextWithText(key: string, value: string, keyText: string, valueText: string): void;
Die Funktionsparameter verhalten sich wie die der Methode createDataContextWithText. Wie in addOrReplaceDataContext wird der Kontext aber auch direkt hinzugefügt oder abgeändert.
addOrReplaceEnvironmentContext(key: string, value: string): void;
Die Parameter verhalten sich analog zu createEnvironmentContext. Dieser wird jedoch direkt hinzugefügt oder abgeändert.
removeDataContext(key: string): void;
Entfernt den Datenkontext mit dem key aus dem Kontextraum des Kommentarwidgets.
removeEnvironmentContext(key: string): void;
Entfernt den Umgebungkontext mit dem key aus dem Kontextraum des Kommentarwigets.
setSelectedData(selectedData: SelectionContext[]): void; (ab Version 1.20224.1)
Die in einer graphomate Visualisierung per Klick selektierten Daten können so dem comments widget zur Generierung von Datenkontexten übergeben werden.
setDynamicContexts(dynamicContexts: DynamicContext[]): void; (ab Version 1.20231.0)
Kontexte, die über die create*Context Methoden erstellt wurden, können hier verwendet werden, um die gesamten dynamischen Kontexte neu zu setzen. Der alte Zustand wird hierbei überschrieben.
addOrReplaceContexts(contexts: DynamicContext[]): void; (ab Version 1.20231.0)
Mehrere Kontexte gleichzeitig zu setzen führt bei Verwendung von addOrReplace*Context zu Unstimmigkeiten. Diese Methode schafft hier Abhilfe, denn sie ermöglicht mehrere, per create*Context erstellte Kontexte, parallel an das Widget zu übergeben.
removeContexts(contexts: DynamicContext[]): void; (ab Version 1.20231.0)
Um mehrere Kontexte gleichzeitig zu entfernen, sollte statt einzelenen Aufrufen von remove*Context, diese Methode verwendet werden, um mit create*Context erstellte Kontexte dieser Methode zu übergeben. Diese werden dann aus dem Zustand des Widgets entfernt. In der create*Context Methode kann der key oder der value auch als leerer String gesetzt werden. Dann werden alle Kontexte, auf die nur der definierte key oder value zutrifft, entfernt.
Beispiele
Um je nach Auswahl eine Wertes in einem DropDown-Feld einen Datenkontext zu setzen, kann folgender Code angepasst werden:
var countryMember = Country_Dropdown.getSelectedKey();
if (countryMember === "None") {
Chart_1.getDataSource().setDimensionFilter("Country_Region", []);
graphomate_comments_1.removeDataContext("Country_Region");
} else {
Chart_1.getDataSource().setDimensionFilter("Country_Region", countryMember);
graphomate_comments_1.addOrReplaceDataContext("Country_Region", countryMember);
}
Folgender Code setzt die Informationen über einen in einem graphomate chart selektierten Datenpunkt als Kontexte für das comments widget:
graphomate_comments_1.setSelectedData(graphomate_charts_1.getSelectedData()); // ab Version 1.20224.1
Mehrere Kontexte gleichzeitig können wie folgt abgeändert oder hinzugefügt werden:
var regionContext = graphomate_comments_1.createDataContext("region", "North");
var countryContext = graphomate_comments_1.createDataContext("country", "Germany");
graphomate_comments_1.addOrReplaceContexts([regionContext, countryContext]);
Um die oben hinzugefügten Kontexte gleichzeitig wieder zu entfernen, kann wie folgt vorgegangen werden:
Sollen die beiden Kontexte von oben entfernt werden, unabhängig davon auf welchen Wert sie gesetzt sind, so können Leerstrings verwendet werden:
Um alle hinzugefügten dynamischen Kontexte neu zu setzten, als auch die bisher gesetzten zu entfernen, gehen wir wie folgt vor: