Перейти к содержанию

Виджеты панели управления

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

Класс DashboardWidget

Все виджеты панели управления должны наследоваться от базового класса DashboardWidget InfraVision. Подклассы должны предоставлять метод render() и могут переопределять характеристики базового класса по умолчанию.

Виджеты, требующие настройки пользователем, также должны включать дочерний класс ConfigForm, наследующийся от WidgetConfigForm. Эта форма используется для отрисовки параметров конфигурации виджета пользователем.

::: extras.dashboard.widgets.DashboardWidget

Регистрация виджетов

Чтобы зарегистрировать виджет панели управления для использования в InfraVision, импортируйте декоратор register_widget() и используйте его для обёртывания каждого подкласса DashboardWidget:

from extras.dashboard.widgets import DashboardWidget, register_widget

@register_widget
class MyWidget1(DashboardWidget):
    ...

@register_widget
class MyWidget2(DashboardWidget):
    ...

Пример

from django import forms
from extras.dashboard.utils import register_widget
from extras.dashboard.widgets import DashboardWidget, WidgetConfigForm


@register_widget
class ReminderWidget(DashboardWidget):
    default_title = 'Reminder'
    description = 'Add a virtual sticky note'

    class ConfigForm(WidgetConfigForm):
        content = forms.CharField(
            widget=forms.Textarea()
        )

    def render(self, request):
        return self.config.get('content')

Инициализация

Для регистрации виджета необходимо импортировать модуль виджета. Рекомендуемый подход — сделать это в методе ready вашего PluginConfig:

class FooBarConfig(PluginConfig):
    def ready(self):
        super().ready()
        from . import widgets  # укажите здесь созданный вами модуль виджетов