Files
Mav-Mobile-UI/src/types/types.ts

397 lines
7.8 KiB
TypeScript
Raw Normal View History

export type SightingType = {
2025-08-13 14:23:48 +01:00
ref: number;
SaFID: string;
overviewUrl: string;
plateUrlInfrared: string;
plateUrlColour: string;
vrm: string;
vrmSecondary: string;
countryCode: string;
timeStamp: string;
detailsUrl: string;
2025-09-16 14:20:38 +01:00
overviewPlateRect?: [number, number, number, number];
plateTrack?: [number, number, number, number][];
2025-08-13 14:23:48 +01:00
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;
2025-08-13 14:23:48 +01:00
};
export type ReducedSightingType = {
vrm: string;
metadata?: Metadata;
};
export type CameraSettingValues = {
friendlyName: string;
cameraAddress: string;
userName: string;
password: string;
id: number | string;
};
2025-10-17 10:17:01 +01:00
export type CameraSettingErrorValues = Partial<Record<keyof CameraSettingValues, string>>;
2025-08-18 12:53:30 +01:00
export type BearerTypeFieldType = {
format: string;
enabled: boolean;
verbose: boolean;
};
export type InitialValuesForm = {
backOfficeURL: string;
username: string;
password: string;
connectTimeoutSeconds: number;
readTimeoutSeconds: number;
};
2025-08-18 16:04:03 +01:00
export type InitialValuesFormErrors = {
backOfficeURL?: string;
username?: string;
password?: string;
connectTimeoutSeconds?: string;
readTimeoutSeconds?: string;
};
2025-08-18 16:04:03 +01:00
export type NPEDFieldType = {
2025-08-29 10:07:59 +01:00
frontId: string;
username: string | undefined;
password: string | undefined;
clientId: string | undefined;
2025-08-29 10:07:59 +01:00
rearId: string;
2025-08-18 16:04:03 +01:00
};
export type HotlistUploadType = {
file: File | null;
2025-08-18 16:04:03 +01:00
};
2025-08-20 08:27:05 +01:00
export type VersionFieldType = {
version: string;
revision: string;
buildtime: string;
MAC: string;
timeStamp: number;
UUID: string;
"Serial No.": string;
"Model No.": string;
};
2025-08-29 14:55:37 +01:00
export type Metadata = {
npedJSON: NpedJSON;
"hotlist-matches": HotlistMatches;
hotlistMatches: HotlistMatches;
2025-08-29 14:55:37 +01:00
};
export type HotlistMatches = {
Hotlist0: boolean;
Hotlist1: boolean;
Hotlist2: boolean;
};
export type NpedJSON = {
status_code: number;
reason_phrase: string;
2025-09-22 09:26:45 +01:00
"NPED CATEGORY": "A" | "B" | "C" | "D";
"MOT STATUS": boolean;
"TAX STATUS": boolean;
vrm: string;
"INSURANCE STATUS": string;
2025-08-20 08:27:05 +01:00
};
2025-08-29 10:07:59 +01:00
export type NPEDUser = {
propUsername?: Prop;
propClientID?: Prop;
propPassword?: Prop;
2025-08-29 10:07:59 +01:00
};
export type NPEDErrorValues = {
username?: string | undefined;
password?: string | undefined;
clientId?: string | undefined;
};
2025-08-29 14:55:37 +01:00
export type NPEDCameraConfig = {
id: string;
configHash: string;
propEnabled: Prop;
propUsername: Prop;
propPassword: Prop;
propClientID: Prop;
propConnectTimeoutSeconds: Prop;
propReadTimeoutSeconds: Prop;
propNPEDAuthTokenURL: Prop;
propNPEDLookupURL: Prop;
propVerbose: Prop;
};
export interface Prop {
value: string;
datatype: string;
}
2025-09-12 13:28:14 +01:00
export type SystemValues = {
deviceName: string;
sntpServer: string;
sntpInterval: number;
timeZone: string;
softwareUpdate?: File | null;
};
export type SystemValuesErrors = {
deviceName?: string | undefined;
sntpServer?: string | undefined;
sntpInterval?: string | undefined;
timeZone?: string | undefined;
softwareUpdate?: File | null;
};
export type AlertState = {
alertList: SightingType[];
allAlerts: SightingType[];
};
2025-09-16 14:20:38 +01:00
export type AlertPayload =
| {
payload: SightingType;
type: "ADD";
}
| {
payload: string;
type: "SEARCH";
}
| {
type: "REMOVE";
payload: SightingType;
}
| {
type: "DELETE";
payload: [];
2025-09-16 14:20:38 +01:00
};
export type ActionType = {
payload: SightingType | string;
type: string;
};
export type CameraConfig = {
id: string;
configHash: string;
propURI: {
value: string;
datatype: "java.lang.String";
};
propMonochrome: {
value: string; // "true" or "false" as string
datatype: "boolean";
};
propControlProtocol: {
value: "NONE" | "VISCA_KTNC" | "VISCA_WONWOO" | "DUMMY";
datatype: "mav.cameracontrol.CameraController$CameraControlProtocol";
accepted: "[NONE, VISCA_KTNC, VISCA_WONWOO, DUMMY]";
};
propAllowControlProtocolInference: {
value: string;
datatype: "boolean";
};
propCameraControlDeviceURI: {
value: string;
datatype: "java.lang.String";
};
propCameraControllerBaudRate: {
value: string; // "115200" as string
datatype: "int";
};
propLEDControllerType: {
value: "None" | "Serial" | "I2C";
datatype: "mav.flexi.modules.originators.video.LEDController$InterfaceType";
accepted: "[None, Serial, I2C]";
};
propLEDDriverControlURI: {
value: string;
datatype: "java.lang.String";
};
propSourceIdentifier: {
value: string;
datatype: "java.lang.String";
};
propI2CLEDDriverSafeHex: {
value: string;
datatype: "java.lang.String";
};
propI2CLEDDriverLowHex: {
value: string;
datatype: "java.lang.String";
};
propI2CLEDDriverMidHex: {
value: string;
datatype: "java.lang.String";
};
propI2CLEDDriverHighHex: {
value: string;
datatype: "java.lang.String";
};
propRecordCameraControllerLogs: {
value: string;
datatype: "boolean";
};
propVideoFeedWatchdogEnabled: {
value: string;
datatype: "boolean";
};
};
export type CameraBlackBoardOptions = {
operation?: string;
path?: string;
value?: object | string | number | (string | number)[];
};
export type CameraBlackboardResponse = {
data: object;
};
export type ZoomLevel = {
left: number;
top: number;
x: number;
y: number;
px: number;
py: number;
level?: number;
};
2025-09-30 13:25:11 +01:00
export type SoundValue = string;
export type Hotlist = {
name: string;
sound: SoundValue;
};
export type FormValues = {
sightingSound: SoundValue;
NPEDsound: SoundValue;
hotlists: Hotlist[];
2025-10-20 11:32:45 +01:00
hotlistSound: SoundValue;
soundOptions?: SoundUploadValue[];
2025-09-30 13:25:11 +01:00
};
export type SoundUploadValue = {
name: string;
2025-10-20 11:32:45 +01:00
soundFileName?: string;
soundFile?: File | null;
2025-10-20 16:17:37 +01:00
soundUrl?: string;
2025-09-30 13:25:11 +01:00
};
export type SoundState = {
sightingSound: SoundValue;
NPEDsound: SoundValue;
hotlists: Hotlist[];
2025-10-20 11:32:45 +01:00
hotlistSound: SoundValue;
soundOptions?: SoundUploadValue[];
sightingVolume: number;
NPEDsoundVolume: number;
hotlistSoundVolume: number;
};
type UpdateAction = {
type: "UPDATE";
payload: {
sightingSound: SoundValue;
NPEDsound: SoundValue;
hotlists: Hotlist[];
sightingVolume: number;
NPEDsoundVolume: number;
2025-10-20 11:32:45 +01:00
hotlistSoundVolume: number;
hotlistSound: SoundValue;
soundOptions?: SoundUploadValue[];
};
};
type AddAction = {
type: "ADD";
payload: SoundUploadValue;
};
type VolumeAction = {
type: "SIGHTINGVOLUME" | "NPEDVOLUME" | "HOTLISTVOLUME";
payload: number;
};
export type SoundAction = UpdateAction | AddAction | VolumeAction;
2025-10-02 22:53:38 +01:00
export type WifiSettingValues = {
ssid: string;
password: string;
encryption: string;
};
export type ModemConfigPayload = {
property: string;
value: string;
};
export type WifiConfigPayload = {
property: string;
value: string;
};
2025-10-02 22:53:38 +01:00
export type WifiConfig = {
id: string;
fields: WifiConfigPayload[];
2025-10-02 22:53:38 +01:00
};
export type ModemConfig = {
id: string;
fields: ModemConfigPayload[];
};
export type ZoomInOptions = {
camera: string;
multiplier: number;
};
export type zoomConfig = {
camera: string;
};
export type ModemSettingsType = {
apn: string;
username: string;
password: string;
authenticationType: string;
};
export type HitKind = "NPED" | "HOTLIST";
export type QueuedHit = {
id: number | string;
sighting: SightingType;
kind: HitKind;
};
export type DedupedSightings = ReducedSightingType[];
export type NPEDSTATE = {
sessionStarted: boolean;
sessionList: ReducedSightingType[];
sessionPaused: boolean;
savedSightings: DedupedSightings;
2025-10-27 09:35:59 +00:00
npedUser: NPEDUser;
};
export type NPEDACTION = {
type: string;
payload: any;
};