{"version":3,"file":"app-80192e74.344abdde282872e4.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/services/app-context-service.ts","webpack://client-app/./src/app/services/bim-viewer-service.ts","webpack://client-app/./src/app/services/bim-viewer-three-d-service.ts"],"sourcesContent":["import { FilterGroupDto } from './../models/filter-dto';\r\nimport { FilterDto, ICombinedFilter } from 'app/models/filter-dto';\r\nimport { ProjectInvitationDto } from 'app/models/project-invitation-dto';\r\nimport { UserDto } from 'app/models/user-administration-dtos';\r\nimport { ProjectDto } from \"../models/project-dto\";\r\n\r\nimport {computedFrom} from 'aurelia-framework'; \r\n\r\n// Is responsible for keeping track of application-wide shared state\r\nexport class AppContextService {\r\n\tpublic projectInvitations: ProjectInvitationDto[] = [];\r\n\tpublic projects: ProjectDto[] = [];\r\n\r\n\r\n\t//public projectId: string = \"\";\r\n\tpublic _projectId_: string = \"\";\r\n\r\n\t// FOR DEBUGGING state-problems with AppContextService.projectId:\r\n\tpublic get projectId(): string { \r\n\t \t//console.log('get',this._projectId_, typeof(this._projectId_)); \r\n\t\treturn this._projectId_; \r\n\t}\r\n private set_projectId(p:string) { \r\n\t\tconsole.log('set p to:', p, typeof(p) ); \r\n\t\tthis._projectId_ = p; \r\n }\r\n\t\r\n\tpublic currentUser: UserDto | undefined;\r\n\tpublic expectedRoute:string | null = null;\r\n\tpublic static NO_PROJECT: string = 'no-project';\r\n\t \r\n\t@computedFrom('_selectedFilter')\r\n\tpublic get selectedFilterNAME() { return this._selectedFilter?.name ?? 'View'; }\r\n\r\n\t//Sarah at work\r\n\tpublic _selectedFilter: FilterDto | null = null; // only referenced from accessors get/set!\r\n\tpublic defaultFilter: FilterDto | null = null;\r\n\tpublic selectedGrouping: FilterGroupDto | undefined = undefined;\r\n\tpublic defaultGrouping: FilterGroupDto | null= null;\r\n\tpublic combinedFilter: ICombinedFilter | null = null;\r\n\tpublic changesSaved: boolean = true;\r\n\t//Start: REMOVEME\r\n\tpublic enableLCAByg: boolean = false;\r\n\t//End: REMOVEME\r\n\r\n\tswitchProjectLogic(projectId: string, who:string):void {\r\n\t\tthis.setProject(projectId);\r\n\t\tthis.setSelectedFilter(null, who);//switchProjectLogic\r\n\t\tthis.setSelectedGrouping(undefined);\r\n\t\tthis.setCombinedFilter(null);\r\n\t}\r\n\r\n\tsetProject(projectId: string) {\r\n\t\tif (projectId == 'undefined') { console.trace('ctx.setProject received STRING undefined'); }\r\n\t\t//this.projectId = projectId;\r\n\t\tthis.set_projectId(projectId);\r\n\t}\r\n\r\n\tsetProjects(projects: ProjectDto[]) { \r\n\t\tconsole.log('setProjects to:', projects);\r\n\t\tthis.projects = projects; \r\n\t}\r\n\r\n\tgetSelectedProject(): ProjectDto | undefined {\r\n\t\tconsole.log('getSelectedProject believes this.projectId is:', this.projectId);\r\n\t\tlet project = this.projects?.find(x => x.id === this.projectId);\r\n\t\tif (project) {\r\n\t\t\treturn project;\r\n\t\t}\r\n\t}\r\n\r\n\tsetProjectInvitations(projectInvitations: ProjectInvitationDto[]) {\r\n\t\tthis.projectInvitations = projectInvitations;\r\n\t}\r\n\r\n\tsetCurrentUser(currentUser: UserDto|undefined) {\r\n\t\tthis.calcOrgFlags(currentUser);\r\n\t\tthis.currentUser = currentUser;\r\n\t}\r\n\t\r\n\tcalcOrgFlags(currentUser: UserDto|undefined) {\r\n\t\tif (!currentUser) {\r\n\t\t\tconsole.warn('AppContextService.calcOrgFlags will not do anything, because currentUser arg is \"undefined\".');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet flagsInput:string = currentUser.organization.orgFlags;\r\n\t\tlet sigmaPublish:boolean = (!!flagsInput && flagsInput.includes('sigma'));\r\n\t\tcurrentUser.organization.sigma = sigmaPublish;\r\n\t}\r\n\r\n\tgetSelectedFilter():FilterDto | null { return this._selectedFilter; }\r\n\tsetSelectedFilter(filter: FilterDto | null, who:string) { \r\n\t\tconsole.log('setSelectedFilter by:', who, 'to:', filter?.name);\r\n\t\tthis._selectedFilter = filter; \r\n\t}\r\n\r\n\tsetExpectedRoute(href:string){ this.expectedRoute = href; }\r\n\tsetDefaultFilter(filter: FilterDto | null){ this.defaultFilter = filter; }\r\n\tgetDefaultFilter():FilterDto | null { return this.defaultFilter; }\r\n\tsetSelectedGrouping(grouping: FilterGroupDto | undefined){ this.selectedGrouping = grouping; }\r\n\tgetSelectedGrouping():FilterGroupDto | undefined { return this.selectedGrouping;}\r\n\tsetDefaultGrouping(group: FilterGroupDto){ this.defaultGrouping = group; }\r\n\tgetDefaultGrouping():FilterGroupDto | null{ return this.defaultGrouping; }\r\n\tsetCombinedFilter(filter: ICombinedFilter | null){ this.combinedFilter = filter; }\r\n\tgetCombinedFilter():ICombinedFilter | null { return this.combinedFilter; }\r\n}\r\n","import { ViewerParametersDto } from \"app/models/viewer-parameters-dto\";\r\nimport { ApiClient, RequestMethod } from \"./api-client\";\r\nimport { AppContextService } from \"./app-context-service\";\r\nimport * as environment from '../../../config/environment.json';\r\nimport {BimViewerFileDto, BimViewerRevisionDto} from \"../models/viewer-dtos/Dtos/bimviewer-dtos\";\r\nimport { HttpResponseMessage } from \"aurelia-http-client\";\r\nimport { DateTimeFormatter } from \"./date-time-formatter\";\r\n\r\nexport class BimViewerService {\r\n constructor(public apiClient: ApiClient, public appContext: AppContextService){}\r\n\r\n\tprivate endpoint = '/api/global/BimViewerCallback/EnhanceProjectBimDetails';\r\n\r\n\tpublic async openBimViewer() { //This also works\r\n\t\tlet parameters : ViewerParametersDto = \r\n\t\t\tawait this.apiClient.project(this.appContext.projectId).get('BimViewer/GetViewerParameters')\r\n\t\t\t\t.handleError(\"Error\", \"Issue starting a BimViewer session. Initial stage before opening the viewer failed.\")\r\n\t\t\t\t.jsonResult();\r\n console.log(parameters);\r\n\t\t\r\n\t\tlet apiBaseUrl : string = this.apiClient.getApiUrl();//in-openBimViewer\r\n let bimViewerLink : string = `${environment.bimviewerUrl}/bimviewer/#/${parameters.projectId}/${parameters.userId}/${parameters.secretId}?callback=${apiBaseUrl}${this.endpoint}`\r\n\t\t\r\n\t\twindow.open(bimViewerLink, '_blank')\r\n\t}\r\n\r\n public async openBimViewerWithRevisionId(revisionId: string) { //It seems the same (and only) model is being shown no matter the model clicked.\r\n let parameters : ViewerParametersDto = \r\n\t\t\tawait this.apiClient.project(this.appContext.projectId).get('BimViewer/GetViewerParameters')\r\n\t\t\t\t.handleError(\"Error\", \"Issue starting a BimViewer session. Initial stage before opening the viewer failed.\")\r\n\t\t\t\t.jsonResult();\r\n console.log('RevisionId -', revisionId);\r\n\t\t\r\n\t\tlet apiBaseUrl : string = this.apiClient.getApiUrl();//in-openBimViewerWithRevisionId\r\n let bimViewerLink : string = `${environment.bimviewerUrl}/bimviewer/#/${parameters.projectId}\r\n\t\t\t/${parameters.userId}/${parameters.secretId}?callback=${apiBaseUrl}${this.endpoint}&revision=${revisionId}`\r\n\t\t\r\n\t\twindow.open(bimViewerLink, '_blank')\r\n }\r\n\r\n\tpublic async createModel(modelName: string, altUpload:boolean, chosenFileToUpload?: File): Promise {\r\n\t\tlet fileDto: BimViewerFileDto = await this.apiClient.project(this.appContext.projectId).postJson(`BimViewer/CreateModel`, modelName).jsonResult();\r\n\t\tif (fileDto == null) {\r\n return;\r\n }\r\n\t\tif (chosenFileToUpload) {\r\n\t\t\tlet revisionDto: BimViewerRevisionDto = await this.uploadRevision(chosenFileToUpload, \"\", fileDto.id, altUpload);\r\n\t\t\tconsole.log('revision:', revisionDto);\r\n if (revisionDto) {\t// Update revision count on the front-end\r\n revisionDto.isSynced = false; // DOES NOT WORK...\r\n fileDto.isSynced = false;\r\n fileDto.currentRevision += 1;\r\n\t\t\t\tfileDto.newestRevisionDate = DateTimeFormatter.formatDate(revisionDto.created);\r\n }\r\n\t\t}\r\n\t\treturn fileDto\r\n\t}\r\n\t\r\n\tpublic async uploadRevision(file: File, note: string, fileId: string, altUpload:boolean) : Promise {\r\n\t\tlet formData: FormData = new FormData();\r\n\t\tformData.append('note', note);\r\n\t\tformData.append('altUpload', `${altUpload}`);\r\n\t\tformData.append('file', file);\r\n\t\t\r\n\t\tlet result:BimViewerRevisionDto = \r\n\t\t await this.apiClient.project(this.appContext.projectId)\r\n\t\t .postForm(`BimViewer/UploadRevision/${fileId}`, formData)\r\n\t\t\t\t\t\t .objectResult();\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic async deleteModel(modelId: string): Promise {\r\n\t\tlet prj: string = this.appContext.projectId;\r\n let api:RequestMethod = this.apiClient.project(prj);\r\n return await api.get(`BimViewer/DeleteModel?fileId=${modelId}`).response();\r\n\t}\r\n}\r\n","import { BimViewerRevisionDtoSplitView } from \"app/models/viewer-dtos/Dtos/bimviewer-dtos\";\r\nimport { RevisionInformation3d } from \"app/project/work-area/split-viewer-interfaces\";\r\nimport {autoinject} from \"aurelia-framework\";\r\nimport {EventAggregator, Subscription} from \"aurelia-event-aggregator\";\r\nimport { Catenda_ViewerObjectInfoService } from \"./viewer-object-info-service/viewer-object-info-service\";\r\nimport { ViewerMethodNames } from \"./viewer-object-info-service/viewer-method-names\";\r\nimport {BimViewerThreeDServiceIF, ToolEnum} from \"./BimViewerThreeDServiceIF\";\r\n\r\ndeclare let $: any;\r\n\r\n@autoinject\r\nexport class BimViewerThreeDService implements BimViewerThreeDServiceIF {\r\n public spacesEnabled: boolean = false;\r\n private subscriptions: Subscription[];\r\n constructor(public events: EventAggregator, public viewerObjectInfoService: Catenda_ViewerObjectInfoService) {\r\n this.subscriptions = [\r\n ]\r\n }\r\n\r\n reload(): void {\r\n if (this.subscriptions != undefined) {\r\n this.subscriptions.forEach((subscription: Subscription) => subscription.dispose());\r\n }\r\n }\r\n\r\n hideObjects(objectIds: number[]): void {\r\n this.viewerObjectInfoService.findObjectsToHandle(objectIds, ViewerMethodNames.hide);\r\n $('#viewerContainer3d').viewer('deselectAll');\r\n }\r\n\r\n transluteObjects(objectIds: number[]): void {\r\n this.viewerObjectInfoService.findObjectsToHandle(objectIds, ViewerMethodNames.translucent);\r\n }\r\n\r\n\tshowObjects(objectIds: number[]): void {\r\n this.viewerObjectInfoService.findObjectsToHandle(objectIds, ViewerMethodNames.show);\r\n\t}\r\n\r\n lookAt(objectIds: number[]): void {\r\n this.viewerObjectInfoService.findObjectsToHandle(objectIds, ViewerMethodNames.lookAt);\r\n }\r\n\r\n changeSelectedTool(tool: ToolEnum): void {\r\n\r\n\t\tif (!this.hasCatenda3d()) {\r\n\t\t\tconsole.log(\"Ignoring changeSelectedTool, because no Catenda.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tswitch (tool) {\r\n\t\t\tcase ToolEnum.ObjectSelection:\r\n\t\t\t\t$('#viewerContainer3d').viewer('disableMeasure');\r\n\t\t\t\t$('#viewerContainer3d').viewer('clearMeasure');\r\n\t\t\t\tbreak;\r\n\t\t\tcase ToolEnum.DimensionMeasure:\r\n\t\t\t\t$('#viewerContainer3d').viewer('enableMeasure', {\r\n\t\t\t\t\tmode: 'dimension'\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase ToolEnum.LaserMeasure:\r\n\t\t\t\t$('#viewerContainer3d').viewer('enableMeasure', {\r\n\t\t\t\t\tmode: 'laser'\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase ToolEnum.CropTool:\r\n\t\t\t\tconsole.log(\"This crop tool not implemented in Catenda. It is a dropdown in the viewer.\")\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"Unknown tool: \" + tool);\r\n\t\t}\r\n }\r\n\r\n showAllObjects(loadedRevisions: Map): void {\r\n loadedRevisions.forEach((revisionInformation: RevisionInformation3d) => {\r\n if (revisionInformation.isModelShowing) {\r\n if (this.spacesEnabled) {\r\n $('#viewerContainer3d').viewer('show', revisionInformation.spaceIds);\r\n $('#viewerContainer3d').viewer('show', revisionInformation.otherObjectIdsList);\r\n } else {\r\n $('#viewerContainer3d').viewer('show', revisionInformation.otherObjectIdsList);\r\n }\r\n }\r\n });\r\n }\r\n\r\n hideAllObjects(loadedRevisions: Map): void {\r\n loadedRevisions.forEach((revisionInformation: RevisionInformation3d) => {\r\n if (revisionInformation.isModelShowing) {\r\n if (this.spacesEnabled) { \r\n $('#viewerContainer3d').viewer(ViewerMethodNames.hide, revisionInformation.spaceIds);\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.hide, revisionInformation.otherObjectIdsList);\r\n } else {\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.hide, revisionInformation.otherObjectIdsList);\r\n }\r\n }\r\n });\r\n }\r\n\r\n transluteAllObjects(loadedRevisions: Map): void {\r\n loadedRevisions.forEach((revisionInformation: RevisionInformation3d) => {\r\n if (revisionInformation.isModelShowing) {\r\n if (this.spacesEnabled) { \r\n $('#viewerContainer3d').viewer(ViewerMethodNames.translucent, revisionInformation.spaceIds);\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.translucent, revisionInformation.otherObjectIdsList);\r\n } else {\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.translucent, revisionInformation.otherObjectIdsList);\r\n }\r\n }\r\n });\r\n }\r\n\r\n handleSpaces(loadedRevisions: Map, shouldShowSpaces: boolean): void {\r\n this.spacesEnabled = shouldShowSpaces;\r\n loadedRevisions.forEach((revisionInformation: RevisionInformation3d) => {\r\n if (revisionInformation.isModelShowing) {\r\n if (this.spacesEnabled) { \r\n $('#viewerContainer3d').viewer('deselectAll');\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show, revisionInformation.spaceIds);\r\n } else {\r\n $('#viewerContainer3d').viewer('deselectAll');\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.hide, revisionInformation.spaceIds);\r\n }\r\n }\r\n });\r\n }\r\n\r\n hideAllOtherObjects(loadedRevisions: Map, objectId: number[]):void {\r\n this.hideAllObjects(loadedRevisions);\r\n this.viewerObjectInfoService.findObjectsToHandle(objectId, ViewerMethodNames.show);\r\n }\r\n\r\n makeAllOtherObjectsTranslucent(loadedRevisions: Map, objectId: number[]): void {\r\n this.transluteAllObjects(loadedRevisions);\r\n this.viewerObjectInfoService.findObjectsToHandle(objectId, ViewerMethodNames.show);\r\n }\r\n\r\n turnOnRevision(loadedRevisions: Map, revision: BimViewerRevisionDtoSplitView, shouldLookAt: boolean): void {\r\n let chosenRevision: RevisionInformation3d | undefined = loadedRevisions.get(revision.id);\r\n if (chosenRevision) {\r\n if (this.spacesEnabled) {\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show, chosenRevision.otherObjectIdsList);\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show, chosenRevision.spaceIds);\r\n } else {\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show, chosenRevision.otherObjectIdsList);\r\n }\r\n if (shouldLookAt) {\r\n $('#viewerContainer3d').viewer('lookAtBoundingBox', chosenRevision.boundingBox);\r\n }\r\n }\r\n }\r\n\r\n turnOffRevision(loadedRevisions: Map, revision: BimViewerRevisionDtoSplitView): void {\r\n let chosenRevision: RevisionInformation3d | undefined = loadedRevisions.get(revision.id);\r\n if (chosenRevision) {\r\n $('#viewerContainer3d').viewer('deselectAll');\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show,chosenRevision.otherObjectIdsList);\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.show,chosenRevision.spaceIds);\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.hide,chosenRevision.otherObjectIdsList);\r\n $('#viewerContainer3d').viewer(ViewerMethodNames.hide,chosenRevision.spaceIds);\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event('resize')); //Called to remove border of Catenda sections on the removed model.\r\n }, 0);\r\n }\r\n }\r\n\r\n\tprivate hasCatenda3d():boolean {\r\n\t\tconst catendaViewer = $('#viewerContainer3d');\r\n\t\tif (!catendaViewer || catendaViewer.length == 0) { return false; }\r\n\t\tconst hasFunc = catendaViewer.viewer;\r\n\t\treturn !!hasFunc;\r\n\t}\r\n}\r\n\r\n\r\n"],"names":["AppContextService","projectInvitations","projects","_projectId_","expectedRoute","_selectedFilter","defaultFilter","selectedGrouping","undefined","defaultGrouping","combinedFilter","changesSaved","enableLCAByg","projectId","this","set_projectId","p","console","log","selectedFilterNAME","name","switchProjectLogic","who","setProject","setSelectedFilter","setSelectedGrouping","setCombinedFilter","trace","setProjects","getSelectedProject","project","find","x","id","setProjectInvitations","setCurrentUser","currentUser","calcOrgFlags","warn","flagsInput","organization","orgFlags","sigmaPublish","includes","sigma","getSelectedFilter","filter","setExpectedRoute","href","setDefaultFilter","getDefaultFilter","grouping","getSelectedGrouping","setDefaultGrouping","group","getDefaultGrouping","getCombinedFilter","NO_PROJECT","computedFrom","BimViewerService","constructor","apiClient","appContext","endpoint","async","parameters","get","handleError","jsonResult","apiBaseUrl","getApiUrl","bimViewerLink","userId","secretId","window","open","revisionId","modelName","altUpload","chosenFileToUpload","fileDto","postJson","revisionDto","uploadRevision","isSynced","currentRevision","newestRevisionDate","created","file","note","fileId","formData","FormData","append","postForm","objectResult","modelId","prj","api","response","BimViewerThreeDService","events","viewerObjectInfoService","spacesEnabled","subscriptions","reload","forEach","subscription","dispose","hideObjects","objectIds","findObjectsToHandle","$","viewer","transluteObjects","showObjects","lookAt","changeSelectedTool","tool","hasCatenda3d","mode","Error","showAllObjects","loadedRevisions","revisionInformation","isModelShowing","spaceIds","otherObjectIdsList","hideAllObjects","transluteAllObjects","handleSpaces","shouldShowSpaces","hideAllOtherObjects","objectId","makeAllOtherObjectsTranslucent","turnOnRevision","revision","shouldLookAt","chosenRevision","boundingBox","turnOffRevision","setTimeout","dispatchEvent","Event","catendaViewer","length","autoinject"],"sourceRoot":""}