2025-12-19 16:04:06 +00:00
|
|
|
export type SightingType = {
|
|
|
|
|
ref: number;
|
|
|
|
|
SaFID: string;
|
|
|
|
|
overviewUrl: string;
|
|
|
|
|
plateUrlInfrared: string;
|
|
|
|
|
plateUrlColour: string;
|
|
|
|
|
vrm: string;
|
|
|
|
|
vrmSecondary: string;
|
|
|
|
|
countryCode: string;
|
|
|
|
|
timeStamp: string;
|
|
|
|
|
detailsUrl: string;
|
|
|
|
|
overviewPlateRect?: [number, number, number, number];
|
|
|
|
|
plateTrack?: [number, number, number, number][];
|
|
|
|
|
make: string;
|
|
|
|
|
model: string;
|
|
|
|
|
color: string;
|
|
|
|
|
category: string;
|
|
|
|
|
charHeight: string;
|
|
|
|
|
seenCount: string;
|
|
|
|
|
timeStampMillis: number;
|
|
|
|
|
motion: string;
|
|
|
|
|
debug: string;
|
|
|
|
|
srcCam: number;
|
|
|
|
|
locationName: string;
|
|
|
|
|
laneID: string;
|
|
|
|
|
plateSize: string;
|
|
|
|
|
overviewSize: string;
|
|
|
|
|
radarSpeed: string;
|
|
|
|
|
trackSpeed: string;
|
|
|
|
|
metadata?: Metadata;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type Metadata = {
|
|
|
|
|
npedJSON: NpedJSON;
|
|
|
|
|
"hotlist-matches": HotlistMatches;
|
|
|
|
|
hotlistMatches: HotlistMatches;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type HotlistMatches = {
|
|
|
|
|
Hotlist0: boolean;
|
|
|
|
|
Hotlist1: boolean;
|
|
|
|
|
Hotlist2: boolean;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type NpedJSON = {
|
|
|
|
|
status_code: number;
|
|
|
|
|
reason_phrase: string;
|
|
|
|
|
"NPED CATEGORY": "A" | "B" | "C" | "D";
|
|
|
|
|
"MOT STATUS": boolean;
|
|
|
|
|
"TAX STATUS": boolean;
|
|
|
|
|
vrm: string;
|
|
|
|
|
"INSURANCE STATUS": string;
|
|
|
|
|
};
|
2025-12-22 16:10:34 +00:00
|
|
|
|
2026-01-09 16:16:28 +00:00
|
|
|
export type Region = {
|
|
|
|
|
name: string;
|
|
|
|
|
brushColour: string;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type PaintedCell = {
|
|
|
|
|
colour: string;
|
|
|
|
|
region: Region;
|
|
|
|
|
};
|
|
|
|
|
|
2025-12-22 16:10:34 +00:00
|
|
|
export type CameraSettings = {
|
2026-01-09 16:16:28 +00:00
|
|
|
cameraMode: number;
|
2025-12-22 16:10:34 +00:00
|
|
|
mode: number;
|
2025-12-23 10:37:02 +00:00
|
|
|
imageSize: { width: number; height: number };
|
2026-01-13 14:46:10 +00:00
|
|
|
cameraControls: {
|
2026-01-14 12:42:11 +00:00
|
|
|
cameraControlMode: "auto" | "manual" | "shutter priority";
|
2026-01-13 14:46:10 +00:00
|
|
|
auto: {
|
|
|
|
|
minShutter: string;
|
|
|
|
|
maxShutter: string;
|
|
|
|
|
maxGain: string;
|
|
|
|
|
exposureCompensation: string;
|
|
|
|
|
};
|
|
|
|
|
manual: {
|
|
|
|
|
fixShutter: string;
|
|
|
|
|
fixGain: string;
|
|
|
|
|
fixIris: string;
|
|
|
|
|
};
|
2026-01-14 12:42:11 +00:00
|
|
|
shutterPriority: {
|
|
|
|
|
fixShutter: string;
|
|
|
|
|
maxGain: string;
|
|
|
|
|
exposureCompensation: string;
|
|
|
|
|
};
|
2026-01-13 14:46:10 +00:00
|
|
|
};
|
2026-01-09 10:07:28 +00:00
|
|
|
regionPainter: {
|
2026-01-14 12:42:11 +00:00
|
|
|
brushSize: number;
|
|
|
|
|
paintMode: "painter" | "eraser";
|
2026-01-09 16:16:28 +00:00
|
|
|
paintedCells: Map<string, PaintedCell>;
|
|
|
|
|
regions: Region[];
|
|
|
|
|
selectedRegionIndex: number;
|
2026-01-09 10:07:28 +00:00
|
|
|
};
|
2025-12-22 16:10:34 +00:00
|
|
|
};
|
2025-12-23 10:37:02 +00:00
|
|
|
export type CameraSettingsAction =
|
|
|
|
|
| {
|
|
|
|
|
type: "SET_MODE";
|
|
|
|
|
payload: number;
|
|
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
type: "SET_IMAGE_SIZE";
|
|
|
|
|
payload: { width: number; height: number };
|
2026-01-09 16:16:28 +00:00
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
type: "SET_CAMERA_MODE";
|
|
|
|
|
payload: number;
|
|
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
type: "SET_REGION_PAINTMODE";
|
|
|
|
|
payload: "painter" | "eraser";
|
|
|
|
|
}
|
2026-01-13 14:46:10 +00:00
|
|
|
| { type: "SET_SELECTED_REGION_INDEX"; payload: number }
|
|
|
|
|
| {
|
|
|
|
|
type: "SET_CAMERA_CONTROLS";
|
|
|
|
|
payload: CameraSettings["cameraControls"];
|
2026-01-14 12:42:11 +00:00
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
type: "SET_BRUSH_SIZE";
|
|
|
|
|
payload: number;
|
2026-01-14 14:50:24 +00:00
|
|
|
}
|
|
|
|
|
| {
|
|
|
|
|
type: "RESET_REGION_PAINTER";
|
2026-01-13 14:46:10 +00:00
|
|
|
};
|
2026-01-07 16:18:14 +00:00
|
|
|
|
|
|
|
|
export type CameraStatus = {
|
|
|
|
|
id: string;
|
|
|
|
|
groupID: string;
|
|
|
|
|
tags: string[];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type SystemHealth = {
|
|
|
|
|
UptimeHumane: string;
|
|
|
|
|
StartTimeHumane: string;
|
|
|
|
|
Status: CameraStatus[];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type StoreData = {
|
|
|
|
|
totalPending: number;
|
|
|
|
|
totalActive: number;
|
|
|
|
|
totalSent: number;
|
|
|
|
|
totalReceived: number;
|
|
|
|
|
totalLost: number;
|
|
|
|
|
sanityCheck: boolean;
|
|
|
|
|
sanityCheckFormula: string;
|
|
|
|
|
};
|
2026-01-14 14:50:24 +00:00
|
|
|
|
|
|
|
|
export type ColourData = {
|
|
|
|
|
id: string | number;
|
|
|
|
|
cells: number[][];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type ColourDetectionPayload = {
|
|
|
|
|
regions: ColourData[];
|
|
|
|
|
};
|