NEWS
FritzAdapter widget Dauer <1min richitg anzeigen
-
Hallo zusammen,
habe mir von https://github.com/ruhr70/ioBroker.fritzbox das "Fritzbox Widget Anruferliste mit dem "basic - HTML Widget" eingebunden und etwas angepasst.
Leider konnte ich hierzu kleine Anpassungen nicht finden, daher folgende Fragen:
1.
Ist es möglich die Dauer von Gesprächen <1min in einem anderen Format anzuzeigen?
Aktuell wird z.B. bei 29sec nur 29 angezeigt. Schöne wäre 0:29 dann würde aus auch zu den restlichen > 1min passen.
2.
Ich würde gerne die Anruferliste Spalte 2 linksbündig setzen. Wie genau muss ich da vorgehen?
Vielen Dank.
Mfg.
-
Hallo zusammen,
habe mir von https://github.com/ruhr70/ioBroker.fritzbox das "Fritzbox Widget Anruferliste mit dem "basic - HTML Widget" eingebunden und etwas angepasst.
FritzTable.png
Leider konnte ich hierzu kleine Anpassungen nicht finden, daher folgende Fragen:
1.
Ist es möglich die Dauer von Gesprächen <1min in einem anderen Format anzuzeigen?
Aktuell wird z.B. bei 29sec nur 29 angezeigt. Schöne wäre 0:29 dann würde aus auch zu den restlichen > 1min passen.
2.
Ich würde gerne die Anruferliste Spalte 2 linksbündig setzen. Wie genau muss ich da vorgehen?
Vielen Dank.
Mfg. `
Für die Modifikation der Gesprächsdauer hast Du zwei Varianten:
a) das JSON bei jeder Änderung verarbeiten und in einen neuen Datenpunkt speichern.
Das kannst Du dann ergänzen, wie Du willst und z.B. auch Rufnummern durch Namen ersetzen.
Für die Modifikation müsstest Du ein kurzes Javascript schreiben.
b) den Code im Adapter anpassen.
Für die Ausgabe der Gesprächsdauer ist folgende Funktion in main.js zuständig:
! ````
function durationForm(duration) {
// Dauer in Sekunden formatiert zu einem 7-stelligen String:
// " -" = 0 Sek.
// " 5" = einstellige Sekunde
// " 27" = zweistellige Sekunden
// " 1:41" = einstellige Minuten
// " 59:32" = zweistellige Minuten
// "8:21:44" = mehr als eine Stunde, weniger als 10h
// " >10 h" = mehr als 10h
if (duration === "") {
duration = fill(7);
return duration;
}
var durationMin = Math.floor(parseInt(duration) / 60 );
var durationSek = parseInt(duration) % 60;
var durationStd = Math.floor(durationMin / 60);
durationMin %= 60;
if (durationStd < 1) {
if (durationMin < 1) {
duration = durationSek;
} else {
duration = durationMin + ":" + fill((2- durationSek.toString().length),"0") + durationSek;
}
} else {
duration = durationStd + ":" + fill((2- durationMin.toString().length),"0") + durationMin + ":" + fill((2- durationSek.toString().length),0) + durationSek;
}
duration = duration.toString();
! if (duration == "0") {
duration = "-";
}
! if (duration.length > 7) {
duration = "> 10h";
}
duration = fill(7 - duration.toString().length) + duration; // auf 7-Stellen auffüllen
return duration;
}Das Format der Gesprächsdauer ist dort wie folgt definiert:
// Dauer in Sekunden formatiert zu einem 7-stelligen String:
// " -" = 0 Sek.
// " 5" = einstellige Sekunde
// " 27" = zweistellige Sekunden
// " 1:41" = einstellige Minuten
// " 59:32" = zweistellige Minuten
// "8:21:44" = mehr als eine Stunde, weniger als 10h
// " >10 h" = mehr als 10hFür Deinen Anwendungsfall müsstest Du diesen Part innerhalb dieser Funktion verändern: (in der main.js des installierten Adapters)
if (durationMin < 1) { duration = durationSek; } else { duration = durationMin + ":" + fill((2- durationSek.toString().length),"0") + durationSek; }
in:
duration = durationMin + ":" + fill((2- durationSek.toString().length),"0") + durationSek;
Mit ****fill((2**** werden zwei führende Nullen ausgegeben mit ****fill((1**** eine führende Null. Mit dem vorformatierten HTML Widget sieht das meiner Meinung nach am besten aus. Auch von der Ausrichtung der einzelnen Spalten. Mit dem JSON Widget muss man sich das selbst einstellen, wie man es haben möchte. Ob man im JSON-Widget (hat erst einmal nichts mit dem Fritzbox-Adapter zu tun) die einzelnen Spalten von der Ausrichtung getrennt formatieren kann, muss ich mir anschauen. Veilleicht weiss dies auch jemand anders auf Anhieb.
-
Hoffe ich habe es richtig verstanden… Habe es jezt so angepasst:
if (durationMin < 1) { duration = durationMin + ":" + fill((1- durationSek.toString().length),"0") + durationSek; } else { duration = durationMin + ":" + fill((2- durationSek.toString().length),"0") + durationSek; }
Mir ist nebenbei noch eine andere Frage aufgetaucht:
Würde gerne die Funktion "Anruf von {fritzbox.0.calls.ringActualNumber}" aus dem großen Widget übernehmen (Basic Value List HTMl Style).
Habe mir über vCard den Wert übersetzen lassen. Wenn ich dann über: "Anruf von {vcard.0.Outputs.ReplacedPhoneNumbersCh3} " mir den Namen anzeigen lassen will, verschwindet der Text "Anruf von", der Nummer wird aber als Name angezeigt, währen beim ursprung "Anruf von 0173-123…." steht. Habe ich hier was vergesssen oder warum wird nicht "Anruf von Testname" angezeigt?