Перейти к основному содержимому

Использование LPE-выражений в виджетах

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

поле_конфигурационного_файла: "lpe:название_функции(аргумент1, аргумент2, ...)"

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

поле_конфигурационного_файла: "lpe:название_функции1(аргумент1, аргумент2, ...);название_функции2(аргумент1, аргумент2, ...)..."

Более конкретные примеры использования данных выражений представлены ниже.

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

  1. when - используется для неограниченного количества условий в выражении.
    Пример:
    "lpe:when(lpe(public_mv_doc_base1_amount_discount > 0),'#00b9ac',  '#93CAFE')"

В данном примере представлен случай, когда LPE-выражение представлено внутри LPE-выражения

  1. if - используется для одного условного выражения. Необходимые для указания аргументы:
    2.1 условие,
    2.2 значение параметра, если условие истинно
    2.3 значение параметра, если условие ложно

Ниже представлен пример использования условных выражений с оператором if:

    fontSize: "lpe:if(value<10, '120%', '80%')"

В данном примере, в случае, если значение будет меньше 10, то оно отобразится на 20% больше стандартного размере, в противном случае, на 20% меньше.

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

{
frame: {
h: 4,
w: 7,
x: 0,
y: 0,
},
dataSource: {
koob: "luxmsbi.public_mv_doc_base1",
style: {
measures: {
ttt: {
color: "lpe:when(lpe(public_mv_doc_base1_amount_discount > 0),'#ff0000', '#00ff00')",
title: "Индктр",
},
public_mv_doc_base1_azs_name: {
backgroundColor: "lpe:when(lpe(public_mv_doc_base1_amount_discount > 0),'#00b9ac', '#93CAFE')",
},
public_mv_doc_base1_add_info_quantity: {
fontSize: "lpe:if(value<10, '120%', '80%')",
minWidth: 300,
fontStyle: "lpe:if(value<10, 'italic', '')",
fontWeight: "lpe:if(value>40, 'bold', 'normal')",
textDecoration: "lpe:if(value>40, 'underline', '80%')",
backgroundColor: "lpe:if(value = 2, '#ffaabb', 'transparent')",
},
},
},
yAxis: "measures;",
sortBy: "public_mv_doc_base1_by_day_s,public_mv_doc_base1_trans_time",
filters: {},
measures: [
"concat('Бонусная-', public_mv_doc_base1_card_type):a1",
"if(public_mv_doc_base1_rc='P', 'Платиновая', if(public_mv_doc_base1_rc='J','Золотая',if(public_mv_doc_base1_rc='R','Серебренная','Отсутствует'))):a10",
"if(public_mv_doc_base1_amount_discount > 0, '↑','↓'):ttt",
"public_mv_doc_base1_add_info_quantity",
"public_mv_doc_base1_amount_discount",
],
dimensions: [
"public_mv_doc_base1_goods_code_type",
],
view_class: "koob-table-simple",
}

Ниже на изображении представлен дэш с вышеописанным конфигурационным файлом:

Дэш “Данные” со стилизацией столбцов с использованием LPE-выражений
к сведению

В данный момент, стилизация с использованием LPE-выражений работает для дэшей tableP, koob-table-simple и label

Для двумерных дэшей (отложенные в системе координат) существует возможность выводить вместо значений факта - значение, полученное по формуле, написанной в LPE-выражении. Для этого можно использовать поле badgeTitle, пример использования которого представлен ниже:

Использование LPE-выражения в поле badgeTitle

На примере выше, в выводимых значениях предомострировано значение, рассчитанное по формуле:
1_факта + 2 * 2_факт

осторожно

Внимание! Поле badgeTitle будет работать только при указании в массиве options значения DisplayAllBadges

Функции, доступные внутри выражений if и when

Внутри выражений вы можете использовать:

  • математические операнды +, -, *, /, (, );
  • операторы сравнения <, >, <=, >=, =, !=;
  • Значения true, false, #t(true), #f(false), null, NIL(null);
  • Логические операторы and, or, &&(and), ||(or), !
  • Функцию cond();

Пример:

color: 'lpe:when(cond(1>null), "#ff0000", "#00ff00")'
  • специальную переменную value чтобы изменить параметры только некоторых значений.

Пример:

color: 'lpe:if(value>989, "#00f0f0", "#0000ff")'

Результат такой настройки

Использование value в LPE в цвете дэша