UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

75 lines 14.1 kB
import { GroupNavigationConstants } from "../../model/group-navigation-constants"; export class DoubleDrawerUtils { constructor() { } static hasItemChildren(item) { return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value; } static hasItemAutoOpenView(item) { return item?.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_IS_AUTO_SELECT)?.value; } static hasItemView(item) { return item?.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_CONTAINS_FILTER)?.value; } static isItemAndNodeEqual(item, node) { return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath; } static extractChildCaseIds(item) { return item?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_CHILD_ITEM_IDS)?.value; } /** * Resolves order configured either on a process menu item or on a custom nae.json navigation item. */ static resolveOrder(item) { const navigationOrder = typeof item?.navigation === 'object' ? item.navigation.order : undefined; const processOrder = item?.resource?.immediateData .find(field => field.stringId === GroupNavigationConstants.ITEM_FIELD_ID_ORDER)?.value; const order = navigationOrder ?? processOrder; return typeof order === 'number' && Number.isFinite(order) ? order : undefined; } /** * Applies optional explicit order over the caller-provided fallback order. Process items must be supplied in * childItemIds order; custom nae.json items follow in their declaration order. Equal or missing values keep that * stable fallback, while every item without an explicit order is placed after explicitly ordered items. */ static sortByOrder(items) { return items .map((item, index) => ({ item, index, order: this.resolveOrder(item) })) .sort((first, second) => { if (first.order === undefined && second.order === undefined) { return first.index - second.index; } if (first.order === undefined) { return 1; } if (second.order === undefined) { return -1; } return first.order - second.order || first.index - second.index; }) .map(entry => entry.item); } static representsRootNode(item) { return item?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH).value === '/'; } static resolveAccessRoles(filter, roleType) { const allowedRoles = filter.immediateData.find(f => f.stringId === roleType)?.options; if (!allowedRoles || Object.keys(allowedRoles).length === 0) return undefined; const roles = []; Object.keys(allowedRoles).forEach(combined => { const parts = combined.split(':'); roles.push({ processId: parts[1], roleId: parts[0], }); }); return roles; } static isNodeCorrespondingToItem(node, item) { return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath; } static findTaskIdInCase(useCase, transId) { return useCase.tasks.find(taskPair => taskPair.transition === transId).task; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlLWRyYXdlci11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWRvdWJsZS1kcmF3ZXIvdXRpbC9kb3VibGUtZHJhd2VyLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBS2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsZ0JBQWUsQ0FBQztJQUVULE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBb0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLHdCQUF3QixDQUFDLDBCQUEwQixDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzdILENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBb0I7UUFDbEQsT0FBTyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLHdCQUF3QixDQUFDLDRCQUE0QixDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ2hJLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQW9CO1FBQzFDLE9BQU8sSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyx3QkFBd0IsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUM5SCxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQW9CLEVBQUUsSUFBcUI7UUFDeEUsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFF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TUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzlFLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ25CLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxJQUFxQixFQUFFLElBQW9CO1FBQy9FLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQzFJLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBYSxFQUFFLE9BQWU7UUFDekQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hGLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmF2aWdhdGlvbkl0ZW19IGZyb20gXCIuLi8uLi9tb2RlbC9uYXZpZ2F0aW9uLWNvbmZpZ3NcIjtcbmltcG9ydCB7R3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzfSBmcm9tIFwiLi4vLi4vbW9kZWwvZ3JvdXAtbmF2aWdhdGlvbi1jb25zdGFudHNcIjtcbmltcG9ydCB7VXJpTm9kZVJlc291cmNlfSBmcm9tIFwiLi4vLi4vbW9kZWwvdXJpLXJlc291cmNlXCI7XG5pbXBvcnQge0Nhc2V9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2Nhc2VcIjtcbmltcG9ydCB7Um9sZUFjY2Vzc30gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbnMvc2NoZW1hXCI7XG5cbmV4cG9ydCBjbGFzcyBEb3VibGVEcmF3ZXJVdGlscyB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0l0ZW1DaGlsZHJlbihpdGVtOiBOYXZpZ2F0aW9uSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZT8uaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfSEFTX0NISUxEUkVOKT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBoYXNJdGVtQXV0b09wZW5WaWV3KGl0ZW06IE5hdmlnYXRpb25JdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpdGVtPy5yZXNvdXJjZT8uaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfSVNfQVVUT19TRUxFQ1QpPy52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0l0ZW1WaWV3KGl0ZW06IE5hdmlnYXRpb25JdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpdGVtPy5yZXNvdXJjZT8uaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfQ09OVEFJTlNfRklMVEVSKT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0l0ZW1BbmROb2RlRXF1YWwoaXRlbTogTmF2aWdhdGlvbkl0ZW0sIG5vZGU6IFVyaU5vZGVSZXNvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXRlbS5yZXNvdXJjZT8uaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfTk9ERV9QQVRIKT8udmFsdWUgPT09IG5vZGUudXJpUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGV4dHJhY3RDaGlsZENhc2VJZHMoaXRlbTogQ2FzZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/LmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IEdyb3VwTmF2aWdhdGlvbkNvbnN0YW50cy5JVEVNX0ZJRUxEX0lEX0NISUxEX0lURU1fSURTKT8udmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXMgb3JkZXIgY29uZmlndXJlZCBlaXRoZXIgb24gYSBwcm9jZXNzIG1lbnUgaXRlbSBvciBvbiBhIGN1c3RvbSBuYWUuanNvbiBuYXZpZ2F0aW9uIGl0ZW0uXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZXNvbHZlT3JkZXIoaXRlbTogTmF2aWdhdGlvbkl0ZW0pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uT3JkZXIgPSB0eXBlb2YgaXRlbT8ubmF2aWdhdGlvbiA9PT0gJ29iamVjdCcgPyBpdGVtLm5hdmlnYXRpb24ub3JkZXIgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NPcmRlciA9IGl0ZW0/LnJlc291cmNlPy5pbW1lZGlhdGVEYXRhXG4gICAgICAgICAgICAuZmluZChmaWVsZCA9PiBmaWVsZC5zdHJpbmdJZCA9PT0gR3JvdXBOYXZpZ2F0aW9uQ29uc3RhbnRzLklURU1fRklFTERfSURfT1JERVIpPy52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBuYXZpZ2F0aW9uT3JkZXIgPz8gcHJvY2Vzc09yZGVyO1xuXG4gICAgICAgIHJldHVybiB0eXBlb2Ygb3JkZXIgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZShvcmRlcikgPyBvcmRlciA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIG9wdGlvbmFsIGV4cGxpY2l0IG9yZGVyIG92ZXIgdGhlIGNhbGxlci1wcm92aWRlZCBmYWxsYmFjayBvcmRlci4gUHJvY2VzcyBpdGVtcyBtdXN0IGJlIHN1cHBsaWVkIGluXG4gICAgICogY2hpbGRJdGVtSWRzIG9yZGVyOyBjdXN0b20gbmFlLmpzb24gaXRlbXMgZm9sbG93IGluIHRoZWlyIGRlY2xhcmF0aW9uIG9yZGVyLiBFcXVhbCBvciBtaXNzaW5nIHZhbHVlcyBrZWVwIHRoYXRcbiAgICAgKiBzdGFibGUgZmFsbGJhY2ssIHdoaWxlIGV2ZXJ5IGl0ZW0gd2l0aG91dCBhbiBleHBsaWNpdCBvcmRlciBpcyBwbGFjZWQgYWZ0ZXIgZXhwbGljaXRseSBvcmRlcmVkIGl0ZW1zLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgc29ydEJ5T3JkZXIoaXRlbXM6IEFycmF5PE5hdmlnYXRpb25JdGVtPik6IEFycmF5PE5hdmlnYXRpb25JdGVtPiB7XG4gICAgICAgIHJldHVybiBpdGVtc1xuICAgICAgICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7aXRlbSwgaW5kZXgsIG9yZGVyOiB0aGlzLnJlc29sdmVPcmRlcihpdGVtKX0pKVxuICAgICAgICAgICAgLnNvcnQoKGZpcnN0LCBzZWNvbmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3Qub3JkZXIgPT09IHVuZGVmaW5lZCAmJiBzZWNvbmQub3JkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3QuaW5kZXggLSBzZWNvbmQuaW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmaXJzdC5vcmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2Vjb25kLm9yZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Qub3JkZXIgLSBzZWNvbmQub3JkZXIgfHwgZmlyc3QuaW5kZXggLSBzZWNvbmQuaW5kZXg7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChlbnRyeSA9PiBlbnRyeS5pdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlcHJlc2VudHNSb290Tm9kZShpdGVtOiBDYXNlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpdGVtPy5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9OT0RFX1BBVEgpLnZhbHVlID09PSAnLyc7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZXNvbHZlQWNjZXNzUm9sZXMoZmlsdGVyOiBDYXNlLCByb2xlVHlwZTogc3RyaW5nKTogQXJyYXk8Um9sZUFjY2Vzcz4gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhbGxvd2VkUm9sZXMgPSBmaWx0ZXIuaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gcm9sZVR5cGUpPy5vcHRpb25zO1xuICAgICAgICBpZiAoIWFsbG93ZWRSb2xlcyB8fCBPYmplY3Qua2V5cyhhbGxvd2VkUm9sZXMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qgcm9sZXMgPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXMoYWxsb3dlZFJvbGVzKS5mb3JFYWNoKGNvbWJpbmVkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gY29tYmluZWQuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIHJvbGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHByb2Nlc3NJZDogcGFydHNbMV0sXG4gICAgICAgICAgICAgICAgcm9sZUlkOiBwYXJ0c1swXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvbGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNOb2RlQ29ycmVzcG9uZGluZ1RvSXRlbShub2RlOiBVcmlOb2RlUmVzb3VyY2UsIGl0ZW06IE5hdmlnYXRpb25JdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpdGVtLnJlc291cmNlPy5pbW1lZGlhdGVEYXRhLmZpbmQoZiA9PiBmLnN0cmluZ0lkID09PSBHcm91cE5hdmlnYXRpb25Db25zdGFudHMuSVRFTV9GSUVMRF9JRF9OT0RFX1BBVEgpPy52YWx1ZSA9PT0gbm9kZS51cmlQYXRoXG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kVGFza0lkSW5DYXNlKHVzZUNhc2U6IENhc2UsIHRyYW5zSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB1c2VDYXNlLnRhc2tzLmZpbmQodGFza1BhaXIgPT4gdGFza1BhaXIudHJhbnNpdGlvbiA9PT0gdHJhbnNJZCkudGFzaztcbiAgICB9XG5cbn1cbiJdfQ==