stores: move some nested methods to $calculation
This commit is contained in:
parent
26f6149b39
commit
ed8c22de18
@ -15,7 +15,7 @@ export default function leadOpportunityUrlsReactions(
|
||||
*/
|
||||
function makeLinkReaction(elementName: Elements, linkElementName: Elements, query: DocumentNode) {
|
||||
reaction(
|
||||
() => $calculation.$values.getElementValue(elementName),
|
||||
() => $calculation.getElementValue(elementName),
|
||||
(id) => {
|
||||
const timeoutId = setTimeout(() => {
|
||||
$calculation.$status.setStatus(linkElementName, 'Loading');
|
||||
@ -31,17 +31,17 @@ export default function leadOpportunityUrlsReactions(
|
||||
.then(({ data }) => {
|
||||
clearTimeout(timeoutId);
|
||||
if (data.entity?.link) {
|
||||
$calculation.$values.setElementValue(linkElementName, data.entity?.link);
|
||||
$calculation.setElementValue(linkElementName, data.entity?.link);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
clearTimeout(timeoutId);
|
||||
$calculation.$values.setElementValue(linkElementName, null);
|
||||
$calculation.setElementValue(linkElementName, null);
|
||||
});
|
||||
}
|
||||
);
|
||||
reaction(
|
||||
() => $calculation.$values.getElementValue(linkElementName),
|
||||
() => $calculation.getElementValue(linkElementName),
|
||||
(url) => {
|
||||
if (!url) {
|
||||
$calculation.blockElement(linkElementName);
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
/* eslint-disable import/no-cycle */
|
||||
import type { Elements as ElementsActions } from 'Components/Calculation/config/map/actions';
|
||||
import type { Elements as ElementsValues } from 'Components/Calculation/config/map/values';
|
||||
import type * as Values from 'Components/Calculation/config/map/values';
|
||||
import { getValueName } from 'Components/Calculation/config/map/values';
|
||||
import type RootStore from 'stores/root';
|
||||
import OptionsStore from './options';
|
||||
import StatusStore from './statuses';
|
||||
@ -20,18 +21,40 @@ export default class CalculationStore {
|
||||
this.$validation = new ValidationStore(rootStore);
|
||||
}
|
||||
|
||||
resetElement = (elementName: ElementsValues) => {
|
||||
this.$values.resetElementValue(elementName);
|
||||
resetElement = (elementName: Values.Elements) => {
|
||||
this.resetElementValue(elementName);
|
||||
this.$options.resetOption(elementName);
|
||||
this.$status.resetStatus(elementName);
|
||||
this.$validation.clearErrors(elementName);
|
||||
};
|
||||
|
||||
blockElement = (elementName: ElementsValues | ElementsActions) => {
|
||||
blockElement = (elementName: Values.Elements | ElementsActions) => {
|
||||
this.$status.setStatus(elementName, 'Disabled');
|
||||
};
|
||||
|
||||
unblockElement = (elementName: ElementsValues | ElementsActions) => {
|
||||
unblockElement = (elementName: Values.Elements | ElementsActions) => {
|
||||
this.$status.setStatus(elementName, 'Default');
|
||||
};
|
||||
|
||||
getElementValue<E extends Values.Elements>(elementName: E) {
|
||||
const valueName = getValueName(elementName);
|
||||
|
||||
return this.$values.getValue(valueName) as Values.ElementsTypes[E];
|
||||
}
|
||||
|
||||
setElementValue = <E extends Values.Elements>(elementName: E, value: Values.ElementsTypes[E]) => {
|
||||
const valueName = getValueName(elementName);
|
||||
this.$values.setValue(valueName, value);
|
||||
};
|
||||
|
||||
resetElementValue = (elementName: Values.Elements) => {
|
||||
const valueName = getValueName(elementName);
|
||||
this.$values.resetValue(valueName);
|
||||
};
|
||||
|
||||
getElementOption<T extends Values.Elements>(elementName: T) {
|
||||
const value = this.getElementValue(elementName);
|
||||
|
||||
return this.$options.getOptions(elementName)?.find((x) => x.value === value);
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,13 +34,7 @@ export default class OptionsStore {
|
||||
this.options = initialOptions;
|
||||
};
|
||||
|
||||
getOption<T extends Elements>(elementName: T) {
|
||||
const value = this.root.$calculation.$values.getElementValue(elementName);
|
||||
|
||||
return this.options[elementName]?.find((x) => x.value === value);
|
||||
}
|
||||
|
||||
getOptions(elementName: Elements) {
|
||||
getOptions<T extends Elements>(elementName: T) {
|
||||
const options = this.options[elementName];
|
||||
|
||||
return options;
|
||||
@ -60,9 +54,9 @@ export default class OptionsStore {
|
||||
/**
|
||||
* Проверяем, что значение есть в новом списке, иначе сбрасываем значение
|
||||
*/
|
||||
const value = this.root.$calculation.$values.getElementValue(elementName);
|
||||
const value = this.root.$calculation.getElementValue(elementName);
|
||||
if (!options?.length || options.some((x) => x.value === value)) {
|
||||
this.root.$calculation.$values.resetElementValue(elementName);
|
||||
this.root.$calculation.resetElementValue(elementName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -73,7 +67,7 @@ export default class OptionsStore {
|
||||
const optionValue = options.at(0)?.value;
|
||||
|
||||
if (optionValue) {
|
||||
this.root.$calculation.$values.setElementValue(elementName, optionValue);
|
||||
this.root.$calculation.setElementValue(elementName, optionValue);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
/* eslint-disable object-curly-newline */
|
||||
import type { Elements, ElementsTypes } from 'Components/Calculation/config/map/values';
|
||||
import { getValueName } from 'Components/Calculation/config/map/values';
|
||||
import defaultValues from 'config/default-values';
|
||||
import { makeAutoObservable } from 'mobx';
|
||||
import type RootStore from '../../root';
|
||||
@ -23,12 +21,6 @@ export default class ValuesStore {
|
||||
return this.values[valueName];
|
||||
}
|
||||
|
||||
getElementValue<E extends Elements>(elementName: E) {
|
||||
const valueName = getValueName(elementName);
|
||||
|
||||
return this.getValue(valueName) as ElementsTypes[E];
|
||||
}
|
||||
|
||||
getValues<V extends Values>(valuesNames: readonly V[]) {
|
||||
return valuesNames.reduce((values, valueName) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
@ -59,20 +51,10 @@ export default class ValuesStore {
|
||||
});
|
||||
};
|
||||
|
||||
setElementValue = <E extends Elements>(elementName: E, value: ElementsTypes[E]) => {
|
||||
const valueName = getValueName(elementName);
|
||||
this.setValue(valueName, value);
|
||||
};
|
||||
|
||||
resetValue = (valueName: Values) => {
|
||||
this.setValue(valueName, defaultValues[valueName]);
|
||||
};
|
||||
|
||||
resetElementValue = (elementName: Elements) => {
|
||||
const valueName = getValueName(elementName);
|
||||
this.resetValue(valueName);
|
||||
};
|
||||
|
||||
resetValues = (valuesNames: readonly Values[]) => {
|
||||
valuesNames.forEach((valueName) => {
|
||||
this.resetValue(valueName);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user