UNPKG

dynamic-display-shared

Version:

A library for dynamic view

107 lines 16.8 kB
import { ParametersGroup } from './entity-details.view-model'; import { plural } from 'pluralize'; import { getTime } from '../../infrastructure/date.utility'; import { EntityTypeInstance } from './entity-type-instance'; export function getMasterEntityViewModel(entity) { return getViewModel(entity, true); } export function getEntityViewModel(entity) { return getViewModel(entity, false); } // function getTime(date?: Date) { // return date != null ? new Date(date).getTime() : 0; // } function getViewModel(entity, isMaster) { const groupsMap = new Map(); entity.parameters.forEach((param) => { const key = param.parametersGroupOrder; const collection = groupsMap.get(key); if (!collection) { groupsMap.set(key, [param]); } else { collection.push(param); } }); // tslint:disable-next-line: one-variable-per-declaration const groups = [...groupsMap.entries()].sort() .map((params) => { const grp = new ParametersGroup(); grp.order = params[0]; grp.parameters = params[1] .map(p => { if (isSimpleParameter(p)) { return p; } else { const entityParameter = p; return { ...entityParameter, value: entityParameter.value ? entityParameter.value.map(ntt => getEntityViewModel(ntt)) : [] }; } }) .sort((p1, p2) => p1.order - p2.order); return grp; }); const processes = entity.processes .map(prcs => ({ ...prcs, entities: prcs.entities.map(ntt => getEntityViewModel(ntt)), editEntities: prcs.editEntities ? prcs.editEntities.map(ntt => getEntityViewModel(ntt)) : null, // resAppExpansionView: prcs.resAppExpansionView ? getEntityViewModel(prcs.resAppExpansionView) : null, resAppToggledView: prcs.resAppToggledView ? getEntityViewModel(prcs.resAppToggledView) : null, })) .sort((p1, p2) => p1.order - p2.order); const comments = entity.comments ? entity.comments.map(c => { const newComment = Object.assign(c, {}); newComment.date = new Date(c.date); return newComment; }).sort((c1, c2) => getTime(c2.date) - getTime(c1.date)) : []; processes.forEach(p => { p.statuses = p.statuses.sort((s1, s2) => s1.order - s2.order); p.statuses.forEach(status => status.entitiesStatus = status.entitiesStatus.sort((e1, e2) => getTime(e2.date) - getTime(e1.date))); }); const entityBase = entity; const viewModel = { ...entityBase, id: entity.id, description: entity.entityMetadata.description, shortDescription: entity.entityMetadata.shortDescription, type: entity.entityMetadata.id, parametersGroups: groups, processes, comments, gisIdFieldName: entity.entityMetadata.gisIdFieldName, gisLayers: entity.entityMetadata.gisLayers, gisBs: entity.entityMetadata.gisBs, }; if (isMaster) { const masterViewModel = { ...viewModel, parametersGroups: groups.filter(group => group.order !== 0 && group.order !== 1), headersParameters: groups.find(group => group.order === 0), subHeadersParameters: groups.find(group => group.order === 1), }; return masterViewModel; } else { return viewModel; } } export function isSimpleParameter(parameter) { return parameter && 'valueCssClassName' in parameter; } export function isEntityParameter(parameter) { return parameter && 'isDisplayEntityType' in parameter; } export function getPluralEntityTypeName(metadataId) { return plural(EntityTypeInstance[metadataId]); } export function getSimpleParameters(parameters) { return parameters.filter(p => isSimpleParameter(p)).map(p => p); } export function getEntityParameters(parameters) { return parameters.filter(p => isEntityParameter(p)).map(p => p); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tb2RlbC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWRpc3BsYXktc2hhcmVkL3NyYy9saWIvc2hhcmVkL21vZGVsL3ZpZXctbW9kZWwuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBMEIsZUFBZSxFQUFnQyxNQUFNLDZCQUE2QixDQUFDO0FBRXBILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUFjO0lBQ3JELE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQWlDLENBQUM7QUFDcEUsQ0FBQztBQUNELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFjO0lBQy9DLE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBQ0Qsa0NBQWtDO0FBQ2xDLHdEQUF3RDtBQUN4RCxJQUFJO0FBQ0osU0FBUyxZQUFZLENBQUMsTUFBYyxFQUFFLFFBQWlCO0lBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDbEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM3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RSxDQUFDLENBQTZCLENBQUMsQ0FBQztBQUM5RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5QmFzZSB9IGZyb20gJy4vZW50aXR5JztcclxuaW1wb3J0IHsgRW50aXR5RGV0YWlsc1ZpZXdNb2RlbCwgUGFyYW1ldGVyc0dyb3VwLCBNYXN0ZXJFbnRpdHlEZXRhaWxzVmlld01vZGVsIH0gZnJvbSAnLi9lbnRpdHktZGV0YWlscy52aWV3LW1vZGVsJztcclxuaW1wb3J0IHsgQW55UGFyYW1ldGVyLCBTaW1wbGVQYXJhbWV0ZXIsIEVudGl0eVBhcmFtZXRlciwgRW50aXR5Vmlld01vZGVsUGFyYW1ldGVyIH0gZnJvbSAnLi9lbnRpdHktcGFyYW1ldGVyJztcclxuaW1wb3J0IHsgcGx1cmFsIH0gZnJvbSAncGx1cmFsaXplJztcclxuaW1wb3J0IHsgZ2V0VGltZSB9IGZyb20gJy4uLy4uL2luZnJhc3RydWN0dXJlL2RhdGUudXRpbGl0eSc7XHJcbmltcG9ydCB7IEVudGl0eVR5cGVJbnN0YW5jZSB9IGZyb20gJy4vZW50aXR5LXR5cGUtaW5zdGFuY2UnO1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFzdGVyRW50aXR5Vmlld01vZGVsKGVudGl0eTogRW50aXR5KTogTWFzdGVyRW50aXR5RGV0YWlsc1ZpZXdNb2RlbCB7XHJcbiAgcmV0dXJuIGdldFZpZXdNb2RlbChlbnRpdHksIHRydWUpIGFzIE1hc3RlckVudGl0eURldGFpbHNWaWV3TW9kZWw7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudGl0eVZpZXdNb2RlbChlbnRpdHk6IEVudGl0eSk6IEVudGl0eURldGFpbHNWaWV3TW9kZWwge1xyXG4gIHJldHVybiBnZXRWaWV3TW9kZWwoZW50aXR5LCBmYWxzZSk7XHJcbn1cclxuLy8gZnVuY3Rpb24gZ2V0VGltZShkYXRlPzogRGF0ZSkge1xyXG4vLyAgIHJldHVybiBkYXRlICE9IG51bGwgPyBuZXcgRGF0ZShkYXRlKS5nZXRUaW1lKCkgOiAwO1xyXG4vLyB9XHJcbmZ1bmN0aW9uIGdldFZpZXdNb2RlbChlbnRpdHk6IEVudGl0eSwgaXNNYXN0ZXI6IGJvb2xlYW4pOiBFbnRpdHlEZXRhaWxzVmlld01vZGVsIHtcclxuICBjb25zdCBncm91cHNNYXAgPSBuZXcgTWFwPG51bWJlciwgQW55UGFyYW1ldGVyW10+KCk7XHJcbiAgZW50aXR5LnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgIGNvbnN0IGtleSA9IHBhcmFtLnBhcmFtZXRlcnNHcm91cE9yZGVyO1xyXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IGdyb3Vwc01hcC5nZXQoa2V5KTtcclxuICAgIGlmICghY29sbGVjdGlvbikge1xyXG4gICAgICBncm91cHNNYXAuc2V0KGtleSwgW3BhcmFtXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2xsZWN0aW9uLnB1c2gocGFyYW0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb25lLXZhcmlhYmxlLXBlci1kZWNsYXJhdGlvblxyXG4gIGNvbnN0IGdyb3VwczogUGFyYW1ldGVyc0dyb3VwW10gPSBbLi4uZ3JvdXBzTWFwLmVudHJpZXMoKV0uc29ydCgpXHJcbiAgICAubWFwKChwYXJhbXMpID0+IHtcclxuICAgICAgY29uc3QgZ3JwID0gbmV3IFBhcmFtZXRlcnNHcm91cCgpO1xyXG4gICAgICBncnAub3JkZXIgPSBwYXJhbXNbMF07XHJcbiAgICAgIGdycC5wYXJhbWV0ZXJzID0gcGFyYW1zWzFdXHJcbiAgICAgICAgLm1hcChwID0+IHtcclxuICAgICAgICAgIGlmIChpc1NpbXBsZVBhcmFtZXRlcihwKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVudGl0eVBhcmFtZXRlciA9IHAgYXMgRW50aXR5UGFyYW1ldGVyO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIC4uLmVudGl0eVBhcmFtZXRlcixcclxuICAgICAgICAgICAgICB2YWx1ZTogZW50aXR5UGFyYW1ldGVyLnZhbHVlID8gZW50aXR5UGFyYW1ldGVyLnZhbHVlLm1hcChudHQgPT4gZ2V0RW50aXR5Vmlld01vZGVsKG50dCkpIDogW11cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zb3J0KChwMSwgcDIpID0+IHAxLm9yZGVyIC0gcDIub3JkZXIpO1xyXG4gICAgICByZXR1cm4gZ3JwO1xyXG4gICAgfVxyXG4gICAgKTtcclxuICBjb25zdCBwcm9jZXNzZXMgPSBlbnRpdHkucHJvY2Vzc2VzXHJcbiAgICAubWFwKHByY3MgPT4gKHtcclxuICAgICAgLi4ucHJjcyxcclxuICAgICAgZW50aXRpZXM6IHByY3MuZW50aXRpZXMubWFwKG50dCA9PiBnZXRFbnRpdHlWaWV3TW9kZWwobnR0KSksXHJcbiAgICAgIGVkaXRFbnRpdGllczogcHJjcy5lZGl0RW50aXRpZXMgPyBwcmNzLmVkaXRFbnRpdGllcy5tYXAobnR0ID0+IGdldEVudGl0eVZpZXdNb2RlbChudHQpKSA6IG51bGwsXHJcbiAgICAgIC8vIHJlc0FwcEV4cGFuc2lvblZpZXc6IHByY3MucmVzQXBwRXhwYW5zaW9uVmlldyA/IGdldEVudGl0eVZpZXdNb2RlbChwcmNzLnJlc0FwcEV4cGFuc2lvblZpZXcpIDogbnVsbCxcclxuICAgICAgcmVzQXBwVG9nZ2xlZFZpZXc6IHByY3MucmVzQXBwVG9nZ2xlZFZpZXcgPyBnZXRFbnRpdHlWaWV3TW9kZWwocHJjcy5yZXNBcHBUb2dnbGVkVmlldykgOiBudWxsLFxyXG4gICAgfSkpXHJcbiAgICAuc29ydCgocDEsIHAyKSA9PiBwMS5vcmRlciAtIHAyLm9yZGVyKTtcclxuICBjb25zdCBjb21tZW50cyA9IGVudGl0eS5jb21tZW50cyA/IGVudGl0eS5jb21tZW50cy5tYXAoYyA9PiB7XHJcbiAgICBjb25zdCBuZXdDb21tZW50ID0gT2JqZWN0LmFzc2lnbihjLCB7fSk7XHJcbiAgICBuZXdDb21tZW50LmRhdGUgPSBuZXcgRGF0ZShjLmRhdGUpO1xyXG4gICAgcmV0dXJuIG5ld0NvbW1lbnQ7XHJcbiAgfSkuc29ydCgoYzEsIGMyKSA9PiBnZXRUaW1lKGMyLmRhdGUpIC0gZ2V0VGltZShjMS5kYXRlKSkgOiBbXTtcclxuXHJcbiAgcHJvY2Vzc2VzLmZvckVhY2gocCA9PiB7XHJcbiAgICBwLnN0YXR1c2VzID0gcC5zdGF0dXNlcy5zb3J0KChzMSwgczIpID0+IHMxLm9yZGVyIC0gczIub3JkZXIpO1xyXG4gICAgcC5zdGF0dXNlcy5mb3JFYWNoKHN0YXR1cyA9PiBzdGF0dXMuZW50aXRpZXNTdGF0dXMgPSBzdGF0dXMuZW50aXRpZXNTdGF0dXMuc29ydCgoZTEsIGUyKSA9PiBnZXRUaW1lKGUyLmRhdGUpIC0gZ2V0VGltZShlMS5kYXRlKSkpO1xyXG4gIH0pO1xyXG4gIGNvbnN0IGVudGl0eUJhc2U6IEVudGl0eUJhc2UgPSBlbnRpdHkgYXMgRW50aXR5QmFzZTtcclxuICBjb25zdCB2aWV3TW9kZWw6IEVudGl0eURldGFpbHNWaWV3TW9kZWwgPSB7XHJcbiAgICAuLi5lbnRpdHlCYXNlLFxyXG4gICAgaWQ6IGVudGl0eS5pZCxcclxuICAgIGRlc2NyaXB0aW9uOiBlbnRpdHkuZW50aXR5TWV0YWRhdGEuZGVzY3JpcHRpb24sXHJcbiAgICBzaG9ydERlc2NyaXB0aW9uOiBlbnRpdHkuZW50aXR5TWV0YWRhdGEuc2hvcnREZXNjcmlwdGlvbixcclxuICAgIHR5cGU6IGVudGl0eS5lbnRpdHlNZXRhZGF0YS5pZCBhcyBFbnRpdHlUeXBlSW5zdGFuY2UsXHJcbiAgICBwYXJhbWV0ZXJzR3JvdXBzOiBncm91cHMsXHJcbiAgICBwcm9jZXNzZXMsXHJcbiAgICBjb21tZW50cyxcclxuICAgIGdpc0lkRmllbGROYW1lOiBlbnRpdHkuZW50aXR5TWV0YWRhdGEuZ2lzSWRGaWVsZE5hbWUsXHJcbiAgICBnaXNMYXllcnM6IGVudGl0eS5lbnRpdHlNZXRhZGF0YS5naXNMYXllcnMsXHJcbiAgICBnaXNCczogZW50aXR5LmVudGl0eU1ldGFkYXRhLmdpc0JzLFxyXG4gIH07XHJcbiAgaWYgKGlzTWFzdGVyKSB7XHJcbiAgICBjb25zdCBtYXN0ZXJWaWV3TW9kZWw6IE1hc3RlckVudGl0eURldGFpbHNWaWV3TW9kZWwgPSB7XHJcbiAgICAgIC4uLnZpZXdNb2RlbCxcclxuICAgICAgcGFyYW1ldGVyc0dyb3VwczogZ3JvdXBzLmZpbHRlcihncm91cCA9PiBncm91cC5vcmRlciAhPT0gMCAmJiBncm91cC5vcmRlciAhPT0gMSksXHJcbiAgICAgIGhlYWRlcnNQYXJhbWV0ZXJzOiBncm91cHMuZmluZChncm91cCA9PiBncm91cC5vcmRlciA9PT0gMCksXHJcbiAgICAgIHN1YkhlYWRlcnNQYXJhbWV0ZXJzOiBncm91cHMuZmluZChncm91cCA9PiBncm91cC5vcmRlciA9PT0gMSksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG1hc3RlclZpZXdNb2RlbDtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHZpZXdNb2RlbDtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNTaW1wbGVQYXJhbWV0ZXIocGFyYW1ldGVyOiBBbnlQYXJhbWV0ZXIpOiBib29sZWFuIHtcclxuICByZXR1cm4gcGFyYW1ldGVyICYmICd2YWx1ZUNzc0NsYXNzTmFtZScgaW4gcGFyYW1ldGVyO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc0VudGl0eVBhcmFtZXRlcihwYXJhbWV0ZXI6IEFueVBhcmFtZXRlcik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBwYXJhbWV0ZXIgJiYgJ2lzRGlzcGxheUVudGl0eVR5cGUnIGluIHBhcmFtZXRlcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsdXJhbEVudGl0eVR5cGVOYW1lKG1ldGFkYXRhSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHBsdXJhbChFbnRpdHlUeXBlSW5zdGFuY2VbbWV0YWRhdGFJZF0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltcGxlUGFyYW1ldGVycyhwYXJhbWV0ZXJzOiBBbnlQYXJhbWV0ZXJbXSk6IFNpbXBsZVBhcmFtZXRlcltdIHtcclxuICByZXR1cm4gcGFyYW1ldGVycy5maWx0ZXIocCA9PiBpc1NpbXBsZVBhcmFtZXRlcihwKSkubWFwKHAgPT4gcCBhcyBTaW1wbGVQYXJhbWV0ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50aXR5UGFyYW1ldGVycyhwYXJhbWV0ZXJzOiBBbnlQYXJhbWV0ZXJbXSk6IEVudGl0eVZpZXdNb2RlbFBhcmFtZXRlcltdIHtcclxuICByZXR1cm4gcGFyYW1ldGVycy5maWx0ZXIocCA9PiBpc0VudGl0eVBhcmFtZXRlcihwKSkubWFwKHAgPT4gcCBhcyBFbnRpdHlWaWV3TW9kZWxQYXJhbWV0ZXIpO1xyXG59XHJcblxyXG4iXX0=