В системе присутствует возможность добавления новых настроек визуализации компонентов виджетов.
Исходные коды базовых компонентов виджетов находятся в открытом доступе по адресу:
https://polygit.polymatica.ru/components-library/polymatica-dashboards-tn |
Для кастомизации настроек визуализации в исходном коде компонента предназначен файл view-settings.ts.
Для работы с кастомизацией настроек визуализации в системе должны быть установлены:
Чтобы добавить новые настройки визуализации для компонента, необходимо выполнить следующие действия:
-
-
-
-
Перейти в терминале IDE в папку с проектом и установить пакеты зависимостей компонента, выполнив в команду:
npm install |
npm start |
Это откроет по адресу http://localhost:3000/devtools/ инструмент разработчика, который позволяет в реальном времени видеть изменения настроек.
-
При кастомизации виджета можно добавить параметры следующих типов:
Заголовок блока настроек, используется для разделения параметров на блоки.
Код:
export const createViewSettings: CreateViewSettings<DataSettings> = ({ dataSettings, viewSettings, }: { dataSettings: DataSettings; viewSettings: ViewSettings; }) => { return [ title('Title 1'), // ...параметры title('Title 2'), // ...параметры title('Title 3'), // ...параметры ]; }; |
Результат:
Чек-бокс с подписью.
export const createViewSettings: CreateViewSettings<DataSettings> = ({ dataSettings, viewSettings, }: { dataSettings: DataSettings; viewSettings: ViewSettings; }) => { return [ // ...параметры checkbox({ key: EViewOption.Toolbox, label: { ru: 'Отображать блок увеличения', en: 'Display magnification block', }, defaultValue: true, }), // ...параметры ]; }; |
Результат:
Радиокнопки для выбора единственного значения настройки.
const dataLabelsPosition = [ ['top', 'Сверху', 'Top'], ['bottom', 'Снизу', 'Bottom'], ['inside', 'По центру', 'Center'], ['left', 'Слева', 'Left'], ['right', 'Справа', 'Right'], ]; export const createViewSettings: CreateViewSettings<DataSettings> = ({ dataSettings, viewSettings, }: { dataSettings: DataSettings; viewSettings: ViewSettings; }) => { return [ // ...параметры radio({ key: EViewOption.ChartType, label: { ru: 'Положение значений', en: 'Position of the data labels' }, options: dataLabelsPosition.map((item) => { const [value, ru, en] = item; return { label: { ru, en, }, value, }; }), }), // ...параметры ]; }; |
Результат:
Выпадающий список для выбора значений.
const dataLabelsPosition = [ ['top', 'Сверху', 'Top'], ['bottom', 'Снизу', 'Bottom'], ['inside', 'По центру', 'Center'], ['left', 'Слева', 'Left'], ['right', 'Справа', 'Right'], ]; export const createViewSettings: CreateViewSettings<DataSettings> = ({ dataSettings, viewSettings, }: { dataSettings: DataSettings; viewSettings: ViewSettings; }) => { return [ // ...параметры select({ key: EViewOption.DataLabelsPosition, label: { ru: 'Положение значений', en: 'Position of the data labels', }, defaultValue: dataLabelsPosition[0][0], options: dataLabelsPosition.map((item) => { const [value, ru, en] = item; return { label: { ru, en, }, value, }; }), }), // ...параметры ]; }; |
Результат:
RGB-палитра для выбора цвета.
export const createViewSettings: CreateViewSettings<DataSettings> = ({ dataSettings, viewSettings, }: { dataSettings: DataSettings; viewSettings: ViewSettings; }) => { return [ // ...параметры colorPicker({ key: EViewOption.ColorConstantHigher, label: { ru: 'Цвет', en: 'Color', }, defaultValue: 'green', }), // ...параметры ]; }; |
Результат:
Простое поле ручного ввода значения.
export const createViewSettings: CreateViewSettings<DataSettings> = ({ dataSettings, viewSettings, }: { dataSettings: DataSettings; viewSettings: ViewSettings; }) => { return [ // ...параметры input({ key: EViewOption.XAxisTicksLength, label: { ru: 'Длина подписей', en: 'Axis labels length', }, defaultValue: `${axisTicksLengthDefault}`, }), // ...параметры ]; }; |
Результат:
Также имеется возможность настроить валидацию поля. Для этого в значении validation необходимо указать валидируемые поля:
export const createViewSettings: CreateViewSettings<DataSettings> = ({ dataSettings, viewSettings, }: { dataSettings: DataSettings; viewSettings: ViewSettings; }) => { return [ // ...параметры input({ key: EViewOption.XAxisTicksLength, label: { ru: 'Длина подписей', en: 'Axis labels length', }, defaultValue: `${axisTicksLengthDefault}`, }), // ...параметры ]; }; export const validation: ViewSettingsValidation = { [EViewOption.XAxisTicksLength]: (value) => { if (value === '' || value === null) return null; const parsedValue = parseInt(value); if ( !/^\d+$/.test(value) || parsedValue < axisTicksLengthyMin || parsedValue > axisTicksLengthyMax ) { return { ru: `укажите целое число от ${axisTicksLengthyMin} до ${axisTicksLengthyMax}`, en: `enter an integer from ${axisTicksLengthyMin} to ${axisTicksLengthyMax}`, }; } return null; }, }; |
Результат:
В структуре исходного кода находится файл конфигурации сборки package.json.
Для сборки виджета необходимо:
Запустить в терминале IDE в папке с файлом package.json команду:
npm build |
Полученный .zip уже можно загружать в систему, как пользовательский компонент - см. UGDASH.