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