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?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden