2023-03-29 10:07:34 +03:00

49 lines
1.6 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) {
const status = this.overrided[elementName] || this.statuses[elementName];
if (this.root.$process.has('Unlimited') && status === 'Disabled') {
return 'Default';
}
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;
};
}