UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

164 lines (129 loc) 4.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = require("lodash"); var _constants = require("../constants"); 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; } const keysQuery = { keys: { resource: _constants.DATASTORE_FUNCTIONS_ENDPOINT } }; const generateQuery = keys => { return (0, _lodash.fromPairs)(keys === null || keys === void 0 ? void 0 : keys.map(key => [key, { resource: _constants.DATASTORE_FUNCTIONS_ENDPOINT, id: key }])); }; class CustomFunctions extends _dataSource.default { constructor(_ref) { let { label } = _ref; super({ resource: "", label, type: "customFunction" }); _defineProperty(this, "functions", void 0); _defineProperty(this, "keys", void 0); _defineProperty(this, "rules", void 0); _defineProperty(this, "query", void 0); } async setQuery(engine) { var _await$engine$query; this.keys = (_await$engine$query = await engine.query(keysQuery)) === null || _await$engine$query === void 0 ? void 0 : _await$engine$query.keys; this.query = generateQuery(this.keys); } async queryData(engine) { try { var _this$functions; await this.setQuery(engine); this.functions = Object.values(await engine.query(this.query)); this.rules = (0, _lodash.flattenDeep)((_this$functions = this.functions) === null || _this$functions === void 0 ? void 0 : _this$functions.map(func => { var _func$rules; return (_func$rules = func.rules) === null || _func$rules === void 0 ? void 0 : _func$rules.map(rule => ({ id: "".concat(func.id, ".").concat(rule.id), displayName: rule.name })); })); } catch (e) { console.error(e); this.functions = []; this.rules = []; } } async filter(engine, _ref2) { let { selectedGroup, page, searchKeyword } = _ref2; const filter = { group: undefined, search: undefined }; if (selectedGroup) { filter.group = selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.id; } if (searchKeyword) { filter.search = searchKeyword; } return this.getDataSources(engine, { filter, page }); } async getGroups(engine) { if (!this.functions) { await this.queryData(engine); } return this.functions; } async getDataSources(engine, _ref3) { var _filteredRules; let { filter } = _ref3; if (!this.functions) { await this.queryData(engine); } if ((0, _lodash.isEmpty)(filter)) { return { pager: { pageCount: 1 }, data: this.rules }; } let filteredRules = this.rules; if (!(0, _lodash.isArray)(filter) && filter !== null && filter !== void 0 && filter.group) { filteredRules = (0, _lodash.filter)(filteredRules, _ref4 => { let { id } = _ref4; return id.startsWith(filter === null || filter === void 0 ? void 0 : filter.group); }); } if (!(0, _lodash.isArray)(filter) && filter !== null && filter !== void 0 && filter.search) { filteredRules = (0, _lodash.filter)(filteredRules, _ref5 => { var _filter$search$toLowe, _filter$search; let { displayName } = _ref5; return displayName.toLowerCase().match(RegExp((_filter$search$toLowe = filter === null || filter === void 0 ? void 0 : (_filter$search = filter.search) === null || _filter$search === void 0 ? void 0 : _filter$search.toLowerCase()) !== null && _filter$search$toLowe !== void 0 ? _filter$search$toLowe : "")); }); } return Promise.resolve({ pager: { pageCount: 1 }, data: (_filteredRules = filteredRules) !== null && _filteredRules !== void 0 ? _filteredRules : [] }); } } exports.default = CustomFunctions;