Подключение плагина к информационной панели

Внешний визуализатор на уровне файловой системы представляет собой папку с файлами, необходимыми для работы: скрипты, картинки и другие составляющие. Файл плагина должен иметь имя manifest.json.

Пример файла manifest.json:

{

  "name": "Sunburst α",

  "description": "Sunburst diagram - alpha version",

  "name-ru": "Санбёрст-диаграмма α",

  "description-ru": "Санбёрст-диаграмма - предварительная версия",

  "icon": "support.svg",

  "author": "Foresight LLC",

  "entry": "index.html",

  "supportedDimensions": [ "Row", "Column", "Filter", "Facts" ],

  "supportedMarks": [ "AxisX", "AxisY", "Color", "Shape", "Size" ],

  "supportedSettings": ["axisX", "axisY", "textColor","number", "unit", "affixes", "sparkline","backgroundColor"],

  "params": [

    {

      "name": "Fill color",

      "name-ru": "Цвет заливки",

      "type": "color_picker",

      "default": "#ffffff"

    },

    {

      "name": "Smooth",

      "name-ru": "Сглаживание",

      "type": "boolean",

      "default": false

    }

  ],

  "devel": true

}

Задайте обязательные поля:

Примечание. Допустимо добавление полей вида name-XX и description-XX для других языков, но пока поддерживаются только en и ru.

Задайте функциональные поля:

Задайте признак отображения кнопки «Перезагрузить» в области визуализатора:

Поддерживаемые поля

Доступны следующие варианты полей (supportedDimensions):

Поддерживаемые метрики

Доступны следующие варианты метрик (supportedMarks):

Поддерживаемые настройки визуализатора

Доступны следующие настройки визуализатора:

Параметры визуализатора

Для добавления пользовательских настроек визуализатора на боковую панель в информационной панели используйте поле params, имеющее следующий формат:

{

      "name": "Smooth",

      "name-ru": "Сглаживание",

      "type": "boolean",

      "default": false,

}

Задайте поля:

interface Value {

  horizontalAlign: 'left' | 'center' | 'right';

  verticalAlign: 'top' | 'middle' | 'bottom';

}

{

  "params": [

    {

      "name": "Totals",

      "name-ru": "Итоги",

      "type": "group",

      "params": [

        {

          // ... аналогичная структура params

        }

      ]

    }

  ]

}

{

  "params": [

    {

      "name": "Row color",

      "name-ru": "Цвет ряда",

      "type": "group",

      "variant": "collapsible",

      "params": [

        {

          // ... аналогичная структура params

        }

      ]

    }

  ]

}

{

  "params": [

    {

      "name": "Row color",

      "name-ru": "Цвет ряда",

      "type": "group",

      "variant": "toggleable",

      "params": [

        {

          // ... аналогичная структура params

        }

      ]

    }

  ]

}

Точка входа

Точка входа – это файл формата *.html или *.js, в котором должны быть определены две функции в глобальной области видимости на объекте window:

/**

 * Функция инициализации визуализатора

 * @returns {MaybePromise<void>}

 */

window.init = () => {

  // инициализация

};

/**

 * Функция обновления визуализатора

 * @param данные для построения визуализатора

 * @returns {MaybePromise<void>}

 */

window.update = (data) => {

  // отрисовка данных

}

/**

 * Функция изменения параметров визуализатора

 */

window.paramsUpdate = (param, value, allParams) => {

  // реакция на смену настройки

}

В зависимости от формата файла расположения точки входа возможны варианты:

Функция инициализации init

Функция обновления данных update

Функция обновления параметров визуализатора paramsUpdate

Типизация внешнего визуализатора

Добавление в информационную панель

Визуализатор можно добавить вручную в дистрибутив информационной панели, выполнив действия:

  1. Положить папку с файлами визуализатора в подкаталог visualizers.

  2. Добавить запись о визуализаторе в файл info.json, расположенный в подкаталоге visualizers.

Запись о визуализаторе – это копия содержимого manifest.json, добавленная в массив этого файла.

Например:

[

  {

    "name": "Sample",

    "description": "Sample dummy visualizer",

    "icon": "support.svg",

    "entry": "main.js",

    "dirname": "sample"

  },

  {

    "name": "Sunburst α",

    "description": "Sunburst diagram - alpha version",

    "name-ru": "Санбёрст-диаграмма α",

    "description-ru": "Санбёрст-диаграмма - предварительная версия",

    "icon": "support.svg",

    "entry": "index.html",

    "dirname": "sunburst"

  }

]

В примере описано два визуализатора (Sunburst из примера выше).

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

Форматы данных

{

  "Dims": { // Список измерений

    "Names": ["Группа товара", "Тип скидки"], // Имена измерений

    "IsCalendar": [0, 1], // Признак календарного измерения

    "Elements": [ // Список элементов измерений

      ["Телевизоры", "Игровые приставки", "Ноутбуки"], // Элементы первого измерения

      ["5%", "10%"] // Элементы второго измерения

    ],

    "ElementKeys": [ // Ключи элементов

      [555, 666, 667], // Ключи элементов первого измерения

      [33, 44] // Ключи элементов второго измерения

    ],

    "Marks": [ // Маркеры и позиции измерений

      ["Row", "Color", "Size"], // Первоге измерение в строках с маркерами Color и Size

      ["Column", "Form"] // Второе измерение в столбцах с маркером Form

    ]

  },

  "Facts": { // Список фактов

    "Names": ["Количество", "Сумма"], // Имена фактов

    "Aggregation": ["Sum", "Min"], // Первый факт имеет агрегацию по сумме, второй по минимуму

    "Marks": [ // Маркеры и позиции фактов

      ["Filter"], // В фильтре

      ["Column", "Border"] // В столбцах и с маркером Border

    ]

  },

  "Data": { // Данные таблицы

    "Values": [33918621, 49771071.5, 418318642], // Значения в ячейках таблицы

    "Elements": [ // Список элементов измерений для каждой ячейки

      [1, 0], // Первый элемент первого измерения, нулевой элемент второго измерения, данные в ячейке 33918621

      [3, 0], // Третий элемент первого измерения, нулевой элемент второго измерения, данные в ячейке 49771071.5

      [0, 4] // Нулевой элемент первого измерения, четвёртый элемент второго измерения, данные в ячейке 418318642

    ]

  }

}

В маркеры отправляется положение измерения в заголовках таблицы и наличие метрик.

См. также:

Плагины