Шаблон класса / Class Template

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Шаблон класса / Class Template

Сообщение nick7zmail » Сб дек 23, 2017 6:15 am

kas5858 писал(а):Почему картинки пропадают, через несколько секунд?
У меня не пропадает, всё ок.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
kas5858
Сообщения: 364
Зарегистрирован: Вс янв 15, 2017 5:34 pm
Откуда: Москва
Благодарил (а): 100 раз
Поблагодарили: 53 раза

Re: Шаблон класса / Class Template

Сообщение kas5858 » Сб дек 23, 2017 3:08 pm

По WIFI я сделал значок, при подключении появляется, при отключении исчезает (как в телефоне).
Вложения
43.PNG
43.PNG (9 КБ) 7204 просмотра
Raspberry Pi3 - Broadlink - MegaD - Много датчиков - Камеры - Часы.
Изображение Connect
Аватара пользователя
igorewa
Сообщения: 515
Зарегистрирован: Ср дек 21, 2016 11:54 pm
Откуда: Киев
Благодарил (а): 12 раз
Поблагодарили: 43 раза

Re: Шаблон класса / Class Template

Сообщение igorewa » Сб дек 23, 2017 3:12 pm

kas5858 писал(а):По WIFI я сделал значок, при подключении появляется, при отключении исчезает (как в телефоне).
А расскажите как сделать что бы иконка батареи отображала состояние остатка заряда. метод ChangeBattLevel в классе Users я прописал , но не могу понять откуда должны браться иконки севшей или заряженной батареи
ASUS H110T, I5 7500, DDR4-16Gb, SSD256 . WIN10 64 (LTSB)
kas5858
Сообщения: 364
Зарегистрирован: Вс янв 15, 2017 5:34 pm
Откуда: Москва
Благодарил (а): 100 раз
Поблагодарили: 53 раза

Re: Шаблон класса / Class Template

Сообщение kas5858 » Сб дек 23, 2017 3:21 pm

igorewa писал(а):
kas5858 писал(а):По WIFI я сделал значок, при подключении появляется, при отключении исчезает (как в телефоне).
А расскажите как сделать что бы иконка батареи отображала состояние остатка заряда. метод ChangeBattLevel в классе Users я прописал , но не могу понять откуда должны браться иконки севшей или заряженной батареи
По коду в свойства и в шаблон.

Код: Выделить всё

Код:
$charg=$this->getProperty('Charging');
$level=$this->getProperty('BattLevel');
$this->setProperty('battPic','fa fa-battery-empty'); //здесь продумать нужно

if ($charg==1) {
 $this->setProperty("battPic",'fa fa-plug');
 } else {
 if ($level > 88 && $level <= 100) {
 $this->setProperty("battPic",'fa fa-battery-full');
 } else if ($level > 62 && $level <= 88) {
 $this->setProperty("battPic",'fa fa-battery-three-quarters');
 } else if ($level > 37 && $level <= 62) {
 $this->setProperty("battPic",'fa fa-battery-half');
 } else if ($level > 12 && $level <= 37) {
 $this->setProperty("battPic",'fa fa-battery-quarter');
 } else if ($level < 12) {
 $this->setProperty("battPic",'fa fa-battery-empty');
 }
}
Вложения
3.PNG
3.PNG (55.85 КБ) 7196 просмотров
1.PNG
1.PNG (2.86 КБ) 7199 просмотров
2.PNG
2.PNG (6.78 КБ) 7199 просмотров
Raspberry Pi3 - Broadlink - MegaD - Много датчиков - Камеры - Часы.
Изображение Connect
Аватара пользователя
igorewa
Сообщения: 515
Зарегистрирован: Ср дек 21, 2016 11:54 pm
Откуда: Киев
Благодарил (а): 12 раз
Поблагодарили: 43 раза

Re: Шаблон класса / Class Template

Сообщение igorewa » Сб дек 23, 2017 3:25 pm

kas5858 Благадарю , получилось.
ASUS H110T, I5 7500, DDR4-16Gb, SSD256 . WIN10 64 (LTSB)
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Шаблон класса / Class Template

