Вывод контрольного значения в виджетах. Умное число

Чтобы отобразить ключевые показатели (KPI), которые пользователь смотрит первым делом, используют контрольные значения в виджетах. Контрольные значения - это уникальные и базовые элементы анализа и мониторинга. Они часто используются как в шапках панели, так и в центре виджета.

Примеры отображения KPI

В HTML-виджетах

В линейной диаграмме (SmartNumber with trendline)

В круговых диаграммах и датчиках, где сам виджет тоже отображает план-факт

В пирамиде и круговой диаграмме

Варианты реализации в системе

Виджет HTML

Кейс: Необходимо вывести контрольные значения - плановое, фактическое и процент отклонения от плана.

Для начала добавляем источник данных - OLAP-представление с показателями для определенного элемента размерности. Так будет выглядеть источник данных в нашем примере:

Добавляем виджет “HTML” и в свойствах виджета, в разделе “Содержание” прописываем HTML-код со ссылками на значения показателей (мер) из источника “HTML”:

HTML-код
<div class="inner">
	<div class="title">Бюджет городов <span class="textalign">(рублей)</span>
	</div>
	<div class="inner1">
      <div class="inner2">
			<div class="inner3">
				<div>План</div>
				<div>Факт</div>
			</div>
			<div>% перерасхода</div>
		</div>
		<div class="inner2">
			<div class="inner3">
				<div>
					<span class="colortext">
						<tpl for="HTML">
							<tr>
								<td>{value_0}</td>
								<td>{value_1}</td>
							</tr>
						</tpl>
					</span>
				</div>
			</div>
			<div>
				<span class="colortext">
					<tpl for="HTML">
						<tpl if="[values.getValue(2, false)]&lt;=0"><span style="color: #54A2AE;"><tpl else><span style="color: #E36378;"></tpl>{value_2}
					</tpl>
				</span>
			</div>
		</div>
	</div>
</div>

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

Для внешнего оформления виджета используется раздел “CSS”, в данном примере используется следующий код:

CSS-код
{{id}} .title {
    display: block;
    font-size: 17px;
    height: 50px;
    font-weight: bold;
    font-family: 'Verdana';
    text-align: left;
    background: #fafbfd;
    color: #456592;
    line-height: 1.5;
    padding: 5px 10px 5px 10px;
}
{{id}} .inner {
  display: flex;
  flex-direction: column;
  height:100%;
  border: 1px solid #456592;
  user-select: none;
}
{{id}} .inner1 {
  display: flex;
  height:100%;
  flex:  1;
}
{{id}} .inner2 {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  flex-wrap: nowrap;
  height:100%;
  background: #fafbfd;
  font-family: 'Verdana';
  color: #456592;
  font-size: 16px;
  line-height: 2;
  padding: 5px 10px 5px 10px; 
  flex:  1;
}
{{id}} .inner3 {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  flex-wrap: nowrap;
  height:100%;
  background: #fafbfd;
  font-family: 'Verdana';
  color: #456592;
  font-size: 16px;
  line-height: 1.5;
  flex:  0.5;
}
{{id}} .textalign {
    font-size: 12px;
}
{{id}} .colortext {
    font-weight: bold;
}

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

Виджет HTML с ключевыми показателями

Блок “Выполнить код” в виджетах Диаграмм

Кейс: Необходимо вывести любое контрольное значение источника данных и расположить в центре линейной диаграммы. Такие контрольные значения еще называют SmartNumber with trendline.

Добавляем виджет “Столбчатая диаграмма” или “Линейная диаграмма” и источник данных для него. Для контрольного значения мы можем использовать тот же источник данных или добавить новый, ссылка на источник будет указана в настройках виджета. В нашем примере будет дополнительный источник.

Переходим в свойства виджета и настраиваем событие “При инициализации виджета”:

Из группы “Элемент” перетаскиваем blockly “Выполнить код” и вставляем запрос следующего вида:

JS-код
const dataSource = $widget.getDataSource('Второй_источник');
 
$widget.down('#chart').on('beforecreatechart',
    function (chart, config) {
 
        if (chart && dataSource && dataSource.lastData) {
 
        const cfg = {};
 
        // Жирный текст
        cfg.bold = false;
                     
        // Цвет текста
        cfg.color = '#456592';
 
        //Размер текста (в пт)
        cfg.size = 60;
 
        // Значение текста    
        cfg.text = dataSource.lastData.rows[0]["@value_0"];
 
        var fontStyle = cfg.bold ? 'bold ' + cfg.size + 'pt arial' : cfg.size + 'pt arial';
 
		// Позиция по x
		cfg.x = (chart.getWidth() / 2) - (getTextWidth(cfg.text, fontStyle) / 3);

		// Позиция по y
		cfg.y = (chart.getHeight() / 8);
 
        config.allLabels = [];
        config.allLabels.push(cfg);
 
    }
});
 
