export class Tile { area: number; custom1: string; custom2: string; custom3: string; custom4: string; custom5: string; decMax: number; decMin: number; epoch: number; factor: number; firstEpochHalf: boolean; id: number; name: string; raMax: number; raMin: number; tier: number; scans: Array<object>; static SORT_COLUMNS = ['id', 'name', 'status']; } export class PhaseCenterDeg { dec: number; ra: number; } export class TileDefinition { coarseCenterFrequenciesMHz: Array<number>; phaseCentersDeg: Array<PhaseCenterDeg>; } export class ProgressSummary { epoch: number; observed: number; calibrated: number; imaged: number; // first half epochs have 451 tiles, second half 448 get tiles(): number { return this.epoch.toString().split('').pop() === '1' ? 451 : 448; } get numObserved(): number { return Math.round(this.tiles * (this.observed / 100)) } get numCalibrated(): number { return Math.round(this.tiles * (this.calibrated / 100)) } }