Zum Inhalt

Util

Unter dem Namespace Util finden sich verschiedene Hilfsfunktionen.

getDomPath

Die Methode Alvine.Util.getDomPath() gibt einen Pfad auf ein Dom-Element zurück, der für jQuery als Selektor benutzt werden kann. Als Parameter kann entweder ein Selektor, ein Dom-element oder ein jQuery-Objekt übergeben werden.

<div>
   <p>Hallo World!</p>
</div>

// Dom Element referenzieren
element = jQuery('div > p').get(0);

// Dom-Path
path = Alvine.Util.getDomPath(element);
// -> body > div:nth-child(1) > p:nth-child(1)

// Referenzieren
ref = jQuery(path);
// (ref === element) === true

Logger

Mit Hilfe des Loggers können schnell und einfach Funktionen analysiert und Fehler ermittelt werden. Eine Logmeldung wird mit Hilfe einer der folgendne Funktionen geschrieben:

Alvine.Util.Logger.logFatal('my fatal');
Alvine.Util.Logger.logError('my error');
Alvine.Util.Logger.logWarn('my warn');
Alvine.Util.Logger.logInfo('my info');
Alvine.Util.Logger.logDebug('my debug');
Alvine.Util.Logger.LogTrace('my trace');

Als Best-Practise Ansatz sollte man als erstes Argument immer das Modul oder die Funktion übergeben. Damit ist es dann sehr leicht die Meldungen über die Konsole zu filtern.

Alvine.Util.Logger.logDebug('alvine.types.string','my message');

Nach dem Aufruf einer dieser Funktionen wird zuerst keine Meldung ausgegeben. Erst wenn man den Trashold entsprechend setzt werden Meldungen ausgegebn. Der Trashold kann über eine der folgenden Funktionen gesetzt werden:

Alvine.Util.Logger.setAll();
Alvine.Util.Logger.setFatal();
Alvine.Util.Logger.setError();
Alvine.Util.Logger.setWarn();
Alvine.Util.Logger.setInfo();
Alvine.Util.Logger.setDebug();
Alvine.Util.Logger.setTrace();
Alvine.Util.Logger.setOff();

Die einzelnen Level schließen immer die darunterliegenden Level ein. So wird mit einem Trashold auf WARN auch alle Errors und Fatals angeteigt. KeineMeldungen erhält man demnach mit dem Trashold Off. Die Reihenfolge der Auswertung ist folgendermassen

ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF

Standardmässig werden die Logmeldungen immer über das Consolenobjekt ausgegeben. Diese wird bereits beim Laden des Frameworks mit Hilfe der addConsoleHandler() aktiviert.

 Alvine.Util.Logger.addConsoleHandler();

Alternativ kann man die Logmeldungen auch an eine URL per POST senden. Dazu muss ein Ajax-Handler definiert werden.

Alvine.Util.Logger.addAjaxHandler('http://example.com/logging');

eigene Loghandler lassen sich ebenfalls einfach hinzufügen. Dazu muss nur das log-Event mit den gewünschten Namespaces beobachtet werden. Im folgenden Beispiel werden alle Logmeldungen abgefragt.

jQuery(window).on('log.TRACE.DEBUG.INFO.WARN.ERROR.FATAL', function () {
    // 
})

Möchte man nur FATAL-Fehler bekommen, so reicht es den Namespace auf log.FATAL zu setzen

jQuery(window).on('log.FATAL', function () {
    // 
})

UUID

Die UUID Funktion ermöglicht es eine UUID vom Typ 4 (Random) zu erstellen. Dazu muss einfach nur durch den Konstruktor ein neues UUID-Objekt erstellt werden.

// Neues UUID-Objekt
uuid = new Alvine.Util.UUID()
uuid.toString()
// -> "f49dc92c-1ac5-4f45-84bc-2645fce5a14a"

getEscapedIDSelector

