UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

58 lines (52 loc) 2.21 kB
import React from "react"; import { useDataEngine } from "@dhis2/app-runtime"; import DictionaryContext from "../../../../../components/DictionaryAnalysis/Store/DictionaryContext"; import PropTypes from "prop-types"; import { useContext, useEffect } from "react"; import { getFinalWordFormula } from "../../../Utils/Functions/FormulaFunctions"; import { useGetData } from "../../../Utils/Hooks"; import { dataTypes } from "../../../Utils/Models"; import Error from "../Error/ErrorAPIResult"; import Loader from "../Loaders/Loader"; export default function DisplayFormula(props) { //props const formula = props.formula; const loc = props.location; //either its in numerator or denominator const storeResult = props.storeResult; const { values, setValues } = useContext(DictionaryContext); //hooks const engine = useDataEngine(); const { loading, error, data } = useGetData(formula, engine, loc); useEffect(() => { if (storeResult && typeof (data === null || data === void 0 ? void 0 : data.dataElements) != dataTypes.UNDEFINED) { var _values$dataElements; setValues({ ...values, ...{ dataElements: values === null || values === void 0 ? void 0 : (_values$dataElements = values.dataElements) === null || _values$dataElements === void 0 ? void 0 : _values$dataElements.concat(data === null || data === void 0 ? void 0 : data.dataElements) } }); } }, [data]); if (loading) { return /*#__PURE__*/React.createElement(Loader, { text: "" }); } if (error) { return /*#__PURE__*/React.createElement(Error, { error: error }); } return /*#__PURE__*/React.createElement("div", null, getFinalWordFormula(formula, data === null || data === void 0 ? void 0 : data.dataElements, data === null || data === void 0 ? void 0 : data.programIndicators, data === null || data === void 0 ? void 0 : data.dataSetReportingRates, data === null || data === void 0 ? void 0 : data.attributes, data === null || data === void 0 ? void 0 : data.constants, null, null)); } DisplayFormula.PropTypes = { formula: PropTypes.string.isRequired, location: PropTypes.string, storeResult: PropTypes.bool };