{"version":3,"file":"app-76a4019d.a5a4ed1ac40a9385.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/user-admin/user-manager/user-manager.scss","webpack://client-app/./src/app/user-admin/user-manager/user-manager.html","webpack://client-app/./src/app/services/value-list/value-list-service.ts","webpack://client-app/./src/app/services/viewer-object-info-service/OB-viewer-object-info-service.ts","webpack://client-app/./src/app/services/viewer-object-info-service/viewer-method-names.ts","webpack://client-app/./src/app/services/viewer-object-info-service/viewer-object-info-service.ts","webpack://client-app/./src/app/services/viewer-service.ts","webpack://client-app/./src/app/user-admin/user-manager/user-manager.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-manager-container{width:calc(100% - 30px);margin:15px;padding:15px}.user-manager-container .create-user-btn{display:block;margin-left:auto}.user-manager-container .custom-label{font-weight:600}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-admin/user-manager/user-manager.scss\"],\"names\":[],\"mappings\":\"AAAA,wBACI,uBAAA,CACA,WAAA,CACA,YAAA,CACA,yCACI,aAAA,CACA,gBAAA,CAEJ,sCACI,eAAA\",\"sourcesContent\":[\".user-manager-container {\\r\\n width: calc(100% - 30px);\\r\\n margin: 15px;\\r\\n padding: 15px;\\r\\n .create-user-btn {\\r\\n display:block;\\r\\n margin-left:auto;\\r\\n }\\r\\n .custom-label {\\r\\n font-weight: 600;\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"\";","import {autoinject} from \"aurelia-framework\";\r\nimport {ApiClient, RequestMethod} from \"../api-client\";\r\nimport {ValueListDto, ValueListItemDto} from \"../../models/value-list-dtos\";\r\nimport {AppContextService} from \"../app-context-service\";\r\nimport {I18N} from \"aurelia-i18n\";\r\nimport { HttpResponseMessage } from \"aurelia-http-client\";\r\nimport { ModalService } from \"../modal-service\";\r\nimport { ErrorService } from \"../error-service\";\r\n\r\n@autoinject\r\nexport class ValueListService {\r\n\tconstructor(private api: ApiClient, private appContext: AppContextService, private i18n: I18N,\r\n\t\tprivate modal: ModalService) {\r\n\t}\r\n\r\n\t/*PROJECT SCOPE*/\r\n\tpublic async getValueListsOnProject(): Promise {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).get(\"ValueList/GetValueLists\")\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), \"Could not retrieve value lists.\")\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async getValueListById(valueListId: string): Promise {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).get(\"ValueList/GetValueListByIds?id=\" + valueListId)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), \"Could not retrieve value list.\")\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async getValueListItemsOnProject(id: string): Promise {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).get(`ValueList/GetValueListItemsByValueListId?id=${id}`)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), \"Could not retrieve value list items.\")\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async addNewListToProject(name: string): Promise {\r\n\t\tlet response: HttpResponseMessage = await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/MakeValueList\", name)\r\n\t\t\t.handleErrorWithErrorService((t: ErrorService, reason: HttpResponseMessage) => {\r\n\t\t\t\tif (reason?.statusCode == 409) {\r\n\t\t\t\t\tthis.modal.OpenMessage('Name already taken','The value list was not created. Please choose a unique name for your value list.');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.modal.OpenMessage(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_MakeValueList').replace('{0}', name));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.response();\r\n\t\treturn response.response;\r\n\t}\r\n\r\n\tpublic async renameValueListOnProject(valueList: ValueListDto) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/RenameValueList\", valueList)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RenameValueList').replace('{0}', valueList.name))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\tpublic async removeListFromProject(ids: string[]) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/RemoveValueList\", ids)\r\n\t\t\t// .handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RemoveValueList').replace('{0}', ids))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\t//This should be determined by an organization role, not an org role.\r\n\tpublic async changeProjectValueListIntoSystemValueList(id: string) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/ChangeProjectValueListIntoSystemValueList\", id)\r\n\t\t\t// .handleErrorUsingReason(this.i18n.tr('Error_Title_Generic'))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\tpublic async addNewListItemOnProject(listItem: ValueListItemDto, parentListName: string | undefined) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/MakeValueListItem\", listItem)\r\n\t\t\t.handleErrorUsingReason(this.i18n.tr('Error_Title_Generic'))\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async renameListItemOnProject(listItem: ValueListItemDto, parentListName: string | undefined) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/RenameValueListItem\", listItem)\r\n\t\t\t.handleErrorUsingReason(this.i18n.tr('Error_Title_Generic'))\r\n\t\t\t// .handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RenameValueListItem').replace('{0}', listItem.value).replace('{1}', parentListName))\r\n\t\t\t.response();\r\n\t}\r\n\t\r\n\tpublic async setDefaultListItemOnProject(item: ValueListItemDto, parentListName: string | undefined) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/SetDefaultValueListItem\", item)\t\t\t\t\t\t\t\t\t\t\t//Should probably be handled better. This is a quick fix to satisfy strict mode.\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_SetDefaultValueListItem').replace('{0}', item.value).replace('{1}', parentListName ? parentListName : \"\"))\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async reorderListItemOnProject(item: ValueListItemDto, parentListName: string | undefined) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/ReorderValueListItem\", item)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_ReorderValueListItem').replace('{0}', item.value).replace('{1}', parentListName ? parentListName : \"\"))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\tpublic async removeListItemOnProject(item: ValueListItemDto, parentListName: string | undefined) {\r\n\t\treturn await this.api.projectWToken(this.appContext.projectId).postJson(\"ValueList/RemoveValueListItem\", item)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RemoveValueListItem').replace('{0}', item.value).replace('{1}', parentListName ? parentListName : \"\"))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\tpublic async assignColorsWithProject(valueListId: string, projectId: string) {\r\n\t\tconsole.log('valueListId:',valueListId);\r\n\t\tlet api:RequestMethod = this.api.projectWToken(projectId);\r\n\t\tlet rsp = await api.postJson(\"ValueList/RandomizeColorsOnList\", {valueListId: valueListId})\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t.jsonResult();\r\n\t\treturn rsp;\r\n\t}\r\n\r\n\tpublic async assignColorToListItemWithProject(listItem: ValueListItemDto, projectId: string) {\r\n\t\treturn await this.api.projectWToken(projectId).postJson(\"ValueList/SetListItemColor\", listItem)\r\n\t\t\t.handleErrorUsingReason(this.i18n.tr('Error_Title_Generic'))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\t/*SYSTEM SCOPE*/\r\n\r\n\r\n\tpublic async getValueListsOnSystem(): Promise {\r\n\t\tlet result = await this.api.orgByToken.get(\"ValueList/GetValueLists\")\r\n\t\t\t// .handleError(this.i18n.tr('Error_Title_Generic'), \"Could not retrieve value lists.\")\r\n\t\t\t.jsonResult();\r\n\t\t\treturn result != undefined ? result : [];\r\n\r\n\t}\r\n\tpublic async getValueListItemsOnSystem(id: string): Promise {\r\n\t\treturn await this.api.orgByToken.get(`ValueList/GetValueListItemsByValueListId?id=${id}`)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), \"Could not retrieve value list items.\")\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async addNewListToSystem(name: string): Promise {\r\n\t\tlet response: HttpResponseMessage = await this.api.orgByToken.postJson(\"ValueList/MakeValueList\", name)\r\n\t\t\t.handleErrorWithErrorService((t: ErrorService, reason: HttpResponseMessage) => {\r\n\t\t\t\tif (reason?.statusCode == 409) {\r\n\t\t\t\t\tthis.modal.OpenMessage('Name already taken','The value list was not created. Please choose a unique name for your value list.');\r\n\t\t\t\t} else if (reason?.statusCode == 403) {\r\n\t\t\t\t\tthis.modal.OpenMessage('Forbidden', \"The user does not have permission to perform this action.\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.modal.OpenMessage(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_MakeValueList').replace('{0}', name));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.response();\r\n\t\treturn response.response;\r\n\t}\r\n\r\n\tpublic async renameValueListOnSystem(valueList: ValueListDto) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/RenameValueList\", valueList)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RenameValueList').replace('{0}', valueList.name))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\tpublic async removeListFromSystem(ids: string[]) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/RemoveValueList\", ids)\r\n\t\t\t// .handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RemoveValueList').replace('{0}', list.name))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\tpublic async addNewListItemOnSystem(listItem: ValueListItemDto, parentListName: string) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/MakeValueListItem\", listItem)\r\n\t\t\t.handleErrorUsingReason(this.i18n.tr('Error_Title_Generic'))\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async renameListItemOnSystem(listItem: ValueListItemDto, parentListName: string) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/RenameValueListItem\", listItem)\r\n\t\t\t.handleErrorUsingReason(this.i18n.tr('Error_Title_Generic'))\r\n\t\t\t// .handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RenameValueListItem').replace('{0}', listItem.value).replace('{1}', parentListName))\r\n\t\t\t.response();\r\n\t}\r\n\r\n\tpublic async setDefaultListItemOnSystem(item: ValueListItemDto, parentListName: string) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/SetDefaultValueListItem\", item)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_SetDefaultValueListItem').replace('{0}', item.value).replace('{1}', parentListName))\r\n\t\t\t.jsonResult();\r\n\t}\r\n\r\n\tpublic async reorderListItemOnSystem(item: ValueListItemDto, parentListName: string) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/ReorderValueListItem\", item)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_ReorderValueListItem').replace('{0}', item.value).replace('{1}', parentListName))\r\n\t\t\t.response();\r\n\r\n\t}\r\n\r\n\tpublic async removeListItemOnSystem(item: ValueListItemDto, parentListName: string) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/RemoveValueListItem\", item)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_RemoveValueListItem').replace('{0}', item.value).replace('{1}', parentListName))\r\n\t\t\t.response();\r\n\t}\r\n\tpublic async assignColorsWithOrgToken(valueListId: string) {\r\n\t\tconsole.log('valueListId:',valueListId);\r\n\t\tlet api:RequestMethod = this.api.orgByToken; //system;\r\n\t\tlet rsp = await api.postJson(\"ValueList/RandomizeColorsOnList\", {valueListId: valueListId})\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t.jsonResult();\r\n\t\treturn rsp;\r\n\t}\r\n\r\n\tpublic async assignColorToListItemByOrg(listItem: ValueListItemDto) {\r\n\t\treturn await this.api.orgByToken.postJson(\"ValueList/SetListItemColor\", listItem)\r\n\t\t\t.handleErrorUsingReason(this.i18n.tr('Error_Title_Generic'))\r\n\t\t\t.response();\r\n\t}\r\n}\r\n","import { BimsyncClient } from \"../bimsync-client\";\r\nimport { ModalService } from \"../modal-service\";\r\nimport {EventAggregator} from \"aurelia-event-aggregator\";\r\nimport {autoinject} from \"aurelia-framework\";\r\nimport { ViewerObjectInfoServiceIF } from \"./viewer-object-info-service\";\r\nimport { openbim_highlightOnIDs } from \"app/project/ifc-fun/openbim-highlighter\";\r\n\r\nimport * as OBC from \"openbim-components\"; \r\nimport { FragmentsGroup } from 'bim-fragment'; \r\nimport { OpenBimHandles } from \"app/project/ifc-fun/OpenBimHandles\";\r\nimport {FragmentIdMap} from \"openbim-components\";\r\nimport {types} from \"sass\";\r\nimport List = types.List;\r\n\r\n@autoinject\r\nexport class OpenBim_ViewerObjectInfoService implements ViewerObjectInfoServiceIF {\r\n\topenBimHandles: OpenBimHandles|undefined;\r\n\r\n\tsetOpenBimHandles(openBimHandles: OpenBimHandles) { this.openBimHandles = openBimHandles; }\r\n\r\n //public static highlighter:OBC.FragmentHighlighter; \r\n\t/* FIXME, how\r\n can we elegantly in aurelia, let openbim-container get access to OpenbimContainer.highlighter?\r\n */ \r\n\r\n constructor(private bimsyncApi: BimsyncClient, private events: EventAggregator, private modal: ModalService) {}\r\n\r\n async findObjectsToHandle(listOfObjectNRs: number[], methodName: string): Promise {\r\n console.log('OpenBim_ViewerObjectInfoService.findObjectsToHandle', listOfObjectNRs, methodName);\r\n\r\n const fragModel:FragmentsGroup = this.openBimHandles?.theModel!; //OpenbimContainer.theModel!; // let's party..\r\n\t\t/* En bedre kilde til de ting, er måske comp.meshes, evt. med filter på.\r\n\t\tMen den er vist ikke aegte fragments, den er mere/blot de 3dmeshes, der ligger INDE i fragments; \r\n\t\tgivetvis skal vi selv holde regnskab med de meshes vi loader (?).\r\n\t\tOg så alligevel - i 'load_An_IfcUrl()', gør vi dette for at få 3d-dimsen ind i vores live rendering:\r\n\t\t.. THREE_scene.add(fragmentsGroup_Model);\r\n\t\t */\r\n\r\n\t\tconst stringIds = listOfObjectNRs.map(n => ''+n);\r\n\t\t\r\n\t\tconst fragmentMapToSelect_new:FragmentIdMap = fragModel.getFragmentMap(stringIds);\r\n\t\t// FragmentsGroup.getFragmentMap and pass a set/array of expressIDs.\r\n\r\n //let fragmentMapToSelect_old:OBC.FragmentIdMap = {};\r\n //for (const expressId of listOfObjectNRs) { this.addElmToSelMap(expressId, fragmentMapToSelect_old, fragModel); }\r\n\r\n\t\tconst highlighter = this.openBimHandles!.highlighter!;\r\n openbim_highlightOnIDs(highlighter, fragmentMapToSelect_new);\r\n }\r\n\r\n\t// JG: If this works, we should build a full map instead,\r\n\t// to reuse every time.\r\n\r\n // figure out how to map between these..\r\n addElmToSelMap(expressId: number, FragsToSelect: OBC.FragmentIdMap, fm:FragmentsGroup) {\r\n\t\tthis.searchItems_forElmFragments(fm.items, FragsToSelect, expressId); // ITEMS are nice, they know both uuids and expressIDs?\r\n }\r\n\tsearchItems_forElmFragments(\r\n\t\tallFrags: import(\"bim-fragment\").Fragment[], \r\n\t\tfragsToSelect: OBC.FragmentIdMap,\r\n\t\texpressIdToFind: number\r\n\t) {\r\n\t\t// They contain FRAGMENTS, and FRAGMENTS contain ITEMs (expressIDs.)\r\n\t\tfor (const fragment of allFrags) { //:Fragment\r\n\t\t\tconst fragmentId:string = fragment.id;\r\n\t\t\tfor (const expressId of fragment.items) { // strings\r\n\t\t\t\tconst numExpressId = Number(expressId); // may cause NaN.\r\n\t\t\t\tif (Number.isNaN(numExpressId)) { throw `got NaN for ${expressId}`; }\r\n\t\t\t\t//if (numExpressId == NaN) { throw `got NaN for ${expressId}`; } // can't be written that way it seems.\r\n\t\t\t\tif (numExpressId != expressIdToFind) { continue; }\r\n\t\t\t\tconst emptySet = new Set();\r\n\t\t\t\temptySet.add(expressId);\r\n\t\t\t\tif (fragmentId in fragsToSelect) { throw `${fragmentId} already in fragsToSelect.`; }\r\n\t\t\t\tfragsToSelect[fragmentId] = emptySet;\r\n\t\t\t\tconsole.log('add to fragMap:', expressId, fragmentId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//this.actOnChildren(fm.children); // NO, these don't know about expressID relation, only uuid.\r\n\t//this.actOnData(fm.data); // NO, these don't know about UUID, only expressIDs. However, they also seem to know/map some kind of numberIDs?\r\n\t//this.actOnProperties(fm.properties!); // though these know props for expressIDs, there is no field/value for uuid?\r\n\t//this.actOnKeyFragments(fm.keyFragments);\r\n\t//actOnData(data: { [expressID: number]: [number[], number[]]; }) {}\r\n\t//actOnChildren(children: import(\"three\").Object3D[]) {}\r\n\t//actOnKeyFragments(keyFragments: { [key: number]: string; }) { }\r\n\t//actOnProperties(arg0: IfcProperties) {}\r\n\r\n\t/* fixme-todo: this must eventually mirror as much of viewer-object-info-service as necessary. */\r\n}\r\n","export enum ViewerMethodNames {\r\n select = \"select\",\r\n show = \"show\",\r\n lookAt = \"lookAt\",\r\n deselectAll = \"deselectAll\",\r\n unselect = \"unselect\",\r\n hide = \"hide\",\r\n hideAll = \"hideAll\",\r\n translucent = \"translucent\",\r\n highlight = \"highlight\" //Not really a viewer-method. Used for a specific case\r\n}","import {EventAggregator} from \"aurelia-event-aggregator\";\r\nimport { IfcEntity, IfcInfo } from \"app/models/viewer-dtos/Dtos/Bimsync/IfcDtos\";\r\nimport { BimsyncClient } from \"../bimsync-client\";\r\nimport {autoinject} from \"aurelia-framework\";\r\nimport { ViewerMethodNames } from \"./viewer-method-names\";\r\nimport { ModalService } from \"../modal-service\";\r\n\r\ndeclare let $: any;\r\n\r\nexport interface ViewerObjectInfoServiceIF {\r\n //async \r\n\tfindObjectsToHandle(listOfObjectNRs: number[], methodName: string): Promise;\r\n}\r\n \r\n@autoinject\r\nexport class Catenda_ViewerObjectInfoService implements ViewerObjectInfoServiceIF {\r\n\t/* JG: This is actually a relatively cool and well-written class,\r\n\tif you for a moment ignore that it could have done with a bit more explanation.\r\n\t*/\r\n\r\n constructor(private bimsyncApi: BimsyncClient, private events: EventAggregator, private modal: ModalService) {}\r\n\r\n findParentIds(infos: (IfcInfo | null)[], listOfObjectNRs: number[]) {\r\n\t\t// The idea is, that the items which are missing, are missing BECAUSE THEY ARE PARENTS.\r\n let indicesNotFound: number[] = this.getIndicesNotFound(infos);\r\n let parentObjectIds: number[] = listOfObjectNRs.filter((element, index) => indicesNotFound.includes(index));\r\n return parentObjectIds;\r\n }\r\n\r\n async findObjectsToHandle(listOfObjectNRs: number[], methodName: string): Promise {\r\n\t\tconsole.log('ViewerObjectInfoService.findObjectsToHandle', listOfObjectNRs);\r\n this.events.publish('is-loading', true);\r\n let self = this;\r\n\r\n\t\tif (listOfObjectNRs.includes(0)) { console.warn(\"Should never happen\"); } // (JG - I moved this warning outside, here.)\r\n\r\n $('#viewerContainer3d').viewer('objectInfo', listOfObjectNRs, async (catendaInfos: (IfcInfo | null)[]) => {\r\n if (!catendaInfos.includes(null)) { // JG: apparently 'if all objectNr could be matched/located by catenda, then proceed directly/use them directly'.\r\n self.performViewerMethods(listOfObjectNRs, methodName); \r\n return;\r\n } else { // 'because some are missing, we do some lookup':\r\n let parentObjectIds: number[] = self.findParentIds(catendaInfos, listOfObjectNRs);\r\n const correctObjectIds:number[] = \r\n\t\t\t\t catendaInfos.filter((object: IfcInfo |null) => object != null)\r\n\t\t\t\t .map ((object: IfcInfo |null) => object?.id); //Here we can just perform the healthy interaction on\r\n await self.getChildrenFromParent(correctObjectIds, parentObjectIds, methodName);\r\n }\r\n });\r\n }\r\n\r\n async getChildrenFromParent(correctObjectIds: number[], parentObjectIds: number[], methodName: string): Promise {\r\n\t\t// (The idea here being, that 'correctObjectIds' are those already accounted for, \r\n\t\t// and 'parentObjectIds' are those for which we still need to look up further info.)\r\n let self = this;\r\n if (parentObjectIds.includes(0)) { // remove any 0 appearing there.\r\n parentObjectIds = parentObjectIds.filter((objectId: number) => objectId != 0);\r\n }\r\n\r\n let listOfObjectsToCheck: number[] = await this.fetchChildrenNewChildren(parentObjectIds);\r\n\r\n await $('#viewerContainer3d').viewer('objectInfo', listOfObjectsToCheck, async (catendaInfos: (IfcInfo | null)[]) => {\r\n if (!catendaInfos.includes(null)) {\r\n correctObjectIds.push(...listOfObjectsToCheck);\r\n self.performViewerMethods(correctObjectIds, methodName);\r\n return;\r\n } else {\r\n correctObjectIds.push(...(catendaInfos.filter((object: (IfcInfo | null)) => object != null).map((object: (IfcInfo | null)) => object?.id)));\r\n let parentObjectIds: number[] = self.findParentIds(catendaInfos, listOfObjectsToCheck);\r\n await self.getChildrenFromParent(correctObjectIds, parentObjectIds, methodName);\r\n }\r\n });\r\n }\r\n \r\n async fetchChildrenNewChildren(parentObjectIds: number[]): Promise {\r\n let childrenIds: number[] = [];\r\n try {\r\n for (let parent of parentObjectIds) {\r\n let children = (await this.bimsyncApi.getRelationByObjectId(parent))?.children?.map((child: IfcEntity) => child.objectId);\r\n if (children.length > 0) {\r\n childrenIds.push(...children); \r\n } else { \r\n let fakeParent = (await this.bimsyncApi.GetProductsInfoByInstanceObjectId(parent));\r\n console.warn(\"Object with no geometry found\" , fakeParent);\r\n }\r\n }\r\n } catch {\r\n console.warn(\"Some objects could not be fetched\");\r\n } finally {\r\n return childrenIds;\r\n }\r\n }\r\n\r\n performViewerMethods(correctObjectIds: number[], methodName: string): void {\r\n if (methodName === ViewerMethodNames.highlight) {\r\n $(\"#viewerContainer3d\").viewer(ViewerMethodNames.deselectAll);\r\n $('#viewerContainer2d').viewer2d(ViewerMethodNames.unselect);\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show, correctObjectIds);\r\n $(\"#viewerContainer3d\").viewer(ViewerMethodNames.select, correctObjectIds);\r\n $('#viewerContainer2d').viewer2d(ViewerMethodNames.select, correctObjectIds);\r\n } else { // WTF.. everything-else is, aparently, ViewerMethodNames.show..?\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show, correctObjectIds);\r\n $('#viewerContainer3d').viewer(methodName, correctObjectIds);\r\n }\r\n this.events.publish('is-loading', false);\r\n }\r\n\r\n private getIndicesNotFound(info: (IfcInfo | null)[]): number[] { // UB: findParentIds. Could possibly be implemented smarter, with better javascript-fu.\r\n let indices = [];\r\n for (let i = 0; i < info.length; i++) {\r\n if (info[i] == null) {\r\n indices.push(i);\r\n }\r\n }\r\n return indices;\r\n }\r\n}\r\n\r\n\r\n","import {EventAggregator, Subscription} from \"aurelia-event-aggregator\";\r\nimport { autoinject } from \"aurelia-framework\";\r\n\r\ndeclare let $: any;\r\n\r\n@autoinject\r\nexport class ViewerService {\r\n\r\n constructor(public eventAggregator: EventAggregator) {}\r\n\r\n showSpaces(shouldShowSpaces: boolean): void {\r\n this.eventAggregator.publish('3dViewer:ShowSpaces', shouldShowSpaces);\r\n }\r\n\r\n setWalkMode(walkModeOn: boolean): void {\r\n if (walkModeOn) {\r\n $('#viewerContainer3d').viewer('enableGravity');\r\n } else {\r\n $('#viewerContainer3d').viewer('disableGravity'); \r\n }\r\n }\r\n\r\n enableJoystick(shouldShowJoystick: boolean): void {\r\n if(shouldShowJoystick) {\r\n $('#viewerContainer3d').viewerUI('showJoystick');\r\n } else {\r\n $('#viewerContainer3d').viewerUI('hideJoystick');\r\n }\r\n }\r\n\r\n setCameraView(cameraType: string, fov: number): void {\r\n $('#viewerContainer3d').viewer('viewpoint', null, function(viewpoint: any){\r\n viewpoint.type = cameraType;\r\n if (cameraType == 'orthogonal') { \r\n viewpoint.viewToWorldScale = 200;\r\n } else {\r\n viewpoint.fov = fov; \r\n }\r\n $('#viewerContainer3d').viewer('viewpoint' , viewpoint);\r\n });\r\n }\r\n\r\n setViewMode(viewMode: string): void {\r\n $('#viewerContainer3d').viewer('shading', viewMode);\r\n }\r\n\r\n setFieldOfView(value: number): void {\r\n if (value < 30) { value = 30; }\r\n if (value > 150) { value = 150; }\r\n value = parseFloat(value.toString());\r\n $('#viewerContainer3d').viewer('fieldOfView', value);\r\n }\r\n\r\n setRotationSpeed(value: number): void {\r\n if (value < 1) { value = 1; }\r\n if (value > 360) { value = 360; }\r\n value = parseFloat(value.toString());\r\n $('#viewerContainer3d').viewer('rotationSpeed', value);\r\n }\r\n\r\n setHorizontalSpeed(value: number): void {\r\n if (value < 1) { value = 1; }\r\n if (value > 100) { value = 100; }\r\n value = parseFloat((value.toString()));\r\n $('#viewerContainer3d').viewer('walkSpeed', value);\r\n }\r\n \r\n setVerticalSpeed(value: number): void {\r\n if (value < 1) { value = 1; }\r\n if (value > 100) { value = 100; }\r\n value = parseFloat(value.toString());\r\n $('#viewerContainer3d').viewer('elevationSpeed', value);\r\n }\r\n\r\n setTranslucentOpacity(value: number): void {\r\n if (value < 1) { value = 1; }\r\n if (value > 100) { value = 100; }\r\n value = parseFloat((value/100).toPrecision(2));\r\n $('#viewerContainer3d').viewer('translucentOpacity', value);\r\n }\r\n\r\n}","import { ApiClient } from 'app/services/api-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Role, Manufacturer, CommonUser as CommonUserDto } from './user-mng-dtos';\r\nimport { AppContextService } from 'app/services/app-context-service';\r\nimport { ModalService } from 'app/services/modal-service';\r\n\r\n@autoinject\r\nexport class UserManager {\r\n private userToCreate: CommonUserDto = {userName: \"\",email:\"\",organization_Id:\"\", firstName:\"\",surname:\"\",molioIpLicense: false,manufacturer_Id: 0, roles: []};\r\n private roles:Role[] = [];\r\n private manufacturers: Manufacturer[] = [];\r\n private selectedManufacturer: string = \"No Manufacturer\";\r\n\r\n constructor(public apiClient: ApiClient, public appContext: AppContextService, public modal: ModalService) { }\r\n\r\n async bind(): Promise {\r\n console.log(\"users-bind\");\r\n this.roles = await this.apiClient.global.get(\"UserAdministration/GetAllowedRoles\").jsonResult();\r\n this.manufacturers = await this.apiClient.global.get(\"UserAdministration/GetManufacturers\").jsonResult();\r\n this.userToCreate.organization_Id = this.appContext.currentUser?.organization.id ? this.appContext.currentUser?.organization.id : \"00000000-0000-0000-0000-000000000000\";\r\n }\r\n\r\n async switchManufacturer(manu: Manufacturer): Promise {\r\n this.selectedManufacturer = manu.name;\r\n this.userToCreate.manufacturer_Id = manu.id;\r\n }\r\n\r\n async handleSelectChange(role: any): Promise { //Role does not have a selected, but it has been hacked in to check status.\r\n if (role.selected) {//The checkbox status is changed before this code is reached.\r\n this.userToCreate.roles.push(role);\r\n } else {\r\n let index = this.userToCreate.roles.indexOf(role)\r\n if (index > -1) {\r\n this.userToCreate.roles.splice(index, 1);\r\n }\r\n }\r\n console.log(this.userToCreate.roles);\r\n }\r\n async createUser(): Promise {\r\n console.log(\"This user will be created \" , this.userToCreate);\r\n let L = window.location;\r\n\t\tlet host = `${L.protocol}//${L.host}`; \r\n let response = await this.apiClient.global.postJson(`UserAdministration/CreateUserByCommonUser?host=${host}`, this.userToCreate).jsonResult();\r\n console.log(\"create user response \" , response);\r\n if (response.succeeded == true) {\r\n this.resetInputs();\r\n this.modal.OpenMessage(\"User successfully created\", \"If the user was possible to create, the user will now have received an email.\");\r\n return;\r\n } \r\n if (response.succeeded == false) {\r\n let errorMsgs = \"\"\r\n for (let error of response.errors) {\r\n errorMsgs = errorMsgs + error.description+ \"\\n\";\r\n }\r\n this.modal.OpenMessage(\"User not created\", errorMsgs);\r\n return;\r\n }\r\n }\r\n resetInputs():void {\r\n this.selectedManufacturer = \"No Manufacturer\";\r\n this.userToCreate.manufacturer_Id = 0;\r\n this.userToCreate = {\r\n userName: \"\",\r\n email:\"\",\r\n organization_Id:this.appContext.currentUser?.organization.id ? this.appContext.currentUser?.organization.id : \"00000000-0000-0000-0000-000000000000\", \r\n firstName:\"\",\r\n surname:\"\",\r\n molioIpLicense: false,\r\n manufacturer_Id: 0, \r\n roles: []\r\n };\r\n this.roles.forEach(role => {\r\n (role).selected = false;\r\n });\r\n }\r\n}"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","ValueListService","constructor","api","appContext","i18n","modal","async","this","projectWToken","projectId","get","handleError","tr","jsonResult","valueListId","name","postJson","handleErrorWithErrorService","t","reason","statusCode","OpenMessage","replace","response","valueList","ids","listItem","parentListName","handleErrorUsingReason","item","value","console","log","result","orgByToken","undefined","autoinject","I18N","OpenBim_ViewerObjectInfoService","setOpenBimHandles","openBimHandles","bimsyncApi","events","listOfObjectNRs","methodName","fragModel","theModel","stringIds","map","n","fragmentMapToSelect_new","getFragmentMap","highlighter","addElmToSelMap","expressId","FragsToSelect","fm","searchItems_forElmFragments","items","allFrags","fragsToSelect","expressIdToFind","fragment","fragmentId","numExpressId","Number","isNaN","emptySet","Set","add","ViewerMethodNames","Catenda_ViewerObjectInfoService","findParentIds","infos","indicesNotFound","getIndicesNotFound","filter","element","index","includes","publish","self","warn","$","viewer","catendaInfos","parentObjectIds","correctObjectIds","object","getChildrenFromParent","performViewerMethods","objectId","listOfObjectsToCheck","fetchChildrenNewChildren","childrenIds","parent","children","getRelationByObjectId","child","length","fakeParent","GetProductsInfoByInstanceObjectId","viewer2d","info","indices","i","ViewerService","eventAggregator","showSpaces","shouldShowSpaces","setWalkMode","walkModeOn","enableJoystick","shouldShowJoystick","viewerUI","setCameraView","cameraType","fov","viewpoint","type","viewToWorldScale","setViewMode","viewMode","setFieldOfView","parseFloat","toString","setRotationSpeed","setHorizontalSpeed","setVerticalSpeed","setTranslucentOpacity","toPrecision","UserManager","apiClient","userToCreate","userName","email","organization_Id","firstName","surname","molioIpLicense","manufacturer_Id","roles","manufacturers","selectedManufacturer","global","currentUser","organization","manu","role","selected","indexOf","splice","L","window","location","host","protocol","succeeded","resetInputs","errorMsgs","error","errors","description","forEach"],"sourceRoot":""}