Сообщение nick7zmail » Сб дек 23, 2017 5:06 pm

Кстати если убрать фиксированную высоту/длину - div вполне себе подстраивается под окружение)) но почему-то я отказался от этого...возможно где-то что-то слетало из-за этого...точно не помню...но вроде так работает
111.jpg
111.jpg (24.55 КБ) 7178 просмотров
Менял только cssПоказать

Код: Выделить всё

<style>
@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css");
.container {
  background-color: rgba(0, 0, 0, 0.3);
  border-radius: 15px;
  border:1px solid #444;
  padding-top: 10px;
  padding-bottom: 10px;
  padding-left: 10px;
}
.container img {
  width: 80px;
  height: 80px;
  float: left;
  padding-right: 10px;
  padding-bottom: 10px;
}
.batt {
  padding-right: 20px;
  padding-top: 5px;
  float: right;
}
.name {
  font-size: 140%;
  font-family: fantasy;
}
.loc {
  font-size: 100%;
  padding-top: 10px;
  padding-bottom: 10px;

}
.time {
  font-size: 60%;
  color:grey;
}
 </style> 
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Шаблон класса / Class Template

Сообщение Logrus » Вс дек 24, 2017 1:27 am

Попробую, спасибо (но ты точно сам уже не раз сталкивался с нехваткой времени на всё, даже мелочи ))) я уже неделю за нодемку взяться не могу, а для меня там с нуля все нужно начать и вышка по ТАУ вот никаким боком не поможет)
оффтопик:
это чтение, запись тоже по разному
%.BattLevel% % <span class="batt_icon fa fa-%.BattPic%" aria-hidden="true"></span>
%.BattLevel% % <span class="batt_icon %.BattPic%" aria-hidden="true"></span>
это к невнимательности и про разный подход, изначально старался описывать все полностью (я про систему в целом), у программистов точно даже по этому поводу (не знаю как назвать) дисциплины целые есть, т.е. разные подходы
было:
Sensor_state_air_quality_word_A1
Sensor_percentage_CPU_usage
вчера все объекты в мдм переименовывал/сокращал, количество датчиков растет, с-ма становится менее отзывчивой, а такая мелочь как длинное название объекта датчика, и в логи пишется с частотой опроса, и в названии таймеров, как иммортал говорил по 5 гб в сутки между Мускл и апачем, и т.д.
ох, сколько времени потратил, но кпу аверадж минутный очень грубо и примерно с 0.8 до 0.2 упал 0_0 сейчас 0.04 (Никита и про частоту опроса, не настаиваю. но подумай, а?)
я к чему вот вроде б мелочь, кому-то ее даже при обучении вбили и она для кого-то естественна, а кто-то грабли собирает ))) (я про себя и как надоели эти шишки)
Последний раз редактировалось Logrus Вс дек 24, 2017 7:05 am, всего редактировалось 1 раз.
За это сообщение автора Logrus поблагодарил:
Samir77 (Пн окт 21, 2019 12:06 am)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Шаблон класса / Class Template

Сообщение nick7zmail » Вс дек 24, 2017 1:46 am

Про частоту опроса в модуле бродлинка то?
Тут немного другая тема...но так уж и быть, отвечу.
Для начала свой пример приведу. У меня 3 устройства РМ, МП1 и СП3. Дак вот...на всех стоит время обновления 1 час...серьезно...мне этого за глаза хватает, и я не понимаю зачем чаще...
Еконтролом никто не пользуется, всё переключения происходят из Мд...а Соответственно в МД и так всегда статус актуальный. Раз в час опрос просто на всякий случай...вдруг что рассинхронизируется.
Единственное устройство, которое нуждается в частом опросе - это S1 (датчики движения и тп) для остального не вижу смысла обновлять более чем раз в час...а, ну разве что выключатели sc1. Для них вполне подойдет 20сек. 1 минуты не знаю зачем юзать...только любителям четкого анализа (и то быстро надоест)...10 миут уже можно и для датчиков (не моментальных) и для чего хотите использовать...
А что у вас может случится за 5 минут, чего вы не увидите в 10 минутном цикле? Мне вот просто интересно...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Шаблон класса / Class Template

