@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
84 lines (78 loc) • 3.43 kB
JavaScript
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
};