Jetzt, da wir in die nötigen Schritte des Programmierens eines Gadgets eingeführt wurden, werden wir es mit der "To-Do List" Anwendung ausprobieren.
Der erste Bereich, der Programmierung erfordert, ist das titleArea Gadget. Bis zu diesem Zeitpunkt wurden Datum und Uhrzeit im titleArea Gadget als statischer Wert, "00/00/00 12:00:00 PM", angezeigt. In dieser Übung werden wir lernen, das Gadget zu programmieren, um die aktuelle Systemzeit auszulesen und anzuzeigen, wie im rechten Bild gezeigt.
Tabelle 4.4. Ein titleArea Gadget mit und ohne Programmierung
![]() |
![]() |
|
titleArea Gadget (ohne Programmierung) |
titleArea Gadget (mit Programmierung) |
Wir führen folgende Schritte aus, um die Übung abzuschließen:
Schritt 1: Erstellen allgemeiner JavaScript Funktionen - Erstellen einer JavaScript Datei mit allgemeinen Funktionen, die von jedem Gadget in der Anwendung verwendet werden können. Die Datei wird die getDate Funktion enthalten, die die aktuelle Systemzeit ausliest und formatiert.
Schritt 2: Erstellen von JavaScript Funktionen für das titleArea Gadget - Erstellen einer zweiten JavaScript Datei mit Funktionen spezeill für das titleArea Gadget. Zusätzlich zur component Funktion wird diese Datei eine onInitialize Funktion enthalten, die den dateTime Part des Gadgets auf die aktuelle Systemzeit festlegt, die von der getDate Funktion zurückgegeben wird.
Schritt 3: Zuweisen von JavaScript Funktionen zum titleArea Gadget - Zuweisen der titleArea JavaScript Datei zum titleArea Gadget und anschließendem modifizieren der Gadget Definition, um eine Reaktion einzubinden, die die onInitialized Funktion aufruft wenn der initialized Event auftritt.
Schritt 4: Testen der Anwendung - Ausführen der Anwendung, um sicherzustellen, dass das aktuelle Systemdatum mit Uhrzeit angezeigt wird.
Schritt 1: Erstellen allgemeiner JavaScript Funktionen
Die erste Funktion, die in dieser Übung benötigt wird, ist die getDate Funktion, eine Funktion, die die aktuelle Systemzeit ausliest und formatiert. Da diese Funktion möglicherweise für mehrere Gadgets nützlich ist, sollte sie sich in einer Datei mit globalem Einfluss befinden.
Wir können die getDate Funktion selbst schreiben, indem wir eine JavaScript Funktion schreiben, die einen String zurückgibt, der die die aktuelle Systemzeit repräsentiert. Um Zeit zu sparen können wir die getDate Funktion der common.js Übungsdatei verwenden, die sich im ToDoList/common Verzeichnis befindet.
Für Informationen, wie die Übungsdateien herunterzuladen sind, kann der Downloaden erforderlicher Übungsdateien Teil dieser Anleitung gelesen werden.
Schritt 2: Erstellen von JavaScript Funktionen für das titleArea Gadget
Als nächstes müssen wir JavaScript Funktionen erstellen, die das titleArea Gadget repräsentieren und die dateTime Anzeige basierend auf der Systemzeit anzeigt. Diese Funktionen gehören nur zum titleArea Gadget, sie müssen deshalb in einer einzelnen Datei namens titleAreaGadgets.js untergebracht sein.
In einem Texteditor erstellen wir eine neue Datei namens titleAreaGadgets.js fügen folgenden Code ein. Es ist sicherzustellen, die Datei im gleichen Verzeichnis (/samples/TodoList) zu speichern, in dem sich die anderen "To-Do List" Anwendungsdateien befinden.
// Die component Funktion wird aufgerufen,
// wenn das Gadget das erste mal instantiiert wird
function component (_gadget) { }
// Deklaieren der Eigenschaften für die Verwendung im Gadget
component.prototype.dateTime = null;
// Die onInitialized Funktion wird aufgerufen, wenn das Gadget erstellt wird,
// aber noch nicht dargestellt wird (d.h. es wird aufgerufen bevor es sichtbar ist)
component.prototype.onInitialized = function()
{
// Jeden Teil im Gadget abfragen, basierend auf seinem ID Attribut
this.dateTime = this._gadget.getPartById("dateTime");
// Festlegen des value Attributs der dateTime Box auf den Wert,
// den getDate() zurückgibt
this.dateTime.setAttribute("value", getDate());
}
Und so funktioniert der obige Code:
Die component Funktion repräsentiert das titleArea Gadget. Das OCP Toolkit erstellt, eine Instanz des component Objekts, wenn das Gadget das erste mal instantiiert wird.
Die onInitialized Funktion verwendet die getPartById Methode um den Part des Gadgets zu erhalten, der als "dateTime" identifiziert ist. Sie verwendet dann die setAttribute Methode um den Wert des dateTime Parts mit dem Ausgabewert der getDate Funktion gleichzusetzen. (Die getDate Funktion befindet sich in der common.js Datei. Im nächsten Schritt werden wir lernen, diese Funktion dem Gadget verfügbar zu machen, indem wir die Datei in dessen Definition unterbringen.)
Schritt 3: Zuweisen von JavaScript Funktionen zum titleArea Gadget
Nun werden wir die titleAreaGadgets.box Datei bearbeiten, um:
Die titleAreaGadgets.js Datei mit dem titleArea Gadget zu verbinden, durch das Hinzufügen der language und code Attribute zum Start-Tag des Gadgets.
Innerhalb des titleArea Gadget, ein neues script Element einfügen, um die common.js Datei in das Gadget zu laden.
Ein behavior und reaction Element hinzufügen, um die onInitialized Funktion aufzurufen, wenn der initialized Event auftritt.
Der initialized Event tritt auf, wenn ein Gadget das erste mal in einer .box Datei mit XML instantiiert wird. Wenn ein Gadget durch JavaScript mit der createBox Funktion instantiiert wird, wird der initialized Event nicht ausgelöst. Stattdessen wird der boxCreated Event ausgelöst. Das bedeutet, falls es nötig ist Code hinzuzufügen, um ein Gadget mit JavaScript zu initialisieren, muss auf den boxCreated Event reagiert werden.
Der fett formatierte Code unten zeigt, wie das zu tun ist.
<gadget id="titleArea" language="jscript" code="titleAreaGadgets.js" > <script id="common" language="jscript" href="../../common/common.js" /> <parts> <box:label id="title" value="My To Do List"/> <box:label id="dateTime" value="Date/Time: 00/00/0000 12:00:00 PM" /> </parts> <behavior> <reaction event="initialized" action="gadget:onInitialized();" /> </behavior> </gadget>
Es ist sicherzustellen, dass die Werte der script und href Attribute auf die richtige Position der titleAreaGadgets.js und common.js Dateien zeigen.
Schritt 4: Testen der Anwendung
Jetzt, da wir die benötigten Javascript Dateien erstellt haben und die Definition des titleArea Gadgets modifiziert haben, um die zugehörige Funktion aufzurufen, wenn es das erste mal initialisiert wird, können wir die "To-Do List" Anwendung testen.
Die aktuelle Systemzeit dateTime Part des titleArea Gadgets angezeigt werden, wie im Bild unten gezeigt.
Falls eine Boxely Anwendung nicht ordningsgemäß funktioniert, kann die Problembehandlungsreferenz für allgemeine Debugging und Problembehandlungstipps zu rate gezogen werden.