Добрый день
Имеющийся способ у контрола преобразовать число в некое человеческое название требует перечисления всех вариантов, а не перечисленное значение выводится как есть.
"enum": [
0,
1,
2
],
"enum_titles": [
"Адын",
"Дыва",
"Тры"
]
Это самый ходовой случай, он решает самую частую задачу без привлечения скриптов.
У меня менее распространённый случай который, пока, решу скриптом (ну или enum на 360 элементов), но хотелось бы “из коробки”.
Моя задача - направление ветра в градусах преобразовать в человеческое “северный”, “юго-западный” и так далее. Возможно, и в других предметных областях найдётся похожее.
Предлагаю enum-range - описываются диапазоны значений.
И новый не обязательный параметр enum-outer - для отображения величины меньше минимального в перечислении у enum-range и для любой не перечисленной величины для обычного enum.
Искуственный пример - мапинг величины от 0 до 99:
"enum-range": [
0,
1,
20,
40,
60,
80,
99,
100
],
"enum_outer": "Ошибка",
"enum_titles": [
"Нет (0)",
"Мало (1-19)",
"Немножко (20-39)",
"Нормально (40-59)",
"Много (60-79)",
"До фига (80-98)",
"Мы все умрём (99)",
"Ошибка"
]
Принцип работы:
- в перечислении чисел enum-range ищётся максимальное которое меньше или равно значению и выводится его enum_titles
- если значение меньше минимально - используется enum-outer (при наличии) иначе выводится как есть.
В примере:
- для 25 это будет 20 - “Немножко”
- для 60 - 60 - “Много”
- для -40 - “Ошибка” из enum-outer
- для 100500 - “Ошибка” от затычки 100
А для направления ветра примерно вот так:
"enum-range": [
0,
22,
67,
112,
157,
202,
247,
292,
337,
360
],
"enum_outer": "Ошибка",
"enum_titles": [
"Северный",
"Северо-восточный",
"Восточный",
"Юго-восточный",
"Южный",
"Юго-западный",
"Западный",
"Северо-западный",
"Cеверный",
"Ошибка",
]