Надводный борт: виджет Индикатор не работает
Я пытаюсь сравнить две метки времени, и если разница больше, чем х секунд, укажите "офлайн". Вот что у меня в редакторе js виджета:
// Example: Convert temp from C to F and truncate to 2 decimal places.
// return (datasources["MyDatasource"].sensor.tempInF * 1.8 + 32).toFixed(2);
console.log("Checking Time Difference")
var timediff = (new Date) - datasources["ConsentDS"].Timestamp
console.log(timediff)
if timediff > 1 * 60 * 1000 {
return 1
} else {
return 0
}
Индикатор всегда остается "онлайн", даже если разница должна быть больше 30 секунд. Он даже не пишет в консоль, как я ожидаю.
Я не могу найти какую-либо документацию, поэтому я даже не уверен, должен ли я возвращать 1 или true или elephant:(
1 ответ
Решение
Поэтому большая часть моей проблемы заключалась в синтаксисе javascript, как сразу заметили @Donut и, вероятно, другие.
Вот рабочая версия:
var ts = new Date(datasources["ConsentDS"].Timestamp).getTime();
var ms = new Date().getTime();
var d = ms - ts;
if (d > 5 * 60 * 1000) {
return 0;
} else {
return 1;
}
Если текущее время минус метка времени в данных превышает 30 секунд (30000 миллисекунд), то возвращается 0, что является статусом "OFF" в виджете индикатора.