Моя первая панель
Введение
COREmanager предоставляет широкий набор функций для создания практически любой панели. В этом примере будет создаваться панель отображающая список пациентов.
Начало
Подготовка:
Скачайте и установите последнюю версию COREmanager. Она должна быть доступна по адресу https://ip-адрес:1500/core. По умолчанию COREmanager устанавливается в каталог /usr/local/mgr5/. Вся дальнейшая работа будет вестись относительно пути установки по умолчанию.
Для удобства сборки и настройки мы создадим нашу панель в каталоге src/.
Обратите внимание!
Для автоматизации процесса сборки мы рекомендуем помещать все проекты связанные с COREmanager в каталог src/.
Создайте каталог mypanel и перейдите в него.
Создайте типовой Makefile следующего вида:
О том, как собирать собственный модуль смотрите по ссылке.
Создайте в этом же каталоге файл mypanel.cpp:
Перейдите в консоль и выполните команду:
После выполнения этой команды каталоге /usr/local/mgr5/lib появится файл mypanel.so. Всё, что осталось это перейти в корень каталога /usr/local/mgr5 и установить панель с помощью команды:
Панель готова. Теперь откройте браузер и перейдите по адресу: https://ip-адрес:1500/mypanel
Расширение функционала панели
Расширение функционала можно условно разбить на несколько этапов:
- Описание меню и настроек интерфейса (фаил mypanel.xml).
- Перевод меню (mypanel_msg_ru.xml).
- Реализация событий и действий в коде.
Описание меню и настроек интерфейса
Детальное описание настроек меню вы найдёте в статье XML.
При запуске панель подключает меню по умолчанию, описанное в файле core.xml и своё меню. Для описания интерфейса панели и меню создайте в каталоге etc/xml файлы mypanel.xml и mypanel_msg_ru.xml. Файл mypanel.xml описывает логическую структуру интерфейса, а файл mypanel_msg_ru.xml хранит названия меню на русском языке.
Обратите внимание!
Имена файлов могут быть любыми, но мы рекомендуем создавать файлы со следующими именами имяпанели.xml и имяпанели_msg_язык.xml
Для созданной панели добавьте своё главное меню Очередь и подменю: Список пациентов (будет выводить список всех записанных на приём) и Последний (будет отображать форму с именем последнего записавшегося пациента).
И так файл mypanel.xml будет иметь следующий вид:
Текстовые сообщения
Файл mypanel_msg_ru.xml обязательно должен быть создан и заполнен, иначе у вас не будет названий в пунктах меню.
Пример файла mypanel_msg_ru.xml:
Если у вас не отображается какое-то меню, значит у вас ошибка в файле перевода.
Реализация событий и действий
В COREmanager существует ряд классов упрощающих работу с обработкой событий, в данном примере будут использоваться:
- FormAction;
- StdListAction.
В COREmanager есть несколько готовых классов упрощающих работу со списками, например StdListAction. В этом классе автоматически создаётся действие ИмяДействия.delete, которое можно использовать лишь описав использование соответствующей функции в xml файле. Стоит отметить, что данное действие вызывается для выделенной группы элементов поочерёдно. Например: на панели инструментов списка создана кнопка Удалить, которая вызывает функцию pacientlist.delete. В коде нет созданного отдельного действия для обработки этой кнопки, так как в классе ActionPacientList автоматически создаётся действие с именем pacientlist.delete. Всё что нужно — это переопределить метод Del(Session &ses, const string &elid) и при нажатии на кнопку Удалить действие pacientlist.delete вызовется автоматически. Ключевым полем для списка является индекс — в массиве переменная elid будет содержать индекс удаляемого элемента. Если в списке выделить две строки и нажать кнопку Удалить то метод Del() вызовется поочередно для каждого элемента.
Также автоматически создаётся действие с именем pacientlist.edit. Причём для Добавления и Редактирования записи будет вызываться одно и тоже действие. При нажатии на кнопку Редактировать или Добавить вызовется метод Get(Session &ses, const string &elid), если была нажата кнопка Редактирорвать, то elid будет содержать праметр ключевого поля выделенной строки. В данном случае это будет индекс элемента в массиве. При нажатии на кнопку Добавить elid = "", по этому признаку можно определить дальнейшее поведение при заполнении формы. При нажатии на кнопку Ок, формы Редактирования или Добавления, вызовется метод Set(Session &ses, const string &elid) или New(Session &ses). Код нашего класса:
Пункт меню Последний описан как форма, для него нужно создать соответствующее действие. Код нашего обработчика будет выглядеть следующим образом: