@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
102 lines (94 loc) • 3.01 kB
JavaScript
import { useEffect, useState } from "react";
import { getDataSetsArray, getNumDenMatch } from "../Functions/DataElementGroupSetFunctions";
import { getFormulaSources, getWordDataForAll } from "../Functions/FormulaFunctions";
import { dataTypesInitials } from "../Models";
export function useGetData(formula, engine, loc) {
const [loading, setLoading] = useState(true);
const [error, setError] = useState(false);
const [data, setData] = useState();
useEffect(() => {
let arrDtEle = getFormulaSources(formula, dataTypesInitials.DATA_ELEMENT);
let arrProgInd = getFormulaSources(formula, dataTypesInitials.PROGRAM_INDICATOR);
let arrDtSetRep = getFormulaSources(formula, dataTypesInitials.DATASET_REPORTING_RATES);
let arrAttr = getFormulaSources(formula, dataTypesInitials.ATTRIBUTES);
let arrConst = getFormulaSources(formula, dataTypesInitials.CONSTANTS);
async function fetch() {
arrDtEle = await getWordDataForAll(engine, arrDtEle, loc);
arrProgInd = await getWordDataForAll(engine, arrProgInd, loc);
arrDtSetRep = await getWordDataForAll(engine, arrDtSetRep, loc);
arrAttr = await getWordDataForAll(engine, arrAttr, loc);
arrConst = await getWordDataForAll(engine, arrConst, loc);
}
fetch().then(() => {
const result = {
dataElements: arrDtEle,
programIndicators: arrProgInd,
dataSetReportingRates: arrDtSetRep,
attributes: arrAttr,
constants: arrConst
};
setData(result); // setData((prevState => {return prevState.concat(result) }))
setLoading(false);
}).catch(error => {
setLoading(false);
setError(error);
});
}, []);
return {
loading,
error,
data
};
}
export function useGetDataSet(array, engine) {
const [loading, setLoading] = useState(true);
const [error, setError] = useState(false);
const [data, setData] = useState(); //{"dataSetName:[dataElements in {id:"",displname:""}]}
useEffect(() => {
let tempArr;
async function fetch() {
tempArr = await getDataSetsArray(engine, array);
}
fetch().then(() => {
const result = {
dataSets: tempArr
};
setData(result);
setLoading(false);
}).catch(error => {
setLoading(false);
setError(error);
});
}, []);
return {
loading,
error,
data
};
}
export function useGetNumDenMatch(array, engine) {
const [loading, setLoading] = useState(true);
const [error, setError] = useState(false);
const [data, setData] = useState();
useEffect(() => {
let tempArr;
async function fetch() {
tempArr = await getNumDenMatch(engine, array);
}
fetch().then(() => {
const result = {
matches: tempArr
};
setData(result);
setLoading(false);
}).catch(error => {
setLoading(false);
setError(error);
});
}, [array === null || array === void 0 ? void 0 : array.length]);
return {
loading,
error,
data
};
}