|
|
|
import { observable } from "mobx";
|
|
|
|
import { SprinklersDevice } from "./SprinklersDevice";
|
|
|
|
|
|
|
|
export class SectionRun {
|
|
|
|
readonly sectionRunner: SectionRunner;
|
|
|
|
readonly id: number;
|
|
|
|
section: number;
|
|
|
|
totalDuration: number = 0;
|
|
|
|
duration: number = 0;
|
|
|
|
startTime: Date | null = null;
|
|
|
|
pauseTime: Date | null = null;
|
|
|
|
unpauseTime: Date | null = null;
|
|
|
|
|
|
|
|
constructor(
|
|
|
|
sectionRunner: SectionRunner,
|
|
|
|
id: number = 0,
|
|
|
|
section: number = 0
|
|
|
|
) {
|
|
|
|
this.sectionRunner = sectionRunner;
|
|
|
|
this.id = id;
|
|
|
|
this.section = section;
|
|
|
|
}
|
|
|
|
|
|
|
|
cancel = () => this.sectionRunner.cancelRunById(this.id);
|
|
|
|
|
|
|
|
toString() {
|
|
|
|
return (
|
|
|
|
`SectionRun{id=${this.id}, section=${this.section}, duration=${
|
|
|
|
this.duration
|
|
|
|
},` + ` startTime=${this.startTime}, pauseTime=${this.pauseTime}}`
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export class SectionRunner {
|
|
|
|
readonly device: SprinklersDevice;
|
|
|
|
|
|
|
|
@observable
|
|
|
|
queue: SectionRun[] = [];
|
|
|
|
@observable
|
|
|
|
current: SectionRun | null = null;
|
|
|
|
@observable
|
|
|
|
paused: boolean = false;
|
|
|
|
|
|
|
|
constructor(device: SprinklersDevice) {
|
|
|
|
this.device = device;
|
|
|
|
}
|
|
|
|
|
|
|
|
cancelRunById(runId: number) {
|
|
|
|
return this.device.cancelSectionRunId({ runId });
|
|
|
|
}
|
|
|
|
|
|
|
|
setPaused(paused: boolean) {
|
|
|
|
return this.device.pauseSectionRunner({ paused });
|
|
|
|
}
|
|
|
|
|
|
|
|
pause() {
|
|
|
|
return this.setPaused(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
unpause() {
|
|
|
|
return this.setPaused(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
toString(): string {
|
|
|
|
return `SectionRunner{queue="${this.queue}", current="${
|
|
|
|
this.current
|
|
|
|
}", paused=${this.paused}}`;
|
|
|
|
}
|
|
|
|
}
|