{"version":3,"file":"app-d24fddb9.39a06d6742671ba1.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/model-revision/model/models.scss","webpack://client-app/./src/app/project/model-revision/model/models.html","webpack://client-app/./src/app/project/model-revision/model/models.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, `.header-area-model{height:60px}.header-area-model .model-type-headline{display:inline;float:left;margin-left:5px}.header-area-model .models-selected{margin-top:10px;margin-right:10px;float:right}.header-area-model .open3d-models-button{margin-right:10px;margin-bottom:10px;float:right}.header-area-model .newModelBtn{display:inline;float:right}.search-form{font-family:Arial,FontAwesome;margin-bottom:10px;width:40%}table.fixed-size-model-table{table-layout:fixed;min-width:430px}table.fixed-size-model-table tr .small-table-data{width:30px}table.fixed-size-model-table tr .model-info-td div{display:flex}table.fixed-size-model-table tr .model-info-td div span:first-child{overflow:hidden;text-overflow:ellipsis}table.fixed-size-model-table tr .model-info-td div span{white-space:nowrap}table.fixed-size-model-table tr .fixed-td{overflow:hidden;width:100px}table.fixed-size-model-table tr td{vertical-align:middle}.rightAlignedContent{text-align:right}.uploaded-models-content{margin-top:10px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/model-revision/model/models.scss\"],\"names\":[],\"mappings\":\"AAAA,mBACI,WAAA,CACA,wCACI,cAAA,CACA,UAAA,CACA,eAAA,CAEJ,oCACI,eAAA,CACA,iBAAA,CACA,WAAA,CAEJ,yCACI,iBAAA,CACA,kBAAA,CACA,WAAA,CAEJ,gCACI,cAAA,CACA,WAAA,CAIR,aACI,6BAAA,CACA,kBAAA,CACA,SAAA,CAGJ,6BACI,kBAAA,CACA,eAAA,CAEI,kDACI,UAAA,CAGA,mDACI,YAAA,CACA,oEACI,eAAA,CACA,sBAAA,CAEJ,wDACI,kBAAA,CAIZ,0CACI,eAAA,CACA,WAAA,CAGV,mCAAA,qBAAA,CAKF,qBACI,gBAAA,CAGJ,yBACI,eAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = ` `;\n// Exports\nexport default code;","\r\nimport { ApiClient } from \"app/services/api-client\";\r\nimport { AppContextService } from \"app/services/app-context-service\";\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {RouteRecognizer} from 'aurelia-route-recognizer';\r\nimport {observable} from 'aurelia-framework';\r\nimport { ModalService } from 'app/services/modal-service';\r\nimport { BimViewerFileDto } from \"../../../models/viewer-dtos/Dtos/bimviewer-dtos\";\r\nimport { ModelRevision } from \"../model-revision\";\r\nimport { UserService } from \"app/services/user-service\";\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { DateTimeFormatter } from \"app/services/date-time-formatter\";\r\nimport { Model } from \"app/project/work-area/model-revision/model/model\";\r\nimport { SSE_Manager } from \"../SSE_Manager\";\r\nimport { AWJClient } from \"app/services/AWJClient\";\r\n\r\n//import { ProjectDto } from \"app/models/project-dto\";\r\nimport { I18N } from \"aurelia-i18n\";\r\nimport { ProjectDto } from \"app/models/project-dto\";\r\n\r\n \r\n\r\n@autoinject\r\nexport class Models {\r\n /* Hmm, it is models.html, which contains our 'model row' with [Overwrite IFC Model] button,\r\n and which tries to show current state.\r\n So, where does it get its source info..?\r\n It has an 'm of filteredModels', they are of type BimViewerFileDto. (src\\app\\models\\viewer-dtos\\Dtos\\bimviewer-dtos.ts)\r\n GetFilesForProject called by xx.\r\n */\r\n\r\n\tupdateData2: string = ''; \r\n \r\n @observable private filteredInputModel: string = \"\";\r\n @observable private checkedModels: number = 0;\r\n private connectedModelName?: string = \"Could not find connectedModel name\";\r\n private filteredModels: BimViewerFileDto[] = []; // we dare not rename it, but it is models_filteredModels.\r\n private isModelButtonsClicked: boolean = false;\r\n private currentSelectedModel: number = -1;\r\n modelList: BimViewerFileDto[] = [];\r\n private parentComponent?: ModelRevision;\r\n private keybuttonHandling: (this: Window, ev: KeyboardEvent) => any;\r\n\r\n constructor(public api: ApiClient, public appContext:AppContextService, public router: Router, public element: Element, \r\n public modal: ModalService, public _recognizer: RouteRecognizer, public userService: UserService, public events: EventAggregator,\r\n\t\tpublic awjClient:AWJClient, private i18n: I18N\r\n\t) {\r\n this.keybuttonHandling = (event: KeyboardEvent) => {\r\n if (event.key == \"Escape\") {\r\n this.parentComponent?.cancel();\r\n if (this.currentSelectedModel != -1) {\r\n this.filteredModels[this.currentSelectedModel].isOpen = false;\r\n }\r\n this.parentComponent?.createModelView?.resetInputs();\r\n } \r\n };\r\n }\r\n\r\n\tbind(params: ModelRevision): void {\r\n this.parentComponent = params;\r\n console.log('(models.ts.bind) model-activate, params:', params);\r\n window.addEventListener('keyup', this.keybuttonHandling, false);\r\n\t\tconsole.log('models.ts,bind calling setupModels, #params.modelList:', params.modelList.length);\r\n this.setupModels(params.modelList);//models.ts\r\n }\r\n\r\n unbind(): void {\r\n window.removeEventListener('keyup', this.keybuttonHandling, false);\r\n }\r\n\r\n toggle(isChecked: boolean): boolean {\r\n if (!isChecked) {\r\n this.checkedModels += 1;\r\n } else {\r\n this.checkedModels -= 1;\r\n }\r\n return true;\r\n }\r\n\r\n async setupModels(modelList_: BimViewerFileDto[]): Promise { \r\n\t\tconsole.log('setupModels', modelList_.length, modelList_);\r\n this.connectedModelName = this.parentComponent?.appContext?.getSelectedProject()?.name;\r\n this.modelList = modelList_;//in-setupModels\r\n this.sortModels_ABC2();\r\n this.modelList = await this.userService.fillUsernames(this.modelList,'models.setupModels');//in-setupModels\r\n await this.setupConnectedModel();\r\n\r\n this.filteredModels=this.modelList;//setupModels\r\n\t\tconsole.log('models.setupModel assigns # to models.filteredModels:', this.filteredModels.length);//setupModels\r\n\r\n this.formatDateTime();\r\n console.log('modelList at end of setupModels: #',this.modelList.length, this.modelList, this.filteredModels);//setupModels\r\n }\r\n\r\n\r\n\tasync getOrgProject(projectId: string, prjOrgId: string) : Promise {\r\n\t\t// fixme, consider moving getOrgProject to AppContextService or some project-service-helper \r\n\t\tconst currentUser_OrgId1 = this.appContext.currentUserOrgId(); \r\n\t\tconst currentUser_OrgId2 = prjOrgId;\r\n\t\tconsole.log('orgIDs:', currentUser_OrgId1,currentUser_OrgId2);\r\n\t\tconst REH = this.api.orgByToken(currentUser_OrgId2).get(`Project/GetProject_Org/${projectId}`);\r\n\r\n\t\tlet project:ProjectDto = await REH\r\n\t\t.handleError(this.i18n.tr('Error_Title_Generic'), \"Could not retrieve org project.\")\r\n\t\t.jsonResult();\r\n\r\n\t\treturn project;\r\n\t}\r\n\r\n async setupConnectedModel() { //If no connected model exists, a fake one is created to tell the user.\r\n\t\tconsole.log('models.setupConnectedModel');\r\n if (this.connectedModelExist()) {\r\n\t\t\tconsole.log('models.setupConnectedModel, connectedModelExist true'); \r\n } else {\r\n\t\t\tconsole.log('models.setupConnectedModel, connectedModelExist false');\r\n\r\n\t\t\tconst selected_GlobPrj:ProjectDto = this.appContext.getSelectedProject()!;\r\n\t\t\tconsole.log('models.setupConnectedModel, selected_Prj.src', selected_GlobPrj.modelSource);\r\n\r\n\t\t\t/* GlobPrj is not enough, it doesnt know modelSource, So we read this project again.\r\n\t\t\t */\r\n\t\t\tif (!selected_GlobPrj.modelSource) {\r\n\t\t\t\tlet orgProject:ProjectDto = await this.getOrgProject(selected_GlobPrj.id, selected_GlobPrj.ownerCompanyId);\r\n\t\t\t\tselected_GlobPrj.modelSource = orgProject.modelSource;\r\n\t\t\t\tconsole.log(\r\n\t\t\t\t\t'because selected_GlobPrj did not have modelSource set, we manually retrieve it through GetProject_Org, to be ', \r\n\t\t\t\t\torgProject.modelSource, 'for prj/org', selected_GlobPrj.id, selected_GlobPrj.ownerCompanyId\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('setupConnectedModels, selected_GlobPrj.modelSource had', selected_GlobPrj.modelSource);\r\n\t\t\t}\r\n\r\n let name: string | undefined = selected_GlobPrj?.name;\r\n\r\n let fakeModel: BimViewerFileDto = {\r\n\t\t\t\tid:'00000000-0000-0000-0000-000000000000',\r\n\t\t\t\tname: name ? name : '',\r\n\t\t\t\tcreatedByUser_Id: '00000000-0000-0000-0000-000000000000', //TODO - find user id.\r\n\t\t\t\tusername: '',\r\n\t\t\t\tcreated: selected_GlobPrj?.created_UTC + \"\",\r\n\t\t\t\tprojectId: this.appContext.projectId,\r\n\t\t\t\tcurrentRevision: 0,\r\n\t\t\t\tisChecked: false,\r\n\t\t\t\tisOpen: false,\r\n\t\t\t\tpluginUpload: true,\r\n\t\t\t\tisSynced: true,\r\n\t\t\t\tnewestRevisionDate: selected_GlobPrj?.created_UTC + \"\",\r\n\t\t\t\taltUpload: '?-setupConnectedModel',\r\n\t\t\t\tmodelSource: selected_GlobPrj.modelSource,//in-setupConnectedModel '',\r\n\t\t\t\tlatestRevisionNote: '(init by hand)'\r\n\t\t\t}\r\n\r\n\t\t\tconsole.log('models.setupConnectedModel, adding fakeModel to (models.ts)this.modelList');\r\n this.modelList.push(fakeModel);//in-setupConnectedModel\r\n }\r\n }\r\n\r\n\r\n connectedModelExist(): boolean {\r\n return this.modelList.filter(model => (model.pluginUpload)).length > 0;\r\n }\r\n \r\n sortModels_ABC2(): void {\r\n\t\tif (!Model.sortABC) {\r\n\t\t\tconsole.log('(not sorting)');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n this.modelList.sort((element1: BimViewerFileDto, element2: BimViewerFileDto) => {\r\n if (!element1.name || !element2.name) {\r\n return 0;\r\n }\r\n if (element1.name.toLocaleLowerCase() < element2.name.toLocaleLowerCase()) {\r\n return -1;\r\n }\r\n if (element1.name.toLocaleLowerCase() > element2.name.toLocaleLowerCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\t\t\r\n\t\t// hmm, are these separate arrays?\r\n\r\n this.filteredModels.sort((element1: BimViewerFileDto, element2: BimViewerFileDto) => {\r\n if (!element1.name || !element2.name) {\r\n return 0;\r\n }\r\n if (element1.name.toLocaleLowerCase() < element2.name.toLocaleLowerCase()) {\r\n return -1;\r\n }\r\n if (element1.name.toLocaleLowerCase() > element2.name.toLocaleLowerCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n formatDateTime(): void {\r\n this.filteredModels.forEach((model: BimViewerFileDto) => {//formatDateTime\r\n model.created = DateTimeFormatter.formatDate(model.created);\r\n if (model.newestRevisionDate) {\r\n model.newestRevisionDate = DateTimeFormatter.formatDate(model.newestRevisionDate);\r\n }\r\n });\r\n }\r\n\r\n //Search filter handling\r\n filteredInputModelChanged(): void {\r\n console.log(\"this.currentSelectedModel \" , this.currentSelectedModel)\r\n console.log(\"this.filteredModels\" , this.filteredModels);//filteredInputModelChanged\r\n if (this.currentSelectedModel || this.filteredInputModel) {\r\n let priorChosenModel: BimViewerFileDto | undefined = this.filteredModels[this.currentSelectedModel];\r\n let ispriorChosenModelOpen: boolean = false;\r\n if (priorChosenModel != undefined) {\r\n ispriorChosenModelOpen = priorChosenModel.isOpen;\r\n this.filteredModels[this.currentSelectedModel].isOpen = false;\r\n }\r\n\r\n this.filteredModels = this.modelList;//filteredInputModelChanged\r\n\t\t\tconsole.log('filteredInputModelChanged, this.filteredModels#', this.filteredModels.length);\r\n\r\n\t\t\t// WTF?\r\n this.filteredModels = this.modelList.filter((model: BimViewerFileDto) => {//filteredInputModelChanged\r\n return model.name?.toLocaleLowerCase().includes(this.filteredInputModel.toLocaleLowerCase())\r\n });\r\n\r\n let index: number = this.filteredModels.indexOf(priorChosenModel);\r\n if (index != -1) {\r\n if (ispriorChosenModelOpen) {\r\n this.filteredModels[index].isOpen = true;\r\n }\r\n this.currentSelectedModel = index;\r\n } else {\r\n this.currentSelectedModel = -1;\r\n this.parentComponent?.cancel();\r\n }\r\n console.log(this.filteredModels);\r\n }\r\n }\r\n\r\n open2DViewerModel(model: BimViewerFileDto): void {\r\n this.isModelButtonsClicked = true;\r\n let modelId: string[] = [model.id];\r\n this.router.navigateToRoute('project/work-area', {projectId: this.appContext.getSelectedProject()?.id, modelId, is2d: true}, {replace: true});\r\n }\r\n\r\n open3DViewerModel(model: BimViewerFileDto): void { // in models.ts\r\n\t\tconsole.log('models.ts, open3DViewerModel');\r\n this.isModelButtonsClicked = true;\r\n let modelId: string[] = [model.id];\r\n this.router.navigateToRoute('project/work-area', {projectId: this.appContext.getSelectedProject()?.id, modelId, is2d: false}, {replace: true});\r\n }\r\n \r\n openMultipleModels(): void {\r\n let modelId: string[] = [];\r\n this.modelList.forEach((model: BimViewerFileDto) => {//in-openMultipleModels\r\n if (model.isChecked) {\r\n modelId.push(model.id);\r\n }\r\n });\r\n this.router.navigateToRoute('project/work-area', {projectId: this.appContext.getSelectedProject()?.id, modelId, is2d: false}, {replace: true});\r\n }\r\n\r\n async openModel(model_ix: number): Promise {//UB: UI\r\n if (this.isModelButtonsClicked == true) {\r\n this.isModelButtonsClicked = false;\r\n return;\r\n }\r\n let success: boolean = true;\r\n if (this.filteredModels[model_ix].isOpen != true) {\r\n success = await this.parentComponent?.getRevision(this.filteredModels[model_ix]) ? true : false;\r\n }\r\n if (success != true) {\r\n return;\r\n }\r\n if (this.currentSelectedModel != -1 && this.currentSelectedModel != model_ix && this.filteredModels[this.currentSelectedModel] != undefined) { //Resets prior selected model\r\n this.filteredModels[this.currentSelectedModel].isOpen = false;\r\n }\r\n this.currentSelectedModel = model_ix;\r\n this.handleSelectedModel();\r\n }\r\n\r\n handleSelectedModel(): void {\r\n if (this.parentComponent) {\r\n this.parentComponent.showCreateModel = false;\r\n if (this.filteredModels[this.currentSelectedModel].isOpen) {\r\n this.parentComponent?.cancel();\r\n this.filteredModels[this.currentSelectedModel].isOpen = false;\r\n } else {\r\n this.filteredModels[this.currentSelectedModel].isOpen = !this.filteredModels[this.currentSelectedModel].isOpen;\r\n }\r\n this.parentComponent?.makeSpaceForRightPanel();\r\n }\r\n }\r\n\r\n showCreateNewModelView(): void { // presumably ui menu callback?\r\n if (this.filteredModels[this.currentSelectedModel] != null) {\r\n this.filteredModels[this.currentSelectedModel].isOpen = false;\r\n }\r\n this.parentComponent?.showCreateNewModelView();\r\n }\r\n \r\n insertNewModel(fileDto: BimViewerFileDto): void { // presumably ui menu callback?\r\n //this.filteredModels.push(fileDto);\r\n this.filteredModels.unshift(fileDto); // insert at front.\r\n\t\tconsole.log('insertNewModel, #this.filteredModels:',this.filteredModels.length, fileDto);\r\n this.modelList = this.filteredModels;//in-insertNewModel\r\n this.sortModels_ABC2();//insertNewModel\r\n }\r\n\r\n updateRevisionNumber(revisionNumber: number, created: string): void {\r\n this.filteredModels[this.currentSelectedModel].currentRevision = revisionNumber;\r\n this.filteredModels[this.currentSelectedModel].newestRevisionDate = created;\r\n this.sortModels_ABC2();//updateRevisionNumber\r\n }\r\n\r\n handleDeletedModel(deletedModel: BimViewerFileDto): void {\r\n\t\tconsole.log('handleDeletedModel');\r\n this.filteredModels = this.filteredModels.filter((model: BimViewerFileDto) => {//handleDeletedModel\r\n return model != deletedModel;\r\n });\r\n this.modelList = this.modelList.filter((model: BimViewerFileDto) => {//in-handleDeletedModel\r\n return model != deletedModel;\r\n });\r\n }\r\n\r\n\r\n\timportIFCModel() {\r\n\t\tconsole.log('Models.importIFCModel');\r\n\r\n\t\t/* Won't work\r\n\t\tconst bvFile:BimViewerFileDto = this.filteredModels[this.currentSelectedModel];\r\n\t\tconsole.log('Models.importIFCModel, source:', bvFile.modelSource);\r\n\t\tif (bvFile.modelSource != 'ifc') { console.log('not importing, as modelSource not ifc.'); return; }\r\n\t\t*/\r\n\t\tthis.parentComponent?.importIFCModel();\r\n\t}\r\n\r\n\r\n\t////////////////////////\r\n\r\n\tasync myUpdateHandler2(updateData:MessageEvent) { \r\n\t\t//console.log('SSE myUpdateHandler2, event-data:', updateData); \r\n\t\tconst data:string = updateData.data;\r\n\t\tthis.updateData2 = data;\r\n\t}\r\n\r\n\tasync attached() {\r\n\t\tconsole.warn('SSE Models.attached', 'prjId:', this.appContext.projectId);\r\n\t\t\r\n\t\tthis.procureNote();\r\n\r\n\t\tconst boundMethod = this.myUpdateHandler2.bind(this);\r\n\t\tconst SSE_endpoint = this.awjClient.getApiUrl();\r\n\t\tSSE_Manager.subscribeToProject(this.appContext.projectId, 'update', boundMethod, SSE_endpoint);\r\n\t}\r\n\r\n\tprocureNote() {\r\n\t\tconsole.log('procureNote');\r\n \r\n\t\tconsole.log('procureNote, this.filteredModels has #items:', this.filteredModels.length); // FIXME, apparently we leave a lot laying about here?\r\n\t\tlet anyNote = '(no revision-Note)';\r\n\t\tfor (let R of this.filteredModels) {\r\n\t\t\tif (R.latestRevisionNote) {\r\n\t\t\t\tif (R.pluginUpload) {\r\n\t\t\t\t\tanyNote = R.latestRevisionNote;//procureNote\r\n\t\t\t\t\tconsole.log('procureNote sees ', R.latestRevisionNote, R);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// TMI: console.warn(`(also saw ${R.id})`);\r\n\t\t\t}\r\n\t\t\t/*\r\n\t\t\talsoUpload_Blob sets \r\n\t\t\t.. string note = $\"(Upload in progress. Started {when})\" ..\r\n\t\t\tduring _bimViewerCommands.AddRevisionToBimViewer(..)\r\n\t\t\t\r\n\t\t\tDoes anyone update it later?\r\n\t\t\r\n\t\t\t*/\r\n\t\t} // whatAreWeUsingThat_noteFieldOn_BimViewerRevision_for? \t\r\n\r\n\t\tthis.updateData2 = `attached:` + anyNote; // NB: This depends on Subscribe NOT receiving a grace event when no prior event has been seen.\r\n\t\tconsole.log('procureNote from attached, updateData2:', this.updateData2);\r\n\t\t// (otherwise, the grace event will overwrite what we set here.)\r\n\t}\r\n\t\r\n\tasync deactivate(x:any) {\r\n\t\tconsole.warn('SSE Models.deactivate',x);\r\n\t\tconst SSE_endpoint = this.awjClient.getApiUrl();\r\n\t\tSSE_Manager.unsubscribeToProject(this.appContext.projectId, 'update', SSE_endpoint);\r\n\t}\r\n\r\n}\r\n\r\n\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","Models","constructor","api","appContext","router","element","modal","_recognizer","userService","events","awjClient","i18n","updateData2","filteredInputModel","checkedModels","connectedModelName","filteredModels","isModelButtonsClicked","currentSelectedModel","modelList","this","keybuttonHandling","event","key","parentComponent","cancel","isOpen","createModelView","resetInputs","bind","params","console","log","window","addEventListener","length","setupModels","unbind","removeEventListener","toggle","isChecked","modelList_","getSelectedProject","name","sortModels_ABC2","fillUsernames","setupConnectedModel","formatDateTime","getOrgProject","projectId","prjOrgId","currentUser_OrgId1","currentUserOrgId","currentUser_OrgId2","REH","orgByToken","get","handleError","tr","jsonResult","connectedModelExist","selected_GlobPrj","modelSource","orgProject","ownerCompanyId","fakeModel","createdByUser_Id","username","created","created_UTC","currentRevision","pluginUpload","isSynced","newestRevisionDate","altUpload","latestRevisionNote","filter","model","Model","sortABC","sort","element1","element2","toLocaleLowerCase","forEach","formatDate","filteredInputModelChanged","priorChosenModel","ispriorChosenModelOpen","undefined","includes","index","indexOf","open2DViewerModel","modelId","navigateToRoute","is2d","replace","open3DViewerModel","openMultipleModels","openModel","model_ix","success","getRevision","handleSelectedModel","showCreateModel","makeSpaceForRightPanel","showCreateNewModelView","insertNewModel","fileDto","unshift","updateRevisionNumber","revisionNumber","handleDeletedModel","deletedModel","importIFCModel","myUpdateHandler2","updateData","data","attached","warn","procureNote","boundMethod","SSE_endpoint","getApiUrl","subscribeToProject","anyNote","R","deactivate","x","unsubscribeToProject","observable","autoinject","Element","EventAggregator","I18N"],"sourceRoot":""}