Plugins: Unterschied zwischen den Versionen

Aus Letto-Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 34: Zeile 34:
** Für die Registratur eines Plugins benötigt man den Endpoint '''/config/auth/user/registerplugin''' aus dem config-controller
** Für die Registratur eines Plugins benötigt man den Endpoint '''/config/auth/user/registerplugin''' aus dem config-controller
* Die Dokumentation befindet sich ebenfalls im Uhr-Plugin im Sourcecode.
* Die Dokumentation befindet sich ebenfalls im Uhr-Plugin im Sourcecode.
** Die notwendigen Controller für die REST-Kommunikation findet man im Verzeichnis src/main/java/at/open/letto/plugin/controller
** JavaDoc vom Uhr-Plugin : https://build.letto.at/pluginuhr/open/javadoc/index.html
*** info-controller :  allgemeine Information welche jedes Service liefern muss (von extern erreichbar)
*** DTO-Klassen für die REST-Schnittstelle: https://build.letto.at/pluginuhr/open/javadoc/at/letto/plugins/dto/package-summary.html
*** base-info-controller : allgemeine Information welche jedes Service liefern muss (nur aus dem Docker-Netzwerk erreichbar)
*** Controller-Klassen der REST-Schnittstelle: https://build.letto.at/pluginuhr/open/javadoc/at/open/letto/plugin/controller/package-summary.html
*** ping-controller : interner Ping für health-check (nur aus dem Docker-Netzwerk erreichbar)
** Die notwendigen Controller für die REST-Kommunikation findet man im Verzeichnis '''src/main/java/at/open/letto/plugin/controller''' - https://build.letto.at/pluginuhr/open/javadoc/at/open/letto/plugin/controller/package-summary.html
*** api-extern-open-controller: offene Endpoints welche von extern erreichbar sein müssen für ajax und allgemeine Informationen (von extern erreichbar)
*** [https://build.letto.at/pluginuhr/open/javadoc/at/open/letto/plugin/controller/InfoController.html info-controller] :  allgemeine Information welche jedes Plugin liefern muss (von extern erreichbar)
*** api-controller : die eigentliche Plugin-Schnittstelle zwischen LeTTo und Plugin (nur aus dem Docker-Netzwerk erreichbar)
*** [https://build.letto.at/pluginuhr/open/javadoc/at/open/letto/plugin/controller/ApiExternOpenController.html api-extern-open-controller]: offene Endpoints welche von extern erreichbar sein müssen für ajax und allgemeine Informationen (von extern erreichbar)
*** api-extern-controller : für eine gesicherte Verbindung von einem externen LeTTo-Server wenn Plugin und LeTTo nicht auf dem gleichen Server liegen (noch nicht fertig implementiert) jedoch gleiche Funktion wie api-controller  (von extern erreichbar)
*** [https://build.letto.at/pluginuhr/open/javadoc/at/open/letto/plugin/controller/ApiController.html api-controller] : die eigentliche Plugin-Schnittstelle zwischen LeTTo und Plugin (nur aus dem Docker-Netzwerk erreichbar)
** Den Rest-Client für die Registratur am Setup-Service findet man in der Klasse RestSetupService.class (Methode registerPlugin()) im Verzeichnis src/main/java/at/letto/setup/restclient
*** [https://build.letto.at/pluginuhr/open/javadoc/at/open/letto/plugin/controller/ApiExternController.html api-extern-controller] : für eine gesicherte Verbindung von einem externen LeTTo-Server wenn Plugin und LeTTo nicht auf dem gleichen Server liegen (noch nicht fertig implementiert) jedoch gleiche Funktion wie api-controller  (von extern erreichbar)
*** [https://build.letto.at/pluginuhr/open/javadoc/at/open/letto/plugin/controller/IFrameConfigurationController.html iframe-configuration-controller] : Wenn die Konfiguration des Plugins nicht über JavaScript sondern über ein IFrame in LeTTo eingebunden wird ist hier der Konfigurationsdialog des Plugins (von extern erreichbar)
** jedes Service und Plugin sollte auch die Endpoints des BaseInfoControllers und PingControllers implementieren ('''src/main/java/at/letto/basespringboot/controller)'''
*** [https://build.letto.at/pluginuhr/open/javadoc/at/letto/basespringboot/controller/BaseInfoController.html base-info-controller] : allgemeine Information welche jedes Service liefern muss (nur aus dem Docker-Netzwerk erreichbar)
*** [https://build.letto.at/pluginuhr/open/javadoc/at/letto/basespringboot/controller/PingController.html ping-controller] : interner und externer Ping für health-check etc.
** Den Rest-Client für die Registratur am Setup-Service findet man in der Klasse RestSetupService.class (Methode registerPlugin()) im Verzeichnis '''src/main/java/at/letto/setup/restclient'''
*** Im Uhr Plugin erledigt die Registrator das ConnectionService mit der Methode registerPluigin()
*** Im Uhr Plugin erledigt die Registrator das ConnectionService mit der Methode registerPluigin()
*** JavaDOC: https://build.letto.at/pluginuhr/open/javadoc/at/letto/setup/restclient/RestSetupService.html
** Die Datentransfer-JSON-Klassen für die REST-Schnittstelle als dokumentierte Java-Klassen findet man im Verzeichnis '''src/main/java/at/letto/plugins/'''
* Um selbst entwickelte Plugins testen zu können kann der Plugintester(https://servername/plugintester)  verwendet werden, welcher über das Setup-Service (https://servername/config) installiert werden kann.
* Um selbst entwickelte Plugins testen zu können kann der Plugintester(https://servername/plugintester)  verwendet werden, welcher über das Setup-Service (https://servername/config) installiert werden kann.


[[Category:Plugins]]
[[Category:Plugins]]

Aktuelle Version vom 21. August 2024, 08:44 Uhr

Plugin

Allgemeines:

  • Plugins sind kleine Unterprogramme, welche in allen Fragetypen verwendet werden können und Graphiken, Texte und Berechnungen automatisch generieren können.
  • Die Definition eines Plugins erfolgt über einen Definitionsstring und dem Plugin-Typ. zB. erzeugt der Pluginstring "R+C" der Plugins "WSR" eine Serienschaltung von einem Widerstand und einem Kondensator
  • Die genaue Definition wie der Plugin-String eingegeben werden muss ist in der Hilfe des jeweiligen Plugins ersichtlich
  • aktuell sind in LeTTo folgende Plugins realisiert:
    • Gsr: zeichnet elektrische Schaltungen und liefert auch die Maxima-Berechnung dazu - siehe Video
    • Wsr: zeichnet lineare elektrische Schaltungen und liefert auch die Maxima-Berechnung dazu - siehe Video
    • Dsr: zeichnet lineare Drehstromschaltungen und liefert auch die Maxima-Berechnung dazu - siehe Video
    • Elektronik: zeichnet elektroniksche Schaltungen mit OPV und Transistor
    • Zp: zeichnet eine elektrische Schaltung als Zweipol auf den Bildschirm. Dieses Plugin ist nur aus Kompatibilitätsgründen vorhanden. Es sollte statt dessen nur mehr "Wsr" verwendet werden.
    • SourceCode: automatische Bewertung von Sourcecode(aktuell nur Java)
    • Graph: zeichnet ein Zeitsignal in ein virtuelles Oszilloskop - siehe Video
    • DigiGraph: zeichnet digitale Signale in ein virtuelles Oszilloskop
    • Plot: zeichnet Funktionsgraphen - siehe Video
    • Freihand: Stellt für den Schüler ein Zeichenfenster zur Verfügung, in dem der Schüler Freihand zeichnen kann
    • MultiMeter: einfache Multimeter für die Anzeige von elektrischen Größen und interaktive Schülereingaben - siehe Video
  • Sobald ein Plugin definiert ist, kann über die rechte Maustaste im Fragetext-Editor auf die verfügbaren Plugin-Textmodule zugegriffen werden.

Folgende Module stehen zur Verfügung:

  • Angabe: Hier wird aus dem Plugin ein Angabetext automatisch generiert und in den Text eingefügt. Dieser Text ändert sich nicht, falls am Plugin-String etwas geändert wird, muss also nach einer Plugin-String-Änderung neu eingefügt werden.
  • Graphik: Hiermit wird ein Graphig Tag in eckigen Klammern [PIG ... ] im Fragetext eingefügt. Die Berechnung der Graphik erfolgt dann zur Laufzeit und wird deshalb individuell für jeden Schüler mit seinen Datensätzen berechnet. Der PIG-Tag kann je nach Plugin auch Parameter enthalten welcher zur Konfiguration der Graphik verwendet werden können. Diese Parameter sind vom Plugin abhängig und werden deshalb in der Plugin-Hilfe des Plugins beschrieben. Die Paramter des PIG-Tags können im Fragetext ganz normal verändert werden.

Ein Anführungszeichen " muss im Definitionsstring mit einem Backslash verblockt werden.

 [PIG Plugin2 "text(2,2,tex=\"\alpha\")"/] 
  • Im Maxima-Feld kann mit der rechten Maustaste auf das Berechnungsmodul eines Plugins zugegriffen werden, falls das Plugin eine Maxima-Berechung ausgeben kann.

Plugin-Entwicklung