Modul- / 3D-Widget-Anpassung
- Tutorial
Training
Das Widget3D ist eine virtuelle Darstellung eines Geräts auf einer Karte in Form einer schwebenden Blase, die durch eine Auswahlkassette mit weiteren Informationen ersetzt wird.

Die in Blau umrissenen Informationen können mit Javascript modifiziert werden.

Das Widget3D besteht aus 4 verschiedenen Teilen:
- Die Informationsblase: In Form von Text oder Symbol liefert sie schnelle Informationen über den Status der Ausrüstung. Standardmäßig stellt sie das Symbol der Gerätefamilie dar, und die Farbe der Blase hängt vom Zustand der Ausrüstung ab
- Verbunden: White Bubble
- Standard: Rote Blase
- Getrennt: Graue Blase
- Workflow-Status (Farbe, die mit dem Workflow verknüpft ist)
- Die sichtbare Kassette, wenn die Ausrüstung ausgewählt wird:
- Sein Titel: der standardmäßig den Namen der Ausrüstung darstellt
- Sein Untertitel: der standardmäßig die Familie der Ausrüstung oder ihren Geschäftsstatus angibt (Defekt im Gang, im Bau usw. ...)
- Die QuickAction-Schaltfläche: Ermöglicht es dir, eine schnelle Aktion an der Ausrüstung auszuführen. Standardmäßig ist es nicht sichtbar.
Anpassung des Inhalts eines 3D-Widgets:
Über die JS-Skripte können wir die im 3D-Widget sichtbaren Informationen verändern; dafür müssen wir nur die Funktion hinzufügen Customize, oder um dieselbe Anpassen-Funktion zu verwenden und abzuschließen, die zuvor zur Anpassung des Widget2D verwendet wurde; tatsächlich erfolgt die Anpassung gleichzeitig.
// Modifies the content of widget2D and widget 3D for a given equipment.
function Customize(equipment, widget2d, widget3d)
{
Widget3D.text = ":)" ;
}
Wenn diese Funktion in einem Skript vorhanden ist, wird sie jedes der mit diesem Skript verbundenen Geräte aufgerufen, jedes Mal, wenn das Gerät modifiziert wird oder ein UI-Element in der Schnittstelle erscheint.
Die Funktion "Anpassen" stellt drei Parameter frei:
- Ausrüstung: Die Ausrüstung, die individuell angepasst wird
- widget2D: Das UI-Objekt zur Änderung der Darstellung des Geräts in allen 2D-Listings.
- widget3D: Das UI-Objekt zur Änderung der Darstellung der Ausrüstung im 3D.
Beschreibung des Widget3D-Objekts (bearbeitbare Felder):
- widget3D.title
- Der Titel ist fett gedruckt oben im Titelblock
- Format: String
- Standard: Der Name der Ausrüstung
- widget3D.untertitel
- Der Text unter dem Titel.
- Standard: Der Name der Gerätefamilie.
- Format: String
- widget3D.text
- Informationstext, der im Ballon und im Titelblock angezeigt wird.
- Standard: leer
- Format: String
- widget3D.textColor
- Die Farbe von widget3D.text
- Format: Farbe
- widget3D.icon
- Das Symbol im Ballon, falls widget3D.text bereits gesetzt ist, wird das Symbol nicht angezeigt.
- Standard: Das Ausrüstungsfamilien-Symbol
- Format: Ikone
- widget3D.iconColor
- Die Farbe von widget3D.icon
- Format: Farbe
- widget3D.iconBackgroundColor
- Die Hintergrundfarbe der Blase.
- Standard: Transparent
- Format: Farbe
- widget3D.iconFillAmount
- Die Füllmenge der Hintergrundfarbe. Jeder Wert zwischen 0 und 1, 0 = leer, 1 = gefüllt, 0,5 = halb gefüllt.
- Standardwert: 1
- Format: Single
- widget3D.iconFillMethod
- Die Methode, die Hintergrundfarbe auszufüllen.
- Mögliche Werte
- Vertikal: Die Farbfüllungen reichen von unten nach oben.
- Horizontal: Die Farbe füllt sich von links nach rechts aus
- Kreisförmig: Die Farbe füllt sich im Uhrzeigersinn.
- Standard: Kreisförmig
- Format: String
- widget3D.quickAction
- Verwaltet die Anzeige eines QuickAction-Buttons, der Wert entspricht dem Text des Buttons; wenn letzterer nicht ausgefüllt ist, wird der Button ausgeblendet. Weitere Informationen zur Nutzung des QuickAction-Buttons finden Sie im entsprechenden Tutorial.
- Standard: leer
- Format: String
- widget3D.quickActionIcon
- Das Symbol wurde im QuickAction-Button angezeigt. Das Symbol ist versteckt, wenn der Wert nicht befüllt ist.
- Standard: leer
- Format: Ikone
Widget3D-Beispiel: Text im Ballon anzeigen, um die Temperatur eines Sensors zu sehen
In diesem Beispiel zeigen wir den Temperaturwert eines Sensors direkt in seiner Geräteblase an.