Ids die eines der Sonderzeichen [ . [ ] , = enthalten, können im DOM nicht direkt selektiert werden. Die Sonderzeichen im Selektor müssen vorher mittels dieser Funktion escaped werden. Die Id erhält zudem gleich den ID-Seletor-Prefix #. Dieses Verhalten kann über den zweiten Parameter deaktivert werden.

Alvine.Util.getEscapedIDSelector('a[b]');
// -> #a\[b\]

// Ohne Hash
Alvine.Util.getEscapedIDSelector('a[b]', false);
// -> a\[b\]

Wird kein oder eine fehlerhafte ID übergeben, so wird eine Exception geworfen.

getEscapedIDSelectorOrRandom

Die Funktion getEscapedIDSelectorOrRandom ist ein Wrapper für die Funktion getEscapedIDSelector. Der Wrapper fängt die Exceptions ab, wenn keine ID übergeben wird und liefert dafür eine zufällige ID. Dies ist sinnvoll, wenn mann sich nicht sicher istm ob ein Objekt eine ID besitzt.

transformValues

Die Funktion Alvine.Util.transformValues() stellt verschiedene Hilfsfunktionen über einen Aufruf bereit. Somit kann ein Wert zentral über eine Funktion bearbeitet werden. Diese Funktion kommt beim Form-Objekt und Template-Objekt zum Einsatz.

value = 'Hand Mustermann';
command = 'strtolower';

Alvine.Util.transformValues(value, command, function (command, args) {
        if (command === 'mycommand') {
            return 'myvalue';
        }
    });

Über eine Callback-Funktion kann die Methode um eigene Befehle erweitert werden.

Folgende Befehle sind verfügbar:

  • static (statischer Text: Sonderzeichen \ <space> und : können durch ein vorangesteltes \ gequotet werden),
  • strtolower (alles kleingeschrieben),
  • strtoupper (alles großgeschrieben),
  • trim (Leerezichen am Anfang un Ende entfernen)
  • plaintext (HTML-Tags entfernen)
  • rawurlencode (URL-Codirung)
  • ucfirst (Erstes Zeichen groß)
  • ucwords (Jeder Wortanfang groß)
  • intval (Integer)
  • length (Länge der Zeichenkette)
  • count (Anzahl der Einträge in einer Map oder Collection)
  • base64 (Base64)
  • uniqid (Eindeutige temporäre ID)
  • htmlspecialchars (HTML-Sonderzeichen nach Entities)
  • substring (Teilzeichenkette: Die Parameter werden durch Doppelpunkt getrennt => substring:Anfang:Länge)
  • if (alias: ?) Ist der ternary operator, der erste Paraeter ist der True, der zweite der False-Teil. Um den aktuellen Wert in der Queue zu verwenden, kann man das Schlüsselwort value setzen. Will man hingegen die statische Zeichenkette "value" haben, so muss man einen davorstellen und \value schreiben.
  • empty (Leere Zeichenkette)
  • undefined (undefined Wert)
  • suffix (Vorsilbe)
  • prefix (Nachsilbe)
  • i18n (Lokalisierung; der Wert wird als Schlüssel in der Registry unter Alvine.Registry.get('Locale') gesucht)
  • logger (Der Wert wird in der Console ausgegeben; es erfolgt keine Bearbeitung. Als Parameter kann der Loglevel (trace) übergeben werden. Wird kein Loglevel übergeben, so wird console.log verwendet.)
  • call (Aufruf einer Callbackfunktion. Die Funktion kann an drei Stellen definiert sein: entweder global, im Kontext context.Operation oder im übergeben Objekt)
  • index (ruft .get() oder .getIndex() einer Map oder Collection auf)
  • registry (Liest einen Wert aus der Registry aus)
  • tostring (Typumwanlung in eine Zeichenkette)
  • nop (Keine Operation; Wert wird einfach weitergegeben)
  • tointeger (Typumwandlung in einen Integerwert; wenn nicht möglich ist der Wert undefined)

Kommentare