diff --git a/config/default-filters.ts b/config/default-filters.ts index ce065a5..b4cda81 100644 --- a/config/default-filters.ts +++ b/config/default-filters.ts @@ -1,5 +1,6 @@ +/* eslint-disable object-curly-newline */ import type { CalculationFilters } from 'stores/calculation/options/types'; -const defaultFilters: Partial = {}; +const defaultFilters: CalculationFilters = {}; export default defaultFilters; diff --git a/config/default-options.ts b/config/default-options.ts index c4a5a9d..c8e81bb 100644 --- a/config/default-options.ts +++ b/config/default-options.ts @@ -1,7 +1,7 @@ import { orderBy } from 'lodash'; import type { CalculationOptions } from 'stores/calculation/options/types'; -const defaultOptions: Partial = { +const defaultOptions: CalculationOptions = { radioLastPaymentRule: [ { label: 'равен платежу', @@ -388,6 +388,128 @@ const defaultOptions: Partial = { ...v, value: 100_000_000 + i, })), + + selectLead: [], + selectOpportunity: [], + selectQuote: [], + cbxRecalcWithRevision: [], + selectProduct: [], + selectClientRisk: [], + selectClientType: [], + tbxLeaseObjectPrice: [], + tbxLeaseObjectPriceWthtVAT: [], + tbxVATInLeaseObjectPrice: [], + tbxEngineHours: [], + selectSupplierCurrency: [], + tbxSupplierDiscountRub: [], + tbxSupplierDiscountPerc: [], + tbxLeasingPeriod: [], + tbxFirstPaymentPerc: [], + tbxFirstPaymentRub: [], + tbxLastPaymentPerc: [], + tbxLastPaymentRub: [], + tbxRedemptionPaymentSum: [], + tbxParmentsDecreasePercent: [], + tbxComissionPerc: [], + tbxComissionRub: [], + tbxSaleBonus: [], + tbxIRR_Perc: [], + selectLeaseObjectType: [], + labelDepreciationGroup: [], + tbxLeaseObjectCount: [], + cbxWithTrailer: [], + cbxLeaseObjectUsed: [], + tbxMaxMass: [], + tbxCountSeats: [], + tbxMaxSpeed: [], + selectBrand: [], + selectModel: [], + selectConfiguration: [], + tbxLeaseObjectYear: [], + tbxLeaseObjectMotorPower: [], + tbxEngineVolume: [], + selectDealer: [], + selectDealerPerson: [], + selectDealerRewardCondition: [], + tbxDealerRewardSumm: [], + selectDealerBroker: [], + selectDealerBrokerRewardCondition: [], + tbxDealerBrokerRewardSumm: [], + selectIndAgent: [], + selectIndAgentRewardCondition: [], + tbxIndAgentRewardSumm: [], + selectCalcDoubleAgent: [], + selectCalcDoubleAgentRewardCondition: [], + tbxCalcDoubleAgentRewardSumm: [], + selectCalcBroker: [], + selectCalcBrokerRewardCondition: [], + tbxCalcBrokerRewardSum: [], + selectCalcFinDepartment: [], + selectFinDepartmentRewardCondtion: [], + tbxFinDepartmentRewardSumm: [], + selectGPSBrand: [], + selectGPSModel: [], + selectRegionRegistration: [], + selectTownRegistration: [], + cbxInsDecentral: [], + tbxInsFranchise: [], + cbxInsUnlimitDrivers: [], + tbxInsAgeDrivers: [], + tbxInsExpDrivers: [], + tbxINNForCalc: [], + cbxLastPaymentRedemption: [], + cbxPriceWithDiscount: [], + cbxFullPriceWithDiscount: [], + cbxCostIncrease: [], + cbxInsurance: [], + cbxRegistrationQuote: [], + cbxTechnicalCardQuote: [], + cbxNSIB: [], + tbxQuoteName: [], + cbxQuoteRedemptionGraph: [], + cbxShowFinGAP: [], + selectTarif: [], + tbxCreditRate: [], + selectRate: [], + tbxMaxPriceChange: [], + tbxImporterRewardPerc: [], + tbxImporterRewardRub: [], + cbxDisableChecks: [], + selectRegistration: [], + selectInsNSIB: [], + selectTechnicalCard: [], + selectTelematic: [], + selectTracker: [], + tbxMileage: [], + tbxTotalPayments: [], + selectObjectRegionRegistration: [], + tbxVehicleTaxInYear: [], + tbxVehicleTaxInLeasingPeriod: [], + selectLegalClientRegion: [], + selectLegalClientTown: [], + selectSubsidy: [], + labelSubsidySum: [], + selectFuelCard: [], + tbxMinPriceChange: [], + labelResultTotalGraphwithNDS: [], + labelResultPlPrice: [], + labelResultPriceUpPr: [], + labelResultIRRGraphPerc: [], + labelResultIRRNominalPerc: [], + labelResultInsKasko: [], + labelResultInsOsago: [], + labelResultDopProdSum: [], + labelResultFirstPayment: [], + labelResultLastPayment: [], + labelResultTerm: [], + labelResultAB_FL: [], + labelResultAB_UL: [], + labelResultBonusMPL: [], + labelResultDopMPLLeasing: [], + labelResultBonusDopProd: [], + labelResultBonusSafeFinance: [], + labelResultFirstPaymentRiskPolicy: [], + linkDownloadKp: [], }; export default defaultOptions; diff --git a/config/default-statuses.ts b/config/default-statuses.ts index 8aee59f..03ee33a 100644 --- a/config/default-statuses.ts +++ b/config/default-statuses.ts @@ -19,6 +19,127 @@ const defaultStatuses: CalculationStatuses = { radioInfuranceOPF: 'Disabled', tbxRedemptionPaymentSum: 'Disabled', tbxLeaseObjectPriceWthtVAT: 'Disabled', + selectLead: 'Default', + selectOpportunity: 'Default', + selectQuote: 'Default', + cbxRecalcWithRevision: 'Default', + selectProduct: 'Default', + selectClientRisk: 'Default', + tbxLeaseObjectPrice: 'Default', + tbxVATInLeaseObjectPrice: 'Default', + tbxEngineHours: 'Default', + selectSupplierCurrency: 'Default', + tbxSupplierDiscountRub: 'Default', + tbxSupplierDiscountPerc: 'Default', + tbxLeasingPeriod: 'Default', + tbxFirstPaymentPerc: 'Default', + tbxFirstPaymentRub: 'Default', + tbxLastPaymentPerc: 'Default', + tbxLastPaymentRub: 'Default', + radioLastPaymentRule: 'Default', + radioBalanceHolder: 'Default', + radioGraphType: 'Default', + tbxParmentsDecreasePercent: 'Default', + selectSeasonType: 'Default', + selectHighSeasonStart: 'Default', + tbxComissionPerc: 'Default', + tbxComissionRub: 'Default', + tbxSaleBonus: 'Default', + tbxIRR_Perc: 'Default', + selectLeaseObjectType: 'Default', + radioDeliveryTime: 'Default', + labelDepreciationGroup: 'Default', + tbxLeaseObjectCount: 'Default', + cbxWithTrailer: 'Default', + cbxLeaseObjectUsed: 'Default', + tbxMaxMass: 'Default', + tbxCountSeats: 'Default', + tbxMaxSpeed: 'Default', + selectBrand: 'Default', + selectModel: 'Default', + selectConfiguration: 'Default', + tbxLeaseObjectYear: 'Default', + selectEngineType: 'Default', + tbxLeaseObjectMotorPower: 'Default', + tbxEngineVolume: 'Default', + selectLeaseObjectUseFor: 'Default', + selectDealer: 'Default', + selectDealerPerson: 'Default', + selectDealerRewardCondition: 'Default', + tbxDealerRewardSumm: 'Default', + selectDealerBroker: 'Default', + selectDealerBrokerRewardCondition: 'Default', + tbxDealerBrokerRewardSumm: 'Default', + selectIndAgentRewardCondition: 'Default', + tbxIndAgentRewardSumm: 'Default', + selectCalcDoubleAgentRewardCondition: 'Default', + tbxCalcDoubleAgentRewardSumm: 'Default', + selectCalcBrokerRewardCondition: 'Default', + tbxCalcBrokerRewardSum: 'Default', + selectFinDepartmentRewardCondtion: 'Default', + tbxFinDepartmentRewardSumm: 'Default', + selectGPSBrand: 'Default', + selectGPSModel: 'Default', + selectRegionRegistration: 'Default', + selectTownRegistration: 'Default', + radioInsKaskoType: 'Default', + cbxInsDecentral: 'Default', + tbxInsFranchise: 'Default', + cbxInsUnlimitDrivers: 'Default', + tbxInsAgeDrivers: 'Default', + tbxInsExpDrivers: 'Default', + cbxLastPaymentRedemption: 'Default', + cbxPriceWithDiscount: 'Default', + cbxFullPriceWithDiscount: 'Default', + cbxCostIncrease: 'Default', + cbxInsurance: 'Default', + cbxRegistrationQuote: 'Default', + cbxTechnicalCardQuote: 'Default', + cbxNSIB: 'Default', + tbxQuoteName: 'Default', + radioQuoteContactGender: 'Default', + cbxQuoteRedemptionGraph: 'Default', + cbxShowFinGAP: 'Default', + cbxDisableChecks: 'Default', + selectRegistration: 'Default', + selectInsNSIB: 'Default', + selectTechnicalCard: 'Default', + selectRequirementTelematic: 'Default', + selectTelematic: 'Default', + selectTracker: 'Default', + tbxMileage: 'Default', + radioCalcType: 'Default', + tbxTotalPayments: 'Default', + radioObjectRegistration: 'Default', + selectObjectRegionRegistration: 'Default', + tbxVehicleTaxInYear: 'Default', + selectObjectCategoryTax: 'Default', + radioTypePTS: 'Default', + selectLegalClientRegion: 'Default', + selectLegalClientTown: 'Default', + selectSubsidy: 'Default', + labelSubsidySum: 'Default', + selectFuelCard: 'Default', + tbxMinPriceChange: 'Default', + labelResultTotalGraphwithNDS: 'Default', + labelResultPlPrice: 'Default', + labelResultPriceUpPr: 'Default', + labelResultIRRGraphPerc: 'Default', + labelResultIRRNominalPerc: 'Default', + labelResultInsKasko: 'Default', + labelResultInsOsago: 'Default', + labelResultDopProdSum: 'Default', + labelResultFirstPayment: 'Default', + labelResultLastPayment: 'Default', + labelResultTerm: 'Default', + labelResultAB_FL: 'Default', + labelResultAB_UL: 'Default', + labelResultBonusMPL: 'Default', + labelResultDopMPLLeasing: 'Default', + labelResultBonusDopProd: 'Default', + labelResultBonusSafeFinance: 'Default', + labelResultFirstPaymentRiskPolicy: 'Default', + linkDownloadKp: 'Default', }; export default defaultStatuses; diff --git a/pages/index.tsx b/pages/index.tsx index 3b8c906..630de0e 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,6 +1,5 @@ import initializeApollo from 'apollo/client'; import * as Calculation from 'Components/Calculation'; -import * as insuranceTableConfig from 'config/tables/insurance-table'; import type { GetServerSideProps } from 'next'; import Head from 'next/head'; import { fetchUser } from 'services/user'; @@ -60,13 +59,6 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => props: { user, initialApolloState: apolloClient.cache.extract(), - tables: { - insurance: { - values: insuranceTableConfig.defaultRows, - options: insuranceTableConfig.defaultOptions, - statuses: insuranceTableConfig.defaultStatuses, - }, - }, }, }; }; diff --git a/stores/calculation/options/index.ts b/stores/calculation/options/index.ts index fda1a3b..4148e28 100644 --- a/stores/calculation/options/index.ts +++ b/stores/calculation/options/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable object-curly-newline */ /* eslint-disable unicorn/prefer-set-has */ import type { Elements } from 'Components/Calculation/config/map/values'; import defaultFilters from 'config/default-filters'; @@ -5,7 +6,7 @@ import defaultOptions from 'config/default-options'; import type { BaseOption } from 'Elements/types'; import { makeAutoObservable } from 'mobx'; import type RootStore from 'stores/root'; -import type { CalculationOptions, Filter } from './types'; +import type { CalculationFilters, CalculationOptions, Filter } from './types'; const AUTO_SET_VALUE_ELEMENTS: Elements[] = [ 'selectProduct', @@ -23,16 +24,17 @@ const AUTO_SET_VALUE_ELEMENTS: Elements[] = [ export default class OptionsStore { root: RootStore; - options = defaultOptions; - filters = defaultFilters; + options: CalculationOptions = defaultOptions; + filters: Partial = defaultFilters; constructor(rootStore: RootStore) { makeAutoObservable(this); this.root = rootStore; } - hydrate = (initialOptions: CalculationOptions) => { + hydrate = (initialOptions: CalculationOptions, initialFilters: CalculationFilters) => { this.options = initialOptions; + this.filters = initialFilters; }; /** **************** OPTIONS **************** */ diff --git a/stores/calculation/options/types.ts b/stores/calculation/options/types.ts index 815b587..361dd58 100644 --- a/stores/calculation/options/types.ts +++ b/stores/calculation/options/types.ts @@ -4,4 +4,4 @@ import type { BaseOption } from 'Elements/types'; export type CalculationOptions = Record; export type Filter = (options: BaseOption[]) => BaseOption[]; -export type CalculationFilters = Record; +export type CalculationFilters = Partial>; diff --git a/stores/calculation/statuses/index.ts b/stores/calculation/statuses/index.ts index 64934bf..b8f7924 100644 --- a/stores/calculation/statuses/index.ts +++ b/stores/calculation/statuses/index.ts @@ -8,7 +8,7 @@ import type { CalculationStatuses } from './types'; export default class StatusStore { root: RootStore; - statuses = defaultStatuses; + statuses: CalculationStatuses = defaultStatuses; constructor(rootStore: RootStore) { makeAutoObservable(this); diff --git a/stores/calculation/statuses/types.ts b/stores/calculation/statuses/types.ts index 2adf5f7..a411b9b 100644 --- a/stores/calculation/statuses/types.ts +++ b/stores/calculation/statuses/types.ts @@ -1,4 +1,4 @@ import type { Elements } from 'Components/Calculation/config/map/values'; import type { Status } from 'Elements/types'; -export type CalculationStatuses = Partial>; +export type CalculationStatuses = Record; diff --git a/stores/calculation/values/index.ts b/stores/calculation/values/index.ts index 45acab9..2d1429a 100644 --- a/stores/calculation/values/index.ts +++ b/stores/calculation/values/index.ts @@ -9,7 +9,7 @@ import type { CalculationValues, Values } from './types'; export default class ValuesStore { root: RootStore; - values = defaultValues; + values: CalculationValues = defaultValues; $computed: Computed; constructor(rootStore: RootStore) { diff --git a/stores/index.js b/stores/index.js index b93752d..34f51f7 100644 --- a/stores/index.js +++ b/stores/index.js @@ -18,8 +18,9 @@ export function initializeStore(initialData) { if (calculation?.values) _store.$calculation.$values.hydrate(calculation.values); if (calculation?.statuses) _store.$calculation.$status.hydrate(calculation.statuses); if (calculation?.options) _store.$calculation.$options.hydrate(calculation.options); + if (calculation?.filters) _store.$calculation.$options.hydrate(calculation.filters); - if (tables.insurance) { + if (tables?.insurance) { _store.$tables.insurance.hydrate({ values: tables.insurance.values, options: tables.insurance.options, diff --git a/stores/tables/insurance/index.ts b/stores/tables/insurance/index.ts index 1f6e623..15442e7 100644 --- a/stores/tables/insurance/index.ts +++ b/stores/tables/insurance/index.ts @@ -1,5 +1,6 @@ /* eslint-disable object-curly-newline */ import type * as Insurance from 'Components/Calculation/Form/Insurance/InsuranceTable/types'; +import * as insuranceTableConfig from 'config/tables/insurance-table'; import { mergeWith } from 'lodash'; import { makeAutoObservable } from 'mobx'; import type RootStore from 'stores/root'; @@ -12,9 +13,9 @@ export interface InsuranceTableData { export default class InsuranceTable { root: RootStore; - values: Insurance.Row[] = []; - options: Insurance.Options = {}; - statuses: Insurance.RowStatuses[] = []; + values: Insurance.Row[] = insuranceTableConfig.defaultRows; + options: Insurance.Options = insuranceTableConfig.defaultOptions; + statuses: Insurance.RowStatuses[] = insuranceTableConfig.defaultStatuses; constructor(rootStore: RootStore) { this.root = rootStore; diff --git a/types/page.ts b/types/page.ts index cd3a3f1..88d041d 100644 --- a/types/page.ts +++ b/types/page.ts @@ -1,6 +1,6 @@ import type { NormalizedCacheObject } from '@apollo/client'; import type { User } from 'services/user/types'; -import type { CalculationOptions } from 'stores/calculation/options/types'; +import type { CalculationFilters, CalculationOptions } from 'stores/calculation/options/types'; import type { CalculationStatuses } from 'stores/calculation/statuses/types'; import type { CalculationValues } from 'stores/calculation/values/types'; import type { InsuranceTableData } from 'stores/tables/insurance'; @@ -10,10 +10,11 @@ export interface BasePageProps { initialApolloState: NormalizedCacheObject; calculation?: { values: CalculationValues; - statuses?: CalculationStatuses; - options?: CalculationOptions; + statuses: CalculationStatuses; + options: CalculationOptions; + filters: Partial; }; - tables: { + tables?: { insurance: InsuranceTableData; }; }