mirror of
https://github.com/chuot/rdio-scanner.git
synced 2026-08-13 16:33:01 -06:00
79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { BaseModel } from './base-model';
|
|
|
|
export interface CallFreq {
|
|
errorCount: number;
|
|
freq: number;
|
|
len: number;
|
|
pos: number;
|
|
spikeCount: number;
|
|
time: Date;
|
|
}
|
|
|
|
export interface CallSrc {
|
|
pos: number;
|
|
src: number;
|
|
time: Date;
|
|
}
|
|
|
|
export class Call extends BaseModel {
|
|
_id?: string;
|
|
audio: string;
|
|
emergency: boolean;
|
|
freq: number;
|
|
freqList: CallFreq[];
|
|
startTime: Date;
|
|
stopTime: Date;
|
|
srcList: CallSrc[];
|
|
system: number;
|
|
talkgroup: number;
|
|
|
|
constructor(data: any = {}) {
|
|
super();
|
|
|
|
this.audio = parseString(data.audio);
|
|
this.emergency = parseBoolean(data.emergency);
|
|
this.freq = parseNumber(data.freq);
|
|
this.freqList = Array.isArray(data.freqList) ? data.freqList.map((freq: any = {}) => ({
|
|
errorCount: parseNumber(freq.error_count),
|
|
freq: parseNumber(freq.freq),
|
|
len: parseNumber(freq.len),
|
|
pos: parseNumber(freq.pos),
|
|
spikeCount: parseNumber(freq.spike_count),
|
|
time: parseDate(freq.time),
|
|
})) : [];
|
|
this.startTime = parseDate(data.start_time);
|
|
this.stopTime = parseDate(data.stop_time);
|
|
this.srcList = Array.isArray(data.srcList) ? data.srcList.map((src: any = {}) => ({
|
|
pos: parseNumber(src.pos),
|
|
src: parseNumber(src.src),
|
|
time: parseDate(src.time),
|
|
})) : [];
|
|
this.system = parseNumber(data.system);
|
|
this.talkgroup = parseNumber(data.talkgroup);
|
|
}
|
|
}
|
|
|
|
function parseBoolean(value: any): boolean {
|
|
return !!value;
|
|
}
|
|
|
|
function parseDate(value: any): Date {
|
|
if (value instanceof Date) {
|
|
return value;
|
|
} else if (typeof value === 'number') {
|
|
const date = new Date(1970, 0, 1);
|
|
date.setUTCSeconds(value - date.getTimezoneOffset() * 60);
|
|
return date;
|
|
} else {
|
|
return new Date(value);
|
|
}
|
|
}
|
|
|
|
function parseNumber(value: any): number {
|
|
return typeof value === 'number' ? value : parseInt(value, 10) || 0;
|
|
};
|
|
|
|
function parseString(value: any): string {
|
|
return typeof value === 'string' ? value : '';
|
|
}
|