Einfaches Javascript Dashboard mit MooTools

17.12.2009 15:03 Uhr - Marcel Domke

Allgemeines


In diesem Tutorial beschreibe ich, wie Ihr ein Drag & Drop Dashboard mit automatischem Speichern in Cookies mit Javascript und Mootools realisiert.


Dazu benötigt Ihr Grundkenntnisse von Javascript und Mootools sowie ein wenig CSS & HTML Kenntnisse.


1. HTML & CSS


Als erstes schreiben wir uns den HTML Code zusammen, den wir für das Dashboard benötigen. In meinem Fall gibt es zwei Spalten in denen sich Boxen befinden die wir später Draggen und Droppen können.



Wichtig ist hier, das die CSS-Klassen droppable und dragable an den richtigen DIV-Element vorhanden sind. Das heißt, dass die DIV-Elemente die für das Auffangen der Verschiebbaren Boxen die Klasse droppable und die Boxen die verschiebbar sind die Klasse dragable besitzen.


Die verschiebbaren Boxen können natürlich beliebig aufgebaut werden, sollten jedoch wie oben beschrieben die CSS-Klasse dragable besitzen. Wichtig für das spätere Speichern der Positionen ist das Attribut ID eines Elements. Dieses muss eindeutig sein und darf nicht doppelt vorkommen. Grundsätzlich darf das Attribute ID sowieso nicht doppelt im HTML vergeben werden.


Die DIV-Elemente die die CSS-Klasse droppable besizen müssen auch eindeutige ID's haben, damit das spätere Javascript auch die Boxen identifizieren kann, in denen die Box Elemente fallen gelassen werden.


Nun haben wir den Grundstein für die Ausgabe gelegt. Hier noch ein paar kleine CSS Styles die natürlich auch beliebig geändert werden können.



2. Optionen der Klasse


Grundsätzlich gibt es mehrere Optionen für die Dashboard-Klasse die als Standardwerte gesetzt werden. Ich habe hier nun die Options im Quelltext kommentiert, damit Ihr wisst welche Options der Klasse zur Verfügung stehen.



3. Methode - initialize()


In der Methode initialize() werden die Elemente die der Klasse übergeben werden gesetzt sowie die Optionen. Zusätzlich werden die Methoden getDragableDashboard() und setDashboard() aufgerufen. getDragableDashboard() ist für das Draggen & Droppen zuständig und setDashboard() setzt beim Aufruf der Klasse die gespeicherten Positionen der Boxen im Browser um.



4. Methode - getDragableDashboard()


Im Prinzip ist die Methode getDragableDashboard() sehr simple. Es werden einfach alle Boxen durch eine foreach-Schleife geschickt und anschließend wird eine neue Instanz der Klasse Drag.Move von Mootools initialisiert. Dieser wird dann das Element und die Container der linken und rechten Spalte übergeben (Sprich: .dragable und .droppable).


In der Funktion onDrop() wird lediglich durch el.inject() das Element in die neue Spalte eingefügt, je nachdem welche Spalte gerade überfahren wurde. Nun wird noch ein Highlight der Box gesetzt und die neue Positionierung der Boxen wird mit der Methode saveDashboard() in einem Cookie gespeichert.



5. Methode - saveDashboard()


Nun kommen wir zum Speichern des Dashboards. Es werden hier einfach alle Spalten, die Boxen aufnehmen können, durch eine foreach-Schleife verarbeitet. Dabei werden die Kinder, in meinem Fall sind es DIV-Elemente, ermittelt und je nach Spalte einem String hinzugefügt. Anschließend werden für beide Spalten einzelne Cookies geschrieben, die so benannt sind die die jeweilige Spalte heißen (Sprich hier: "holder1" und "holder2"). Dem Cookie wird der String mit den beinhalteten Elementen sowie die Lebenszeit des Cookies übergeben. Hierbei ist zu beachten das die Lebenszeit der Cookies in Tagen übergeben wird. Ich habe einfach den Standardwert auf 100 Tage gesetzt.


Diese Regelung gilt nur, wenn der Benutzer die Cookies nicht löscht oder ganz deaktiviert hat. Falls ein Benutzer die Cookies ganz deaktiviert, so kann das Cookie nicht geschrieben werden und die Elemente ordnen sich bei einem neuen Aufrufen der Seite so an wie Ihr es im HTML festgelegt habt.



6. Methode - setDashboard()


Die Methode setDashboard() macht eigentlich genau das Gegenteil von saveDashboard(). Es wird geprüft ob ein Cookie zu dem Spaltennamen gesetzt ist, wenn dieser Fall zutrifft, so wird das Cookie ausgelesen und der String wird ausgewertet. Nach einem Aufteilen des Strings nach "," wird nun das Array durch eine foreach-Schleife den Elementen der jeweiligen Spalte zugeordnet werden.


7. Der Aufruf


Um die Klasse aufzurufen wird einfach im Template folgender Code eingefügt.



Wie oben unter Optionen beschrieben werden einfach die Klassen .dragable und .droppable an die Klasse übergeben. Alternativ dazu kann man auch noch die Standardwerte der Optionen überschreiben, wie es in dem Beispiel zu sehen ist.


Zusammenfassung


Das Dashboard von mir kann sicherlich noch um viele tolle Funktionen erweitert werden. Aber ich denke für jeden Anfänger der eine einfache Dashboardfunktion nutzen möchte ist es ein guter Einstieg. Desweiteren bin ich für Hinweise und Verbesserungen immer offen.


In dem folgenden Codeblock könnt Ihr noch die gesamte Dashboard Klasse sehen. Ein funktionierendes Beispiel folgt in kürze.