UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

160 lines (139 loc) 3.71 kB
// const query={ // // functions:{ // resource: 'dataStore/functions', // id: ({id})=>id, // } // } import { dataSourceTypes } from "../Models"; import { getDataSourceType } from "./FormulaTopBar"; 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; } } }; // export 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; } export async function getAllFunctions(engine) { const data = await engine.query(query2); return data === null || data === void 0 ? void 0 : data.functions; } export 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 } export 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; } export function displayType(href) { switch (getDataSourceType(href)) { case dataSourceTypes.DATA_ELEMENT: return "Data Element"; break; case dataSourceTypes.INDICATOR: return "Indicator"; break; case dataSourceTypes.PROGRAM_INDICATOR: return "Program Indicator"; break; case dataSourceTypes.DATA_ELEMENT_GROUP: return "Data Element Group"; break; case dataSourceTypes.INDICATOR_GROUP: return "Indicator Group"; break; case dataSourceTypes.FUNCTION: return "Function"; break; case dataSourceTypes.DATASET: return "Dataset"; break; default: return "Other"; } }