Виджеты панели управления
Каждый пользователь 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 # укажите здесь созданный вами модуль виджетов