Сообщение nick7zmail » Вс дек 24, 2017 11:43 pm

Итак - вернемся к шаблонам...чуть подкорректировал...вот мой конечный вариант.
111.jpg
111.jpg (26 КБ) 7107 просмотров
Красным цветом подсвечивается, когда данных нет более двух часов (за "живость" отвечает свойство alive у пользователя (значение 1/0)), автоматически меняет размер (при вставке на сцену надо указывать ширину и высоту элемента), батарейка разукрашивается в зеленый/желтый/красный в зависимости от заряда (код тот же, что и с иконкой, только добавляем ещё в 1 свойство цвет)...
Шаблон классаПоказать

Код: Выделить всё

 <style>
@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css");
.container {
  //background-color: rgba(0, 0, 0, 0.3);
  background-color:%.alive|"rgba(255, 0, 0, 0.3);rgba(0, 0, 0, 0.3)"%;
  border-radius: 15px;
  border:1px solid #444;
  padding: 10px;
}
.container img {
  width: 80px;
  height: 80px;
  float: left;
  padding-right: 10px;
}
.batt {
  padding-top: 5px;
  padding-right: 5px;
  float: right;
}
.name {
  font-size: 140%;
  font-family: fantasy;
}
.loc {
  font-size: 100%;
  padding-top: 10px;
  padding-bottom: 10px;

}
.time {
  font-size: 60%;
  color:grey;
}
 </style>


<div class="container">
     <img src="%.user_icon%">
     <div class="batt">
     <font size="2" style="padding-bottom: 2px;">%.BattLevel% %</font> <span class="fa fa-%.BattPic%" style="color: %.BattColor%" aria-hidden="true"></span>
     </div>
    <div class="info">
      <div class="name">%.user_name%</div>
      <div class="loc"><span class="loc_icon fa fa-map-marker" aria-hidden="true"></span> %.seenAt%</div>
      <div class="time"><span class="ref_icon fa fa-refresh" aria-hidden="true"></span> %.TimeUpdated%</div>
    </div>
     <div style="clear:both;"></div>
  </div> 
За это сообщение автора nick7zmail поблагодарили (всего 5):
Logrus (Пн дек 25, 2017 10:54 am) • StrangerIV (Чт ноя 22, 2018 11:57 am) • kosem (Чт май 02, 2019 7:53 pm) • vladj (Чт мар 05, 2020 2:29 pm) • AndreyAA (Вт ноя 17, 2020 11:12 am)
Рейтинг: 5.81%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 531 раз
Контактная информация:

Re: Шаблон класса / Class Template

Сообщение Vovix » Пн дек 25, 2017 1:48 am

Logrus писал(а):т.к. коннект не работает, добавлю, имхо тёзке полезно будет (не хвальба, наверное и ошибки присутствуют, может что и улучшить/изменить есть, с цветом еще не разбирался)
вообще, Никита, зело полезное дело сделал, я вот на это без описания и реального примера смотрел и ... ничего
конечно, главную красивость, "фишку" убрал (я аву ту не нашел, с шапки подключал, а текста много, обтекает не красиво), но как выше было сказано - это подключается и в сцены, и в дашборд, и в меню - за три клика!!!
СпойлерПоказать
шаблон отображения

Код: Выделить всё

<style>
@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css");
.container {
  background-color: rgba(0, 0, 0, 0.3);
  width: 240px;
  height: 110px;
  border-radius: 15px;
  border:1px solid #444;
}
.batt {
  font-size: 85%; 
  padding-right: 10px;
  padding-top: 10px;
  float: right;
}
.mail {
  font-size: 85%; 
  padding-right: 10px;
  padding-top: 10px;
  float: right;
}
 
