[Разработчикам] Конструктор модулей
Модератор: immortal
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
[Разработчикам] Конструктор модулей
По адресу https://mjdm.ru/mbuilder/ запустил новый инструмент -- генератор заготовок для модулей MajorDoMo.
(все способы кастомизации системы в статье)
Этот инструмент предназначен для быстрого создания "скелета" нового модуля. Созданная заготовка полностью рабочая и может быть сразу установлена в систему (после скачивания и распаковки). В дальнейшем разработчик её "допиливает" под свои потребности (используя PHP), но львиная часть типовых задач будет уже решена и можно сосредоточиться на логике работы модуля.
Основные возможности:
* Создание скелета модуля с указанием основных данных (название, категория)
* Создание интерфейса работы с данными (таблица первого уровня + [опционально] таблица второго уровня)
* Заготовка для обработчика команды SAY (для кастомных визуализаций уведомлений и синтезаторов речи)
* Заготовка для цикла модуля
Рядом с большинством полей есть значок вопроса, по которому можно получить больше информации о настройках.
Программирования этот инструмент не отменяет, но значительно сокращает время на рутину.
(все способы кастомизации системы в статье)
Этот инструмент предназначен для быстрого создания "скелета" нового модуля. Созданная заготовка полностью рабочая и может быть сразу установлена в систему (после скачивания и распаковки). В дальнейшем разработчик её "допиливает" под свои потребности (используя PHP), но львиная часть типовых задач будет уже решена и можно сосредоточиться на логике работы модуля.
Основные возможности:
* Создание скелета модуля с указанием основных данных (название, категория)
* Создание интерфейса работы с данными (таблица первого уровня + [опционально] таблица второго уровня)
* Заготовка для обработчика команды SAY (для кастомных визуализаций уведомлений и синтезаторов речи)
* Заготовка для цикла модуля
Рядом с большинством полей есть значок вопроса, по которому можно получить больше информации о настройках.
Программирования этот инструмент не отменяет, но значительно сокращает время на рутину.
- За это сообщение автора sergejey поблагодарили (всего 12):
- skysilver (Ср дек 23, 2015 10:27 am) • Alien (Ср дек 23, 2015 6:01 pm) • nick7zmail (Пт янв 29, 2016 10:36 am) • samum (Пт янв 29, 2016 11:46 am) • Kod.Begemot (Вт фев 02, 2016 10:59 pm) • ErmolenkoM (Ср фев 03, 2016 9:44 am) • Otto (Пт апр 29, 2016 8:18 am) • Bagir (Пт фев 10, 2017 9:41 pm) • zelevova (Сб апр 15, 2017 2:04 pm) • foxvlad (Сб мар 17, 2018 5:07 pm) и ещё 2
- Рейтинг: 13.95%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Помощник создания модулей для MajorDoMo
Вот это шикарная штука...надо дома по-эксперементировать.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 191
- Зарегистрирован: Пт дек 20, 2013 4:46 pm
- Благодарил (а): 72 раза
- Поблагодарили: 38 раз
Re: Помощник создания модулей для MajorDoMo
Не знаю во всех ли выдачах помощника такое, но у меня случилось - не было сохранения датасорса. Пока Сергей не поправил обратите внимание на основной класс.
И в функции function getParams() соответственно.
PS Протестировал помощника еще раз. Если сразу указывать две таблицы, то все нормально. Так что вопрос касается только развития модуля от одного датасета к нескольким. Нужно не забыть про описанное выше
Код: Выделить всё
function saveParams($data=0) {
$p=array();
if (IsSet($this->id)) {
$p["id"]=$this->id;
}
if (IsSet($this->data_source)) {
$p["data_source"]=$this->data_source;
}
if (IsSet($this->view_mode)) {
$p["view_mode"]=$this->view_mode;
}
if (IsSet($this->edit_mode)) {
$p["edit_mode"]=$this->edit_mode;
}
if (IsSet($this->tab)) {
$p["tab"]=$this->tab;
}
return parent::saveParams($p);
}
PS Протестировал помощника еще раз. Если сразу указывать две таблицы, то все нормально. Так что вопрос касается только развития модуля от одного датасета к нескольким. Нужно не забыть про описанное выше
Ubuntu на Banana pi M2U Connect
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Помощник создания модулей для MajorDoMo
Небольшой вопросик - а можно несколько полей таблицы связать с несколькими свойствами объектов? Или как вообще связывание происходит? И каким образом работает? При изменении связанного свойства запускается какой либо код?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 191
- Зарегистрирован: Пт дек 20, 2013 4:46 pm
- Благодарил (а): 72 раза
- Поблагодарили: 38 раз
Re: Помощник создания модулей для MajorDoMo
Вообще-то это бланк. Главная его функция - избавиться от написания кода по поддержке модуля.
Основной костяк задается сразу, а потом уже в загруженных файлах смотреть пример и по аналогии дописывать что нужно в класс и темплейты.
Запускать, не запускать и что запускать решаете Вы - разработчик
Возможно практически все, но зависит от желаемого результата, а с конкретным вопросом по конкретной реализации хотелки можно в личку или, еще лучше, в соответствующей ветке форума создать тему о разрабатываемом модуле и уже в нем вести вопрос.
Модулей нужно много хороших и разных
Основной костяк задается сразу, а потом уже в загруженных файлах смотреть пример и по аналогии дописывать что нужно в класс и темплейты.
Запускать, не запускать и что запускать решаете Вы - разработчик
Возможно практически все, но зависит от желаемого результата, а с конкретным вопросом по конкретной реализации хотелки можно в личку или, еще лучше, в соответствующей ветке форума создать тему о разрабатываемом модуле и уже в нем вести вопрос.
Модулей нужно много хороших и разных
Ubuntu на Banana pi M2U Connect
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Помощник создания модулей для MajorDoMo
Я в курсе что это бланк...первые модули писал, когда еще не было этого помощника))...с ним гораздо проще...особенно с таблицами в базе. Просто интересно было конкретно про привязку...как с несколькими свойствами связать вроде разобрался...сейчас пытаюсь понять - как модуль должен (и должен ли) откликаться на изменение связанных свойств...и какой кусок кода за это отвечает...Alien писал(а):Вообще-то это бланк. Главная его функция - избавиться от написания кода по поддержке модуля.
Основной костяк задается сразу, а потом уже в загруженных файлах смотреть пример и по аналогии дописывать что нужно в класс и темплейты.
Запускать, не запускать и что запускать решаете Вы - разработчик
А на счет "создать тему" - тему создавать по модулю можно, когда он уже готов)) Сырой глючный и т.п. - врят ли кто тестировать даже возьмется, не то что уж помогать)...
Кстати, Сергей...хз - у меня такой глюк, или вообще с билдером - но когда название модуля на русском вписываешь - результат выдаётся в корявой кодировке (сейчас не могу посмотреть конкретно какой)....
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 191
- Зарегистрирован: Пт дек 20, 2013 4:46 pm
- Благодарил (а): 72 раза
- Поблагодарили: 38 раз
Re: Помощник создания модулей для MajorDoMo
Видимо сам php файл не в UTF, а в кириллице, оттуда и кракозябры вылазят.
Чтобы модуль откликался на связанные свойства, я так думаю, нужно создать цикл с проверкой этих свойств с какой-то периодичностью. Затем уже из цикла запускать необходимые связанные методы.
А по сырости - это Вы зря. "Гуртом і батька легше бити", есть такая поговорка. Создать тему можно и под сырое. Если тема интересна, то будут комментарии, хотелки, а возможно и помощь.
Чтобы модуль откликался на связанные свойства, я так думаю, нужно создать цикл с проверкой этих свойств с какой-то периодичностью. Затем уже из цикла запускать необходимые связанные методы.
А по сырости - это Вы зря. "Гуртом і батька легше бити", есть такая поговорка. Создать тему можно и под сырое. Если тема интересна, то будут комментарии, хотелки, а возможно и помощь.
Ubuntu на Banana pi M2U Connect
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Помощник создания модулей для MajorDoMo
Сергей...небольшой вопросик про механизм связывания параметров со свойствами объектов. (Возможно повторяюсь, просто переформулировал)
Можно по-подробнее узнать механизм связывания? Как система понимает, что свойство связано с каким-либо модулем? У этого свойства какие-то привязки прописываются в sql прямо? Или модуль "подписывается" как то на изменение этого свойства?
Чтоб была понятнее суть вопроса - цель - к записи (в модуле) прицепить 1 объект, 2 свойства и 1 метод. Нужно, чтобы модуль реагировал на изменения обоих свойств...
Можно по-подробнее узнать механизм связывания? Как система понимает, что свойство связано с каким-либо модулем? У этого свойства какие-то привязки прописываются в sql прямо? Или модуль "подписывается" как то на изменение этого свойства?
Чтоб была понятнее суть вопроса - цель - к записи (в модуле) прицепить 1 объект, 2 свойства и 1 метод. Нужно, чтобы модуль реагировал на изменения обоих свойств...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Помощник создания модулей для MajorDoMo
Есть функцияnick7zmail писал(а):Сергей...небольшой вопросик про механизм связывания параметров со свойствами объектов. (Возможно повторяюсь, просто переформулировал)
Можно по-подробнее узнать механизм связывания? Как система понимает, что свойство связано с каким-либо модулем? У этого свойства какие-то привязки прописываются в sql прямо? Или модуль "подписывается" как то на изменение этого свойства?
Чтоб была понятнее суть вопроса - цель - к записи (в модуле) прицепить 1 объект, 2 свойства и 1 метод. Нужно, чтобы модуль реагировал на изменения обоих свойств...
addLinkedProperty("ObjectName", "PropertyName", "ModuleName");
По сути она добавляет через запятую название модуля в поле LINKED_MODULES записи значения свойства (таблица pvalues). Соответственно, система знает, что надо обратиться к данному модулю при изменении свойства. Обращение происходит через вызов метода propertySetHandle("ObjectName", "PropertyName", $value) соответствующего модуля (в модуль этот метод должен быть добавлен в код). Ну а пример реализации обработки вызова можно посмотреть практически в любом "железном" модуле. Простой пример:
Код: Выделить всё
function propertySetHandle($object, $property, $value) {
$commands=SQLSelect("SELECT noocommands.*, noodevices.ADDRESS, noodevices.SCENARIO_ADDRESS FROM noocommands LEFT JOIN noodevices ON noocommands.DEVICE_ID=noodevices.ID WHERE LINKED_OBJECT LIKE '".DBSafe($object)."' AND LINKED_PROPERTY LIKE '".DBSafe($property)."'");
DebMes("nooCommand: $object.$property");
$total=count($commands);
if ($total) {
for($i=0;$i<$total;$i++) {
//отправляем команду в "железяку"
}
}
}
- За это сообщение автора sergejey поблагодарил:
- nick7zmail (Ср июн 22, 2016 2:34 pm)
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги