Макросы %object.property%
Модератор: immortal
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Макросы %object.property%
Небольшое обновление в работе макросов типа %object.property%, которые можно использовать в домашних страницах. Теперь можно задавать период авто-обновления без перезагрузки страницы в таком виде:
%object.property|30%
%object.property|10%
%object.property|5%
Цифра после "|" обозначает частоту обновления (в секундах).
Так же для более глубокого использования добавились две javascript-функции:
ajaxGetGlobal('var','id',interval); //считывает значение свойство и ставит его в качестве содержимого элемента с заданным id, например для id123 можно использовать <span id='id123'></span> (если interval = 0, то один раз, если больше, то с указанным периодом в миллисекундах)
ajaxSetGlobal('var','value'); //устанавливает значение свойства
%object.property|30%
%object.property|10%
%object.property|5%
Цифра после "|" обозначает частоту обновления (в секундах).
Так же для более глубокого использования добавились две javascript-функции:
ajaxGetGlobal('var','id',interval); //считывает значение свойство и ставит его в качестве содержимого элемента с заданным id, например для id123 можно использовать <span id='id123'></span> (если interval = 0, то один раз, если больше, то с указанным периодом в миллисекундах)
ajaxSetGlobal('var','value'); //устанавливает значение свойства
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Макросы %object.property%
Ё! Небеса услышали наши молитвы! Алилуя, братья.
Ну и несколько технических вопросов по этому поводу.
1. Сергей, скажите пару слов о внутреннем механизме.
2. В чём отличия от middle-connector-a.
3. Кaк обстоят дела с производительностью? Middle-connector увеличивает загрузку, если на страничке больше 10-и переменных.
Ну и несколько технических вопросов по этому поводу.
1. Сергей, скажите пару слов о внутреннем механизме.
2. В чём отличия от middle-connector-a.
3. Кaк обстоят дела с производительностью? Middle-connector увеличивает загрузку, если на страничке больше 10-и переменных.
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Макросы %object.property%
Ещё одно предложение.
Сделайте в той же библиотеке возможность за 1 запрос выдать несколько свойств. Это пригодится для индикаторов (например temp,updateTime,Alive), что бы можно было перечислять.
А ещё предложение сделать API для индикаторов (вроде как сейчас для модулей). Тогда можно будет в маркете иметь наборы индикаторов.
И чтобы модно было в страницу вставлять что-то вроде текстового макроса.
Например %#type|object.property|30%
По TYPE вставлялся нужный тип индикатора через представленое АПИ. Я попробую сам реализовать подобное, но без Сергея не получится.
Ещё была идея сделать AJAX мастер который бы выводил перечень объектов и их свойств (по типу выпадающего меню по правой кнопке). Чтобы можно было вставлять в текст имеющиеся в системе объект.свойство
А также привязать этот мастер в поля настроек админки
Сделайте в той же библиотеке возможность за 1 запрос выдать несколько свойств. Это пригодится для индикаторов (например temp,updateTime,Alive), что бы можно было перечислять.
А ещё предложение сделать API для индикаторов (вроде как сейчас для модулей). Тогда можно будет в маркете иметь наборы индикаторов.
И чтобы модно было в страницу вставлять что-то вроде текстового макроса.
Например %#type|object.property|30%
По TYPE вставлялся нужный тип индикатора через представленое АПИ. Я попробую сам реализовать подобное, но без Сергея не получится.
Ещё была идея сделать AJAX мастер который бы выводил перечень объектов и их свойств (по типу выпадающего меню по правой кнопке). Чтобы можно было вставлять в текст имеющиеся в системе объект.свойство
А также привязать этот мастер в поля настроек админки
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Макросы %object.property%
Механизм достаточно простой -- перед выводом идёт обработка макроса по указанному шаблону и он заменяется на <span id..></span>, а так же добавляется запуск ajaxGetGlobal с указанным периодом.Alex писал(а):Ё! Небеса услышали наши молитвы! Алилуя, братья.
Ну и несколько технических вопросов по этому поводу.
1. Сергей, скажите пару слов о внутреннем механизме.
К сожалению, не было возможности изучить этот механизм детально. Думаю, что основное отличие в использовании -- здесь менее гибко (нельзя динамически менять период обновления, к примеру), но проще для пользователя (не нужно ничего писать на javascript). Т.е. данный метод врятли полностью заменит middle-connector, но некоторые варианты его использования всё же сможет подменить.Alex писал(а):2. В чём отличия от middle-connector-a.
На предмет производительности, признаться, не тестировал. В большей степени влияет на производительность частота обновления -- если 10 переменных с обновлением каждую секунду, то это лишних 10 запросов в секунду, вполне возможно, что для сервера будет ощутимо. Если запросы более редкие, то никаких проблем быть не должно.Alex писал(а):3. Кaк обстоят дела с производительностью? Middle-connector увеличивает загрузку, если на страничке больше 10-и переменных.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Макросы %object.property%
Не очень понял насчёт нескольких свойств -- их можно перечислить друг за другом и по сути будет тоже самое.Ivan писал(а):Ещё одно предложение.
Сделайте в той же библиотеке возможность за 1 запрос выдать несколько свойств. Это пригодится для индикаторов (например temp,updateTime,Alive), что бы можно было перечислять.
А ещё предложение сделать API для индикаторов (вроде как сейчас для модулей). Тогда можно будет в маркете иметь наборы индикаторов.
И чтобы модно было в страницу вставлять что-то вроде текстового макроса.
Например %#type|object.property|30%
По TYPE вставлялся нужный тип индикатора через представленое АПИ. Я попробую сам реализовать подобное, но без Сергея не получится.
Ещё была идея сделать AJAX мастер который бы выводил перечень объектов и их свойств (по типу выпадающего меню по правой кнопке). Чтобы можно было вставлять в текст имеющиеся в системе объект.свойство
А также привязать этот мастер в поля настроек админки
По поводу индикаторов -- я думаю можно обойтись и имеющимися возможностями. Дело в том, что язык шаблонов позволяет включать файлы и указывать дополнительные параметры, т.е. можно делать шаблоны индикаторов в виде отдельных файлов и передавать им названия свойства для индикации или другие параметры.
Вот например (пишу по памяти, так что не уверен на 100%), у нас есть необходимость вызвать с домашней страницы индикатор для свойства Object.Property. Добавим на домашнюю страницу вот такой код: [#inc ../templates/indicator_coolview1.html DATA="Object.Property"#]
Эта конструкция подключит файл ../templates/indicator_coolview1.html и передаст ему параметр DATA (может быть любой другой либо несколько).
Теперь сделаем сам файл индикатора с именем indicator_coolview1.html и положим его в папку /templates/ (или /templates_alt/ на всякий случай).
Пример кода этого файла:
Код: Выделить всё
<big>%<#DATA#>|30%</big>
В общем, суть в том, что таким образом можно создавать шаблоны индикаторов или чего угодно.
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Макросы %object.property%
Проблема:
-------------
обновился через SVN — в результате новые макросы не работают. Вообще никак.
Вопрос:
----------
ajaxGetGlobal('var','id',interval);
ajaxSetGlobal('var','value')
что подразумевается под var ? По логике должно быть obj.prop ? Хорошо бы конкретный пример.
Ещё вопрос:
----------
> Не очень понял насчёт нескольких свойств -- их можно перечислить друг за другом и по сути будет тоже самое.
Я тоже не очень понял, причём обоих. Можно пример? Как конкретно перечислять?
И ещё
--------
> язык шаблонов позволяет включать файлы и указывать дополнительные параметры, т.е. можно делать шаблоны индикаторов в виде отдельных файлов и передавать им названия свойства для индикации или другие параметры.
В примере
[#inc ../templates/indicator_coolview1.html DATA="Object.Property"#]
передаётся 1 параметр, а как несколько?
> выведет большим размером значение свойства Object.Property с обновлением каждые 30 секунд.
В общем, суть в том, что таким образом можно создавать шаблоны индикаторов или чего угодно.
Индикаторы используют canvas. Можно ли использовать в шаблоне canvas и js?
-------------
обновился через SVN — в результате новые макросы не работают. Вообще никак.
Вопрос:
----------
ajaxGetGlobal('var','id',interval);
ajaxSetGlobal('var','value')
что подразумевается под var ? По логике должно быть obj.prop ? Хорошо бы конкретный пример.
Ещё вопрос:
----------
> Не очень понял насчёт нескольких свойств -- их можно перечислить друг за другом и по сути будет тоже самое.
Я тоже не очень понял, причём обоих. Можно пример? Как конкретно перечислять?
И ещё
--------
> язык шаблонов позволяет включать файлы и указывать дополнительные параметры, т.е. можно делать шаблоны индикаторов в виде отдельных файлов и передавать им названия свойства для индикации или другие параметры.
В примере
[#inc ../templates/indicator_coolview1.html DATA="Object.Property"#]
передаётся 1 параметр, а как несколько?
> выведет большим размером значение свойства Object.Property с обновлением каждые 30 секунд.
В общем, суть в том, что таким образом можно создавать шаблоны индикаторов или чего угодно.
Индикаторы используют canvas. Можно ли использовать в шаблоне canvas и js?
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Макросы %object.property%
1. Несколько параметров. Я имел ввиду механизм для своих индикаторов на AJAX, я написал чтение данных из базы. Хотел просто применить механизм из коробки, а не свой. Смысл нескольких свойств такой, запрашивать а AJAX не только само значение, но и последнее время его установки и свойство alive. Если вы смотрели мои индикаторы, там по хинту выводится время актуальности, плюс хотел вывести статус что датчик жив.
2. Я не знал что можно задействовать встроенный механизм шаблонов. Потому делал свой механизм. Теперь же сделаю через механизм из коробки (всегда был приверженцем делать софт, максимально использующий механизмы ядра а не изобретать велосипед).
Вопрос: Если я сделаю совместимый механизм, могу ли я оформить как модуль в маркете?
2. Я не знал что можно задействовать встроенный механизм шаблонов. Потому делал свой механизм. Теперь же сделаю через механизм из коробки (всегда был приверженцем делать софт, максимально использующий механизмы ядра а не изобретать велосипед).
Вопрос: Если я сделаю совместимый механизм, могу ли я оформить как модуль в маркете?
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Макросы %object.property%
Кстати, можно на стороне М упаковывать параметры в пакет, а на стороне индикатора распаковывать. Это как вариант.
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Макросы %object.property%
Сергей, двумя постами выше озвучены 4 вопроса и одна проблема. Не к спеху, но всё таки хотелось бы получить ответы на вопросы. Заранее спасибо.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Макросы %object.property%
Всё ещё актуально? Ещё кто-нибудь тестировал? У меня работает и, честно говоря, не могу сообразить, из-за чего оно может вообще не работать...обновился через SVN — в результате новые макросы не работают. Вообще никак.
Да, var это Object.Property и есть.Вопрос:
----------
ajaxGetGlobal('var','id',interval);
ajaxSetGlobal('var','value')
что подразумевается под var ? По логике должно быть obj.prop ? Хорошо бы конкретный пример.
Код: Выделить всё
Пример установки значения:
<script language="javascript">
ajaxSetGlobal('MyObject.MyProperty','123');
</script>
Код: Выделить всё
<span id='block_id'></span>
<script language="javascript">
ajaxGetGlobal('MyObject.MyProperty','block_id',0);
</script>
Можно сколько угодно> язык шаблонов позволяет включать файлы и указывать дополнительные параметры, т.е. можно делать шаблоны индикаторов в виде отдельных файлов и передавать им названия свойства для индикации или другие параметры.
В примере
[#inc ../templates/indicator_coolview1.html DATA="Object.Property"#]
передаётся 1 параметр, а как несколько?
[#inc ../templates/indicator_coolview1.html param1="Value1" param2="Value2" param3="Value3"#]
Шаблоны это просто html-код, который обрабатывается сервером, чтобы распознать макросы и прочие конструкции встроенного языка шаблонов, так что там может использоваться всё что угодно -- любой javascript, html и прочее без ограничений. То, что сервер не распознает как ключевую конструкцию, то просто включит как есть.> выведет большим размером значение свойства Object.Property с обновлением каждые 30 секунд.
В общем, суть в том, что таким образом можно создавать шаблоны индикаторов или чего угодно.
Индикаторы используют canvas. Можно ли использовать в шаблоне canvas и js?
Да, вполне. На github-е это может быть папка ./templates/, в которой содержится набор шаблонов. Так же могут быть другие папки и файлы. Смысл в том, что модуль из маркета распаковывается поверх имеющихся файлов, так что структура дополнения в маркете может быть абсолютно любая и включать всё, что угодно и главное, чтобы файлы не пересекались с файлами "ядра", чтобы ничего не сломалось. Вообще-то может и пересекаться, это не пресекается, но при обновлении ядра они снова перепишутся и может быть неразбериха, так что лучше всё же придерживаться правила "непересечения".Вопрос: Если я сделаю совместимый механизм, могу ли я оформить как модуль в маркете?
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги