Umgang mit Basis-Datentypen in womodo

28. Juni 2022

Zur Manipulation von Listen und Datumswerten stehen in womodo einige Methoden zur Verfügung. Mit WGA.createList() und WGA.sortList() können Listen manipuliert werden. Mit WGA.createDate(), WGA.modifyDate(), WGA.dateOnly(), ... können Datumswerte manipuliert werden.

Alle diese Methoden stehen derzeit am globalen WGA Objekt zur Verfügung.

So ist das bei einem über die Jahre gewachsenen System und hin und wieder wird es Zeit, etwas Struktur in diese Methoden zu bringen. Das haben wir in womodo 7.10.1 nun getan.

WGA.List()

WGA.List() stellt ein Objekt zur Verfügung, mit dem Listen manipuliert werden können.

WGA.List() erzeugt eine leere Liste. Optional kann die Liste aber auch auf Basis eines anderen Objekts initialisiert werden:

WGA.List(["Hallo", "Welt"])

erzeugt eine Liste mit den beiden Elementen "Hallo" und "Welt".

Um eine Liste zu sortieren, steht folgende Methode zur Verfügung:

WGA.List(...).sortList()

sortList() sortiert die Liste in "natürlicher Reihenfolge" - numerisch bei Zahlen, alphanumerisch bei Texten.

Optoinal kann hier auch eine eigene Sortier-Funktion übergeben werden:

WGA.List(...).sortList(function(a,b){
	return ... // -1, 0 oder 1
})

Die Sortierung einer Liste kann mit folgender Methode umgekehrt werden:

WGA.List(...).reverse()

Die folgende Methode entfernt Nullwerte und leere Strings aus der Liste:

WGA.List(...).trim()

Um doppelte Einträge in der Liste zu entfernen, kommt folgende Methode zum Einsatz:

WGA.List(...).deleteDoublets()

Zur Veränderung einzelner Listenelemente steht die Methode map() zur Verfügung:

WGA.List(...).map(function)

Die übergebene Funktion wird dabei für jedes Listenelement aufgerufen. Das Resultat dieser Methode ist eine neue Liste mit veränderten Werten. Ein Beispiel ist weiter unten aufgeführt.

---

Alle neuen Methoden können dabei direkt verkettet werden.

Beispiel:

WGA.List([1, 0, null, 3, 2, 1])
    .trim()                 // [1,0,3,2,1] null removed
    .deleteDoublets()       // [1,0,3,2]
    .sortList(function(a,b){
        return a>b ? 1 : a==b ? 0 : -1
    })                      // [0,1,2,3] sorted
    .reverse()              // [3,2,1,0] reverse sorted
    .map(function(v){
        return "Value " + v
    })                      // adds string "Value" to each element

//returns [Value 3, Value 2, Value 1, Value 0]


java.util.List

Neben den oben beschriebenen neuen Methoden stehen am WGA.List() Objekt auch alle Methoden des java.util.List Objekts zur Verfügung wie etwa

WGA.List(...).add(100)


WGA.Date()

Zur Manipulation von Datumswerten steht das neue Object WGA.Date() zur Verfügung. Beim Aufruf ohne Parameter wird das Objekt mit dem aktuellen Datum (und Uhrzeit) initialisiert. Es ist aber auch möglich, das Datum als Text zusammen mit einer Formatanweisung zu übergeben

WGA.Date("25.06.2020", "dd.MM.yyyy")

... oder das Objekt mit einem anderen Datumswert zu initialisieren:

WGA.Date(MODIFIED)	// Datum der letzten Änderung einer Inhaltsversion

Zum Manipulation des Datums steht folgende Methode zur Verfügung

WGA.Date(...).modify(unit, amount)

Unit bestimmt die Einheit. Erlaubte Werte sind "d" für "Tage", "M" für Monate, "y" für "Jahre", ... Siehe dazu die Dokumentation zu WGA.modifyDate(). Der Parameter "amount" bestimmt, um wieviele Einheiten das Datum verändert werden soll:

WGA.Date(...).modify("d", -7)

verändert das Datum um 7 Tage in die Vergangenheit.

Ein Datumsobjekt enthält in womodo auch immer eine Uhrzeit. Um die Uhrzeit "auf null" zu setzen, kann die folgende Methode verwendet werden:

WGA.Date(...).dateOnly()

---

Alle neuen Methoden können dabei auch hier direkt verkettet werden.

Beispiel:

WGA.Date("25.06.2020", "dd.MM.yyyy")
    .modify("d", 10)
    .dateOnly()
// returns Sun Jul 05 00:00:00 CEST 2020


java.util.Date

Neben den oben beschriebenen neuen Methoden stehen am WGA.Date() Objekt auch alle Methoden des java.util.Date Objekts zur Verfügung wie etwa 

WGA.Date(...).before(otherDate)