Appearance
Mode object
Объект режимов хранит переключаемый список состояний States с индексами; Value — индекс активного состояния.
Настройки
ts
export const ModeObjectSettingsSchema = z.object({
settings: z.object({
/** Индекс активного состояния (index из States). */
Value: z.number(),
/** Сохранять пользовательские настройки (0/1). */
SaveUserSettings: z.union([z.literal(0), z.literal(1)]),
/** Список состояний режима (сортируется по index при нормализации в конструкторе). */
States: z.array(ZodModeObjectState),
}),
});Логика и команды
Команда «установить значение» (CMD_CHANGE_VALUE): действие связано со состоянием из списка в настройках mode-object по id; удаление состояния удаляет и ссылающиеся на него действия (deleteStateReferences). Специализированный адаптер — Additional data команд.
★ — значение по умолчанию (чем предзаполнена форма / что выбрано при создании).
События — когда объект владелец реакции
- изменение (
MSG_STATUS_CHANGED) ★
Действия — когда объект выбран целью действия
установить значение (CMD_CHANGE_VALUE) ★
- изменить состояние на (
stateId) — список:- «Состояние 1» ★
- «Состояние 2»
увеличить значение (CMD_INC_VALUE)
- увеличить на значение (
value) — число; ★ 1; минимум 1, максимум 2
уменьшить значение (CMD_DEC_VALUE)
- уменьшить на значение (
value) — число; ★ 1; минимум 1, максимум 2
переключить (CMD_SWITCH)
- полей нет: команда без параметров
обновить (CMD_UPDATE)
- полей нет: команда без параметров
Условия — когда объект связан в кейсе реакции
- значение (
Value) ★- операторы:
- «равно» (
eq) ★ - «не равно» (
neq) - «больше» (
more) - «меньше» (
less)
- «равно» (
- значение — число: ★ 0
- операторы:
- состояние (
State)- операторы:
- «находится в состоянии» (
eq) ★ - «не находится в состоянии» (
neq)
- «находится в состоянии» (
- значение — список:
- «Состояние 1» ★
- «Состояние 2»
- операторы:
Ссылочная модель состояний
Ссылочная модель состояний: id — стабильный идентификатор (существующая строка или новый uuid), index — целочисленный, 1-based и уникальный: кандидат нормализуется как max(1, trunc), коллизии сдвигаются вверх. Конструктор (getSettings) прогоняет States через нормализацию и сортирует по index; Value, не попадающий ни в один index, сбрасывается в 0.
Как адаптер переводит stateId в wire-формат индекса — см. специализированные адаптеры.
Драйвер-линки
★ — поле по умолчанию в новой связи.
Поля объекта для связи с драйвером
| Поле | Чт. | Зап. |
|---|---|---|
| значение ★ | ✓ | ✓ |
| обновить (служебный канал) | ✓ | — |
| авария (служебный канал) | ✓ | — |
Связи только на чтение у драйверов: SNMP, PING.
Хранение
Сохраняется в таблице project_objects через RepositoryObject (Dexie).