Lade...
 

Web

Web

184858

Web(name, APP(appname) | URL(url), x, y, w, h)

Parameter
Parameter   Beschreibung
name * Identifikator oder KLASSE::ausdr
appname * Dateiname des benutzten Web-Apps
url * Absolute URL, die geöffnet werden soll
x * Position X (in Minicells)
y * Position Y (in Minicells)
w * Breite (in Minicells)
h * Höhe (in Minicells)

* – Pflichtparameter

Beschreibung

Das Web-Widget ermöglicht es, Webbrowser zum Anzeigen von Inhalten in ClassiX zu nutzen. Wird ClassiX ohne MorphIT (nativ) verwendet, dann öffnet das Web-Widget die angegebene URL oder APP automatisch in dem eingestellten Browser, sobald das enthaltende Fenster geöffnet wird. Das Web-Widget kann durch einen Klick erneut geöffnet werden. Das Widget kann auch von InstantView aus über Widget Call(OpenWidget) geöffnet werden.

Query-Parameter in den Pfaden von URL und APP werden unterstützt.

 
Semantik URL(url)

Wird ein Web-Widget mit der Flag URL erstellt, dann wird die angegebene URL als absolute Datei-URL interpretiert und dessen Inhalt in einem MorphIT-WebWidget eingebettet. Das folgende Web-Widget würde beispielsweise beim Öffnen die angegebene HTML-Datei darstellen.

Web(web, URL("CX_ROOTDIR\\webPages\\test.html"), 0,0,100,100)

 

Hinweis: Absolute URLs, wie http://www.wikipedia.de werden hier aktuell noch nicht unterstützt. Dies ist aber in Zukunft geplant.

 

Semantik APP(appname)

Das Flag APP gibt einen relativen Pfad zu einer .html oder .htm Datei an, die statische Inhalte anzeigen kann, oder aber auch mit dem Widget in ClassiX kommunizieren und dynamische Inhalte darstellen kann. Der Pfad ist relativ zu dem in dem MorphIT-Server konfiguriertem widgetPath. Web-Widgets mit dem APP-Flag lassen sich nur öffnen, wenn ClassiX eine bestehende Verbindung zum MorphIT-Server hat, da die geöffneten HTML-WebWidgets zum einen über diese Verbindung mit ClassiX kommunizieren können und zum anderen ClassiX wissen muss, unter welcher URL der HTTP-Server des MorphIT-Servers erreichbar ist.

Statische HTML-Seiten sollten idealer Weise weder CSS noch JavaScript enthalten. Nur so kann sichergestellt werden, dass die WebWidgets sowohl nativ, als auch über MorphIT korrekt dargestellt werden. CSS-Styles und notwendige JavaScript-Scripte können in einer separaten .css-Datei & .js-Datei in dem Verzeichnis <widgetPath>/dependencies abgelegt werden, damit sie beim Anzeigen der HTML-Seite geladen sind.

Falls ein HTML-WebWidget JavaScript enthält, oder mit ClassiX kommunizieren muss, dann sollte dieses Widget in Form einer AngularJS-Direktive oder eines AngularJS-Controllers angelegt werden. 

Die HTML-WebWidgets werden in MorphIT direkt eingebunden und nativ in einem MorphIT-Wrapper (MorphIT-Frame) geöffnet, um sicherzustellen, dass sich die WebWidgets in beiden Fällen gleich verhalten. Der MorphIT-Server und der MorphIT-Frame kümmern sich darum, dass weder ClassiX noch das HTML-WebWidget den Unterschied zwischen MorphIT Modus und nativem Modus mitbekommt, obwohl jeder MorphIT-Frame eine eigene Websocket-Verbindung zum MorphIT-Server aufbauen muss, während sich die HTML-WebWidgets in MorphIT alle die bestehende Websocket-Verbindung von MorphIT teilen.

Semantik PutValue

207137

Alternativ zu URL und APP kann dem Web-Widget auch per PutValue ein Inhalt zugewiesen werden. Hiermit lässt sich auch der Wert von URL und APP überschreiben: Der über PutValue eingefügte Wert hat Priorität.

Code-Beispiel:
Web(webWidget, 10, 25, 700, 200) [ INITIALIZE: "<ul><li>Ein Aufzählungspunkt</li><li>Ein anderer Punkt</li></ul>" PutValue ]


Mit PutValue können auch Events  für das Widget ausgelöst werden. Mit der Provider Procedur httpTools::UseAsImgButton wird ein Web-Widget zu einem Bild-Button mit einem SELECT-Event.

Es gibt zwei Möglichkeiten:

Standard-Event 

$('body').injector().get('handleEvent').sendData('SELECT', $(event.target).attr('data-id'))

Achtung: Dieser Ansatz greift direkt in die Datenstrukturen von MorphIT hinein und ist nicht kompatibel mit dem nächsten MorphIT 5.0.0 Release

Kann mit onClick= aufgerufen werden und löst einen SELECT-Event auf das Widget aus.
Socket-Event

$('body').injector().get('webwidgetCommunication').send($(event.target).attr('data-id'), 'DOCUMENT_SELECTED', '{\"identNo\": \"123\" }');

Achtung: Dieser Ansatz greift direkt in die Datenstrukturen von MorphIT hinein und ist nicht kompatibel mit dem nächsten MorphIT 5.0.0 Release

Kann mit onClick= aufgerufen werden und löst einen DOCUMENT_SELECTED_SOCKET-Event auf das Widget aus. Auf dem Stack befindet sich der String der als 2.Paramater übergeben wird. In diesem Beispiel ein JSON. 
Socket-Event über MorphIT-API

 

morphitApi.services.webwidgetLoader.loadWidget() .then(widget => { const channel = morphitApi.services.webwidgetCommunication.registerWidget(widget.id); widget.onDestroy(() => channel.close()); // close when no longer needed // set onclick handler widget.element.onclick = () => { channel.send('DOCUMENT_SELECTED', {"identNo": "123"}); }; });

 

Verwendet man die MorphIT-API, dann muss bei der Initialisierung des Widgets ein Kommunikations-"Channel" für das WebWidget geöffnet werden und dieser kann dann in Event-Handlern des Widgets verwendet werden.

Die MorphIT-API ist kompatibel mit allen Major MorphIT-Versionen.

 

Weitere Informationen

WebWidget-Übersicht und -Entwicklung
 

Siehe auch