@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
38 lines (35 loc) • 1.31 kB
JavaScript
import { useEffect, useState } from "react";
import { getProgramFromAttributesOrDtElPrg, getProgramFromProgramIndicator } from "../../Functions/IndicatorDataSourceFunction";
export function useGetIndicatorProgramSource(obj, engine) {
//obj strcture is { attr: [], prgInd: [] , prgDtEl: [] }
const [loading, setLoading] = useState(true);
const [error, setError] = useState(false);
const [data, setData] = useState(); //{"dataSetName:[dataElements in {id:"",displname:""}]}
useEffect(() => {
let attrArr = obj === null || obj === void 0 ? void 0 : obj.attr;
let proDtElArr = obj === null || obj === void 0 ? void 0 : obj.prgDtEl;
let prgIndArr = obj === null || obj === void 0 ? void 0 : obj.prgInd;
async function fetch() {
attrArr = await getProgramFromAttributesOrDtElPrg(engine, attrArr);
proDtElArr = await getProgramFromAttributesOrDtElPrg(engine, proDtElArr);
prgIndArr = await getProgramFromProgramIndicator(engine, prgIndArr);
}
fetch().then(() => {
const result = {
attr: attrArr,
prgInd: prgIndArr,
prgDtEl: proDtElArr
};
setData(result);
setLoading(false);
}).catch(error => {
setLoading(false);
setError(error);
});
}, []);
return {
loading,
error,
data
};
}