Модуль Панель управления (dashboard)

Модуль дашбоарда (dashboard) – модуль для выведения краткой информации в виде блоков. Основывается на модели виджетов.

Структура модуля

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

Менеджер (manager)

Менеджер - это основной компонент модуля, отвечающий за создание и инициализацию виджетов, макетов, подключение панели к другим модулям.

let manager = require('modules/dashboard/manager');

Макет (layout)

Макет - это EJS шаблон, в котором определяются схема размещения виджетов, параметры ддя шаблонов виджетов, плагин для управления сеткой макета на клиенте (например gridster), подключаются общие ресурсы.

Базовые макеты модуля находятся в папке /dashboard/layouts. Опубликованные из мета-данных в папке /applications/${meta-namespace}/layouts.

Каждый макет имеет уникальный ID. При публикации макета из меты к ID добавляется префикс.

let dashboard = require('modules/dashboard');
dashboard.getLayout('demo');
dashboard.getLayout('develop-and-test-demo');

При рендере макета необходимо передать объект manager.

res.render(dashboard.getLayout('demo'), { dashboard });

Виджет (widget)

Виджет - это объект, который размещается на макете и взаимодействует с сервером через ajax-запросы.

Базовые виджеты модуля находятся в папке /dashboard/widgets. Опубликованные из мета-данных в папке /applications/${meta-namespace}/widgets.

Виджет состоит из файла класса index.js и шаблона представления view.ejs. Класс должен наследоваться от базового класса /dashboard/base-widget или его потомков.

  • Метод init() отвечает за начальную инициализацию виджета при старте сервера.
  • Метод refresh() вызывается при получении ajax-запроса от клиента.
  • Метод job() получает данные для виджета.

Каждый виджет имеет уникальный ID. При публикации виджета из меты к ID добавляется префикс.

dashboard.getWidget('demo');
dashboard.getWidget('develop-and-test-demo');

При рендере представления виджета необходимо передать объект widget.

<% var widget = dashboard.getWidget('develop-and-test-demo') %>
<%- partial(widget.view, {widget}) %>

Публикация из меты

Пример структуры в applications/develop-and-test

dashboard
    layouts
      demo-layout
    widgets
      demo-widget
        index.js
        view.ejs
    static
        layouts
        widgets
          demo-widget

Для того, чтобы данные из меты подгружались в модуль дашборда, необходимо в файле конфигурации приложения deploy.json добавить следующую секцию, в раздел "modules":

"dashboard": {
  "globals": {
    "namespaces": {
      "develop-and-test": "Мета для тестирования и разработки"
    },
    "root": {
      "develop-and-test": "applications/develop-and-test/dashboard"
    }
  }
}