@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
89 lines (77 loc) • 2.47 kB
JavaScript
import React from "react";
import { useDataEngine } from "@dhis2/app-runtime";
import propTypes from "prop-types";
import { useEffect, useState } from "react";
import { dataSourceTypes } from "../../../Utils/Models";
import DataElementPage from "../../DataElement";
import DataElementGroupPage from "../../DataElementGroup";
import FunctionPage2 from "../../Function/index2";
import Index from "../../Indicator/Index";
import IndicatorGroupPage from "../../IndicatorGroup";
import ProgramIndicatorPage from "../../ProgramIndicator";
import ModalLoader from "../../Loaders/ModalLoader";
import { getDataSourceType } from "../../../../../core/utils/dataSource";
export default function DataSourceSelector(_ref) {
let {
id
} = _ref;
const engine = useDataEngine();
const [dataType, setDataType] = useState();
const [loading, setLoading] = useState(false);
useEffect(() => {
async function getType() {
setLoading(true);
try {
var _await$getDataSourceT;
setDataType((_await$getDataSourceT = await getDataSourceType(engine, id)) === null || _await$getDataSourceT === void 0 ? void 0 : _await$getDataSourceT.resource);
} catch (e) {
console.error(e);
} finally {
setLoading(false);
}
}
getType();
}, [engine, id]);
if (loading) {
return /*#__PURE__*/React.createElement(ModalLoader, null);
}
if (dataType === dataSourceTypes.INDICATOR) {
return /*#__PURE__*/React.createElement(Index, {
id: id
});
}
if (dataType === dataSourceTypes.DATA_ELEMENT) {
return /*#__PURE__*/React.createElement(DataElementPage, {
id: id
});
}
if (dataType === dataSourceTypes.PROGRAM_DATA_ELEMENT) {
return /*#__PURE__*/React.createElement(DataElementPage, {
id: id
});
}
if (dataType === dataSourceTypes.PROGRAM_INDICATOR) {
return /*#__PURE__*/React.createElement(ProgramIndicatorPage, {
id: id
});
}
if (dataType === dataSourceTypes.DATA_ELEMENT_GROUP) {
return /*#__PURE__*/React.createElement(DataElementGroupPage, {
id: id
});
}
if (dataType === dataSourceTypes.INDICATOR_GROUP) {
return /*#__PURE__*/React.createElement(IndicatorGroupPage, {
id: id
});
}
if (dataType === dataSourceTypes.FUNCTION) {
return /*#__PURE__*/React.createElement(FunctionPage2, {
id: id
});
}
return null;
}
DataSourceSelector.propTypes = {
id: propTypes.string.isRequired
};