UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

119 lines (107 loc) 3.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = require("lodash"); var _nativeDataSource = _interopRequireDefault(require("./nativeDataSource")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class EventDataItems extends _nativeDataSource.default { constructor() { super({ label: "Event Data Items", resource: "programTrackedEntityAttributes", dimensionItemType: "[PROGRAM_DATA_ELEMENT,PROGRAM_ATTRIBUTE]", filterType: "in", groupKey: "programId", groupResource: "programs", type: "programDataItem" }); this.dataSourcesQuery = { attributes: { resource: "programs", id: _ref => { let { id } = _ref; return id; }, params: { fields: ["id", "programTrackedEntityAttributes[trackedEntityAttribute[id,displayName,valueType,shortName]]"] } }, dataElements: { resource: "programDataElements", params: _ref2 => { let { id, page, filter } = _ref2; return { program: id, page, filter: ["valueType:eq:NUMBER", ...filter], fields: ["dataElement[id,displayName]", "displayName", "valueType", "shortName"] }; } } }; } async getDataSources(engine, _ref3) { let { page, programId, searchKeyword } = _ref3; if (!(0, _lodash.isEmpty)(programId)) { var _response$sources, _response$sources$pro, _response$dataElement, _response$dataElement2, _response$dataElement3; const response = await (engine === null || engine === void 0 ? void 0 : engine.query(this.dataSourcesQuery, { variables: { page, id: programId, filter: searchKeyword ? ["displayName:ilike:".concat(searchKeyword)] : [] } })); const trackedEntityAttributes = (0, _lodash.filter)(response === null || response === void 0 ? void 0 : (_response$sources = response.sources) === null || _response$sources === void 0 ? void 0 : (_response$sources$pro = _response$sources.programTrackedEntityAttributes) === null || _response$sources$pro === void 0 ? void 0 : _response$sources$pro.map(_ref4 => { let { trackedEntityAttribute } = _ref4; return trackedEntityAttribute; }), ["valueType", "NUMBER"]); const filteredTrackedEntityAttributes = searchKeyword ? (0, _lodash.filter)(trackedEntityAttributes, _ref5 => { let { displayName } = _ref5; return displayName.toLowerCase().match(RegExp(searchKeyword.toLowerCase())); }) : trackedEntityAttributes; const dataElements = response === null || response === void 0 ? void 0 : (_response$dataElement = response.dataElements) === null || _response$dataElement === void 0 ? void 0 : (_response$dataElement2 = _response$dataElement.programDataElements) === null || _response$dataElement2 === void 0 ? void 0 : _response$dataElement2.map(_ref6 => { let { dataElement } = _ref6; return dataElement; }); return { data: [...filteredTrackedEntityAttributes, ...dataElements], pager: response === null || response === void 0 ? void 0 : (_response$dataElement3 = response.dataElements) === null || _response$dataElement3 === void 0 ? void 0 : _response$dataElement3.pager }; } return { data: [], pager: {} }; } async filter(engine, _ref7) { let { page, selectedGroup, searchKeyword } = _ref7; return this.getDataSources(engine, { page, programId: selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.id, searchKeyword }); } } exports.default = EventDataItems;