Шаблон класса / Class Template
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Шаблон класса / Class Template
Да, у меня было такое...почему-то когда шаблон на отдельной вкладке - всё норм. Стоило переместить в пункт, где ещё что-то есть (не помню что именно, но вроде без всяческого ява кода...только стандартные элементы) - тоже отображалось только название...и явно не код шаблона виноват...а именно расположение его в меню...я даже не пересоздавал его, а просто перемещал один и тот же пункт.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- hc2hunter
- Сообщения: 507
- Зарегистрирован: Сб дек 02, 2017 10:45 am
- Откуда: RUS
- Благодарил (а): 228 раз
- Поблагодарили: 348 раз
Re: Шаблон класса / Class Template
Наткнулся на глюк...
Похоже при анализе конструкции шаблона скрипт ищет первое вхождение %. , и, не анализируя его, вставляет конструкцию, из-за чего частенько у него получается <имя_объекта>
Наткнулся очень просто - надо было зашаблонить картинки и вставил такой код <img src='/button_status_%.status%_led_%.led%.png'>
В итоге в html имел <img src='/button_status_0_led_0ButtonS20.png'>
Как думаете, откуда взялся красный текст? Оттуда, что было проанализировано %.png и попытка вставить вместо него название объекта.
Обошел очень просто - поставил подчерк перед _.png, но протрахался полчаса
Похоже при анализе конструкции шаблона скрипт ищет первое вхождение %. , и, не анализируя его, вставляет конструкцию, из-за чего частенько у него получается <имя_объекта>
Наткнулся очень просто - надо было зашаблонить картинки и вставил такой код <img src='/button_status_%.status%_led_%.led%.png'>
В итоге в html имел <img src='/button_status_0_led_0ButtonS20.png'>
Как думаете, откуда взялся красный текст? Оттуда, что было проанализировано %.png и попытка вставить вместо него название объекта.
Обошел очень просто - поставил подчерк перед _.png, но протрахался полчаса
-
- Сообщения: 11
- Зарегистрирован: Пн дек 30, 2013 5:15 pm
- Откуда: Moscow
- Благодарил (а): 3 раза
- Поблагодарили: 2 раза
Re: Шаблон класса / Class Template
Тоже поймал глюк...
Унаследовав класс Relays, создал свой собственный класс, которому определил шаблон :
Разместил объект этого класса на сцене, он работает отлично. Добавил этот объект в меню, в раздел "управление". На сцене объект продолжает работать, а в меню отображается, даже при клике выполняется функция, но переключения в %.status|"turnOn;turnOff"% не происходят, и иконка не меняется.
Может есть какие-то трюки для обхода этих глюков?
Унаследовав класс Relays, создал свой собственный класс, которому определил шаблон :
СпойлерПоказать
<div id="myswitch">
<div>
<img src='/images/powero%.status|"ff.png;n.png"%'
onClick='objClicked(this)'>
</div>
<script type="text/javascript">
function objClicked(tag){
var o = '%.object_title%';
callMethod(o+'.%.status|"turnOn;turnOff"%');
}
</script>
</div>
<div>
<img src='/images/powero%.status|"ff.png;n.png"%'
onClick='objClicked(this)'>
</div>
<script type="text/javascript">
function objClicked(tag){
var o = '%.object_title%';
callMethod(o+'.%.status|"turnOn;turnOff"%');
}
</script>
</div>
Может есть какие-то трюки для обхода этих глюков?
CubieTruck + linaro 13.04
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Шаблон класса / Class Template
Продолжаем эксперементировать с шаблонами)) на этот раз шаблон класса Rooms.
Благодаря последнему обновлению (да, да, которое сломало меню)) - стало возможно создавать более универсальные шаблоны.
Вот вам пример: 1 шаблон может отображать как маленькие строчки типа как кухня или улица, так и большой объем инфы со статусом и значками, как зал.
У комнат имеются свойства temperature и humidity. Если выставить датчик температуры и влажности в простых устройствах, как основные сенсоры помещения - эти значения и будут попадать в свойства комнаты. И за счет шаблона можно сделать - если свойство есть - отобразить его, если нет - скрыть целиком блок...
Бонусом добавлено пару анимаций (вращение и мигание). Вентилятор, к примеру, реально крутится)))для этого достаточно добавить в css классы "spiner" или "blinker".
В общем не буду томить - вот код
Одно "НО"...надо сформировать полноценную html строку в свойстве .deviceString каждой комнаты с иконками включенных девайсов, к примеру
- примерно то, что отображается сейчас в зале.
Благодаря последнему обновлению (да, да, которое сломало меню)) - стало возможно создавать более универсальные шаблоны.
Вот вам пример: 1 шаблон может отображать как маленькие строчки типа как кухня или улица, так и большой объем инфы со статусом и значками, как зал.
У комнат имеются свойства temperature и humidity. Если выставить датчик температуры и влажности в простых устройствах, как основные сенсоры помещения - эти значения и будут попадать в свойства комнаты. И за счет шаблона можно сделать - если свойство есть - отобразить его, если нет - скрыть целиком блок...
Бонусом добавлено пару анимаций (вращение и мигание). Вентилятор, к примеру, реально крутится)))для этого достаточно добавить в css классы "spiner" или "blinker".
В общем не буду томить - вот код
Шаблон класса RoomsПоказать
Код: Выделить всё
<style>
@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css");
.container {
border-radius: 15px;
border:1px solid #444;
padding: 10px;
background-color:rgba(0, 0, 0, 0.3);
}
.left_top {
float: right;
font-size: 120%;
}
.left_top div {
border-radius: 5px;
border:1px solid #444;
padding: 2px;
display:inline-block;
}
.name {
font-size: 140%;
}
.devices {
font-size: 200%;
margin-bottom: 5px;
padding-top: 5px;
}
.time {
font-size: 60%;
color:grey;
}
//animations
.blinker {
-webkit-animation: blink 2s linear infinite;
animation: blink 2s linear infinite;
}
@-webkit-keyframes blink {
50% { color: rgb(34, 34, 34); }
51% { color: rgba(34, 34, 34, 0); }
100% { color: rgba(34, 34, 34, 0); }
}
@keyframes blink {
50% { color: rgb(34, 34, 34); }
51% { color: rgba(34, 34, 34, 0); }
100% { color: rgba(34, 34, 34, 0); }
}
.spiner {
animation-name: spin;
animation-duration: 2000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
z-index: 100;
}
@keyframes spin {
from {
transform:rotate(0deg);
}
to {
transform:rotate(360deg);
}
}
</style>
<div class="container">
<div class="left_top">
<div style='display:%.temperature|"none;block"%'><i class="fa fa-thermometer" aria-hidden="true"></i> %.temperature%°C</div>
<div style='display:%.humidity|"none;block"%'><i class="fa fa-tint" aria-hidden="true"></i> %.humidity%%</div> </div>
<div class="info">
<div class="name">%.object_description%</div>
<div class="devices">
%.deviceString%
</div>
<div class="loc" style='display:%.RoomMsg|"none;block"%'><i class="fa fa-podcast" aria-hidden="true"></i> %.RoomMsg%</div>
<div class="time" style='display:%.LatestActivityTime|"none;block"%'><i class="fa fa-refresh"></i> %.LatestActivityTime%</div>
</div>
<div style="clear:both;"></div>
</div>
Код: Выделить всё
<i class="fa fa-lightbulb-o" aria-hidden="true"></i>
<i class="fa fa-lightbulb-o" aria-hidden="true"></i>
<i class="fa fa-snowflake-o" aria-hidden="true"></i>
<i class="fa fa-television" aria-hidden="true"></i>
<i class="fa fa-plug" aria-hidden="true"></i>
<i class="fa fa-plug" aria-hidden="true" ></i>
- Рейтинг: 5.81%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Vovix
- Сообщения: 1155
- Зарегистрирован: Пн янв 27, 2014 1:43 am
- Откуда: г.Ижевск
- Благодарил (а): 60 раз
- Поблагодарили: 532 раза
- Контактная информация:
Re: Шаблон класса / Class Template
Никита, а не имеет ли смысл, этим виджетам (этот и пользователи) делать класс с несколько разным названием (class="container")?nick7zmail писал(а):Продолжаем эксперементировать с шаблонами)) на этот раз шаблон класса Rooms.
Благодаря последнему обновлению (да, да, которое сломало меню)) - стало возможно создавать более универсальные шаблоны.
Вот вам пример: 1 шаблон может отображать как маленькие строчки типа как кухня или улица, так и большой объем инфы со статусом и значками, как зал.
У комнат имеются свойства temperature и humidity. Если выставить датчик температуры и влажности в простых устройствах, как основные сенсоры помещения - эти значения и будут попадать в свойства комнаты. И за счет шаблона можно сделать - если свойство есть - отобразить его, если нет - скрыть целиком блок...
Бонусом добавлено пару анимаций (вращение и мигание). Вентилятор, к примеру, реально крутится)))для этого достаточно добавить в css классы "spiner" или "blinker".
В общем не буду томить - вот кодОдно "НО"...надо сформировать полноценную html строку в свойстве .deviceString каждой комнаты с иконками включенных девайсов, к примеруШаблон класса RoomsПоказатьКод: Выделить всё
<style> @import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"); .container { border-radius: 15px; border:1px solid #444; padding: 10px; background-color:rgba(0, 0, 0, 0.3); } .left_top { float: right; font-size: 120%; } .left_top div { border-radius: 5px; border:1px solid #444; padding: 2px; display:inline-block; } .name { font-size: 140%; } .devices { font-size: 200%; margin-bottom: 5px; padding-top: 5px; } .time { font-size: 60%; color:grey; } //animations .blinker { -webkit-animation: blink 2s linear infinite; animation: blink 2s linear infinite; } @-webkit-keyframes blink { 50% { color: rgb(34, 34, 34); } 51% { color: rgba(34, 34, 34, 0); } 100% { color: rgba(34, 34, 34, 0); } } @keyframes blink { 50% { color: rgb(34, 34, 34); } 51% { color: rgba(34, 34, 34, 0); } 100% { color: rgba(34, 34, 34, 0); } } .spiner { animation-name: spin; animation-duration: 2000ms; animation-iteration-count: infinite; animation-timing-function: linear; z-index: 100; } @keyframes spin { from { transform:rotate(0deg); } to { transform:rotate(360deg); } } </style> <div class="container"> <div class="left_top"> <div style='display:%.temperature|"none;block"%'><i class="fa fa-thermometer" aria-hidden="true"></i> %.temperature%°C</div> <div style='display:%.humidity|"none;block"%'><i class="fa fa-tint" aria-hidden="true"></i> %.humidity%%</div> </div> <div class="info"> <div class="name">%.object_description%</div> <div class="devices"> %.deviceString% </div> <div class="loc" style='display:%.RoomMsg|"none;block"%'><i class="fa fa-podcast" aria-hidden="true"></i> %.RoomMsg%</div> <div class="time" style='display:%.LatestActivityTime|"none;block"%'><i class="fa fa-refresh"></i> %.LatestActivityTime%</div> </div> <div style="clear:both;"></div> </div>
- примерно то, что отображается сейчас в зале.Код: Выделить всё
<i class="fa fa-lightbulb-o" aria-hidden="true"></i> <i class="fa fa-lightbulb-o" aria-hidden="true"></i> <i class="fa fa-snowflake-o" aria-hidden="true"></i> <i class="fa fa-television" aria-hidden="true"></i> <i class="fa fa-plug" aria-hidden="true"></i> <i class="fa fa-plug" aria-hidden="true" ></i>
Гипотетически, если они попадут на одну страницу, то последний объект перебьет своим стилем предыдущие, и пока они у тебя почти одинаковые, но....
или браузер пройдет по ним последовательно, что-то я не задавался этим вопросом ранее!
и потом именно class="container" довольно распространенное наименование класса!
хотя возможно я не прав, но вдруг!?
т.е. я думаю, что названия классов, в данном случае, должны быть уникальны!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
- igorewa
- Сообщения: 515
- Зарегистрирован: Ср дек 21, 2016 11:54 pm
- Откуда: Киев
- Благодарил (а): 12 раз
- Поблагодарили: 43 раза
Re: Шаблон класса / Class Template
А можно поподробнее об этом, вообще не понял где это и куда это.
nick7zmail писал(а): Одно "НО"...надо сформировать полноценную html строку в свойстве .deviceString каждой комнаты с иконками включенных девайсов, к примеру- примерно то, что отображается сейчас в зале.Код: Выделить всё
<i class="fa fa-lightbulb-o" aria-hidden="true"></i> <i class="fa fa-lightbulb-o" aria-hidden="true"></i> <i class="fa fa-snowflake-o" aria-hidden="true"></i> <i class="fa fa-television" aria-hidden="true"></i> <i class="fa fa-plug" aria-hidden="true"></i> <i class="fa fa-plug" aria-hidden="true" ></i>
ASUS H110T, I5 7500, DDR4-16Gb, SSD256 . WIN10 64 (LTSB)
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Шаблон класса / Class Template
Верно, туда. Ширину виджета, если что, я расчитывал от 270 пикселей...а то они у вас маленькие какие-то вышли)) Более того, как выяснилось - туда можно закидывать надписи тоже с условиями. По идее можно даже обойтись без формирующего скрипта.Jilber писал(а):Я так понимаю, что сюда:СпойлерПоказать
Код: Выделить всё
<div style="display:%Relay12.status|"none;block"%"><img src="/cms/icons/fan.png" class="spiner" style="width:32px; height:32px"></div>
Возможно имеет. Но на сколько я замечал - стили переписываются. т.е. грузится 1 виджет с 1 стилем, грузится второй - переписывает его, грузится третий с 1 стилем - опять переписывает...т.к. стили грузятся из разных мест (типа elemnt9.container, elemtnt10.container и т.д. - вроде они друг другу не мешают....другой вопрос, если у 1 виджета будет этот стиль, а у второго нет. Тогда он точно перепишется предыдущим - и могут быть глюки с отображением. К примеру на сцене у меня переопределён стиль fa (картинки шрифта font awesome), и если я их не переопределяю в конкретном виджете - они подхватывают стиль со сцены, и отображаются коряво.Vovix писал(а): Никита, а не имеет ли смысл, этим виджетам (этот и пользователи) делать класс с несколько разным названием (class="container")?
Гипотетически, если они попадут на одну страницу, то последний объект перебьет своим стилем предыдущие, и пока они у тебя почти одинаковые, но....
или браузер пройдет по ним последовательно, что-то я не задавался этим вопросом ранее!
и потом именно class="container" довольно распространенное наименование класса!
хотя возможно я не прав, но вдруг!?
т.е. я думаю, что названия классов, в данном случае, должны быть уникальны!
Да и тем более разные классы стараюсь переименовывать. т.е. loc и time к примеру в этом и в предыдущем виджете - одно и то же, и конфликта точно не будет. container - да, чуть чуть поправил...но с переименованием не заморочился)). Вроде пока траблов не было (пробовал вставлять на 1 страницу - вроде всё ок.
- За это сообщение автора nick7zmail поблагодарил:
- Logrus (Сб янв 27, 2018 7:04 pm)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Шаблон класса / Class Template
Сергей...какая-то проблемка с
(это записано в свойстве, которое выводится в шаблоне)
В сценах и дашборде работает, а в боковом меню не хочет переключаться, пока меню открыто...только при обновлении страницы. Мне кажется дело в вебсокетах...как "вручную" оформить подписку со страницы на свойство?? Мне кажется это из-за того способа, что я выше указал))) то есть когда условие вбито в свойстве, а в шаблоне ссылка на это свойство. Страница не видит, что на "свойство внутри свойства" подписываться надо...
Код: Выделить всё
<img src="/cms/icons/fan.png" class="spiner" style="width:32px; height:32px; display:%Relay12.status|"none;block"%">
В сценах и дашборде работает, а в боковом меню не хочет переключаться, пока меню открыто...только при обновлении страницы. Мне кажется дело в вебсокетах...как "вручную" оформить подписку со страницы на свойство?? Мне кажется это из-за того способа, что я выше указал))) то есть когда условие вбито в свойстве, а в шаблоне ссылка на это свойство. Страница не видит, что на "свойство внутри свойства" подписываться надо...
Последний раз редактировалось nick7zmail Вс янв 28, 2018 12:38 pm, всего редактировалось 1 раз.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2101
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 314 раз
- Поблагодарили: 464 раза
Re: Шаблон класса / Class Template
СпойлерПоказать
да, по второй строке - это просто значки они ни на какие изменения не реагируют? (ага, а как формируешь ?) (вроде б понял, иконки нет /cms/icons/fan.png)(в дашборде без перезагрузки не изменяется)
(.Title)
СпойлерПоказать
п.с. еще вопрос: если будут еще к комнате привязаны освещенность и давление, как быть с первой строкой?
датчик протечки, возгорания - как бы отдельной строкой как датчик движения?
- Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо