43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import type { CalculationStatuses } 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';
|
|
import type { Status } from 'ui/elements/types';
|
|
|
|
export default class StatusStore {
|
|
private root: RootStore;
|
|
private statuses: CalculationStatuses = defaultStatuses;
|
|
private overrided: Partial<CalculationStatuses> = {};
|
|
|
|
constructor(rootStore: RootStore) {
|
|
makeAutoObservable(this);
|
|
this.root = rootStore;
|
|
}
|
|
|
|
public hydrate = (initialStatuses: CalculationStatuses) => {
|
|
this.statuses = initialStatuses;
|
|
};
|
|
|
|
public getStatus(elementName: ElementsActions | ElementsValues) {
|
|
return this.overrided[elementName] || this.statuses[elementName];
|
|
}
|
|
|
|
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;
|
|
};
|
|
}
|