Skip to content

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).

Mentioned In