Kategorien
SAP

UI5: mehrfach JSON Model

Im Controller können beliebige JSON Model gebunden werden.

Die Model sind mit setModel(oModel,“XXXXX“) mit verschiedenen Namen gebunden. Im View lassen sich die Namen direkt ansprechen.

In dem Beispiel stelle ich Wetterdaten in einem einfachen Generic Tile dar. Die Wetterdaten werden von einem PHP Script aufbereitet – mit einfachem print out ist es nicht einmal ein gültiges JSON. UI5 ist in der Hinsicht unempfindlich.

main->temp - 273.15);
//break;
//case ("wind"):
//$such =  round($obj->wind->speed * 1.61);
//break;
//case ("aufgang"):
$dusk = date("H:i:s",$obj->sys->sunrise);
//break;
//case ("untergang"):
$dawn = date("H:i:s",$obj->sys->sunset);
//break;
// Handling Datum
// Thomas August 2019
$aWeekdayNamesDE = [
    'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'
    ];
$aMonthNamesDE = [
    'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
        'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
        ];
$dt = new DateTime();
//}
print('{"data":{ "dusk": "'.$dusk.'", "dawn": "'.$dawn.'", "day": "'.$aWeekdayNamesDE[$dt->format('w')].'", "month": "'.$aMonthNamesDE[$dt->format('n')-1].'", "kw": "'.$dt->format('W').'", "dayn": "'.$dt->format('d').'", "year": "'.$dt->format('Y').'"}}');
// Speicher freigeben
pg_free_result($result);
// Verbindung schließen
pg_close($dbconn);
?>

Ergebnis des PHP Scripts hier zum Beispiel: {„data“:{ „dusk“: „06:36:17“, „dawn“: „20:30:34“, „day“: „Mittwoch“, „month“: „August“, „kw“: „35“, „dayn“: „26“, „year“: „2020“}} und { „data“: [[0,19],[1,19],[2,19]]}

Kategorien
Randnotiz

xtermjs – einfacher Terminal

Java ist eine Insel. Trotzdem muss man sich mit der Programmiersprache beschäftigen. Auf der Suche nach einer Möglichkeit, Terminaldaten auf einer Website darzustellen, stieß ich auf xterm.js

Tolles Beispiel dafür, eine einfache Sache möglichst kompliziert zu machen. xterm.js für sich, ist fast wertfrei. Es ist ein Render – es kann Text dargestellt werden und mit Javascript eine gewisse Logik programmiert werden. Nur im Zusammenspiel mit Anwendungen wie Node.js und socket.io kann es zumindest einfache Bash Befehle wiedergeben. Ein hoher Aufwand, weshalb ich das Projekt verworfen habe.

xterm auf Homepage

Für einfache Übungen aber ganz interessant. Als Demo bleibt es Online (Link). Im Netz finden sich einige Artikel, die etwas über die Programmierung erzählen – ich habe festgestellt, das sich die Syntax im Lauf der Jahre geändert hat. Bezüglich Instanzierung der Klasse und Referenzierung ist das Handbuch (Link) zu Rate zu ziehen.

Zum Code: Das Javascript, das den Terminal auf der Website darstellt, kann in simplen HTML Code aufgerufen werden. Zum Beispiel

Listing HTML Code

In Zeile 5 und 9 laden wir die Scripte. Unser Script ist term.js

var term = new Terminal({theme: {
    background: '#808080',
    color: '#8000ff'},
    cursorBlink: 'true'});
 term.open(document.getElementById('terminal'));
 term.writeln('HALSYSTEM Term \r\n');
 term.write("==> ");
 var input = "";
 term.onData(function (data, ev) {
    const code = data.charCodeAt(0);
    if (code == 13) {
       term.write('\n\r');
       if (input == 'Test') {
         term.writeln('ok');
         }
         input = "";
         } else {
       term.write(data);
       input += data;
       };                                   
 });

Es ist zu erkennen, das es ein simples Anzeigen von Terminaldaten ist und einfache if then Logik angewendet wird. Es lässt sich so zumindest etwas spielen. Bedeutet aber auch, das programmiert werden muss. Das Verhalten bei „Enter“ oder Eingabe von Triggerworten kann und muss programmiert werden. Viel Spass.