function getTextWidth(text, font) {
 
    // re-use canvas object for better performance
 
    var canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement("canvas"));
 
    var context = canvas.getContext("2d");
 
    context.font = font;
 
    var metrics = context.measureText(text);
 
    return metrics.width;
}
 
$widget.updateChart(); 

, где:

  • ‘Второй источник’ - название источника данных
  • [0][‘value_0’] - индекс строки и столбца источника данных.
    Вместо индексов могут использоваться коды мер, доступные варианты подстановок перечислены в справке к содержимому HTML-виджета.

Дополнительно настраиваем оси и серии. Результат будет выглядеть так:

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

Шаблон в настройках виджетов “Круговая диаграмма” и “Пирамида”

Кейс: Необходимо вывести контрольное значение в центре Круговой диаграммы.

Добавляем виджет Круговая диаграмма, переходим в раздел Заголовки, с помощью кнопки настраиваем вывод контрольного значения - в поле «Текст» прописываем текст заголовка или шаблон в формате [[total]] или [[total_fixed]] для вывода итогового значения источника данных диаграммы.

При необходимости заполняем остальные параметры:

  • «Цвет» - выбор цвета из палитры для заголовка
  • «Размер» - изменение размера заголовка
  • «Y» - определение расположения заголовка по оси Y
  • «Ж» - установление жирного шрифта для заголовка

Аналогично настраивается формат контрольного числа для виджета “Пирамида”:

Настройка формата вывода контрольного значения для Пирамиды

При необходимости настраиваем отображение и стили других элементов диаграммы. Для круговой диаграммы в разделе “Объем” увеличиваем внутренний радиус так, чтобы контрольное число поместилось во внутренний круг. В результате в диаграммах отобразится итоговое значение источника данных:

Шаблон заголовка и раскрашивание круговой диаграммы

Кейс: отобразить текущий прогресс и процент достижения цели.

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

Источник данных

Как мы настроили источник
  • Вывели на ось строк переменную “Город” с типом значения “Элемент иерархии”, в область значений - меры плана и факта.
    Переменная Город
  • Добавили в иерархию “Город” расчетный элемент “Осталось”, показывающий разницу между планом и фактом для выбранного элемента иерархии.
    Расчетный элемент Формула расчетного элемента
  • Добавили расчетный элемент - меру “Выполнение плана”, в которой рассчитали процент выполнения плана. План не рассчитывается только для расчетного элемента “Осталось”. Вывели меру в область значений.
    Мера Выполнение плана Формула меры Выполнение плана
  • В переменной “Город” выбрали нужный город для соответствующего виджета.

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

Палитра круговой диаграммы

Отключаем легенду, переходим в раздел Надписи и в шаблоне ссылаемся на столбец “Выполнение плана”, настраиваем размер и цвет текста. Чтобы значение было максимально в центре, значение радиуса для отступа должно быть большим и отрицательным:

Формат контрольного значения

В подсказку можно вывести текущее значение показателя:

Подсказка к круговой диаграмме

В справке к шаблону подсказки можно посмотреть доступные варианты подстановок
Справка к шаблону подсказки
С версии AlphaBI 5.2 реализован HTML-редактор подсказок. Например, в подсказку можно добавить показатели с заголовком, таблицу, контент через iframe и даже другой дашборд системы с передачей параметров.

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

Заголовки круговой диаграммы

Меняя значение внутреннего радиуса, управляем толщиной линии прогресса:

Регулировка внутреннего радиуса

В результате получаем круговую диаграмму, динамически отображающую прогресс достижения цели. Контрольное число показывает процент выполнения плана, в подсказке - фактическое значение. Для сравнения приводим разные проценты выполнения показателя:

Фактическое значение в подсказке к виджету Фактическое значение в подсказке к виджету

Виджет Датчик

Кейс: необходимо вывести текущий % достижения цели.

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

Для визуализации данных источника выводим на панель виджет “Датчик”, в свойствах настраиваем ориентиры для шкалы значений, где:

  • текущее значение - положение стрелки и заполненная часть сектора
  • минимальное значение - начало шкалы значений
  • максимальное значение - конец шкалы значений
  • целевое значение - линия достижения цели
    Настройка отображения значений

Выводим промежуточные значения на шкалу

Настройка шкалы значений

и задаем цветовую палитру. Так как цель может быть достигнута более чем на 100%, задаем конечный угол 0 градусов, таким образом целевые значения будут отображены в левой части шкалы, а значения сверх цели - в правой.

Настройка графического отображения значений

В разделе “Надписи” выводим текущий % достижения цели и настраиваем его положение на виджете:

Индексация значений в источнике

Обращение к значению по индексу

В справке к шаблону можно посмотреть доступные варианты подстановок
Справка к шаблону надписи

В подсказку можно вывести текущее значение показателя.

В результате получаем отображение контрольного значения (% достижения цели), текущее состояние процесса достижения цели на виджете. Для сравнения приводим примеры с невыполненной и перевыполненной целью:

Виджет Датчик

Факт в подсказке Факт в подсказке