Подстановки - зарезервированные команды (функции) для обращения к свойствам виджета и вывода значений переменных, атрибутов и данных из источника в заданном формате. Подстановки используются при настройке правил условного форматирования, текстовых шаблонов для подсказок и надписей в диаграммах, а также в HTML-виджете.
Простые подстановки в шаблонах надписей и подсказок в диаграммах
В диаграммах аналитических панелей есть возможность использовать подстановочные значения в шаблонах надписей (меток) и подсказок, с версии 5.2 набор поддерживаемых подстановок расширен и унифицирован.
Шаблоны позволяют настраивать формат и состав информации об элементах (секциях) диаграммы. В Системе предусмотрены 2 подхода к настройке текстовых шаблонов:
- быстрая настройка
- расширенная настройка
Рекомендованные подстановки для простой и быстрой настройки шаблонов описаны в таблице:
Подстановка | Описание | Точки применения | Примеры |
---|---|---|---|
[[$variable]] |
Значение переменной источника, где variable - название переменной из OLAP-источника или код параметра из источника типа “Реестр” |
|
OLAP: [[$Период получения данных]] Реестр: [[$par_period]] |
[[text]] |
Полный заголовок метки (элемента диаграммы), значение зависит от текущей строки/элемента данных. В OLAP-источнике заголовки элементов кортежа перечисляются через разделитель " - ", в источнике типа “Реестр” выводится значение поля, отображаемого как наименование |
|
OLAP: [[text]] Реестр: [[text]] |
[[caption]] |
Краткий заголовок для элементов иерархий кортежа, характеризующего строку данных | Аналогично [[text]] |
OLAP: [[caption]] Реестр: [[caption]] |
[[@attribute]] |
Атрибут элемента иерархии в кортеже оси строк, где attribute - это код атрибута, добавленного в настройках OLAP-источника |
Аналогично [[text]] |
OLAP: [[@year]] Реестр: не применимо |
[[value]] |
Текущее форматированное значение точки данных (секции диаграммы) по выбранному полю источника (показателю) | Аналогично [[text]] |
OLAP: [[value]] Реестр: [[value]] |
[[value_index]] |
Форматированное значение поля по номеру, где index - это номер столбца из источника виджета, начиная с 0 |
Аналогично [[text]] |
OLAP: [[value_1]] Реестр: [[value_2]] |
[[value_field]] |
Форматированное значение поля по полному наименованию, где field - это уникальное имя (код) столбца из источника, в OLAP - перечисление UniqueName элементов в кортеже через запятую, в Реестре - код поля. В отличие от индекса обращение по коду актуально, когда порядок столбцов может измениться или количество столбцов большое |
Аналогично [[text]] |
OLAP: [[value_[Measures].[dec_sum]]] Реестр: [[value_num_decimal]] |
[[value_x]] [[value_y]] [[value_z]] |
[[value_x]] — Значение, выбранное в настройках группы для расположения элемента по оси X[[value_y]] — Значение, выбранное в настройках группы для расположения элемента по оси Y[[value_z]] — Значение, выбранное в настройках группы для определения размера элемента |
|
OLAP:
|
[[percents]] |
Текущее значение элемента в процентах относительно суммы значений по всем элементам в формате вещественного числа с двумя знаками после запятой |
|
OLAP: [[percents]] Реестр: [[percents]] |
[[total]] [[total_fixed]] |
[[total]] - итоговое значение (сумма) текущих значений элементов [[total_fixed]] - итоговое значение в формате числа с двумя знаками после запятой (только в круговой диаграмме/пирамиде) |
|
OLAP:
|
[[title]] |
Заголовок серии/группы элементов, заданный в настройках виджета |
|
OLAP: [[title]] Реестр: [[title]] |
Подстановки в настройках условного форматирования
В аналитических панелях есть возможность настроить правила для условного раскрашивания диаграмм. С версии 5.2 для виджетов:
- Столбчатая/линейная диаграмма (на уровне серий),
- Древовидная карта (на уровне элементов),
- Пузырьковая диаграмма (на уровне групп)
обеспечена поддержка новых подстановок, в том числе сложных выражений в конфигурациях условного раскрашивания.
В настройках условия доступно использование следующих операторов:
1. Логические операторы:
||
- логическое ИЛИ (ищет первое истинное значение из двух аргументов, если хотя бы 1 операнд принимает значение true, то результат - Истина)&&
- логическое И (возвращаетtrue
, если оба аргумента истинны)!
- НЕ (приводит аргумент к логическому типу true/false и возвращает противоположное значение, одним из вариантов использования является проверка на пустоту)
2. Операторы сравнения (дополнительная информация в статье Операторы сравнения в JavaScript):
> <
- сравнения больше/меньше>= <=
- сравнения больше/меньше или равно==
- равно (без сравнения типа, т.е. при сравнении операнды с разным типом данных преобразуются к числу)===
- строгое равно (сравнивается и тип, и значение, т.е. проверяет равенство без приведения типов)!=
- не равно (без сравнения типа)!==
- оператор строгого неравенства (без приведения типов)
3. Математические операторы:
+
сложение-
вычитание*
умножение/
деление%
взятие остатка от деления**
возведение в степень
Операторы сравнения приводят выражение к логическому типу: true
или false
. Выбранный цвет применяется к элементам диаграммы, для которых результат всех операций сравнения в выражении принимает значение true.
Примечание
- Приоритет оператора
&&(И)
больше, чем||(ИЛИ)
, поэтому он выполняется раньше. Приоритет!(НЕ)
является наивысшим из всех логических операторов, поэтому он всегда выполняется первым, перед&&
или||
.- Строки сравниваются посимвольно в лексикографическом (алфавитном) порядке, поэтому результат сравнения форматированного значения со строкой отличается от сравнения неформатированного значения со строкой. Алгоритм сравнения строковых значений предполагает, что сначала сравниваются первые символы строк, если они равны, то поочередно сопоставляются последующие символы. Также при сравнении строковых значений учитывается регистр символов. Например:
'100' < '2'
- Истина, а100 < 2
- Ложь'Московская область' > 'Москва'
- Истина'N1' < 'n1'
- Истина- Значения разных типов при сравнении приводятся к числу. Исключением является сравнение с помощью операторов строгого равенства
===
и неравенства!==
. Например:
true == 1, false == 0
- Истина, atrue === 1, false === 0
- Ложь'100' > 2
- Истина'' == 0, '' == false
- Истина, так как пустая строка иfalse
равны нулю'01 !== 1
- Истина, a'01' != 1
- Ложь- При сопоставлении с форматированных значений важно учитывать примененные разделители тысячных и дробной части операндов. Например, результат сравнения значения в формате “#0.00 руб” будет
Истина
при выражениях следующего вида:
row.getValue(0, true)=='1 001,22 руб'
row.getValue(0, false)==1001.223
В логических выражениях условного раскрашивания для получения значений можно использовать простые текстовые подстановки и специальные функции (при обеспечении более сложных правил), где значение зависит:
1) от источника данных виджета:
Подстановка | Описание | Примеры |
---|---|---|
[[$variable]] |
Уникальное имя (значение) переменной источника, где variable - название переменной из OLAP-источника или код параметра из источника типа “Реестр” |
OLAP: [[$Период получения данных]]=='[period_dim].[period_heir].[2021]' Реестр: [[$param]]=='Тюменская область' |
Функция | Описание | Примеры |
---|---|---|
ds.getVariableValue (variableName, asString) |
Значение переменной источника, приведенное к строке в зависимости от булева значения asString , где variableName - название переменной из OLAP-источника или код параметра из источника типа “Реестр”. При asString = true значение передается форматированной строкой, при отсутствии или false - значение (UniqueName) без форматирования |
OLAP:
ds.getVariableValue("param", false)=='2021' |
2) от текущей строки данных:
Подстановка | Описание | Примеры |
---|---|---|
[[text]] |
Полный заголовок метки (элемента диаграммы), значение зависит от текущей строки/элемента данных. В OLAP-источнике заголовки элементов кортежа перечисляются через разделитель " - ", в источнике типа “Реестр” выводится значение поля, отображаемого как наименование | OLAP: * при наличии 2х иерархий на оси строк:[[text]]=='Тюменская область - 2021' Реестр: [[text]]=='Тюменская область' |
[[caption]] |
Краткий заголовок для элементов иерархий кортежа, характеризующего строку данных | OLAP: * при наличии 2х иерархий на оси строк:[[caption]]=='Тюменская область' Реестр: [[caption]]=='Тюменская область' |
[[name]] |
Уникальное наименование строки данных (идентификатор записи в Реестре). Для OLAP-источника значение содержит перечисление UniqueName элементов в кортеже через запятую без пробелов | OLAP: * при наличии 2х иерархий на оси строк:[[name]]=='[dim_regions].[regions_hier].[Тюменская область],[period_dim].[period_heir].[2021]' Реестр: [[name]]==38 |
[[@attribute]] |
Атрибут элемента иерархии в кортеже оси строк, где attribute - это код атрибута, добавленного в настройках OLAP-источника. Значение соответствует типу атрибута |
OLAP:
|
[[value]] |
Текущее значение точки данных (секции диаграммы) по выбранному полю источника (показателю) без форматирования | OLAP: [[value]]>30000 Реестр: [[value]]>5.4 |
[[value_index]] |
Значение поля без форматирования по номеру, где index - это номер столбца из источника виджета начиная с 0, при необходимости округления дробной части можно использовать метод .toFixed(n) , где n - количество цифр после десятичной запятой от 0 до 20 |
OLAP: [[value_1]]==1000 Реестр:
|
[[value_field]] |
Значение поля без форматирования по полному наименованию, где field - это уникальное имя (код) столбца из источника, в OLAP - перечисление UniqueName элементов в кортеже через запятую, в Реестре - код поля |
OLAP:
|
[[value_x]] [[value_y]] [[value_z]] |
[[value_x]] — Значение без форматирования, выбранное в настройках группы для расположения элемента по оси X[[value_y]] — Значение без форматирования, выбранное в настройках группы для расположения элемента по оси Y[[value_z]] — Значение без форматирования, выбранное в настройках группы для определения размера элемента |
OLAP: [[value_x]]>10 Реестр: [[value_z]]>100 |
Функция | Описание | Примеры |
---|---|---|
row.getText() |
Полный заголовок метки (элемента диаграммы), значение зависит от текущей строки/элемента данных. В OLAP-источнике заголовки элементов кортежа перечисляются через разделитель " - ", в источнике типа “Реестр” выводится значение поля, отображаемого как наименование | OLAP:* при наличии 2х иерархий на оси строк: row.getText()=='Тюменская область - 2021' Реестр: row.getText()=='Тюменская область' |
row.getCaption() |
Краткий заголовок для элементов иерархий кортежа, характеризующего строку данных | OLAP: * при наличии 2х иерархий на оси строк: row.getCaption()=='Тюменская область' Реестр: row.getCaption()=='Тюменская область' |
row.getPropertyValue (propertyName, asString) |
Атрибут элемента иерархии в кортеже оси строк, где propertyName - это код атрибута из OLAP-источника, при asString = true значение преобразуется в формат строки, при отсутствии или false - значение без форматирования |
OLAP:
|
row.getValue(index, asString) |
Значение поля строки данных по номеру, где index - это номер столбца из источника виджета начиная с 0. При asString = true значение передается форматированной строкой, при отсутствии или false - фактическое значение без форматирования. При необходимости округления дробной части можно использовать метод .toFixed(n) , где n - количество цифр после десятичной запятой со значением от 0 до 20. В форматированном значении из OLAP-источника в качестве разделителя тысячных применяется неразрывный пробел " " (non -breaking space) |
OLAP:
|
row.getValue(fieldName, asString) |
Значение поля строки данных по полному наименованию, где fieldName - это уникальное имя (код) столбца из источника, в OLAP - перечисление UniqueName элементов в кортеже через запятую, в Реестре - код поля. При asString = true значение передается форматированной строкой, при отсутствии или false - фактическое значение без форматирования. При необходимости округления дробной части можно использовать метод .toFixed(n) , где n - количество цифр после десятичной запятой со значением от 0 до 20. В форматированном значении из OLAP-источника в качестве разделителя тысячных применяется неразрывный пробел " " (non -breaking space) |
OLAP:
|
3) от настроек виджета:
Функция | Описание | Примеры |
---|---|---|
widget.Title |
Свойство “Заголовок виджета” | widget.Title!='Динамика продаж за 2022г.' |
Подстановки в содержании HTML-виджета и HTML-редактора подсказок
В системе обеспечена поддержка HTML-кода с подстановками и переменными в теле содержания, что позволяет:
- отображать в дашборде данные источника в любом формате через HTML-виджет
- создавать пользовательские подсказки любого вида
Набор подстановок и правила настройки HTML-содержания для HTML-виджета и HTML-редактора подсказок совпадает, разница заключатся только в том, что подстановки в подсказках выполняются на основе данных источника самой диаграммы, а HTML-виджет оперирует любыми источниками дашборда, так как обращение выполняется явно в содержании.
Простые подстановки
Подстановка | Описание | Примеры |
---|---|---|
{$variable} |
Значение переменной источника данных форматированной строкой, где variable - название переменной из OLAP-источника или код параметра из источника типа “Реестр”. При наличии спецсимволов (кроме нижнего подчёркивания) в имени переменной следует применять подстановку вида {[values["$variable"]]} или соответствующую функцию |
OLAP:
{$param} |
{text} |
В OLAP-источнике полный заголовки элементов в кортеже оси строк, заголовки перечисляются через разделитель " - ". В источнике типа “Реестр” построчно выводится значение поля, отображаемого как наименование | OLAP: {text} Реестр: {text} |
{caption} |
Краткий заголовок текущих элементов иерархий в кортеже для строки данных. В источнике типа “Реестр” совпадает с {text} |
OLAP: {caption} Реестр: {caption} |
{name} |
Уникальное имя строки данных (идентификатор записи в Реестре). Для OLAP-источника значение содержит перечисление UniqueName элементов в кортеже через запятую без пробелов. Может использоваться в условиях вывода подсказки или параметрах URL-ссылок | OLAP: {name} Реестр: {name} |
{@attribute} |
Атрибут элемента иерархии в кортеже оси строк, где attribute - это код атрибута элемента, добавленный в настройках OLAP-источника. Значение соответствует типу атрибута. Для виртуальных атрибутов рекомендована конструкция вида {[values["@attribute"]]} или соответствующая функция |
OLAP:
|
{value_index} |
Форматированное значение поля по номеру, где index - это номер столбца из источника виджета начиная с 0 |
OLAP:
|
{value_field} |
Форматированное значение поля по полному наименованию:
|
OLAP:
|
Продвинутые функции
Функция | Описание | Примеры |
---|---|---|
{[values.getVariableValue (variableName, asString)]} |
Значение переменной источника данных, приведенное к строке в зависимости от булева параметра asString , где variableName - название переменной из OLAP-источника или код параметра из источника типа “Реестр”. При asString = true - значение передается форматированной строкой, при отсутствии или false - значение (UniqueName) без форматирования |
OLAP:
|
{[values.getText()]} |
Заголовок строки данных:
|
OLAP: {[values.getText()]} Реестр: {[values.getText()]} |
{[values.getCaption()]} |
Краткий заголовок текущих элементов иерархий в кортеже для строки данных. В источнике типа “Реестр” совпадает с {text} | OLAP: {[values.getCaption()]} Реестр: {[values.getCaption()]} |
{[values.getName()]} |
Уникальное имя строки данных:
|
OLAP: {[values.getName()]} Реестр: {[values.getName()]} |
{[values.getPropertyValue (propertyName, asString)]} |
Атрибут элемента иерархии в кортеже оси строк, где propertyName - это код атрибута из OLAP-источника. При asString = true - значение преобразуется в формат строки, при отсутствии или false - значение без форматирования |
OLAP:
|
{[values.getValue(index, asString)]} |
Значение поля строки данных по номеру, где index - это номер столбца из источника виджета начиная с 0. При asString = true - значение передается форматированной строкой, при отсутствии или false - фактическое значение без форматирования | OLAP: {[values.getValue(1, false)]} Реестр: {[values.getValue(1, false)]} |
{[values.getValue (fieldName, asString)]} |
Значение поля строки данных по полному наименованию, где fieldName - это уникальное имя (код) столбца из источника:
При asString = true - значение передается форматированной строкой, при отсутствии или false - фактическое значение без форматирования |
OLAP:
|
Дополнительные возможности
Функция | Описание | Примеры |
---|---|---|
new Date(datestring) |
Создание нового объекта типа “Дата”:
|
OLAP: new Date() Реестр: new Date() |
Ext.util.Format.date (date,format) |
Определение формата для значения типа “Дата” | OLAP: Ext.util.Format.date(new Date(),"Y-m-d") Реестр: Ext.util.Format.date(new Date(),"Y-m-d") |
HTML-теги | Поддерживаются различные теги языка разметки текста для описания элементов, среди популярных:
|
Примечание
- Добавлять подстановки рекомендуется путем копирования-вставки из тела справки к шаблону, так как некоторые комбинации символов при незавершенной конструкции могут спровоцировать ошибки, зависание и перезагрузку вкладки браузера с системой. Например, некорректно вводить с клавиатуры последовательность символов
{[
или{%
, объявляющих блок js-кода.- В подстановках не могут применяться имена полей, переменных, атрибутов, содержащих спецсимволы, кроме “_”. При наличии спецсимволов в имени следует использовать подстановки вида:
{[values["value_field"]]}
{[values["@attribute"]]}
{[values["$variable"]]}
или соответствующие функции:{[values.getValue("fieldName")]}
{[values.getValue(index)]}
{[values.getPropertyValue(propertyName)]}
{[values.getVariableValue(variableName)]}
- Если для серии/группы настроено содержимое подсказки, для этой серии/группы будет игнорироваться значение шаблона текста из настроек раздела “Подсказки”. Настройка подсказки, заданная в области “Содержимое”, приоритетнее значения шаблона, указанного в области настроек подсказки “Текст”.
- Стиль текста и фона, размер подсказки применяются в следующем порядке:
- переопределённые в HTML-содержании подсказки,
- явно заданные параметры подсказки,
- дефолтные настройки.
HTML-виджет
Для обращения к источнику данных в виджете «HTML» необходимо во вкладке «Содержание» ввести шаблон <tpl for="ds">содержимое</tpl>
, где:
ds
– название источника данных дашборда (не должно содержать пробелы и другие спецсимволы),содержимое
– область ввода HTML-тегов и подстановок с обращением к данным источника.
Конструкция позволяет перебрать строки указанного источника - результат будет содержать значения ко всем строкам данных источника. В случае извлечения значений переменных все строки будут иметь одинаковое значение, например:
<table border="1" style="border-collapse:collapse;">
<colgroup width="50%">
<colgroup width="30%">
<tr>
<th rowspan="1">Наименование</th>
<th colspan="1">Показатель</th>
</tr>
<tpl for="Источник_Реестр">
<tr>
<td align="left">{text}</td>
<td align="center">{value_1}</td>
</tr>
</tpl>
</table>
Если необходимо получить значение из источника 1 раз (например, переменную) или данные 1 конкретной ячейки, то можно использовать конструкцию вида values["ds"][n].function,
где:
ds
– название источника данных дашборда,n
- индекс строки,function
- подстановка для получения данных источника.
Таким образом, в блоке js-кода описывается js-объект, где ключ - источник, а значение - массив из записей источника с набором поддерживаемых методов. Для вызова кода необходимо задекларировать зависимость от изменения источника, поэтому в рамках содержимого также потребуется добавить конструкцию <tpl for...>
, например:
<tpl>
{% values.dsVarValue = values["Источник_OLAP"][0].getVariableValue("Период",true);
%}
Выбранный период - {dsVarValue}
</tpl>
<tpl for="Источник_OLAP"></tpl>
HTML-редактор подсказок
С версии 5.2 для каждой диаграммы дополнительно реализован расширенный режим редактирования подсказок - опция позволяет более тонко настроить визуализацию данных.
В HTML-редакторе доступно использование простых подстановок, сложных функций и возможностей HTML-тегов. Подсказки могут содержать данные источника, таблицы, диаграммы, изображения для отображения всей необходимой пользователю информации о данных графика и кастомизации внешнего вида и условий появления всплывающих подсказок.
Диаграмма | Порядок применения расширенной пользовательской подсказки | Специфичные подстановки для диаграмм |
---|---|---|
Столбчатая Линейная Радар |
|
{title} — Заголовок серии{value} — Текущее значение элемента диаграммы форматированной строкой{percents} — Значение элемента диаграммы в процентах{total} — Итоговое значение |
Круговая Пирамида Древовидная карта |
|
{value} — Текущее значение элемента диаграммы форматированной строкой{percents} — Значение элемента диаграммы в процентах |
Датчик |
|
{value} — Текущее значение элемента диаграммы форматированной строкой |
Пузырьковая диаграмма |
|
{title} — Заголовок группы{value_x} — Значение оси X элемента диаграммы{value_y} — Значение оси Y элемента диаграммы{value_z} — Значение элемента диаграммы |