diff --git a/process/lead-opportunity/reactions/urls.ts b/process/lead-opportunity/reactions/urls.ts index dce915e..b42d89d 100644 --- a/process/lead-opportunity/reactions/urls.ts +++ b/process/lead-opportunity/reactions/urls.ts @@ -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); diff --git a/stores/calculation/index.ts b/stores/calculation/index.ts index b02e2e2..4834477 100644 --- a/stores/calculation/index.ts +++ b/stores/calculation/index.ts @@ -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(elementName: E) { + const valueName = getValueName(elementName); + + return this.$values.getValue(valueName) as Values.ElementsTypes[E]; + } + + setElementValue = (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(elementName: T) { + const value = this.getElementValue(elementName); + + return this.$options.getOptions(elementName)?.find((x) => x.value === value); + } } diff --git a/stores/calculation/options/index.ts b/stores/calculation/options/index.ts index 00903af..76fcb04 100644 --- a/stores/calculation/options/index.ts +++ b/stores/calculation/options/index.ts @@ -34,13 +34,7 @@ export default class OptionsStore { this.options = initialOptions; }; - getOption(elementName: T) { - const value = this.root.$calculation.$values.getElementValue(elementName); - - return this.options[elementName]?.find((x) => x.value === value); - } - - getOptions(elementName: Elements) { + getOptions(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); } } }; diff --git a/stores/calculation/values/index.ts b/stores/calculation/values/index.ts index df4f8b9..58c01cc 100644 --- a/stores/calculation/values/index.ts +++ b/stores/calculation/values/index.ts @@ -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(elementName: E) { - const valueName = getValueName(elementName); - - return this.getValue(valueName) as ElementsTypes[E]; - } - getValues(valuesNames: readonly V[]) { return valuesNames.reduce((values, valueName) => { // eslint-disable-next-line no-param-reassign @@ -59,20 +51,10 @@ export default class ValuesStore { }); }; - setElementValue = (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);