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