AK1

 
<<< Back

Шаблон отображения объекта с прокруткой отображаемых свойств

Шаблон отображения с возможностью изменения набора отображаемых свойств по клику

Шаблон отображения объекта с прокруткой дополнительных свойств.

У некоторых объектов есть много свойств, которые хотелось бы отобразить на сцене или в дашборде. Некоторые из них основные, но есть и такие, которые не обязательно отображать постоянно, но есть желание иногда посмотреть.
Для этого у ПУ есть шаблон и шаблон-мини. Для самописных объектов нет штатного способа отображать 2-а варианта. Да и для ПУ нет возможности вставить шаблон-мини в дашборд.

Для устранения этого пробела разработал шаблон отображения объекта с возможностью прокрутки строк отображаемых параметров.

Объекту добавлено свойство scroll, которое определяет отображаемые свойства и метод scroll, с помощью которого меняется свойство scroll.

Ниже приведен пример шаблона электросчетчика.
В обычном состоянии отображаются мощность, напряжение, электроэнергия за сутки и с начала месяца.
При клике на стрелку (а в данном шаблоне и на шапку) в нижней строке вместо энергии отображаются ток, частота и косинус фи.

При клике на любой параметр вызывается график этого параметра.

В методе прописано, что через определенной время (10 сек) после вызова доп. параметров отображение возвращается в исходное состояние.

Таким способом можно отображать несколько строк.

На сценах можно по клику сделать открытие отображения в полном формате (все строки). Но в дашборде не получается, т.к. жестко задается количество отображаемых строк.

Текст шаблона:

<style>
lf6 {
font-size: 60%; / размер шрифта /
}

lf14 {
font-size: 140%; / размер шрифта /
}

lf9 {
font-size: 90%; / размер шрифта /
}

</style>

<table border="0">
<tr align="center" height="20">
<td width="250" >
<div class="device-header" align="center" onClick='callMethod("%.Scroll");' ><c1><FONT COLOR="green"><u>%.object_description%</u>
</FONT></cl></div>
</td>

 <td  width="50" >

<div class="device-header" align="center" onClick='callMethod("%.Scroll");' ><FONT COLOR="black">⇓
</div>
</td>

</table>

<table border="0">
<tr align="center" height="45">
<td width="35" >
<div class="device-icon power-sensor %.status|"off;on"%"></div>
</td>
<td width="120" >
<div onclick="var url=('<#ROOTHTML#>pChart/?p=%.object_title%'+
'.Power&op=log&subop=24h&minimal=1');parent.$.fancybox.open(
{ src: url, type: 'iframe',iframe:{preload:false}}
);return false;" > <lf14> %.Power% </lf14> <lf9> Вт</lf9>
</td>
<td width="120" >
<div onclick="var url=('<#ROOTHTML#>pChart/?p=%.object_title%'+'.U_in&op=log&subop=24h&minimal=1');parent.$.fancybox.open({ src: url, type: 'iframe',iframe:{preload:false}});return false;"> <lf14>%.U_in% </lf14> <lf9> В </lf9> </div>
</td>
</tr>
</table>

<table border="0" >
<tr align="center" height="50" bgcolor="#DCDCDC" style='display:%.scroll|"none;block"%' >
<td width="140">
<div class="device-header" onclick="var url=('<#ROOTHTML#>pChart/?p=%.object_title%'+
'.Power_per_day&op=log&subop=91d&chart_type=column&minimal=1');parent.$.fancybox.open(
{ src: url, type: 'iframe',iframe:{preload:false}}
);return false;" > %.Energy% <lf6><strong>кВт*час</strong></lf6></div>
<div class="device-details"> за День</div>
</td>

<td width="140">
<div class="device-header" onclick="var url=('<#ROOTHTML#>pChart/?p=%.object_title%'+
'.Power_per_month&op=log&subop=366d&chart_type=column&minimal=1');parent.$.fancybox.open(
{ src: url, type: 'iframe',iframe:{preload:false}}
);return false;" > %.Energy_month% <lf6><strong>кВт*час</strong></lf6></div>
<div class="device-details"> с начала Месяца</div>
</td>
</tr>

 <tr align="center" height="50" bgcolor="#DCDCDC"  style='display:%.scroll|"block;none"%'    >
<td width="140"  >
<div onclick="var url=('<#ROOTHTML#>pChart/?p=%.object_title%'+'.I_in&op=log&subop=24h&minimal=1');parent.$.fancybox.open({ src: url, type: 'iframe',iframe:{preload:false}});return false;">
 <lf14>%.I_in% </lf14><lf9> А </lf9> </div></td> 

  <td width="140" >  
   <div  onclick="var url=('<#ROOTHTML#>pChart/?p=%.object_title%'+
'.Cos&op=log&subop=24h&minimal=1');parent.$.fancybox.open(
{ src: url, type: 'iframe',iframe:{preload:false}}
);return false;"  > 
   %.Cos% / %.Fr% Гц</div> 
<lf6>Cos Fi  / Частота</lf6></div>   

</td>

</tr>

</table>

Код метода scroll

$var = $this->getProperty('scroll');
if ($var == 1) {
$var = 0;
$obj = $this->objecttitle;
$tim = 'Scroll
'.$obj;
$nn = "$obj.'.scroll'";
$m = "sg($nn,1);";
SetTimeOut($tim,"$m",10);
}
else {$var = 1;}
$this->setProperty('scroll', $var);

Discuss (0) (3)

See also:
2023-11-26 Шаблон отображения объекта с таймером
2023-11-18 Шаблон отображения объекта с вызовом сервисного меню
2022-09-05 Частный случай управления GPIO на Raspberry Pi3
2022-08-30 Локальный сервер NTP на Raspberry Pi3 с аппаратными часами
2020-12-06 Мажордом и Emoncms

Челябинск, Россия

На форуме: AK1