UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

132 lines (109 loc) 3.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _dataSource = _interopRequireDefault(require("./dataSource")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /* eslint-disable no-unused-vars */ class NativeDataSource extends _dataSource.default { constructor(_ref) { let { label, resource, groupResource, dimensionItemType, groupKey, type, filterType } = _ref; super({ resource, label, type }); _defineProperty(this, "resource", void 0); _defineProperty(this, "groupResource", void 0); _defineProperty(this, "dimensionItemType", void 0); _defineProperty(this, "groupKey", void 0); _defineProperty(this, "filterType", void 0); _defineProperty(this, "groupsQuery", void 0); _defineProperty(this, "dataSourcesQuery", void 0); this.resource = resource; this.groupResource = groupResource; this.dimensionItemType = dimensionItemType; this.groupKey = groupKey; this.filterType = filterType !== null && filterType !== void 0 ? filterType : "eq"; this.groupsQuery = { groups: { resource: this === null || this === void 0 ? void 0 : this.groupResource, params: { fields: ["displayName", "id", "".concat(this === null || this === void 0 ? void 0 : this.resource, "[displayName,id,shortName,description,name]")] } } }; this.dataSourcesQuery = { sources: { resource: this.resource, params: _ref2 => { let { page, filter } = _ref2; return { page, totalPages: true, fields: ["displayName", "id", "shortName", "description", "name"], filter, order: "displayName:asc" }; } } }; this.getGroups = this.getGroups.bind(this); this.getDataSources = this.getDataSources.bind(this); this.filter = this.filter.bind(this); } async getGroups(engine) { var _await$engine$query, _await$engine$query$g; return (_await$engine$query = await engine.query(this.groupsQuery)) === null || _await$engine$query === void 0 ? void 0 : (_await$engine$query$g = _await$engine$query.groups) === null || _await$engine$query$g === void 0 ? void 0 : _await$engine$query$g["".concat(this.groupResource)]; } async getDataSources(engine, _ref3) { var _response$sources, _response$sources2; let { page, filter, programId } = _ref3; const response = await (engine === null || engine === void 0 ? void 0 : engine.query(this.dataSourcesQuery, { variables: { page, filter: filter !== null && filter !== void 0 ? filter : [] } })); return { data: response === null || response === void 0 ? void 0 : (_response$sources = response.sources) === null || _response$sources === void 0 ? void 0 : _response$sources[this.resource], pager: response === null || response === void 0 ? void 0 : (_response$sources2 = response.sources) === null || _response$sources2 === void 0 ? void 0 : _response$sources2.pager }; } async filter(engine, _ref4) { let { page, selectedGroup, searchKeyword } = _ref4; const filter = []; if (selectedGroup !== null && selectedGroup !== void 0 && selectedGroup.id) { filter.push("".concat(this.groupKey, ":eq:").concat(selectedGroup.id)); } if (searchKeyword) { filter.push("displayName:ilike:".concat(searchKeyword)); } return await this.getDataSources(engine, { page, filter }); } } exports.default = NativeDataSource;