Skip to main content

Einführung

Installation

Benötigt werden nodejs (https://nodejs.org/, liefert npm mit) und git (für Windows siehe https://gitforwindows.org/). Mit npm kann dann grunt (https://gruntjs.com/) mit dem folgenden Befehl aus der Kommandozeile (Windows: cmd.exe) installiert werden:

npm install -g grunt-cli

Für das Installieren der aktuellen Packete regelmäßig folgende Befehle in der Kommandozeile und im Wurzelordner vom ELP (mit package.json und Gruntfile.js) ausführen:

npm install
grunt

Entwicklung

Wichtige Kommandozeilen-Befehle für die Pflege des ELP:

BefehleBeschreibung
npm outdatedVeraltete Packete anzeigen
npm installPackete installieren/updaten, ignoriert Packet-Versionen die potenzielle Änderungen nötig machen
gruntMacht die gesamte "Magie", u.a. bindet aktuelle Versionen von geladenen Packeten in das ELP ein
npm install -g npmAktualisiert npm selbst
npm-windows-upgrade --npm-version latestSpezielles Tool um npm auf Windows zu aktualisieren, mehr Details: Seite des Tools

Um Packet-Versionen zu installieren, die manuell angesehen und das EeLP eventuell angepasst werden muss, muss package.json manuell angepasst werden, im Anschluss installiert npm install die neue Version.

Dokumentation

Die Dokumentation ist mit docusaurus gestaltet. Die dafür geschriebenen Markdown-Dateien sind im Unterordner docusaurus\. Die JavaScript API-Referenz wird automatisch aus JsDoc-Style Kommentaren aus der JavaScript-Datei generiert. Um die Dokumentation unter documentation\ nach Änderungen an den Dateien in docusaurus\ anzupassen, sind folgende Befehle nötig:

BefehleBeschreibung
npm run buildUpdatet die Dokumentation unter documentation\. Wird im Unterordner docusaurus ausgeführt!
npm run startStartet einen lokalen Testserver welcher bei Änderungen in docusaurus\ direkt docusaurus\ anpasst. Wird im Unterordner docusaurus ausgeführt!
npm run jsdoc2mdPasst die API-Referenz in docusaurus\docs\Entwickler\Javascript\api an Resources\Js\planer.js an. Wird im Wurzelverzeichnis ausgeführt!
grunt copy:docsKopiert die Ausgabe von docusaurus in den documentation-Ordner. Bestandteil von grunt build. Wird im Wurzelverzeichnis ausgeführt!

Packete

Ein Projekt wie das ELP kann einen solchen Funktionsumfang nur erreichen, indem es auf zahlreiche existierende, freie Packete zurückgreift. Wir bedanken uns an dieser Stelle bei jedem Mitwirkenden dieser Packete und an der gesamten Open-Source-Community.

Die aktuell benutzten JavaScript-Packete umfassen:

PacketZweck
Bootstrap 3HTML-Framework
BowserErkennung des Browsers um gezielte Meldungen und Hinweise geben zu können
CanvgReiner JavaScript-SVG parser, gerade auch genutzt um MathJax-Ausgaben zu Bildern zu konvertieren und damit exportieren zu können
CKEditor 5WYSIWYG-Editor um Nutzen die Eingabe von Formatierungen und Inhalten wie Bildern zu ermöglichen
CKEditor 4Fallback von CKEditor 5 für IE 10
docxÜbernimmt den Export zu docx-Dateien
es6-promise-polyfillPolyfill für die moderne promise-Syntax
file-saverStandarisiert das Speichern von Datein
flatpickrSchöner, schlichter und moderner Datum- und Zeitpicker
font-awesomeViele Icons die wir nicht selbst erstellen mussten
fullcalendarDer Kalender im Kalender-View
interactjsBisher vor allem um das Anpassen der Größe von textareas auch auf touch-Geräten zu ermöglichen, möglicherweise kann in Zukunft drag&drop vereinfachen
jimp"Rettet" den Export von Bildern indem viele Bilder so verändert werden, dass pdfmake und docx damit umgehen können
jQueryJavaScript-Framework, vor allem für events genutzt, insbesondere mit den namespaces
jszipNötig für docx, in Zukunft möglicherweise auch für andere Export-Formate
list.jsFür die Listen in der Infothek
lodashViele Utility-Funktionen
markedÜbersetzt die Markdown-Dateien der Infothek zu HTML welches die Browser verstehen können
mathjaxBringt den Support für mathematische Gleichungen, vor allem für die Unterstützung von latex-artiger Syntax genutzt
momentLeistungsfähigerer Umgang mit Datum und Zeit als das native Date-Objekt
pdfmakeGeneriert die PDFs, großartiges Projekt!
rgb-colorVoraussetzung für pdfmake
select2Ersetzt die kaum anpassbaren Selectboxen durch gut aussehende und insbesondere stark konfigurierbares DOM
timepicker@Deprecated, vor flatpicker genutzt
urijsVereinfacht den Umgang mit URIs
validatorSammlung von Tests um Dateien für spezielle Formate zu untersuchen, insbesondere für URIs und Data-URIs genutzt
vex-jsVereinfacht das dynamische Erstellen von Dialogfenstern

Zur Entwicklung nutzen wir:

ESlintZur Syntaxüberprüfung von JavaScript
PrettierSorgt dafür, dass ein Code-Style befolgt wird
GruntAls einheitliche Ebene um die Entwicklertools auszuführen
uglifyFür das Minifizieren und Zusammenfügen der JavaScript-Dateien
concat_cssFür das Minifizieren und Zusammenfügen der CSS-Dateien
lessModernere und handlichere "Version" von CSS
docusaurusBaut die Dokumentation aus markdown-Dateien
jsDocFür das Generieren der JavaScript API-Referenz

Nicht aufgeführt sind Plugins, die vollständige Liste kann in ´package.json´ eingesehen werden.