UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

84 lines (78 loc) 3.43 kB
import { useDataQuery } from "@dhis2/app-runtime"; import i18n from "@dhis2/d2-i18n"; import { filter } from "lodash"; import PropTypes from "prop-types"; import React, { useEffect, useMemo } from "react"; import Error from "../../../../Shared/Componets/Error/ErrorAPIResult"; import Loader from "../../../../Shared/Componets/Loaders/Loader"; import { dataElementDomainTypes } from "../../../../Utils/Models"; import DataSets from "./DataSets"; import Programs from "./Programs"; const query = { sources: { resource: "dataElementGroups", id: _ref => { let { id } = _ref; return id; }, params: { fields: ["dataElements[id,displayName,domainType]"] } } }; export default function DataSources(_ref2) { var _data$sources3, _data$sources3$dataEl; let { id } = _ref2; const { loading, error, data, refetch } = useDataQuery(query, { variables: { id } }); useEffect(() => { refetch({ id }); }, [id]); const tracker = useMemo(() => { var _data$sources; return filter(data === null || data === void 0 ? void 0 : (_data$sources = data.sources) === null || _data$sources === void 0 ? void 0 : _data$sources.dataElements, el => { return (el === null || el === void 0 ? void 0 : el.domainType) === dataElementDomainTypes.TRACKER; }); }, [data]); const aggregate = useMemo(() => { var _data$sources2; return filter(data === null || data === void 0 ? void 0 : (_data$sources2 = data.sources) === null || _data$sources2 === void 0 ? void 0 : _data$sources2.dataElements, el => { return (el === null || el === void 0 ? void 0 : el.domainType) === dataElementDomainTypes.AGGREGATE; }); }, [data]); if (loading) { return /*#__PURE__*/React.createElement(Loader, { text: "" }); } if (error) { return /*#__PURE__*/React.createElement(Error, { error: error }); } return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h3", null, i18n.t("Data sources (Datasets/Programs)"), " "), /*#__PURE__*/React.createElement("p", null, " ", i18n.t("Data elements in this group are captured from the following sources"), " "), (data === null || data === void 0 ? void 0 : (_data$sources3 = data.sources) === null || _data$sources3 === void 0 ? void 0 : (_data$sources3$dataEl = _data$sources3.dataElements) === null || _data$sources3$dataEl === void 0 ? void 0 : _data$sources3$dataEl.length) === 0 ? i18n.t("There are no Data Elements in this Data Element group") : "", (aggregate === null || aggregate === void 0 ? void 0 : aggregate.length) > 0 ? /*#__PURE__*/React.createElement("h4", null, i18n.t("For Aggregate Data Elements:"), " ") : "", (aggregate === null || aggregate === void 0 ? void 0 : aggregate.length) > 0 ? /*#__PURE__*/React.createElement(DataSets, { aggregate: aggregate }) : "", (tracker === null || tracker === void 0 ? void 0 : tracker.length) > 0 ? /*#__PURE__*/React.createElement("h4", null, i18n.t("For Tracker Data Elements:"), " ") : "", (tracker === null || tracker === void 0 ? void 0 : tracker.length) > 0 ? tracker.map(el => { return /*#__PURE__*/React.createElement(Programs, { id: el === null || el === void 0 ? void 0 : el.id, name: el === null || el === void 0 ? void 0 : el.displayName }); }) : ""); } DataSources.prototype = { id: PropTypes.string.isRequired };