Поле из конфига
Поле из конфига показывает настройку, значение которой задано снаружи — файлом свойств или переменной окружения. Конфиг — эталон, интерфейс — зеркало: значение видно, но не правится, а рядом сказано, где его поменять.
Когда использовать#
- Настройка приходит из
autumn-properties.jsonили из переменной окружения, и правка в интерфейсе откатилась бы на перезапуске. - Администратору нужно увидеть действующее значение и понять, откуда оно взялось.
Не берите его для значения, которое правится в интерфейсе, — это поле формы. Если значение просто нельзя менять и источника у него нет, хватит заблокированного поля формы. Команду, которую надо выполнить, показывает блок команды.
В дереве холста метку, значение, подсказку и секретность пишут слова (см. Язык узлов). Источник — Деталька и Переменная — слов не имеет и задаётся структурой модели.
Узлом холста — словами
app.storage.rootAPP_STORAGE_ROOT=/var/lib/приложениеHTML = Кит.ПолеИзКонфига(Новый Структура("Деталька, Переменная",
"app.storage.root", "APP_STORAGE_ROOT"))
.Метка("Каталог данных").Значение("/var/lib/приложение").Рендер();Значение из детальки#
Компонент печатает заблокированное поле формы со значением, под ним — источник с замком (Деталька, имя детальки-источника), а ниже — строку для переменной окружения с кнопкой копирования (Переменная). Всё вместе обведено пунктирной рамкой: это не обычная часть формы.
Значение из детальки
app.storage.rootAPP_STORAGE_ROOT=/var/lib/приложениеHTML = Набор.ПолеИзКонфига().Отрисовать(
Новый Структура("Метка, Значение, Деталька, Переменная",
"Каталог данных", "/var/lib/приложение",
"app.storage.root", "APP_STORAGE_ROOT"));Поле заблокировано и не отправляется с формой: сервер не получит значение, которое всё равно не может принять. Подсказка печатается под полем, как у обычного поля формы.
С подсказкой — без переменной окружения
app.http.portHTML = Набор.ПолеИзКонфига().Отрисовать(
Новый Структура("Метка, Значение, Деталька, Подсказка",
"Порт", "8080", "app.http.port", "меняется в файле свойств, вступает в силу после перезапуска"));Секрет#
Секрет прячет значение: в поле его нет, вместо него плейсхолдер «значение скрыто», а в строке переменной стоит <значение>. Значения нет и в разметке страницы, поэтому оно не утечёт через «просмотр кода» или кэш.
Секрет
app.admin.passwordAPP_ADMIN_PASSWORD=<значение>HTML = Набор.ПолеИзКонфига().Отрисовать(
Новый Структура("Метка, Значение, Деталька, Переменная, Секрет",
"Пароль админа", "s3cret",
"app.admin.password", "APP_ADMIN_PASSWORD", Истина));Гайдлайны#
APP_API_KEY=<значение>Код
HTML = Набор.ПолеИзКонфига().Отрисовать(
Новый Структура("Метка, Значение, Переменная, Секрет",
"Ключ API", "sk-12345", "APP_API_KEY", Истина));APP_API_KEY=sk-12345Код
HTML = Набор.ПолеИзКонфига().Отрисовать(
Новый Структура("Метка, Значение, Переменная",
"Ключ API", "sk-12345", "APP_API_KEY"));app.storage.rootAPP_STORAGE_ROOT=/var/lib/приложениеКод
HTML = Набор.ПолеИзКонфига().Отрисовать(
Новый Структура("Метка, Значение, Деталька, Переменная",
"Каталог данных", "/var/lib/приложение",
"app.storage.root", "APP_STORAGE_ROOT"));Код
HTML = Набор.Поле().Отрисовать(Новый Структура("Метка, Значение, Заблокировано",
"Каталог данных", "/var/lib/приложение", Истина));Доступность#
- Значок замка у источника несёт подпись «значение задано конфигурацией»: скринридер читает, почему поле не правится.
- Поле заблокировано атрибутом
disabled: оно не берёт фокус и не отправляется. - Кнопка копирования переменной —
<button type="button">с видимой надписью «Копировать»; её оживляет скрипт страницы поdata-copy. Без скрипта строку можно выделить мышью.
Узлом холста#
Поле из конфига узлом дерева
app.storage.rootHTML = Кит.ПолеИзКонфига(Новый Структура("Деталька", "app.storage.root"))
.Метка("Каталог данных").Значение("/var/lib/приложение").Рендер();Модель#
Поля модели — из комментария в исходнике компонента. Структура — прежний вид модели: в дереве холста Метка, Значение, Подсказка и Секрет пишут слова Кит.ПолеИзКонфига, а источник остаётся в структуре.
Кит.ПолеИзКонфига()src/Классы/холст/Кит.os
Поле, значение которого задано конфигурацией: показывается, но не правится. Слова: Метка, Значение, Подсказка, Секрет. Параметры: Модель - Структура - модель компонента «Поле из конфига». Возвращаемое значение: ЭлементЭкрана
ПолеИзКонфига.Отрисовать()src/Классы/компоненты/ПолеИзКонфига.os
Отрисовывает заблокированное поле со ссылкой на источник и ENV-сниппетом.
Параметры:
Модель - Структура - Метка, Значение (действующее, экранируется), Деталька (имя
детальки-источника), Переменная (имя переменной окружения), Подсказка,
Секрет (значение не показывать).
Возвращаемое значение:
Строка - фрагмент <div class="from-config">.