Недавно в модуле произошли изменения и теперь таймеры работают на стороне клиента, а не на стороне сервера, а следовательно не нагружают систему лишними запросами. Теперь вы сами можете добавить к любому своему устройству нужный таймер и настроить его вид - делается это в шаблонах класса нужного типа устройств, на скрине например это сделано для устройства типа реле.
Итак открываем шаблон класса и в него код, если вы хотите видеть секунды, минуты, часы и их анимацию:
Код: Выделить всё
<script>
function setInsertData_%.object_id%() {
if(window.intervalUpdateDate_%.object_id%) {
window.clearInterval(intervalUpdateDate_%.object_id%);
}
var currentTime = parseInt(new Date().getTime()/1000);
var sID = '%.object_id%';
var sDATA = '%.updated%';
var diff = currentTime-sDATA;
if(diff <= -21) {
beautyText = '<#LANG_DEVICES_PASSED_INCORRECT_TIME#>';
$('.updatedText-JS-' + sID).text(beautyText);
} else if(diff >= -20 && diff <= 10) {
//Только что
beautyText = '<#LANG_DEVICES_PASSED_NOW#>';
$('.updatedText-JS-' + sID).text(beautyText);
window.intervalUpdateDate_%.object_id% = setInterval(function() {
setInsertData_%.object_id%();
}, 1000);
} else if(diff > 10 && diff <= 600) {
beautyText = secondsToHms(diff, '', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>') + ' <#LANG_DEVICES_PASSED_AGO#>';
$('.updatedText-JS-' + sID).text(beautyText);
window.intervalUpdateDate_%.object_id% = setInterval(function() {
var currentTime = parseInt(new Date().getTime()/1000);
var diff = currentTime-sDATA;
beautyText = secondsToHms(diff, '', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>') + ' <#LANG_DEVICES_PASSED_AGO#>';
$('.updatedText-JS-' + sID).text(beautyText);
setInsertData_%.object_id%();
}, 1000);
} else if(diff > 600 && diff <= 7200) {
beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '') + ' <#LANG_DEVICES_PASSED_AGO#>';
$('.updatedText-JS-' + sID).text(beautyText);
window.intervalUpdateDate_%.object_id% = setInterval(function() {
var currentTime = parseInt(new Date().getTime()/1000);
var diff = currentTime-sDATA;
beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '') + ' <#LANG_DEVICES_PASSED_AGO#>';
$('.updatedText-JS-' + sID).text(beautyText);
setInsertData_%.object_id%();
}, 61000);
} else if(diff > 7200 && diff < 25200) {
beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '', '') + ' <#LANG_DEVICES_PASSED_AGO#>';
$('.updatedText-JS-' + sID).text(beautyText);
window.intervalUpdateDate_%.object_id% = setInterval(function() {
var currentTime = parseInt(new Date().getTime()/1000);
var diff = currentTime-sDATA;
//Считаем и делаем красиво
beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '', '') + ' <#LANG_DEVICES_PASSED_AGO#>';
$('.updatedText-JS-' + sID).text(beautyText);
setInsertData_%.object_id%();
}, 1800000);
} else {
//Дропаем интервал
if(window.intervalUpdateDate_%.object_id%) {
window.clearInterval(intervalUpdateDate_%.object_id%);
}
timeConvertVar = timeConvert(sDATA);
currentTime = new Date();
if((currentTime.getDate() - timeConvertVar[0]) == 0) {
beautyText = '<#LANG_DEVICES_PASSED_TODAY_IN#> ' + timeConvertVar[3] + ':' + timeConvertVar[4];
} else if((currentTime.getDate() - timeConvertVar[0]) == 1) {
beautyText = '<#LANG_DEVICES_PASSED_YESTERDAY_IN#> ' + timeConvertVar[3] + ':' + timeConvertVar[4] + ':' + timeConvertVar[5];
} else {
beautyText = timeConvertVar[0] + '.' + timeConvertVar[1] + '.' + timeConvertVar[2] + ' ' + timeConvertVar[3] + ':' + timeConvertVar[4] + ':' + timeConvertVar[5];
}
$('.updatedText-JS-' + sID).text(beautyText);
}
}
$(function() {
if(window.intervalUpdateDate_%.object_id%) {
window.clearInterval(intervalUpdateDate_%.object_id%);
}
setInsertData_%.object_id%();
window.intervalUpdateDate_%.object_id% = setInterval(function() {
setInsertData_%.object_id%();
}, 1000);
});
</script>
<div class="device-widget motion %.alive|"offline;online"%" onclick="var url=('<#ROOTHTML#>pChart/?p=%.object_title%'+'.status&op=log&subop=24h&minimal=1');parent.$.fancybox.open({ src: url, type: 'iframe',iframe:{preload:false} });return false;">
<div class="device-icon motion %.status|"off;on"%"></div>
<div class="device-header">%.object_description%</div>
<!---<div class="device-details">%.updatedText%</div>--->
<div class="updatedText-JS-%.object_id%" style="font-size: 11px;">...</div>
</div>
Код: Выделить всё
beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '', '') + ' <#LANG_DEVICES_PASSED_AGO#>';
Если указать вот так:
Код: Выделить всё
beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>') + ' <#LANG_DEVICES_PASSED_AGO#>';
Если анимация не нужна, а нужен только вывод даты в формате:
Вчера в 15:00 или Сегодня в 13:00 без анимации и таймеров - используем такой код:
Код: Выделить всё
<script>
$(function() {
sID = '%.object_id%';
sDATA = '%.updated%';
timeConvertVar = timeConvert(sDATA);
currentTime = new Date();
if((currentTime.getDate() - timeConvertVar[0]) == 0) {
beautyText = '<#LANG_DEVICES_PASSED_TODAY_IN#> ' + timeConvertVar[3] + ':' + timeConvertVar[4];
} else if((currentTime.getDate() - timeConvertVar[0]) == 1) {
beautyText = '<#LANG_DEVICES_PASSED_YESTERDAY_IN#> ' + timeConvertVar[3] + ':' + timeConvertVar[4] + ':' + timeConvertVar[5];
} else {
beautyText = timeConvertVar[0] + '.' + timeConvertVar[1] + '.' + timeConvertVar[2] + ' ' + timeConvertVar[3] + ':' + timeConvertVar[4] + ':' + timeConvertVar[5];
}
$('.updatedText-JS-' + sID).text(beautyText);
});
</script>
<div class="device-widget controller loadtype_%.loadType%"
onClick='$(".icon%.object_id%_light").addClass("pressed");
setTimeout("$(\".icon%.object_id%_light\").removeClass(\"pressed\");",300);
callMethod("%.object_title%.switch");
$.get("<#ROOTHTML#>ajax/devices.html?op=clicked&object="+encodeURIComponent("%.object_title%"));'>
<div class="device-icon %.status|"off;on"% icon%.object_id%_light" id="icon%.object_id%_light" style='%.icon|"background-image:url(%.icon%)"%'></div>
<div class="device-header">%.object_description%</div>
<div class="updatedText-JS-%.object_id%" style="font-size: 11px;">...</div>
</div>