Использование значений цвета из источника данных в диаграммах с сериями

К элементам серий диаграмм в Alpha BI применяется дефолтная палитра. При этом разные элементы одной серии раскрашены одним цветом, сохраняющимся при проваливании:
image

Изменить цвета элементов можно разными способами, например:

  1. Задать цвета вручную для элементов общей или отдельной серии.

  2. Использовать условное форматирование.

  3. Раскрасить элементы виджета с помощью JS-кода в блоке “Выполнить код” в обработчике событий виджета.
    Расскажем об этом способе более подробно.

Кейс

Необходимо задать цвет каждого элемента диаграммы, используя цвета из источника данных. В нашем случае источником данных для виджета является OLAP-представление, поэтому удобно, если код цвета элемента задан как атрибут уровня иерархии. Здесь важно, чтобы код цвета был указан в кодировке HEX (#000000).

Как сделать

  1. Открыть редактор куба или общей размерности и выбрать уровень иерархии, элементы которого нужно раскрасить.

  2. Создать атрибут уровня, который будет ссылаться на поле источника данных, содержащее код цвета элемента.
    Создание атрибута иерархии в редакторе АХД

  3. Сохранить и опубликовать изменения, синхронизировать АХД.

  4. Создать аналитическую панель с источником OLAP, настроить OLAP-представление и в настройках иерархии перетащить атрибут с кодом цвета в правую область. Возле наименования атрибута указан код иерархии и код самого атрибута, который потребуется позже.
    Настройка отображения атрибута уровня иерархии

  5. Применить изменения и убедиться, что для элементов заданы коды цветов из источника, иначе к элементу применится дефолтный цвет.
    Атрибут с кодом цвета каждого элемента

  6. Сохранить источник, добавить виджет “Столбчатая/Линейная диаграмма” и перетащить источник данных в область виджета (либо выбрать источник в свойствах виджета).

Примечание

По умолчанию каждому элементу будет присвоен дефолтный цвет. Для наглядности можно вывести код цвета как значение элемента с помощью подстановки типа [[@attribute]], где attribute - код атрибута

  1. В свойствах виджета перейти в раздел “События” и задать событие при инициализации виджета. В редакторе события выбрать blockly “Выполнить код” и вставить код:
$widget.down('#chart').on('beforecreatechart', (pie, chartConfig) => {
  for (let i = 0; i < chartConfig.graphs.length; i++){ //цикл по сериям диаграммы
    const graph = chartConfig.graphs[i];
    
    if (graph.valueField === 'value_0'){ // только для серии по полю value_0 устанавливаем настройки цвета
        graph.fillColorsField = '@color';
    }
  }
});

, где:

  • value_0 - индекс столбца меры,
  • color - код атрибута. Для обращения к атрибуту требуется указать символ @.

  1. Сохранить событие и аналитическую панель. При каждом сохранении и открытии дашборда на просмотр произойдет инициализация виджета и сработает событие, настроенное в обработчике - элементы раскрасятся в заданные цвета:

Применение кода цвета из источника к элементу диаграммы

Также можно раскрасить элементы в линейной диаграмме. Например, каждому году присвоен свой цвет - чем дальше от текущего, тем светлее.
Атрибут с кодом цвета для года

Используя тот же год, заменив название атрибута, можно задать градиентную заливку.
Градиентная заливка в столбчатой диаграмме