jsteuer
2019-12-18 e394226c64ac86e5c07ba63efad67fc629d72946
README.md
@@ -9,8 +9,7 @@
![Demo](media/usage_author.gif)
*Beispielhafte Anwendung: Eine Datei wird angelegt und einem Demo-Editor geöffnet. Dieser
generiert eine Groovy-Aufgabe*
*Beispielhafte Anwendung: Eine Datei (`file.demo.json` - auch "Kontext-Datei" genannt) wird angelegt. Diese kann direkt durch das Werkzeug (Demo-Editor) geladen werden. Das Werkzeug kann die Kontext-Datei beschreiben (um zu demonstrieren, dass es ein internes Datenmodell persistent speichern kann). Weiterhin kann das Werkzeug eine Groovy-Aufgabe generieren und die Aufgaben-Vorschau anzeigen lassen.*
@@ -171,6 +170,11 @@
![Demo](media/usage_tool_developer.gif)
*Über einen Deklarations-Eintrag in der Datei `ide-settings.json` kann ein Werkzeug (lokal) in
die IDE integriert werden. Der Benutzer kann über das Kontext-Menü Dateien, die mit dem Werkzeug
geöffnet werden können, anlegen. Wird im WWW-Teil des Dateisystems entwickelt, bietet die IDE
grundlegende Unterstütztung beim Editieren von JavaScript-Dateien*
### Entwicklung größerer Werkzeuge
Für größere Werkzeuge sollten etablierte Entwicklungswerkzeuge verwendet werden, beispielsweise:
- [npm](https://nodejs.org/en/) um externe Bibliotheken (u.A. dieses Paket) einzubinden
@@ -178,7 +182,7 @@
- [TypeScript](https://www.typescriptlang.org/) zum typsischeren Programmieren (und/oder Dateien zu ES6 oder ES5 konformen JavaScript umzuformen)
- [Git](https://git-scm.com/) zur Versionierung des Quellcodes
- [Visual Studio Code](https://code.visualstudio.com/) als Entwicklungsumgebung
- Unit Tests
- Unit und End-To-End Tests
Das "gebündelte" Werkzeug muss nach dem Build-Prozess in das WWW-Verzeichnis kopiert und ebenfalls 
lokal in die IDE integriert werden, siehe weiter unten.
@@ -203,20 +207,29 @@
Wie man der Git-Repo URL ansieht, werden Git-Tags verwendet um eine Versionierung 
[(Semantic Versioning)](https://semver.org/lang/de/) der API zu erreichen. Lässt man die Versionierung weg, 
wird die aktuellste Version verwendet. (Siehe Gitblit um verfügbare Versionen einzusehen)
Nun können Hilfsfunktionen (in TypeScript) wie folgt eingebunden werden.
    import { Helpers } from "@mathcoach/ide-api";
 
Die Typedefinition sollte automatisch verfügbar sein, sodass der Umgang mit der
IDE API (Einstiegspunkt ist die globale Variable `MC`) durch eine Entwicklungsumgebung
wie Visual Studio Code unterstützt wird. Falls nicht, muss man die Typdefinition händisch
einbinden (siehe *Typdefinition auch ohne Build-System nutzen*).
 
#### Typdefinition auch ohne Build-System nutzen
Beim Arbeiten mit Visual Studio Code kann man auch ohne Einsatz weiterer Entwicklungswerkzeuge 
und Build-Systeme von der Typdefinition der IDE API profitieren. Hierzu muss ein spezielles Kommentar
an den Anfang der JavaScript-Datei platziert werden (Pfad anpassen!):
und Build-Systeme von der Typdefinition der IDE API profitieren. Hierzu muss ein spezielles
Kommentar (Triple-Slash Directive) an den Anfang der JavaScript-Datei platziert
werden (`path` falls nötig anpassen):
    /// <reference path="../node_modules/@mathcoach/ide-api/mathcoach-api.d.ts"/>
Dies sorgt dafür, dass Visual Studio Code Autovervollständigung samt Dokumentation der 
IDE API anbieten kann. Nachteilig ist, dass die `mathcoach-api.d.ts` dazu heruntergeladen
werden muss.
IDE API anbieten kann. Sollte es bei Verwendung von TypeScript notwendig sein, kann man eine
Datei wie `global.d.ts` anlegen und die Triple-Slash Directive dort einmalig hinterlegen.
#### Zertifikat-Problem beheben
Falls es Probleme mit dem HTW Zertifikat gibt, muss das Zertifikat von Newton ggf. von
@@ -237,11 +250,13 @@
## Werkzeuge in die IDE integrieren
Damit die IDE das Werkzeug integrieren kann, muss eine Werkzeug-Deklaration registriert werden. Zur
Entwicklungszeit kann der Werkzeug-Entwickler dies lokal vornehmen. Anschließend können verknüpfte
Dateien mit dem Werkzeug geöffnet werden und erstellt werden (siehe Kontext-Menüs im IDE-Explorer).
Dateien mit dem Werkzeug geöffnet und erstellt werden (siehe Kontext-Menüs im IDE-Explorer).
Eine Freischaltung des Werkzeugs für alle Autoren erfolgt durch einen Administrator.
### Lokal (Nur für den Entwickler des Werkzeugs)
In der IDE muss eine Werkzeug-Deklaration angelegt werden, dazu muss die Datei `ide-settings.json` editiert werden:
In der IDE muss eine Werkzeug-Deklaration angelegt werden, dazu muss die Einstellungsdatei `ide-settings.json`
editiert werden. Damit Änderungen an der Einstellungsdatei wirksam werden, muss die MathCoach IDE neu
geladen (Seite neu laden) werden.
    {
        ...
@@ -261,10 +276,10 @@
| Schlüssel | Beschreibung  | Beispiel  |
|---------------|---|---|
| displayName   | Der Name des Werkzeugs  |  `"Fill-In-Blank-Editor"`  |
| entry         | Der Einstiegspunkt für das Werkzeugs muss sich auf dem selben Server wie die IDE befinden.  |  `"/mathcoach/www/YOURNAME/tool.html"`  |
| entry         | Der Einstiegspunkt für das Werkzeugs muss sich auf dem selben Server wie die IDE befinden.  |  `"/mathcoach/www/YOURNAME/fib/tool.html"`  |
| description   | Eine kurze Beschreibung  |   |
| developer     | Name des Werkzeug-Entwicklers  |  |
| extension     | Dateien anhand der Datei-Erweiterung mit dem Werkzeug verknüpfen. Hier sollte etwas eindeutiges gewählt werden  | `"fib.json"` für Dateien wie `someExercise.fib.json`  |
| extension     | Dateien anhand der Datei-Erweiterung mit dem Werkzeug verknüpfen. Hier sollte etwas Eindeutiges gewählt werden  | `"fib.json"` für Dateien wie `someExercise.fib.json`  |