nikolauscript
Hier (optional) Anzeige von Autor, Copyrights, Werbung, Links, Session Parametern oder ähnlichem...
nikolauscript


Hallo JOHAN! Die Maus malt für Dich das Haus vom Nikolaus.

Welchen Weg muss sie gehen ? Klicke auf einen Zielpunkt !

Klasse, JOHAN. Das war genau richtig!



Nikolaus interaktiv

Beschreibung des Moduls

Ein schönes Beispiel zum Einsatz von interaktivem SVG und HTML, durch JavaScript dynamisch in einem DOM verbunden: Das Haus vom Nikolaus. Mit Maus.

Habe ich für JOHAN (10) gemacht, um ihn für "Graphentheorie" zu erwärmen ;-) Also die klassische

Aufgabe: Finde EULER-Weg von Start nach Ende!

Dabei kann Kind motiviert werden verschiedene Lösungsstrategien zu entwickeln durch (a) Ausprobieren und (b) Nachdenken, Erforschen. Z.B. mal die Eckengrade zählen und beobachten, dass bis auf genau zwei sonst alle gerade sind. Welche Ecken haben ungerade Eckengrade und wo fängt man eigentlich an/hört auf (START/FINISH-nodes)?

Jetzt ohne SMIL, ganz mit JavaScript stattdessen. Die SVG-Grafik ist also zunächst statisch und wird mit JavaScript nachträglich zum Leben erweckt. Wenn alles funktioniert, wird danach Markup für SVG ersetzt durch JavaScript, das die DOM-Elemente (hier: SVG-Elemente) erzeugt und passend als Baumstruktur zusammenfügt. Dabei wird wesentlich das model zur Datenmodellierung verwendet. Binding ist zunächst unidirektional (viewmodel), kann später aber bidirektional erweitert werden für echtes MVC-feeling. Externe libraries wie angular.js von Google könnten da verwendet werden, müssen aber nicht.

// TODO  Grafik *komplett* dynamisch mit JS im DOM als view aus model erzeugen
// TODO  Eine config für diese Komponente `evo.math.ui.svg.Nikolaus` ausdenken
// TODO  Den modularen code in OOP code für Komponente übersetzen (ist ja vorbereitet)
// ...
// ⇒ Schliesslich nur noch in Ihr HTML (Moodle, WordPress, ...) eintippen:  

    evo.math.ui.svg.Nikolaus.create({
        /* my literal cfg object */
    }).render("myDiv"); 

// zwischen Anfang und Ende eines passenden script tags.  Fertig.  Das war's.  

In dieser Version werden bewusst keine externen libraries verwendet, wie etwa die ausgezeichnete lib JSXGraph von Prof. Alfred Wassermann und seinem Team, sondern nur die Bordmittel einer modernen ECMA-262-Implementierung in zeitgemässem Browser und DOM. Da JavaScript geradezu einlädt eigene APIs zu entwickeln, ist es nicht verwunderlich, dass es viele gute high-level APIs gibt (libraries wie JSXGraph, Raphael, SnapSVG, ...), die einen speziellen Zweck erfüllen. Diese werde ich in anderen Beispielen benutzen. Hier wird erstmal von Hand gekocht, keine Fertiggerichte!