Thème
Superviseur — Frontend / features/settings/views/admin/metrics/usePanelConfigForm / usePanelConfigForm
Fonction: usePanelConfigForm()
ts
function usePanelConfigForm(props, emit): object;Défini dans: features/settings/views/admin/metrics/usePanelConfigForm.ts:22
Logique du formulaire de configuration d'une centrale : état réactif, dérivations (profil sélectionné, adresses Modbus, validité), édition des zones/points et soumission. Extrait du composant PanelConfigForm.vue pour en isoler le comportement du gabarit.
Paramètres
| Paramètre | Type |
|---|---|
props | { initialData?: StationConfiguration; isEditing?: boolean; } |
props.initialData? | StationConfiguration |
props.isEditing? | boolean |
emit | (event, payload?) => void |
Retourne
| Nom | Type | Valeur par défaut | Description | Défini dans |
|---|---|---|---|---|
isDirty | ComputedRef<boolean> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:625 |
leaveGuard() | () => Promise<boolean> | - | Sort du formulaire seulement après avoir réglé le sort d'un travail en cours. Déclarer une centrale demande un long remplissage — identité, transport, zones, points : le perdre d'un clic dans le menu était le plus coûteux des oublis. La garde est publiée au store commun, que consulte le changement de section, et posée sur la route pour la navigation générale : deux chemins mènent hors de l'écran, tous deux doivent la traverser. | features/settings/views/admin/metrics/usePanelConfigForm.ts:626 |
form | object | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:627 |
form.id | string | '' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:45 |
form.name | string | '' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:46 |
form.label | string | '' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:47 |
form.description | string | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:48 |
form.connectionType | "Tcp" | "Rtu" | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:49 |
form.ipAddress | string | '192.168.10.0' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:50 |
form.port | number | 1502 | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:51 |
form.serialPortName | string | 'COM1' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:52 |
form.baudRate | number | 9600 | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:53 |
form.dataBits | number | 8 | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:54 |
form.parity | number | 0 | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:55 |
form.stopBits | number | 1 | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:56 |
form.slaveId | number | 1 | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:57 |
form.systemSerialNumber | string | '' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:58 |
form.modbusProfileId | string | '' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:59 |
form.zones | object[] | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:60 |
form.panelType | string | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:61 |
form.pollingIntervalMilliseconds | number | 1000 | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:62 |
form.color | string | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:64 |
form.modbusMapping | string | '{}' | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:65 |
form.rawConfiguration | string | undefined | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:66 |
activeTab | Ref<string, string> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:628 |
isTesting | Ref<boolean, boolean> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:629 |
availablePorts | Ref<string[], string[]> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:630 |
isInis | ComputedRef<boolean> | - | isInis dérive du targetSystem du profil sélectionné (donnée du backend), pas d'une correspondance de texte sur l'id/nom du profil — un profil personnalisé nommé différemment reste correctement identifié. Réservé aux quelques particularités réellement propres à INIS-E16 (vocabulaire « Ligne DI », import XML) ; tout le reste du formulaire est générique. | features/settings/views/admin/metrics/usePanelConfigForm.ts:631 |
isEditMode | ComputedRef<boolean> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:632 |
slaveIdRange | ComputedRef<{ min: number; max: number; }> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:633 |
isSlaveIdValid | ComputedRef<boolean> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:634 |
duplicateSerial | ComputedRef<boolean> | - | Numéro de série déjà porté par une autre centrale du site. Le serveur le refuse aussi, mais après la saisie complète du formulaire : le signaler au fil de la frappe évite de perdre un travail entier sur un identifiant déjà pris. | features/settings/views/admin/metrics/usePanelConfigForm.ts:635 |
configFile | Ref< | { } | null, | File | { } | null> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:636 |
isImporting | Ref<boolean, boolean> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:637 |
bulkZoneCount | Ref<number, number> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:638 |
bulkPointCount | Ref<number, number> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:639 |
firstInput | Ref<HTMLInputElement | null, HTMLInputElement | null> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:640 |
serialInput | Ref<HTMLInputElement | null, HTMLInputElement | null> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:641 |
invalidFields | Ref<Set<"name" | "systemSerialNumber"> & Omit<Set<"name" | "systemSerialNumber">, keyof Set<any>>, | Set<"name" | "systemSerialNumber"> | Set<"name" | "systemSerialNumber"> & Omit<Set<"name" | "systemSerialNumber">, keyof Set<any>>> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:642 |
profileCardPalette() | (index) => object | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:643 |
getZoneModbusAddress() | (index, isSystem) => number | null | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:644 |
getPointModbusAddress() | (pointIndex, isSystem) => number | null | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:645 |
isZoneIndexDuplicate() | (index, currentIdx) => boolean | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:646 |
isPointIndexDuplicate() | (zone, index, currentPtIdx) => boolean | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:647 |
handleConfigFileChange() | (event) => void | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:648 |
importConfig() | () => Promise<void> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:649 |
addZone() | () => void | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:650 |
removeZone() | (idx) => void | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:651 |
addPoint() | (zone) => void | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:652 |
removePoint() | (zone, idx) => void | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:653 |
addZones() | (count) => void | - | Ajoute count zones physiques d'un coup ; au-delà d'une, elles restent repliées pour rester lisible. | features/settings/views/admin/metrics/usePanelConfigForm.ts:654 |
addPoints() | (zone, count) => void | - | Ajoute count points d'un coup à une zone donnée. | features/settings/views/admin/metrics/usePanelConfigForm.ts:655 |
addPointsToAllZones() | (count) => void | - | Ajoute count points d'un coup à chaque zone physique existante. | features/settings/views/admin/metrics/usePanelConfigForm.ts:656 |
testConnection() | () => Promise<void> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:657 |
handleSubmit() | () => Promise<void> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:658 |
selectProfile() | (profileId) => void | - | Sélectionne un profil Modbus comme type de centrale et applique ses valeurs par défaut (transport, slave ID) — sauf en édition, où la configuration existante prime. Réconcilie ensuite les entités système avec le profil retenu. | features/settings/views/admin/metrics/usePanelConfigForm.ts:659 |
loadSerialPorts() | () => Promise<void> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:660 |
store | Store<"panel", Pick<{ configurations: Ref<object[], | StationConfiguration[] | object[]>; profiles: Ref<object[], | ModbusProfile[] | object[]>; liveStates: Ref<Record<string, FireStationSystem>, Record<string, FireStationSystem>>; panelStates: Ref<Record<string, PanelSnapshot>, Record<string, PanelSnapshot>>; selectedStationId: Ref<string | null, string | null>; selectedPanelId: ComputedRef<string | number | null>; currentConfig: ComputedRef< | { id?: string | number; name: string; systemSerialNumber?: string; label: string; description?: string; connectionType?: "Tcp" | "Rtu"; ipAddress?: string; port?: number; serialPortName?: string; baudRate?: number; dataBits?: number; parity?: number; stopBits?: number; pollingIntervalMilliseconds: number; slaveId: number; panelType: string; color: string; modbusMapping: string; modbusProfileId: string; zones: object[]; points?: object[]; rawConfiguration?: string; } | undefined>; panelState: ComputedRef< | FireStationSystem | null>; apiConnected: Ref<boolean, boolean>; hasEverConnected: Ref<boolean, boolean>; modbusConnected: Ref<boolean, boolean>; systemStatus: ComputedRef<{ text: string; color: string; }>; activeAlerts: ComputedRef<object[]>; allActiveAlerts: ComputedRef<Alert[]>; groupedIncidents: ComputedRef<StationGroup[]>; activeIncidentCount: ComputedRef<number>; activeAlertsCount: ComputedRef<number>; allActiveAlertsCount: ComputedRef<number>; isGlobalEvacuationActive: ComputedRef<boolean>; connectionStatus: ComputedRef<{ api: { connected: boolean; text: string; color: string; }; modbus: { connected: boolean | undefined; text: string; color: string; }; }>; systemIssues: ComputedRef<SystemIssue[]>; lastDataChange: Ref<number, number>; isFleetHealthy: ComputedRef<boolean>; pendingCommands: Ref<Record<string, boolean>, Record<string, boolean>>; isCommandPending: (serial) => boolean; markCommandPending: (serial, delayMs) => void; statusSince: (serial, kind, index) => number | null; setPanelState: (newState) => void; switchPanel: (id) => void; addPanel: (config) => Promise<void>; removePanel: (dbId) => Promise<void>; setPanelSupervision: (panelId, serial, enabled) => Promise<PanelDto>; setAllPanelsSupervision: (enabled) => Promise<void>; loadConfigurations: () => Promise<void>; loadInitialData: () => Promise<void>; updatePanel: (config) => Promise<void>; updatePanelState: (snapshot) => void; forgetPanel: (panelId, systemSerialNumber?) => void; isPanelConnected: (id) => boolean; isPanelInAlarm: (id) => boolean; setConnectionStatus: (isConnected) => void; setModbusConnected: (s) => boolean; initialize: () => Promise<void>; initialized: Ref<boolean, boolean>; isInitializing: Ref<boolean, boolean>; toggleMute: () => void; isAudioMuted: ComputedRef<boolean>; hasActiveAlert: ComputedRef<boolean>; acknowledgeAlert: (stationId, type, index, flag?) => Promise<void>; rearmStation: (stationId) => Promise<void>; }, | "profiles" | "modbusConnected" | "configurations" | "liveStates" | "panelStates" | "selectedStationId" | "apiConnected" | "hasEverConnected" | "lastDataChange" | "pendingCommands" | "initialized" | "isInitializing">, Pick<{ configurations: Ref<object[], | StationConfiguration[] | object[]>; profiles: Ref<object[], | ModbusProfile[] | object[]>; liveStates: Ref<Record<string, FireStationSystem>, Record<string, FireStationSystem>>; panelStates: Ref<Record<string, PanelSnapshot>, Record<string, PanelSnapshot>>; selectedStationId: Ref<string | null, string | null>; selectedPanelId: ComputedRef<string | number | null>; currentConfig: ComputedRef< | { id?: string | number; name: string; systemSerialNumber?: string; label: string; description?: string; connectionType?: "Tcp" | "Rtu"; ipAddress?: string; port?: number; serialPortName?: string; baudRate?: number; dataBits?: number; parity?: number; stopBits?: number; pollingIntervalMilliseconds: number; slaveId: number; panelType: string; color: string; modbusMapping: string; modbusProfileId: string; zones: object[]; points?: object[]; rawConfiguration?: string; } | undefined>; panelState: ComputedRef< | FireStationSystem | null>; apiConnected: Ref<boolean, boolean>; hasEverConnected: Ref<boolean, boolean>; modbusConnected: Ref<boolean, boolean>; systemStatus: ComputedRef<{ text: string; color: string; }>; activeAlerts: ComputedRef<object[]>; allActiveAlerts: ComputedRef<Alert[]>; groupedIncidents: ComputedRef<StationGroup[]>; activeIncidentCount: ComputedRef<number>; activeAlertsCount: ComputedRef<number>; allActiveAlertsCount: ComputedRef<number>; isGlobalEvacuationActive: ComputedRef<boolean>; connectionStatus: ComputedRef<{ api: { connected: boolean; text: string; color: string; }; modbus: { connected: boolean | undefined; text: string; color: string; }; }>; systemIssues: ComputedRef<SystemIssue[]>; lastDataChange: Ref<number, number>; isFleetHealthy: ComputedRef<boolean>; pendingCommands: Ref<Record<string, boolean>, Record<string, boolean>>; isCommandPending: (serial) => boolean; markCommandPending: (serial, delayMs) => void; statusSince: (serial, kind, index) => number | null; setPanelState: (newState) => void; switchPanel: (id) => void; addPanel: (config) => Promise<void>; removePanel: (dbId) => Promise<void>; setPanelSupervision: (panelId, serial, enabled) => Promise<PanelDto>; setAllPanelsSupervision: (enabled) => Promise<void>; loadConfigurations: () => Promise<void>; loadInitialData: () => Promise<void>; updatePanel: (config) => Promise<void>; updatePanelState: (snapshot) => void; forgetPanel: (panelId, systemSerialNumber?) => void; isPanelConnected: (id) => boolean; isPanelInAlarm: (id) => boolean; setConnectionStatus: (isConnected) => void; setModbusConnected: (s) => boolean; initialize: () => Promise<void>; initialized: Ref<boolean, boolean>; isInitializing: Ref<boolean, boolean>; toggleMute: () => void; isAudioMuted: ComputedRef<boolean>; hasActiveAlert: ComputedRef<boolean>; acknowledgeAlert: (stationId, type, index, flag?) => Promise<void>; rearmStation: (stationId) => Promise<void>; }, | "systemStatus" | "hasActiveAlert" | "selectedPanelId" | "currentConfig" | "panelState" | "activeAlerts" | "allActiveAlerts" | "groupedIncidents" | "activeIncidentCount" | "activeAlertsCount" | "allActiveAlertsCount" | "isGlobalEvacuationActive" | "connectionStatus" | "systemIssues" | "isFleetHealthy" | "isAudioMuted">, Pick<{ configurations: Ref<object[], | StationConfiguration[] | object[]>; profiles: Ref<object[], | ModbusProfile[] | object[]>; liveStates: Ref<Record<string, FireStationSystem>, Record<string, FireStationSystem>>; panelStates: Ref<Record<string, PanelSnapshot>, Record<string, PanelSnapshot>>; selectedStationId: Ref<string | null, string | null>; selectedPanelId: ComputedRef<string | number | null>; currentConfig: ComputedRef< | { id?: string | number; name: string; systemSerialNumber?: string; label: string; description?: string; connectionType?: "Tcp" | "Rtu"; ipAddress?: string; port?: number; serialPortName?: string; baudRate?: number; dataBits?: number; parity?: number; stopBits?: number; pollingIntervalMilliseconds: number; slaveId: number; panelType: string; color: string; modbusMapping: string; modbusProfileId: string; zones: object[]; points?: object[]; rawConfiguration?: string; } | undefined>; panelState: ComputedRef< | FireStationSystem | null>; apiConnected: Ref<boolean, boolean>; hasEverConnected: Ref<boolean, boolean>; modbusConnected: Ref<boolean, boolean>; systemStatus: ComputedRef<{ text: string; color: string; }>; activeAlerts: ComputedRef<object[]>; allActiveAlerts: ComputedRef<Alert[]>; groupedIncidents: ComputedRef<StationGroup[]>; activeIncidentCount: ComputedRef<number>; activeAlertsCount: ComputedRef<number>; allActiveAlertsCount: ComputedRef<number>; isGlobalEvacuationActive: ComputedRef<boolean>; connectionStatus: ComputedRef<{ api: { connected: boolean; text: string; color: string; }; modbus: { connected: boolean | undefined; text: string; color: string; }; }>; systemIssues: ComputedRef<SystemIssue[]>; lastDataChange: Ref<number, number>; isFleetHealthy: ComputedRef<boolean>; pendingCommands: Ref<Record<string, boolean>, Record<string, boolean>>; isCommandPending: (serial) => boolean; markCommandPending: (serial, delayMs) => void; statusSince: (serial, kind, index) => number | null; setPanelState: (newState) => void; switchPanel: (id) => void; addPanel: (config) => Promise<void>; removePanel: (dbId) => Promise<void>; setPanelSupervision: (panelId, serial, enabled) => Promise<PanelDto>; setAllPanelsSupervision: (enabled) => Promise<void>; loadConfigurations: () => Promise<void>; loadInitialData: () => Promise<void>; updatePanel: (config) => Promise<void>; updatePanelState: (snapshot) => void; forgetPanel: (panelId, systemSerialNumber?) => void; isPanelConnected: (id) => boolean; isPanelInAlarm: (id) => boolean; setConnectionStatus: (isConnected) => void; setModbusConnected: (s) => boolean; initialize: () => Promise<void>; initialized: Ref<boolean, boolean>; isInitializing: Ref<boolean, boolean>; toggleMute: () => void; isAudioMuted: ComputedRef<boolean>; hasActiveAlert: ComputedRef<boolean>; acknowledgeAlert: (stationId, type, index, flag?) => Promise<void>; rearmStation: (stationId) => Promise<void>; }, | "removePanel" | "addPanel" | "isCommandPending" | "markCommandPending" | "statusSince" | "setPanelState" | "switchPanel" | "setPanelSupervision" | "setAllPanelsSupervision" | "loadConfigurations" | "loadInitialData" | "updatePanel" | "updatePanelState" | "forgetPanel" | "isPanelConnected" | "isPanelInAlarm" | "setConnectionStatus" | "setModbusConnected" | "initialize" | "toggleMute" | "acknowledgeAlert" | "rearmStation">> | - | - | features/settings/views/admin/metrics/usePanelConfigForm.ts:661 |