# VisIndicValue Описание класса

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

На рисунке показаны три индикатора.

Значение отображаемой переменной берётся из набор тегов (eqVarSet). Индекс переменой определяется полем (varIndex).

VisIndicValue позволяет, перед выводом, производить линейное преобразование значения переменной:

result = (v + offset) * multiplier , где

- result - результирующее значение для отображения,
- v - исходное значение переменной
- offset - смещение исходного значения
- multiplier - множитель

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

Назначение полей:

1. Минимальное значение диапазона (резултирующее значение должно быть больше или равно этому значению)
2. Максимальное значение диапазона (резултирующее значение должно быть меньше или равно этому значению)
3. Цвет текста
4. Цвет фона

Например:

`-1000;0;#FFFFFF;#0000FF
0;10;#FFFFFF;#00FF00
10;1000;#FFFFFF;#FF0000`

Здесь заданны три правила. Разберём первое. Если результирующее значение больше или равно -1000 (первое поле), и меньше или равно 0 (второе поле), то цвет текста сделать белым (#FFFFFF - третье поле), а цвет фона синим (#0000FF - четвертое поле).

Кроме отображения информации, индикатор может осуществлять вызов панели редактирования параметров проекта. Для этого необходимо в свойстве eqParameters задать ссылку на набор параметров проекта (EqParameters). Если контроллер не определён, то перед вызовом панели проверяются права пользователя на редактирование параметров, иначе права проверяются контроллером. Подробнее здесь.

При необходимости редактировать только один параметр, в свойстве parameterIndex нужно указать индекс нужного параметра.

Родительский класс: VisBase

Объект данного класса должен быть частью (дочерним объектом) одного из потомков VisContainer.

# Свойства объекта

- text
- pos
- size
- font
- textColor
- backgroundColor
- reqPosColor
- autoFillBackground
- shadow
- shape
- alignment
- eqVarSet
- varIndex
- offset
- multiplier
- precision
- colorMap
- eqParameters
- parameterIndex
- controller
- ctrlInfo

# Описание свойств

## text

Текст метки.

## pos

Положение метки.

## size

Размер метки.

## font

Стиль шрифта.

## textColor

Цвет текста.

## backgroundColor

Цвет фона метки.

## autoFillBackground

Закрашивать фон.
Значение параметра равное "true" говорит что фон метки должен быть закрашен, инача фон прозрачный.

## shadow

Вид рамки вокруг метки.
Plain - плоская
Raised - выпуклая
Sunken - утопленная

## shape

Стиль рамки вокруг метки.

## alignment

Выравнивание текста.

## eqVarSet

Ссылка на набор тегов.
Данное свойство должно содержать ссылку на набор тегов (EqVarSet) с параметрами устройства.

## varIndex

Индекс отображаемой переменной.

## offset

Смещение исходного значения.

## multiplier

Множитель значения.

## precision

Количество знаков после запятой при выводе значения.

## colorMap

Правила изменения цвета.

## eqParameters

Ссылка на набор параметров.
Данное свойство должно содержать ссылку на набор параметров (EqParameters). Если набор параметров определён, то при клике на метке происходит вызов редактора параметров.

## parameterIndex

Индекс редактируемого параметра.
Свойство позволяет вызвать либо панель редактирования параметров (значение = -1), либо "простой" редактор одного параметра с соответствующим индексом (значение >= 0).

## controller

Контроллер действий пользователя.

## ctrlInfo

Дополнительная информация для контроллера.
Если контроллер является графическим, то формат следующий

### индекс тега1/делитель1, индекс тега2/делитель2

#### Пример 0,1/10,3

альтернативная запись

### [индекс начала, индекс конца];делитель1, делитель2

#### Пример [1..10];1,8,4

если указаны просто индексы, то делитель по умолчанию равен 1

# Использование контроллера

Без использования контроллера, при клике на метке, происходить проверка прав на редактирование параметров и, если права есть, вызов соответствующего редактора.
Если нам необходимо иметь возможность разрешить редактирование параметров пользователям с другим типом прав (например, право на редактирование маршрутов), или перед вызовом редактора задать вопрос, или после редактирования параметров сохранить соответствующее сообщение, то необходимо использовать один из контроллеров действий пользователя.
О контроллерах см. "Контроллер действий пользователя".
Метка использует контроллер в режиме "проверить права - задать вопрос - действие (вызвать редактор параметров) - сохранить сообщение".
Метка предоставляет контроллеру следующие данные:

1. Тип сообщения.
2. Объект сообщения.
3. Текст сообщения.
4. Вопрос для подтверждения вызова панели редактирования параметров.

Есть два варианта формирования этих данных - простой и расширенный.
Простой вариант.
Контроллеру передаются только объект сообщения (указывается в свойстве ctrlInfo без использования символа ";") и, если произошло изменение параметра, текст сообщения.
Тип сообщения производит и вопрос остаются не определёнными (на "усмотрение" контроллера).
Расширенный вариант.
Если в свойстве ctrlInfo используется символ ";" хотя бы один раз, то используется данный вариант.
Данные задаются в следующем порядке: "тип;объект;текст;вопрос".
Любое из полей может быть не определено, соответственно будут не определены соответствующие данные.
Например, если мы хотим передать только вопрос, то значение свойства будет ";;;вопрос".
Внимание! Пробел является допустимым значением.
.