.info {
  padding-left: 10px;
  padding-right: 10px;
  padding-top: 10px;
  height: 100px;
}
.name {
  font-size: 85%;
  font-family: fantasy;
}
.wifi {
  font-size: 75%;
  padding-top: 5px;
  padding-bottom: 5px;
}
.loc {
  font-size: 75%;
  padding-top: 5px;
  padding-bottom: 5px;
}
.time {
  font-size: 60%;
  color:grey;
}
 </style>


<div class="container">
    <div class="batt">
      %.BattLevel% % <span class="batt_icon %.BattPic%" aria-hidden="true"></span>
    </div>
    <div class="mail">
      %.GMailUnread% <span class="mail_icon fa fa-envelope" aria-hidden="true"></span>
    </div> 
    <div class="info">
      <div class="name">%.fullName%</div>
      <div class="wifi"><span class="wifi_icon fa fa-wifi" aria-hidden="true"></span> %.isHome%</div>
      <div class="time"><span class="ref_icon fa fa-refresh" aria-hidden="true"></span> %.isHomeUpdate%</div>
      <div class="loc"><span class="loc_icon fa fa-map-marker" aria-hidden="true"></span> %.Location%</div>
      <div class="time"><span class="ref_icon fa fa-refresh" aria-hidden="true"></span> %.updatedText%</div>
    </div>
</div> 
метод ChangeBattLevel в классе Users (тут с вилкой при зарядке) (связанное свойство BattLevel)

Код: Выделить всё

$charg=$this->getProperty('Charging');
$level=$this->getProperty('BattLevel');
$this->setProperty('battPic','fa fa-battery-empty'); //здесь продумать нужно

if ($charg==1) {
 $this->setProperty("battPic",'fa fa-plug');
 } else {
 if ($level > 88 && $level <= 100) {
 $this->setProperty("battPic",'fa fa-battery-full');
 } else if ($level > 62 && $level <= 88) {
 $this->setProperty("battPic",'fa fa-battery-three-quarters');
 } else if ($level > 37 && $level <= 62) {
 $this->setProperty("battPic",'fa fa-battery-half');
 } else if ($level > 12 && $level <= 37) {
 $this->setProperty("battPic",'fa fa-battery-quarter');
 } else if ($level < 12) {
 $this->setProperty("battPic",'fa fa-battery-empty');
 }
} 
метод SetLocation в классе Users (связанное свойство Coordinates)

Код: Выделить всё

$Coordinates=$this->getProperty("Coordinates");
$lat=substr($Coordinates,0,strpos($Coordinates,","));
$lon=substr($Coordinates,strpos($Coordinates,",")+1);
 $this->setProperty('latitude',$lat);
 $this->setProperty('longitude',$lon);
if($this->getProperty('HomeDistance')>100){
  $data_file="http://geocode-maps.yandex.ru/1.x/?geocode=E".$lon.",N".$lat; // адрес xml файла
  $xml = simplexml_load_file($data_file); // раскладываем xml на массив
  $res=$xml->{'GeoObjectCollection'}->{'featureMember'}[0]->{'GeoObject'}->{'metaDataProperty'}->{'GeocoderMetaData'}->{'AddressDetails'}->{'Country'}->{'AddressLine'};
  $this->setProperty("Location",$res);
}else{
 $this->setProperty("Location",'Дом');
 $this->callMethod('gotHome');
} 
метод setUpdatedText в классе Users (связанное свойство CoordinatesUpdated)

Код: Выделить всё

@include_once(ROOT . 'languages/devices_' . SETTINGS_SITE_LANGUAGE . '.php');
@include_once(ROOT . 'languages/devices_default' . '.php');

$ot = $this->object_title;
$updatedTime = $this->getProperty('CoordinatesUpdatedTimestamp');
$passed = time() - $updatedTime;
$newTimeout=0;

