@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
58 lines (52 loc) • 2.21 kB
JavaScript
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
};