UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

175 lines (148 loc) 4.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.displayType = displayType; exports.getAllFunctions = getAllFunctions; exports.getAllId = getAllId; exports.getFunctionDetails = getFunctionDetails; exports.getIdDetails = getIdDetails; var _Models = require("../Models"); var _FormulaTopBar = require("./FormulaTopBar"); // const query={ // // functions:{ // resource: 'dataStore/functions', // id: ({id})=>id, // } // } const query = { identifiableObjects: { resource: "identifiableObjects", id: _ref => { let { id } = _ref; return id; }, params: { fields: ["id", "displayName", "href", "description", "code", "lastUpdated"] } } }; const query2 = { functions: { resource: "dataStore/functions" } }; const query3 = { functionDetails: { resource: "dataStore/functions", id: _ref2 => { let { id } = _ref2; return id; } } }; // async function getFunctionDetails(engine, arr) { const allPromises = arr === null || arr === void 0 ? void 0 : arr.map(id => { return new Promise((resolve, reject) => { resolve(getDetailsFunctionFromApi(engine, id)); }); }); return await Promise.all(allPromises).then(value => { return value.map((val, index) => { return val; }); }); } async function getDetailsFunctionFromApi(engine, id) { const data = await engine.query(query3, { variables: { id } }); return data === null || data === void 0 ? void 0 : data.functionDetails; } async function getDetails(engine, id) { const data = await engine.query(query, { variables: { id } }); return data === null || data === void 0 ? void 0 : data.identifiableObjects; } async function getAllFunctions(engine) { const data = await engine.query(query2); return data === null || data === void 0 ? void 0 : data.functions; } async function getIdDetails(engine, arr) { const allPromises = arr === null || arr === void 0 ? void 0 : arr.map(id => { return new Promise((resolve, reject) => { resolve(getDetails(engine, id)); }); }); return await Promise.all(allPromises).then(value => { return value.map((val, index) => { return val; }); }); } function findUid(str) { //find something that starts as an UId const re = /[a-zA-Z]/g; const pos = str === null || str === void 0 ? void 0 : str.search(re); return pos; } function isValidUId(testStr) { const res = testStr.search("^[A-Za-z0-9]+$"); //using search method is faster return res >= 0; //if it finds anything that is not listed in the regex it returns -1 } function getAllId(json) { var _str; const allId = []; let str = json; let pos = findUid((_str = str) === null || _str === void 0 ? void 0 : _str.toString()); while (pos >= 0) { str = str.substring(pos); const testStr = str.substring(0, 11); if (isValidUId(testStr)) { allId.push(testStr); str = str.substring(11); } else { const failInd = str.search(/[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/); //helps to reduce string length much faster str = str.substring(failInd); } pos = findUid(str); } return allId; } function displayType(href) { switch ((0, _FormulaTopBar.getDataSourceType)(href)) { case _Models.dataSourceTypes.DATA_ELEMENT: return "Data Element"; break; case _Models.dataSourceTypes.INDICATOR: return "Indicator"; break; case _Models.dataSourceTypes.PROGRAM_INDICATOR: return "Program Indicator"; break; case _Models.dataSourceTypes.DATA_ELEMENT_GROUP: return "Data Element Group"; break; case _Models.dataSourceTypes.INDICATOR_GROUP: return "Indicator Group"; break; case _Models.dataSourceTypes.FUNCTION: return "Function"; break; case _Models.dataSourceTypes.DATASET: return "Dataset"; break; default: return "Other"; } }