@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
208 lines (176 loc) • 9.12 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = Row;
var _react = _interopRequireWildcard(require("react"));
var _appRuntime = require("@dhis2/app-runtime");
var _ui = require("@dhis2/ui");
var _FormulaFunctions = require("../../../../Utils/Functions/FormulaFunctions");
var _Models = require("../../../../Utils/Models");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const query = {
programIndicator: {
resource: "programIndicators",
id: _ref => {
let {
id
} = _ref;
return id;
},
params: {
fields: ["id", "displayName", "aggregationType", "analyticsType", "analyticsPeriodBoundaries[id,analyticsPeriodBoundaryType,boundaryTarget]", "filter", "programIndicatorGroups[id,displayName]", "legendSets[id,displayName]"]
}
}
};
function Row(props) {
var _data$programIndicato5;
//props
const programIndicator = props.programInd;
const id = programIndicator.id;
const {
loading,
error,
data
} = (0, _appRuntime.useDataQuery)(query, {
variables: {
id
}
}); //hooks
const engine = (0, _appRuntime.useDataEngine)();
const [dataElementsArray, setDataElementArray] = (0, _react.useState)([]);
const [attributesArray, setAttributesArray] = (0, _react.useState)([]);
const [constantsArray, setConstantsArray] = (0, _react.useState)([]);
(0, _react.useEffect)(() => {
var _data$programIndicato;
if (data !== null && data !== void 0 && (_data$programIndicato = data.programIndicator) !== null && _data$programIndicato !== void 0 && _data$programIndicato.filter) {
var _data$programIndicato2;
const tempArr = (0, _FormulaFunctions.getFormulaSources)(data === null || data === void 0 ? void 0 : (_data$programIndicato2 = data.programIndicator) === null || _data$programIndicato2 === void 0 ? void 0 : _data$programIndicato2.filter, "#{");
if (tempArr.length) {
getWordData(tempArr, 0), () => {};
}
}
}, [data]);
(0, _react.useEffect)(() => {
var _data$programIndicato3;
const tempArr = (0, _FormulaFunctions.getFormulaSources)(data === null || data === void 0 ? void 0 : (_data$programIndicato3 = data.programIndicator) === null || _data$programIndicato3 === void 0 ? void 0 : _data$programIndicato3.filter, "A{");
if (tempArr.length) {
getWordData(tempArr, 3), () => {};
}
}, [data]);
(0, _react.useEffect)(() => {
var _data$programIndicato4;
const tempArr = (0, _FormulaFunctions.getFormulaSources)(data === null || data === void 0 ? void 0 : (_data$programIndicato4 = data.programIndicator) === null || _data$programIndicato4 === void 0 ? void 0 : _data$programIndicato4.filter, "C{");
if (tempArr.length) {
getWordData(tempArr, 4), () => {};
}
}, [data]); //variables
const wordDtEl = [];
const attributes = [];
const constants = [];
const final_filter_result = (0, _FormulaFunctions.getFinalWordFormula)(data === null || data === void 0 ? void 0 : (_data$programIndicato5 = data.programIndicator) === null || _data$programIndicato5 === void 0 ? void 0 : _data$programIndicato5.filter, dataElementsArray, [], [], attributesArray, constantsArray, null, null); // if(loading){
// return <CircularLoader />
// }
// if(error){
// return <i>Something went wrong</i>
// }
async function getWordData(arr, type) {
//arr for array of id of datas to get their values, type indicates the data type of data eg dataElement=0 program indicator=1, reporting rates=2
const allPromises = [];
let i = 0;
for (i = 0; i < arr.length; i++) {
//reverse the element since here, for dataElement it goes as programStage, then
const proms = (0, _FormulaFunctions.getSummaryValueFromApi)(engine, arr[i]);
allPromises.push(proms);
}
i = 0;
await Promise.all(allPromises).then(value => {
if (type === _Models.dataTypes.DATA_ELEMENT) {
value.map(val => {
//We always return array just for uniformity
if (val.length > 1) {
//array of two elements first element is dataElement second element of array is category option combo
wordDtEl.push({
id: arr[i],
val: val[0] + " " + val[1]
});
} else {
//this is array of one element for data element that are just pure no category options
wordDtEl.push({
id: arr[i],
val: val[0]
});
}
++i;
});
}
if (type === _Models.dataTypes.ATTRIBUTES) {
//for Attribute
value.map(val => {
//We always return array just for uniformity
attributes.push({
id: arr[i],
val: val[0]
});
++i;
});
}
if (type === _Models.dataTypes.CONSTANTS) {
value.map(val => {
//We always return array just for uniformity
constants.push({
id: arr[i],
val: val[0]
});
++i;
});
}
if (wordDtEl.length === arr.length) {
//array is full so we reload to update UI
setDataElementArray(wordDtEl);
}
if (attributes.length === arr.length) {
//array is full so we reload to update UI
setAttributesArray(attributes);
}
if (constants.length === arr.length) {
//array is full so we reload to update UI
setConstantsArray(constants);
}
});
}
function OtherCells(prog) {
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, final_filter_result), /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, prog === null || prog === void 0 ? void 0 : prog.aggregationType), /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, prog === null || prog === void 0 ? void 0 : prog.analyticsType), /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, /*#__PURE__*/_react.default.createElement("ol", null, prog === null || prog === void 0 ? void 0 : prog.analyticsPeriodBoundaries.map(boundary => {
var _boundary$analyticsPe;
return /*#__PURE__*/_react.default.createElement("li", {
key: boundary.id
}, (0, _FormulaFunctions.lowerCaseAllWordsExceptFirstLetters)(boundary === null || boundary === void 0 ? void 0 : (_boundary$analyticsPe = boundary.analyticsPeriodBoundaryType) === null || _boundary$analyticsPe === void 0 ? void 0 : _boundary$analyticsPe.replace(/_/g, " ")));
}))), /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, /*#__PURE__*/_react.default.createElement("ol", null, prog === null || prog === void 0 ? void 0 : prog.legendSets.map(legend => {
return /*#__PURE__*/_react.default.createElement("li", {
key: legend.id
}, legend === null || legend === void 0 ? void 0 : legend.displayName);
}))), /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, /*#__PURE__*/_react.default.createElement("ol", null, prog === null || prog === void 0 ? void 0 : prog.programIndicatorGroups.map(group => {
return /*#__PURE__*/_react.default.createElement("li", {
key: group.id
}, group === null || group === void 0 ? void 0 : group.displayName);
}))));
}
return /*#__PURE__*/_react.default.createElement(_ui.DataTableRow, null, /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, programIndicator === null || programIndicator === void 0 ? void 0 : programIndicator.val), /*#__PURE__*/_react.default.createElement(_ui.DataTableCell, {
bordered: true
}, programIndicator === null || programIndicator === void 0 ? void 0 : programIndicator.location), OtherCells(data === null || data === void 0 ? void 0 : data.programIndicator));
}