SergeJey

 
<<< Назад

Свой контент в админке

Так уж повелось, что среднестатистический пользователь MajorDoMo по совместительству сам себе автоматизатор, который проводит достаточно много времени в панели управления системой, доводя свои сценарии и интерфейсы до совершенства :) Ну, как минимум, я сам такой. А кроме того, мне часто приходится работать с различными проектами автоматизации и хотелось привнести некую индивидуальность, которая позволяла бы легко вливаться в контекст конкретной системы. Когда-то давно уже была добавлена возможность добавления контента в панель управления за счёт создания специального сценария:

image-1661104740928.png

Это рабочий вариант, но мне он показался не достаточно удобным и гибким, поэтому я реализовал другой -- как мне кажется, не менее интересный.

Если в кратце, то на главной странице панели управления появилась возможность вставить собственный код с помощью раздела Настройки > Текстовые файлы. Там появились две кнопки для редактирования блоков левой и правой части страницы:

image-1661104894883.png

При нажатии одной из этих кнопок открывается редактор кода с заполненным типовым шаблоном:

image-1661104971480.png

Всё можно отредактировать по своему усмотрению и контент появится в соответствующей части главной страницы Панели:

image-1661105144100.png

Содержимое может быть как какое-то статическое, так и динамическое. Можно туда вставлять туда целые модули, используя соответствующие инструкции языка шаблонов. А можно, к примеру, через iframe вставить меню или сцену. Лично мне удобно, когда в этом блоке находится ссылка на папку гугл-диска, в которой я веду несколько документов, включая список задач, которые в работе, или таблицу с бюджетом конкретного проекта:

image-1661105496404.png

С точки зрения пользователя, на этом всё, дальше несколько слов о внутненнем устройстве механизма добавления контента и как его могут использовать разработчики своих модулей.

Я думаю, что разработчики в курсе, как работает механизм подписки на события в системе -- когда формируется какое-то событие (например "SAY"), то система вызывает все модули, которые подписались на это событие при установке (через функцию subscribeToEvent). Для вставки собственного кода задействован тот же механизм, но событие инициируется специальной конструкцией в шаблоне:

<!--processSubscription имя_события-->

Т.е. в данном случае в шаблоне panel_default.html прописан следующий код:

image-1661105874512.png

Этот код говорит системе, что надо обратиться ко всем модулям, подписанным на событие panelBlockLeft и попросить у них обработать это событие, вернув контент. Модуль textfiles подписан на два события:
image-1661105952709.png

Обработчик в модуле textfiles соответственно их обрабатывает, возвращая контент, если он был установлен:
image-1661106003892.png

То есть, любой модуль может подписаться на указанные события и возвращать контент на своё усмотрение.

На момент написания этой заметки данный механизм задействован только в панели управления и только с двумя указанными выше блоками, но в будущем возможно будут добавлены новые места потенциальной кастомизации и не только в панели управления.

Обсуждение (0) (13)

Смотрите так же:
29.07.2023 Управление списком покупок в Google Keep с помощью колонки Яндекс
02.07.2023 Мобильный хаб для Умного Дома
19.11.2022 Хранитель экрана для Android TV
28.08.2022 Идеи автоматизации от Рида (Smart Home Solver)
18.08.2022 Отправка изображения через say
06.08.2022 Как использовать мастер-контроль
01.08.2022 Про развитие системы
02.07.2021 Привод на окно Drivent -- интеграция и автоматизация
01.07.2021 Удобная работа с изображениями в блогах
28.12.2020 Вывод уведомлений системы на AnroidTV
20.12.2017 Первая запись

Минск, Беларусь

На форуме: sergejey

Веб-сайт:
https://connect.smartliving.ru/