Datum Formatieren mit YUI - Teil II

25. Februar 2009 um 01.44 Uhr von Philip Tellis In | Entwicklung | 2 Kommentare

In Teil I , sahen wir, wie man ein Datum-Format mit YUI-Datum Formatter. In Teil II werden wir bei Blick auf Formatierung von Daten für eine bestimmte Verwendung - innerhalb der DataTable Kontrolle.

DataTables sind ein großes Werkzeug für die Präsentation aller Arten von Daten zu den Nutzern Ihrer Website, einschließlich der Termine. Wie wir in Teil I gesehen haben, macht das Datum Formatter es einfach, ein Date-Objekt in einen formatierten String zu verwandeln. Für dieses Beispiel nehmen wir DataTable's Basic-Beispiel , und fügen Sie ein benutzerdefiniertes Datum Formatter es. Wir sind mit dem müssen wir beginnen:

 <! - Individuelle YUI CSS-Dateien -> 
 <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.7.0/build/datatable/assets/skins/sam/datatable.css"> 

 <! - Individuelle YUI JS-Dateien -> 
 <script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/yahoo-dom-event/yahoo-dom-event.js"> </ script> 
 <script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/datasource/datasource-min.js"> </ script> 
 <script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/element/element-min.js"> </ script> 
 <script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/datatable/datatable-min.js"> </ script> 

Als Nächstes fügen wir Markup zur Eingabe eines benutzerdefinierten Format und eine DataTable Neuzeichnen auslösen:

 <label> Format: <input type="text" id="date-format" value="%b %Y" size="30"> </ label> <input type %d = "button" id = "machen -Tabelle "value =" Redraw ">

 <div id="basic"> </ div>

Der Schlüssel hier ist, um eine benutzerdefinierte Formatter Zeitpunkt zu definieren:

 YAHOO.namespace ("YAHOO.example.DateFormatter");
 YAHOO.example.DateFormatter.formatDate = function (elCell, oRecord, oColumn, oData) (
	 var el = document.getElementById ("Datum-Format");
	 var = sformat el.value;

	 var str = YAHOO.util.Date.format (oData, (format: sformat));
	 elCell.innerHTML = str;
 )

Und schließlich ist hier die JavaScript um die DataTable erstellen. Beachten Sie, dass wir den Formatierer für das "Datum"-Spalte, um unseren eigenen Standpunkt:

 YAHOO.example.Data = (bookorders: [(id: "po-0167", Datum: new Date (1980, 2, 24), Menge: 1, Höhe: 4), (id: "po-0783", Datum : new Date ("3. Januar 1983"), Menge: null, Betrag: 12,12345), (id: "po-0297", Datum: new Date (1978, 11, 12), Menge: 12, Höhe: 1,25) , (id: "po-1482", Datum: new Date ("11. März 1985"), Menge: 6, Höhe: 3,5)]); var myColumnDefs = [(key: "id", sortierbar: true), (key: "date", Formatter: YAHOO.example.DateFormatter.formatDate, sortierbar: true, sortOptions: (DefaultDir: YAHOO.widget.DataTable.CLASS_DESC)), (key: "Menge", Formatter: YAHOO.widget.DataTable . FormatNumber, sortierbar: true), (key: "Betrag", Formatter: YAHOO.widget.DataTable.formatCurrency, sortierbar: true)]; var myDataSource = new YAHOO.util.DataSource (YAHOO.example.Data.bookorders); myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; myDataSource.responseSchema = (fields: ["id", "Datum", "Menge", "Betrag"]); var MyDataTable = new YAHOO.widget.DataTable ("basic "myColumnDefs, myDataSource); 

Für unser Beispiel werden wir auch einen Event-Handler an den Tisch, wenn die "Redraw"-Button geklickt wird neu gezeichnet:

 YAHOO.util.Event.addListener ("Render-Tabelle", "Klick", myDataTable.render, MyDataTable, true);

Dass sie alle zusammen, wir bekommen ein DataTable mit customizeable Datum formatieren .

In diesem Beispiel unsere DataSource hält tatsächlichen Datum der Objekte. Dies ist nicht unbedingt erforderlich ist. Für einen Antrag auf Unterstützung von Internationalisierung, Datum / Uhrzeit Informationen sollten gespeichert und übermittelt werden in UTC. Zum Beispiel, wenn Sie Ihre Daten auf Ihren Server als DATETIME -Feld in einer MySQL-Datenbank, dann der beste Weg, timestamp wandeln es in ein Unix ist die Verwendung UNIX_TIMESTAMP() -Funktion:

 SELECT id, UNIX_TIMESTAMP (pubdate) AS Datum, Menge, Betrag FROM bookorders;

Andere Datenbank-Engines haben eine eigene Methode zur Gewinnung von einem Unix-Timestamp.

Das Ergebnis kann dann eingestellt werden, JSON kodiert mit einem Server-seitigen JSON-Bibliothek in der Sprache Ihrer Wahl, bevor es zurück an den Browser übergeben wird. In PHP, würden wir so etwas wie dieses:

 $ Bookorders = array ();
 while ($ row = mysql_fetch_assoc ($ results))
 (
	 $ Bookorders [] = $ row;
 )
 header ("Content-Type: application / json");
 echo json_encode ($ bookorders);

Auf der Clientseite, würden wir erhalten mit Hilfe dieser Daten ist eine XHRDataSource :

 var = new myDataSource YAHOO.util. XHRDataSource ("http://hostname/your/script.php");
 myDataSource.responseType = YAHOO.util.DataSource. TYPE_JSON;
 / / Siehe DataSource-Dokumentation für weitere Informationen

Da Ihre Daten als JSON kommt vom Server, sind Sie wahrscheinlich besser dran vorbei Termine als Unix-Zeitstempel und mit dem Datum in Ihrem Konstruktor Formatter:

 YAHOO.example.Data = (
     "Bookorders": [
         (Id: "po-0167", Datum: 320227200, Menge: 1, Höhe: 4),
         (Id: "po-0783", Datum: 410428800, Menge: null, Betrag: 12,12345)
         (Id: "po-0297", Datum: 279705600, Menge: 12, Höhe: 1,25)
         (Id: "po-1482", Datum: 479376000, Menge: 6, Höhe: 3,5)
     ]
 );

 YAHOO.example.DateFormatter.formatDate = function (elCell, oRecord, oColumn, oData) (
	 var el = document.getElementById ("Datum-Format");
	 var = sformat el.value;

	 var Odate = new Date (oData * 1000);

	 var str = YAHOO.util.Date.format (Odate, (format: sformat));
	 elCell.innerHTML = str;
 )

Beachten Sie, dass wir die Unix-Zeitstempel mit 1000 zu multiplizieren, da die Unix-Zeitstempel erhielten wir waren in Sekunden, während der Konstruktor Date erfordert Millisekunden.

Das war's für heute. In Teil III werden wir den Blick auf Formatierung von Daten in Charts Kontrolle .

Sagen und erweitern: Lesezeichen mit del.icio.us | Digg it! | reddit!

2 Kommentare »

RSS-Feed für Kommentare zu diesem Beitrag. TrackBack URI

  1. Vielen Dank für diese, war sehr hilfreich für mich.
    Allerdings gibt es einen Tippfehler:

    var str = YAHOO.util.Date.format (oData, (format: sformat));

    sollte

    var str = YAHOO.util.Date.format (Odate, (format: sformat));

    cheers:)

    Kommentar von Hal9000 - 10. August 2009 #

  2. Vielen Dank für das, @ Hal9000. Es ist behoben worden.

    Kommentar von Jenny Han Donnelly - 10. August 2009 #

Hinterlasse einen Kommentar

Hinweis: Kommentare sind moderiert Timer für die erste. Spam gelöscht.

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime <em> <i> <q cite=""> <Stark>

Hosted by Yahoo!

Copyright © 2006-2010 Yahoo! Inc. Alle Rechte vorbehalten. Datenschutzbestimmungen - Nutzungsbedingungen

Powered by WordPress auf Yahoo! Web Hosting .