Voraussetzungen:
- Familie:
- Temperatursensor
- Drehbuch:
- Thermometer
- Importregel:
Capteur de température - Implementierte Methoden
Customize
- Importregel:
- Thermometer
- Ausrüstungsinstanz:
- Temperatursensor 1
- Familie: Temperatursensor
- Variablen
TEMP: 13.032
- Temperatursensor 1
Beispielskript:
function Customize(equipment, widget2d, widget3d)
{
// Récupération de la variable TEMP de l'équipement
// Astuce : Une variable peut être récupérée via son nom (Température) ou sa référence (TEMP)
let temperatureVar = equipment.GetVariable("TEMP");
// Modification du texte par la valeur de la température (1 décimale) ajout et de l’unité
widget3d.text = temperatureVar.AsFloat.toFixed(1) + "°C";
}
Widget3D-Beispiel: Ein Symbol anzeigen, das den Status einer Tür darstellt
In diesem Beispiel verändern wir das Symbol, das in der 3D-Blase angezeigt wird, entsprechend seinem Eröffnungszustand, und das gleiche Symbol im Widget2D hinzufügen.

Voraussetzungen:
- Familie:
- GarageDoor
- Drehbuch:
- GarageDoor
- Importregel:
GarageDoor - Implementierte Methoden
Customize
- Importregel:
- GarageDoor
- Ausrüstungsinstanz:
- Garage G1
- Familie: GarageDoor
- Variablen
DOOR: wahr / falsch
- Garage G1
JS-Skript:
function Customize(equipment, widget2D, widget3D)
{
// Récupération de la variable qui porte l'état de la porte.
var doorVar = equipment.GetVariable("DOOR");
// L'état de la porte étant une string pouvant avoir 2 valeurs Open/Close, on calcule si la porte est ouverte en vérifiant la valeur.
var isOpened = doorVar.AsString == "Open";
var iconReference = isOpened ? "Icon Door_Opened"
: "Icon Door_Closed";
// On applique l'icône à la 2D et 3D
widget2D.icon = widget3D.icon = iconReference;
}
Widget3D-Beispiel: Anzeige der QuickAction-Schaltfläche zum Öffnen einer Webseite
In diesem Beispiel zeigen wir eine Schaltfläche an, mit der ein Kameragerät eine Webseite öffnen kann, um auf den Kamerafeed zuzugreifen.

Voraussetzungen:
- Familie:
- Tür
- Drehbuch:
- StateDoor
- Importregel:
Porte - Implementierte Methoden
Customize
- Importregel:
- StateDoor
- Ausrüstungsinstanz:
- Lokale Kamera 1
- Familie: Kamera
- Variablen
flux: URL der zu öffnenden Seite
- Lokale Kamera 1
Die Anzeige des Knopfes erfolgt über die Implementierung von Customize. Wenn der Nutzer auf den Button klickt, gilt die ExecuteQuickAction wird genannt. In unserem Beispiel ruft der Funktionsaufruf den Wert der Flux-Variable ab, die eine URL ist, und übergibt ihn als Parameter einer Funktion, um das Öffnen einer Webseite auszulösen.
Drehbuch:
// Ajout d'un bouton avec le label "Voir le flux" dans le menu des actions rapides
function Customize(equipment, w2d, w3d)
{
w3d.quickAction = "Voir le flux";
}
// Implémentation de l'action rapide "Voir le flux" : affichage d'une page web
function ExecuteQuickAction(equipment)
{
let flux = equipment.GetVariable(“flux”);
WebView.Show(flux.AsString, false);
}
Widget3D-Beispiel: Beispiel für die Darstellung eines Mülleimers (Symbolfüllung)
In diesem Beispiel haben wir drei öffentliche Behälter, die ihre Füllrate erhöhen. Wir möchten diese Rate direkt in der Blase jedes Behälters darstellen, indem wir den Hintergrund farbig ausfüllen.

Voraussetzungen:
- Familie:
- Öffentliche Mülltonne
- Drehbuch:
- Mülleimer
- Importregel:
Poubelle publique - Implementierte Methoden
Customize
- Importregel:
- Mülleimer
- Geräte-Instanzen:
- Mülleimer 1
- Familie: Öffentlicher Mülleimer
- Variablen
Remplissage: 25 (entspricht 25 % Belegung)
- Mülleimer 2
- Familie: Öffentlicher Mülleimer
- Variablen
Remplissage: 35 (entspricht 35 % Füllung)
- Mülleimer 3
- Familie: Öffentlicher Mülleimer
- Variablen
Remplissage: 65 (entspricht 65 % Füllung)
- Mülleimer 1
Die Blase wird durch die Implementierung der Customize.
Die Farbe der Blase nimmt 3 Werte entsprechend unterschiedlichen Schwellenwerten an,
und der Füllwert wird vertikal zugewiesen.
Drehbuch:
// Remplissage de l'icône et changement de sa couleur en fonction de la valeur du capteur
function Customize(equipment, widget2D, widget3D)
{
var fillVar = equipment.GetVariable("Remplissage");
// Customize the color and its fill
var color = "white";
if (fillVar.AsFloat > 70) color = "#FFFF7702";
if (fillVar.AsFloat <= 70) color = "#FFFFB400";
if (fillVar.AsFloat <= 50) color = "#FF95B804";
widget3D.iconBackgroundColor = color;
widget3D.iconFillAmount = fillVar.AsFloat/100; // Value is from 0 to 1
widget3D.iconFillMethod = "Vertical";
}