This repository has been archived on 2025-05-09. You can view files and clone it, but cannot push or open issues or pull requests.
Владислав Чикалкин 7a043aae3a partial: rewrite reactions
2020-11-09 17:58:11 +03:00

88 lines
2.6 KiB
JavaScript

import { LoadingStatus } from 'client/common/loadingStatus';
import Spinner from 'client/Components/Spinner';
import { withStoreModal } from 'client/hocs/withStore';
import { useStores } from 'client/hooks/useStores';
import CalculationService from 'client/services/CalculationService';
import { Box, Flex } from 'client/UIKit/grid';
import initialOptions from 'core/Data/initialOptions';
import staticEntitiesList from 'core/Data/staticEntitiesList';
import React, { useEffect, useState } from 'react';
import Result from 'client/Components/Result';
import Modal from 'client/Elements/Modal';
import Results from './Results';
import Sections from './Sections';
const Calculation = () => {
const [status, setStatus] = useState(LoadingStatus.loading);
const { calculationStore } = useStores();
useEffect(() => {
Promise.all([
CalculationService.getEntities({
queries: initialOptions,
toOptions: true,
}),
CalculationService.getEntities({
queries: staticEntitiesList,
}),
CalculationService.getEntities({
queries: [
{
alias: 'insuranceCompany',
entityName: 'account',
where: { evo_account_type: 100000002, statecode: 0 },
fields: ['accountid', 'name', 'evo_type_ins_policy'],
many: true,
},
],
toOptions: true,
}),
])
.then(
([
{ entities: initialOptions },
{ entities: staticEntities },
{ entities: insuranceCompanies },
]) => {
calculationStore.applyOptions(initialOptions);
calculationStore.applyStaticData(staticEntities);
calculationStore.setTableColumns('tableInsurance')({
options: { ...insuranceCompanies },
});
setStatus(LoadingStatus.ready);
},
)
.catch(err => {
setStatus(LoadingStatus.error);
throw err;
});
}, []);
if (status === LoadingStatus.loading) {
return <Spinner />;
}
if (status === LoadingStatus.error) {
const ServerError = Result[500];
return <ServerError />;
}
const ModalComponent = withStoreModal(Modal);
return (
<Box mx={['0', '1%', '1%', '1.5%', '2%', '10%']}>
<Flex flexWrap="wrap" mb="50px">
<Sections flex={['1', '1', '1', '3']} />
<Results
flex={['1', '1', '1', '1']}
justifyContent="center"
// position={['sticky', 'sticky', 'sticky', 'relative']}
// bottom={[0, 0, 0, null]}
/>
<ModalComponent />
</Flex>
</Box>
);
};
export default Calculation;