UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

89 lines (77 loc) 2.47 kB
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 };