import type { CalculationStatuses, Status } from './types'; import type { Elements as ElementsActions } from '@/Components/Calculation/config/map/actions'; import type { Elements as ElementsValues } from '@/Components/Calculation/config/map/values'; import defaultStatuses from '@/config/default-statuses'; import type RootStore from '@/stores/root'; import { makeAutoObservable } from 'mobx'; export default class StatusStore { private root: RootStore; private statuses: CalculationStatuses = defaultStatuses; private overrided: Partial = {}; constructor(rootStore: RootStore) { makeAutoObservable(this); this.root = rootStore; } public hydrate = (initialStatuses: CalculationStatuses) => { this.statuses = initialStatuses; }; public getStatus(elementName: ElementsActions | ElementsValues) { const status = this.overrided[elementName] || this.statuses[elementName]; if (this.root.$process.has('Unlimited')) { return 'Default'; } if ( this.root.$process.has('LoadKP') || this.root.$process.has('Calculate') || this.root.$process.has('CreateKP') ) { return 'Disabled'; } return status; } public setStatus = (elementName: ElementsActions | ElementsValues, status: Status) => { this.statuses[elementName] = status; }; public resetStatus = (elementName: ElementsActions | ElementsValues) => { this.statuses[elementName] = defaultStatuses[elementName]; }; public overrideStatus = (elementName: ElementsActions | ElementsValues, status: Status) => { this.overrided[elementName] = status; }; public clearOverridedStatus = (elementName: ElementsActions | ElementsValues) => { this.overrided[elementName] = undefined; }; }