|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
|
import { invoke } from '@tauri-apps/api';
|
|
|
|
|
import { from, map, tap } from 'rxjs';
|
|
|
|
|
import { Observable, ReplaySubject, Subject, from, map, tap } from 'rxjs';
|
|
|
|
|
import { Plan, PlanInterface } from '../_models/plan';
|
|
|
|
|
|
|
|
|
|
@Injectable({
|
|
|
|
@ -10,9 +10,14 @@ export class PlanService {
|
|
|
|
|
|
|
|
|
|
currentPlan?: Plan;
|
|
|
|
|
planStore: string[] = [];
|
|
|
|
|
basePlan?: Plan;
|
|
|
|
|
private basePlanSubj: Subject<Plan> = new ReplaySubject<Plan>(1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
|
this.getPreviousPlans();
|
|
|
|
|
this.loadBasePlan();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loadPlan(path: string) {
|
|
|
|
@ -34,8 +39,18 @@ export class PlanService {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
loadBasePlan() {
|
|
|
|
|
return from(invoke<PlanInterface>('base_plan'));
|
|
|
|
|
if(!this.basePlan) {
|
|
|
|
|
from(invoke<PlanInterface>('base_plan')).subscribe(plan => {
|
|
|
|
|
plan.plan.forEach(elem => {elem.edited = false;});
|
|
|
|
|
this.basePlan = new Plan(plan);
|
|
|
|
|
this.basePlanSubj?.next(this.basePlan);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return this.basePlanSubj!.asObservable();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
savePlan(path: string, plan: Plan) {
|
|
|
|
@ -64,4 +79,12 @@ export class PlanService {
|
|
|
|
|
this.currentPlan.setPrevious(name);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
zoneFromUuid(uuid: string) {
|
|
|
|
|
if (!this.basePlan) {
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return this.basePlan.plan.find(elem => elem.uuid === uuid);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|