Files
BayIQ-UI/src/types/types.ts

290 lines
6.2 KiB
TypeScript
Raw Normal View History

import type { CameraID } from "../app/config/cameraConfig";
2025-11-20 19:09:43 +00:00
export type WebSocketContextValue = {
connected: boolean;
send?: (msg: unknown) => void;
latestStats: { activeUsers: number; alerts: number } | null;
};
export type InfoBarData = {
"system-clock-utc": string;
"system-clock-local": string;
"memory-cpu-status": string;
"thread-count": string;
};
export type CameraZoomData = {
magnificationLevel: string;
};
export type StatusIndicator = "neutral-quaternary" | "dark" | "info" | "success" | "warning" | "danger";
export type Region = {
name: string;
brushColour: string;
};
2025-11-24 16:17:27 +00:00
export type SystemHealthStatus = {
id: string;
tags: string[];
groupID: string;
};
export type StatusGroups = {
channelA: SystemHealthStatus[];
channelB: SystemHealthStatus[];
channelC: SystemHealthStatus[];
default: SystemHealthStatus[];
2025-11-24 16:17:27 +00:00
};
export type BearerTypeFields = {
format: string;
enabled: boolean;
backOfficeURL: string;
username: string;
password: string;
connectTimeoutSeconds: number;
readTimeoutSeconds: number;
overviewQuality: string;
cropSizeFactor: string;
};
export type OptionalConstants = {
FFID?: string;
SCID?: string;
timestampSource?: string;
GPSFormat?: string;
};
export type OptionalLaneIDs = {
laneId?: string;
LID1?: string;
LID2?: string;
LID3?: string;
};
export type CustomField = {
label: string;
value: string;
};
export type CustomFields = {
customFields?: CustomField[];
};
export type InitialValuesFormErrors = {
backOfficeURL?: string;
username?: string;
password?: string;
connectTimeoutSeconds?: string;
readTimeoutSeconds?: string;
};
export type OSDConfigFields = {
includeVRM: boolean;
includeMotion: boolean;
includeTimeStamp: boolean;
includeCameraName: boolean;
overlayPosition: "Top" | "Bottom" | "Left" | "Right";
OSDTimestampFormat: "UTC" | "LOCAL";
};
export type PayloadConfigFields = {
includeMac: boolean;
includeSaFID: boolean;
includeCameraName: boolean;
includeCharHeight: boolean;
includeConfidence: boolean;
includeCorrectSpacing: boolean;
includeDecodeID: boolean;
includeDirection: boolean;
includeFrameHeight: boolean;
includeFrameID: boolean;
includeFrameTimeRef: boolean;
includeFrameWidth: boolean;
includeHorizSlew: boolean;
includeMotion: boolean;
inclduePlate: boolean;
includeNightModeAction: boolean;
includeOverview: boolean;
includePlateSecondary: boolean;
includePlateTrack: boolean;
includePlateTrackSecondary: boolean;
includePreferredCountry: boolean;
includeRawReads: boolean;
includeRawREADSSecondary: boolean;
includeRef: boolean;
includeSeenCount: boolean;
includeRepeatedPlate: boolean;
includeSerialCount: boolean;
includeTimeStamp: boolean;
includeTraceCount: boolean;
includeTrack: boolean;
includeTrackSecondary: boolean;
includeVertSlew: boolean;
includeVRM: boolean;
includeVRMSecondary: boolean;
includeHotListMatches: boolean;
};
export type FormTypes = BearerTypeFields &
OptionalConstants &
OptionalLaneIDs &
CustomFields &
OSDConfigFields &
PayloadConfigFields;
type FieldProperty = {
datatype: string;
value: string;
};
export type OutputDataResponse = {
id: string;
configHash: string;
} & Record<string, FieldProperty>;
export type PaintedCell = {
colour: string;
region: Region;
};
export type DispatcherConfig = {
format: string;
enabled: boolean;
};
export type OptionalBOF2Constants = {
format?: string;
FFID?: string;
SCID?: string;
timestampSource?: string;
GPSFormat?: string;
};
export type OptionalUTMCConstants = {
format?: string;
SCID?: string;
timestampSource?: string;
GPSFormat?: string;
};
export type OptionalBOF2LaneIDs = {
laneId?: string;
LID1?: string;
LID2?: string;
LID3?: string;
};
export type CameraFeedState = {
cameraFeedID: CameraID;
paintedCells: Record<CameraID, Map<string, PaintedCell>>;
regionsByCamera: Record<CameraID, Region[]>;
selectedRegionIndex: number;
modeByCamera: Record<CameraID, string>;
tabIndex?: number;
zoomLevel: Record<CameraID, number>;
};
export type CameraFeedAction =
| {
type: "SET_CAMERA_FEED";
payload: CameraID;
}
| {
type: "CHANGE_MODE";
payload: { cameraFeedID: CameraID; mode: string };
}
| { type: "SET_SELECTED_REGION_INDEX"; payload: number }
| {
type: "SET_SELECTED_REGION_COLOUR";
payload: { cameraFeedID: CameraID; regionName: string; newColour: string };
}
| {
type: "ADD_NEW_REGION";
payload: { cameraFeedID: CameraID; regionName: string; brushColour: string };
}
| {
type: "REMOVE_REGION";
payload: { cameraFeedID: CameraID; regionName: string };
}
| {
type: "RESET_PAINTED_CELLS";
payload: { cameraFeedID: CameraID; paintedCells: Map<string, PaintedCell> };
}
| {
type: "SET_CAMERA_FEED_DATA";
cameraState: CameraFeedState;
}
| {
type: "RESET_CAMERA_FEED";
}
| {
type: "SET_ZOOM_LEVEL";
payload: { cameraFeedID: CameraID; zoomLevel: number };
};
export type DecodeReading = {
id: number;
vrm: string;
laneID: number;
seenCount: number;
firstSeenTime?: number;
lastSeenTime?: number;
duplicate?: true;
firstSeenTimeHumane: string;
lastSeenTimeHumane: string;
plate?: string;
};
export type ColourData = {
id: string | number;
cells: number[][];
};
export type ColourDetectionPayload = {
cameraFeedID: CameraID;
regions: ColourData[];
};
export type SystemSettings = {
deviceName: string;
localTimeZone: string;
timeSource: string;
SNTPServer: string;
SNTPIntervalMinutes: number;
2025-12-04 19:14:14 +00:00
};
export type NetworkConfig = {
ipAddress: string;
subnetMask: string;
gateway: string;
primaryServer?: string;
secondaryServer?: string;
};
export type CustomFieldConfig = {
label: string;
value: string;
};
export type BlackBoardOptions = {
operation?: string;
path?: string;
value?: object | string | number | (string | number)[] | null;
};
export type CameraZoomConfig = { cameraFeedID: string; zoomLevel: number };
export type versionInfo = {
version: string;
revision: string;
buildtime: string;
appname: string;
MAC: string;
timeStamp: number;
UUID: string;
proquint: string;
"Serial No.": string;
"Model No.": string;
};