Hallo,
Das Skript läuft nun einige Wochen/Monate, und auch das Widget wird in gewünschter Form dargestellt. Diese Anzeige ist eine Verbesserung um Welten gegenüber zum vorigen Zustand.
Ich hätte noch einen kleinen Verbesserungsvorschlag:
Erfahrungsgemäß finden viele zustandegekommene Gespräche von intern nach außen oder umgekehrt statt. Dies sorgt dafür, dass die Liste der erfolglosen Anrufe relativ schnell wieder "vom Schirm verschwindet", da ja nur ca. 12 Anrufe auf der Fritzbox-Liste geführt werden.
Für mich jetzt folgende Frage:
Wenn die Liste bzw. der Datenpunkt im Javascript "ErfolgloseAnrufe" nichts mehr anzeigt, (im Datenpunkt alles als "null" gekennzeichnet),
wäre es dann möglich, genau in diesem Fall auf einen anderen Datenpunkt als ursprung zu nehmen? Beispielsweise: fritzbox.0.cdr.missedJSON statt der leeren Box anzeigen zu lassen?
hier das bisheriges script von ruhr70
`createState('ErfolgloseAnrufe', '');
function kuerzeDatum(str) {
var datumStr = str.substr(0,6); // Datum kürzen
var zeitStr = str.substr(9,5); // Zeit kürzen
return datumStr + ": " + zeitStr;
}
function listeBereinigen(jsonAll){
for (var i = 0; i < jsonAll.length; i++) {
jsonAll[i].date = kuerzeDatum(jsonAll[i].date); // Datum und Zeit kürzen
if(jsonAll[i].callSymbolColor.indexOf("->X") == -1) {
if(jsonAll[i].extensionLine != "40") {
delete jsonAll[i];
log("del: " + i);
}
}
}
return JSON.stringify(jsonAll);
}
on({id: 'fritzbox.0.history.allTableJSON'}, function (obj) {
var ergebnis = listeBereinigen(JSON.parse(obj.state.val));
setState('javascript.' + instance + '.ErfolgloseAnrufe',ergebnis);
});`
zugegebenermaßen, würden mehr als 12 Anrufe geloggt, wäre das Problem vermutlich nicht so schnell auftauchend.
Ich könnte mir vorstellen, einen weiteren Datenpunkt in einem weiteren script zu kreieren, zB. "erfolgloseAnrufe2". In diesem findet eine Abfrage statt "Wenn erfolglose Anrufe = Leer, dann verwende "fritzbox.0.cdr.missedJSON", ansonsten den Inhalt von "erfolgloseAnrufe"
Im widget würde ich dann eben "ErfolgloseAnrufe2" als Datenpunkt angeben.
Mir ist nur nicht klar, wie ich das mit der if-Abfrage machen soll..[/i][/i][/i][/i][/i]