import { observer } from 'mobx-react-lite'; import { useStore } from 'stores/hooks'; import styled from 'styled-components'; import Alert from 'ui/elements/Alert'; import { Box, Flex } from 'ui/grid'; const Bold = styled.span` font-weight: bold; `; function Message(title, text) { return ( <> {title} {': '} {text} ); } const AlertWrapper = styled(Box)` margin: 0 0 5px 0; `; function getElementsErrors($calculation) { const errors = Object.values($calculation.$validation).map((validation) => { const elementErrors = validation.getMessages(); const elementTitle = validation.params.err_title; return elementErrors.map((error) => ( )); }); return errors; } function getPaymentsTableErrors($tables) { const { payments } = $tables; const messages = payments.validation.getMessages(); const title = payments.validation.params.err_title; return messages.map((text) => ); } function getInsuranceTableErrors($tables) { const { insurance } = $tables; const messages = insurance.validation.getMessages(); return messages.map((message) => ); } const Errors = observer(() => { const { $calculation, $tables } = useStore(); const hasElementsErrors = Object.values($calculation.$validation).some( (validation) => validation.hasErrors ); const hasPaymentsErrors = $tables.payments.validation.hasErrors; const hasInsuranceErrors = $tables.insurance.validation.hasErrors; if (!hasElementsErrors && !hasPaymentsErrors && !hasInsuranceErrors) { return ; } const elementsErrors = getElementsErrors($calculation); const paymentsErrors = getPaymentsTableErrors($tables); const insuranceErrors = getInsuranceTableErrors($tables); const errors = [...elementsErrors, ...paymentsErrors, ...insuranceErrors]; return {errors}; }); function Validation() { return ( ); } export default { id: 'validation', title: 'Ошибки', Component: Validation, };