if ($passed<10) {
    $newTimeout = 10;
    $this->setProperty('updatedText',LANG_DEVICES_PASSED_NOW);
} elseif ($passed<60) {
    $newTimeout = 10;
    $this->setProperty('updatedText',$passed.' '.LANG_DEVICES_PASSED_SECONDS_AGO);
} elseif ($passed<60*60) {
    $newTimeout = 60;
    $this->setProperty('updatedText',round($passed/60).' '.LANG_DEVICES_PASSED_MINUTES_AGO);
/*
} elseif ($passed<12*60*60) {
    $newTimeout = 60 * 60;
    $this->setProperty('updatedText',round($passed/60/60).' '.LANG_DEVICES_PASSED_HOURS_AGO);
*/
} elseif ($passed<20*60*60) {
    //just time
    $newTimeout = 60 * 60;
    $this->setProperty('updatedText',date('H:i',$updatedTime));
} else {
    //time and date
    $this->setProperty('updatedText',date('Y-m-d H:i',$updatedTime));//
}

if ($newTimeout > 0) {
    setTimeOut($ot.'_updateTime','callMethod("'.$ot.'.setUpdatedText");',$newTimeout);
} 
может что и пропустил
здорово но есть несколько маленьких-маленьких моментов:

1) В методе ChangeBattLevel
строку:

Код: Выделить всё

} else if ($level < 12) {
надо так:

Код: Выделить всё

} else if ($level <= 12) {
nick7zmail писал(а):Итак - вернемся к шаблонам...чуть подкорректировал...вот мой конечный вариант.
111.jpg
Красным цветом подсвечивается, когда данных нет более двух часов (за "живость" отвечает свойство alive у пользователя (значение 1/0)), автоматически меняет размер (при вставке на сцену надо указывать ширину и высоту элемента), батарейка разукрашивается в зеленый/желтый/красный в зависимости от заряда (код тот же, что и с иконкой, только добавляем ещё в 1 свойство цвет)...
Шаблон классаПоказать

Код: Выделить всё

 <style>
@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css");
.container {
  //background-color: rgba(0, 0, 0, 0.3);
  background-color:%.alive|"rgba(255, 0, 0, 0.3);rgba(0, 0, 0, 0.3)"%;
  border-radius: 15px;
  border:1px solid #444;
  padding: 10px;
}
.container img {
  width: 80px;
  height: 80px;
  float: left;
  padding-right: 10px;
}
.batt {
  padding-top: 5px;
  padding-right: 5px;
  float: right;
}
.name {
  font-size: 140%;
  font-family: fantasy;
}
.loc {
  font-size: 100%;
  padding-top: 10px;
  padding-bottom: 10px;

}
.time {
  font-size: 60%;
  color:grey;
}
 </style>


<div class="container">
     <img src="%.user_icon%">
     <div class="batt">
     <font size="2" style="padding-bottom: 2px;">%.BattLevel% %</font> <span class="fa fa-%.BattPic%" style="color: %.BattColor%" aria-hidden="true"></span>
     </div>
    <div class="info">
      <div class="name">%.user_name%</div>
      <div class="loc"><span class="loc_icon fa fa-map-marker" aria-hidden="true"></span> %.seenAt%</div>
      <div class="time"><span class="ref_icon fa fa-refresh" aria-hidden="true"></span> %.TimeUpdated%</div>
    </div>
     <div style="clear:both;"></div>
  </div>
2) Не много не согласованно с предыдущим товарищем, а именно:
в коде где так:

Код: Выделить всё

<span class="fa fa-%.BattPic%" style="color: %.BattColor%" aria-hidden="true">
лучше тогда для согласованности так:

Код: Выделить всё

<span class="%.BattPic%" style="color: %.BattColor%" aria-hidden="true">
аа.. и еще вроде свойство называлось battPic (я понимаю всего лишь регистр, но для точности важно!)

3) Ну и также для согласованности с товарищем Logrus лучше наверно так:

Код: Выделить всё

<div class="loc"><span class="loc_icon fa fa-map-marker" aria-hidden="true"></span> %.Location%</div>
<div class="time"><span class="ref_icon fa fa-refresh" aria-hidden="true"></span> %.updatedText%</div>
За это сообщение автора Vovix поблагодарил:
Logrus (Пн дек 25, 2017 10:54 am)
Рейтинг: 1.16%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Ответить