3.4.2. Маска ввода в редакторе#
3.4.2.1. Общая информация#
Сервер предоставляет возможность использовать маску ввода в редакторах.
Маска ввода реализована при помощи сторонней Javascript библиотеки Imask.
Warning
Если функциональность масок ввода перестанет соответствовать требованиям разработки, рекомендуется выполнить следующие шаги:
Изучить возможности библиотеки Imask на предмет наличия необходимого функционала.
Если требуемые возможности поддерживаются, запросить у системных разработчиков их интеграцию.
- Если необходимый функционал отсутствует, рассмотреть альтернативные варианты:
Пересмотр и доработка прикладного кода.
Замена библиотеки на более подходящую (совместно с системным отделом).
Разработка собственного решения (совместно с системным отделом).
3.4.2.2. Виды масок ввода#
Ниже представлена таблица, в которой указаны виды масок ввода, которые можно использовать в редакторах.
Перейдя в метаданные Postgres вы можете детально изучить возможности каждой маски ввода.
Вид маски ввода |
Элемент в метаданных Postgres |
---|---|
Маска ввода, которая состоит из паттерна |
|
Маска ввода на основе регулярного выражения |
|
Маска ввода для работы с числовыми значениями |
|
Динамическая маска ввода |
|
3.4.2.3. Способы установки маски ввода в редактор#
Маски ввода устанавливаются только внутри прикладных приложений.
Маски ввода устанавливаются при помощи элемента editMask
в следующих редакторах:
Ниже приведены основные способы, с помощью которых можно установить маску ввода в редактор.
3.4.2.3.1. Через разметку выборки#
Подход, при котором маска ввода устанавливается в *.avm.xml
файлах, является основным.
Ниже представлен пример установки маски ввода для редактора в строке
.
1<attr name="edit_mask_1" caption="EditMask#1">
2 <editor>
3 <edit>
4 <editMask> <!--Элемент, с помощью которого производится установка маски ввода в редактор-->
5 <pattern>
6 <items>
7 <definition name="0"/>
8 <definition name="0"/>
9 <definition name="0"/>
10 </items>
11 </pattern>
12 </editMask>
13 </edit>
14 </editor>
15</attr>
3.4.2.3.2. Через код интерактивной бизнес логики#
Подход, при котором маска ввода устанавливается в *Avi.scala
файлах, следует использовать в тех случаях, когда необходимо программно установить маску ввода в редактор.
Это может потребоваться, когда в зависимости от определённых условий в прикладном коде необходимо изменять маску ввода.
Ниже представлен пример установки маски ввода для редактора, который указан в примере для установки маски ввода через разметку выборки.
1attrs("edit_mask_1").editMask =
2"""
3 |{
4 | "options": {
5 | "type": "PATTERN",
6 | "items": [
7 | {
8 | "type": "DEFINITION",
9 | "name": "0"
10 | },
11 | {
12 | "type": "DEFINITION",
13 | "name": "0"
14 | },
15 | {
16 | "type": "DEFINITION",
17 | "name": "0"
18 | }
19 | ]
20 | }
21 |}
22 |""".stripMargin
3.4.2.4. Зарезервированные определения#
Ниже представлена таблица, в которой указаны зарезервированные определения, которые можно использовать в View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Definition.key
.
Ключ зарезервированного определения |
Описание |
Регулярное выражение |
---|---|---|
|
Любая буква |
|
|
Любая буква или цифра |
|
|
Любой символ |
|
|
Любая цифра |
|
|
Любая цифра, символ |
|
3.4.2.5. Эквиваленты элементов маски ввода в JSON формате#
В данном разделе описаны JSON-эквиваленты элементов маски ввода. Это поможет понять, как настраивается маска ввода в коде интерактивной бизнес-логики.
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
|
Да |
|
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern |
Нет |
{
"saveWithLiteralsEnabled": true,
"options": {} // См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
Нет |
|
|
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items |
Нет |
|
|
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Definitions |
Да |
|
|
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Blocks |
Да |
|
|
|
|
Да |
|
Допустимые значения смотри в |
|
Да |
|
|
|
Да |
|
|
|
Да |
{
"key": "PATTERN",
"items": [], //См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items
"definitions": {}, //См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items
"blocks": {}, //См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items
"placeholderChar": "*",
"textTransform": "DEFAULT",
"eagerEnabled": false,
"lazyEnabled": false
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items
:
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Block
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Definition
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Literal
[
// См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Block
// См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Definition
// См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Literal
]
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Block
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
Нет |
|
|
|
|
Нет |
|
|
|
Да |
{
"type": "BLOCK",
"key": "test_block_1",
"optionalEnabled": false
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Definition
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
Нет |
|
|
|
|
Нет |
|
|
|
Да |
{
"type": "DEFINITION",
"key": "a",
"optionalEnabled": false
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Items.Literal
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
Нет |
|
|
|
|
Нет |
{
"type": "LITERAL",
"value": "-"
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Definitions
:
Ключ |
Значение |
Может быть не указано или указано как |
---|---|---|
Ключ определения (см. |
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.RegExp |
Да |
{
"a": {}, // См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.RegExp
"b": {}, // См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.RegExp
"c": {}, // См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.RegExp
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern.Blocks
:
Ключ |
Значение |
Может быть не указано или указано как |
---|---|---|
Ключ блока (см. |
См. JSON-эквиваленты следующих элементов: View.Representation.Attributes.Attribute.Editor.EditMask.Pattern, View.Representation.Attributes.Attribute.Editor.EditMask.Number, View.Representation.Attributes.Attribute.Editor.EditMask.Regular, View.Representation.Attributes.Attribute.Editor.EditMask.Dynamic |
Да |
{
"a": {}, // См. JSON-эквиваленты следующих элементов: View.Representation.Attributes.Attribute.Editor.EditMask.Pattern, View.Representation.Attributes.Attribute.Editor.EditMask.Number, View.Representation.Attributes.Attribute.Editor.EditMask.Regular, View.Representation.Attributes.Attribute.Editor.EditMask.Dynamic
"block_1": {}, // См. JSON-эквиваленты следующих элементов: View.Representation.Attributes.Attribute.Editor.EditMask.Pattern, View.Representation.Attributes.Attribute.Editor.EditMask.Number, View.Representation.Attributes.Attribute.Editor.EditMask.Regular, View.Representation.Attributes.Attribute.Editor.EditMask.Dynamic
"test_block_b": {} // См. JSON-эквиваленты следующих элементов: View.Representation.Attributes.Attribute.Editor.EditMask.Pattern, View.Representation.Attributes.Attribute.Editor.EditMask.Number, View.Representation.Attributes.Attribute.Editor.EditMask.Regular, View.Representation.Attributes.Attribute.Editor.EditMask.Dynamic
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Regular
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
Нет |
|
|
См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.RegExp |
Нет |
|
|
Допустимые значения смотри в |
|
Да |
{
"type": "REGULAR",
"value": {}, // См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.RegExp
"textTransform": "DEFAULT"
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.RegExp
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
|
Нет |
|
|
|
Да |
{
"value": "^[0-9]$",
"flags": "g"
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Number
:
Ключ |
Значение |
Метаданные Postgres |
Может быть не указано или указано как |
---|---|---|---|
|
|
Нет |
|
|
|
|
Да |
|
|
|
Да |
|
|
|
Да |
|
|
|
Да |
{
"type": "NUMBER",
"min": 0,
"max": 0,
"scale": 0,
"thousandsSeparatorEnabled": false,
}
—
JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Dynamic
:
Ключ |
Значение |
Может быть не указано или указано как |
---|---|---|
|
|
Нет |
|
|
Нет |
{
"key": "DYNAMIC",
"optionsList": [
// См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Pattern
// См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Number
// См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Regular
// См. JSON-эквивалент View.Representation.Attributes.Attribute.Editor.EditMask.Dynamic
]
}
3.4.2.5.1. Примеры масок ввода в JSON формате#
Чтобы лучше разобраться в структуре масок ввода в формате JSON, ниже приведены несколько примеров таких масок. Для удобства указаны все опциональные свойства.
Номер телефона, который начинается с “+7” или “8”
{
"options": {
"eagerEnabled": false,
"blocks": {
"a": {
"optionsList": [
{
"eagerEnabled": false,
"blocks": {},
"placeholderChar": "*",
"type": "pattern",
"items": [
{
"type": "literal",
"value": "+"
},
{
"optionalEnabled": false,
"name": "a",
"type": "definition"
}
],
"definitions": {
"a": {
"flags": "",
"value": "^7$"
}
},
"lazyEnabled": false,
"textTransform": "default"
},
{
"eagerEnabled": false,
"blocks": {},
"placeholderChar": "*",
"type": "pattern",
"items": [
{
"optionalEnabled": false,
"name": "a",
"type": "definition"
}
],
"definitions": {
"a": {
"flags": "",
"value": "^8$"
}
},
"lazyEnabled": false,
"textTransform": "default"
}
],
"type": "dynamic"
}
},
"placeholderChar": "*",
"type": "pattern",
"items": [
{
"optionalEnabled": false,
"name": "a",
"type": "block"
},
{
"type": "literal",
"value": " "
},
{
"type": "literal",
"value": "("
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"type": "literal",
"value": ")"
},
{
"type": "literal",
"value": " "
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"type": "literal",
"value": "-"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"type": "literal",
"value": "-"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
},
{
"optionalEnabled": false,
"name": "0",
"type": "definition"
}
],
"definitions": {},
"lazyEnabled": false,
"textTransform": "default"
},
"saveWithLiteralsEnabled": false
}
IPv4-адрес
{
"options": {
"eagerEnabled": false,
"blocks": {
"a": {
"min": 0,
"max": 255,
"scale": 0,
"type": "number",
"thousandsSeparatorEnabled": false
}
},
"placeholderChar": "*",
"type": "pattern",
"items": [
{
"optionalEnabled": false,
"name": "a",
"type": "block"
},
{
"type": "literal",
"value": "."
},
{
"optionalEnabled": false,
"name": "a",
"type": "block"
},
{
"type": "literal",
"value": "."
},
{
"optionalEnabled": false,
"name": "a",
"type": "block"
},
{
"type": "literal",
"value": "."
},
{
"optionalEnabled": false,
"name": "a",
"type": "block"
}
],
"definitions": {},
"lazyEnabled": false,
"textTransform": "default"
},
"saveWithLiteralsEnabled": false
}
Любое кол-во цифр, либо ничего
{
"options": {
"type": "regular",
"value": {
"flags": "",
"value": "^[0-9]{0,}$"
},
"textTransform": "default"
},
"saveWithLiteralsEnabled": true
}