{"version":3,"file":"app-784739f1.80368175477070f0.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/work-area/model-revision/model/model.scss","webpack://client-app/./src/app/project/work-area/model-revision/model/model.html","webpack://client-app/./src/app/project/work-area/model-revision/model/model.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, `h1{padding:2px}.search-form{min-width:350px;font-family:Arial,FontAwesome;display:block;margin-top:2px;margin-bottom:2px}.model-column-width{max-width:150px}td .model-name-text{all:unset;display:block}td .model-time-text{all:unset;display:block}td .model-username-text{all:unset;display:block}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/work-area/model-revision/model/model.scss\"],\"names\":[],\"mappings\":\"AAAA,GACI,WAAA,CAUJ,aACI,eAAA,CACA,6BAAA,CACA,aAAA,CACA,cAAA,CACA,iBAAA,CAGJ,oBACI,eAAA,CAIA,oBACI,SAAA,CACA,aAAA,CAEJ,oBACI,SAAA,CACA,aAAA,CAEJ,wBACI,SAAA,CACA,aAAA\",\"sourcesContent\":[\"h1 {\\r\\n padding: 2px;\\r\\n}\\r\\n\\r\\n// .table-hover>tbody>tr:hover {\\r\\n// background-color: darkgrey;\\r\\n// }\\r\\n// .highlight-row {\\r\\n// background-color: #9ddff7 !important;\\r\\n// }\\r\\n\\r\\n.search-form {\\r\\n min-width: 350px;\\r\\n font-family:Arial, FontAwesome;\\r\\n display:block;\\r\\n margin-top: 2px;\\r\\n margin-bottom: 2px;\\r\\n}\\r\\n\\r\\n.model-column-width {\\r\\n max-width: 150px;\\r\\n}\\r\\n\\r\\ntd {\\r\\n .model-name-text {\\r\\n all:unset;\\r\\n display: block;\\r\\n }\\r\\n .model-time-text {\\r\\n all: unset;\\r\\n display: block;\\r\\n }\\r\\n .model-username-text {\\r\\n all:unset;\\r\\n display: block;\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"\\r\\n\";","import { BimViewerFileDtoSplitView, BimViewerRevisionDtoSplitView } from 'app/models/viewer-dtos/Dtos/bimviewer-dtos';\r\nimport { ModelRevisionParent } from '../model-revision-parent';\r\nimport {observable} from 'aurelia-framework';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport {EventAggregator} from \"aurelia-event-aggregator\";\r\nimport { UserService } from 'app/services/user-service';\r\nimport { DateTimeFormatter } from 'app/services/date-time-formatter';\r\n\r\n@autoinject\r\nexport class Model {\r\n private modelList: BimViewerFileDtoSplitView[] = [];\r\n private filteredModels: BimViewerFileDtoSplitView[] = [];\r\n private parentComponent: ModelRevisionParent | undefined;\r\n public isModelButtonsClicked: boolean = false;\r\n @observable filteredInputModel: string = \"\";\r\n private currentSelectedIndex: number = -1;\r\n private connectedModelName: string = \"\";\r\n\r\n constructor(public userService: UserService, public eventAggregator : EventAggregator) {\r\n\t\tconsole.log('model.ts, ctor');\r\n }\r\n\r\n async handleReload(): Promise {\r\n console.log(\"Model.handleReload\", this.parentComponent);\r\n await this.setupModels();//-in-handleReload model.ts\r\n }\r\n\r\n async bind(params: any): Promise {\r\n\t\tconsole.log('model.ts, bind');\r\n this.filteredInputModel = \"\";\r\n this.parentComponent = params;\r\n\t\t\r\n\t\tconsole.log('model.ts bind attempts to call model.setupModels, which assumes MRP has finished its initModels..');\r\n await this.setupModels();//-in-bind model.ts\r\n }\r\n\r\n\tpublic static sortABC:boolean = false; // JG: I like that the server sorts by newest-time, but I don't really know what the user wants/needs.\r\n\r\n async setupModels(): Promise { // called by BIND and RELOAD.\r\n\t\tconsole.log('model.ts, setupModels');\r\n // do we risk a cache-effect by using get instead of post?\r\n let name: string | undefined = this.parentComponent?.appContext?.getSelectedProject()?.name; \r\n this.connectedModelName = name ? name : \"No Connected model name found\";\r\n\r\n let models: BimViewerFileDtoSplitView[] | undefined = this.parentComponent?.getModels();\r\n\t\tconsole.log('setupModels:', models?.length, ', from ParentComponent.getModels');\r\n\r\n this.modelList = models ? models : [];\r\n\t\tif (Model.sortABC) {\r\n\t\t\tthis.sortModelsABC();\r\n\t\t}\r\n this.setupConnectedModel();\r\n this. modelList = await this.userService.fillUsernames(this.modelList,'M.setupModels');\r\n this.filteredModels = this.modelList;\r\n\t\tconsole.log('M-setupModels, filteredModels was:',this.filteredModels.length, 'becomes:', this.modelList.length);\r\n this.formatDateTime();\r\n }\r\n\r\n setupConnectedModel(): void { //If no connected model exists, a fake one is created to tell the user.\r\n\t\tconst hasConnectedModel:boolean = this.connectedModelExist();\r\n\t\tconsole.log('model.ts, setup-CONNECTED-Model, hasConnectedModel?', hasConnectedModel);\t\t\r\n if (this.connectedModelExist()) { return; } \r\n\r\n\t\tconsole.log('making fakeModel with currentRevision 0, as no connectedModel.');\r\n\t\tlet fakeModel: BimViewerFileDtoSplitView = {\r\n\t\t\t\t\t\t\t\t\tid:'00000000-0000-0000-0000-000000000000',\r\n\t\t\t\t\t\t\t\t\tname: this.parentComponent?.appContext?.getSelectedProject()?.name,\r\n\t\t\t\t\t\t\t\t\tcreatedByUser_Id: '00000000-0000-0000-0000-000000000000', //TODO - find user id.\r\n\t\t\t\t\t\t\t\t\tusername: '',\r\n\t\t\t\t\t\t\t\t\tcreated: this.parentComponent?.appContext?.getSelectedProject()?.created_UTC + \"\",\r\n\t\t\t\t\t\t\t\t\tprojectId: this.parentComponent?.appContext.projectId,\r\n\t\t\t\t\t\t\t\t\tcurrentRevision: 0,\r\n\t\t\t\t\t\t\t\t\tisChecked: false,\r\n\t\t\t\t\t\t\t\t\tisOpen: false,\r\n\t\t\t\t\t\t\t\t\tpluginUpload: true,\r\n\t\t\t\t\t\t\t\t\tisSynced: true,\r\n\t\t\t\t\t\t\t\t\tnewestRevisionDate: this.parentComponent?.appContext?.getSelectedProject()?.created_UTC + \"\",\r\n\t\t\t\t\t\t\t\t\tpressed2d: false,\r\n\t\t\t\t\t\t\t\t\tpressed3d: false,\r\n\t\t\t\t\t\t\t\t\tobjectsIdNotDoneLoading: false,\r\n\t\t\t\t\t\t\t\t\taltUpload: 'false'\r\n\t\t\t\t\t\t\t\t}\r\n\t\tthis.modelList.push(fakeModel); // JG: Det er nok fakeModel, vi ofte ser i UI?\r\n }\r\n\r\n connectedModelExist(): boolean {\r\n\t\tlet exists:boolean = (this.modelList.filter(model => (model.pluginUpload)).length > 0);\r\n\t\tconsole.log('model.ts, connectedModelExist..?', exists, 'among #',this.modelList.length, 'models.');\r\n return exists;\r\n }\r\n \r\n sortModelsABC(): void {\r\n\t\tconsole.log('model.ts, sortModelsABC');\r\n this.modelList.sort((element1: BimViewerFileDtoSplitView, element2: BimViewerFileDtoSplitView) => {\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 this.filteredModels.sort((element1, element2) => {\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\t\tconsole.log('model.ts, formatDateTime');\r\n this.filteredModels.forEach(model => {\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 async openModel(model: number): Promise {\r\n\t\t/* Ak, openModel bliver triggered, hvis man klikker i 'hele item rektanglet', UDENFOR 2d/3d knapperne.\r\n\t\t */\r\n\t\tconsole.log('model.ts, openModel');\r\n if (this.isModelButtonsClicked == true) {\r\n this.isModelButtonsClicked = false;\r\n return;\r\n }\r\n let success: boolean | undefined = await this.parentComponent?.showRevisions(this.filteredModels[model]);\r\n if (success != true) {\r\n return;\r\n }\r\n this.filteredModels[model].isOpen = !this.filteredModels[model].isOpen;\r\n if (this.filteredModels[model].isOpen) {\r\n this.currentSelectedIndex = model;\r\n } else {\r\n this.currentSelectedIndex = -1\r\n }\r\n }\r\n\r\n async open2DViewerModel(model: BimViewerFileDtoSplitView, clicked: boolean, event: PointerEvent | undefined): Promise {\r\n\t\tconsole.log('model.ts, open2DViewerModel');\r\n this.isModelButtonsClicked = clicked; //making sure only the button is pressed\r\n if (event?.detail && event?.detail > 1) {\r\n console.warn(\"Multiple clicks are not supported\")\r\n return;\r\n }\r\n if (model.pressed2d != true) {\r\n let revisionList: BimViewerRevisionDtoSplitView[] | undefined = await this.parentComponent?.getAllRevisions_forMODEL(model,'O2VM');\r\n if (revisionList != undefined && revisionList.length > 0) {\r\n this.eventAggregator.publish('2dViewer:TurnOnRevision', {revision: revisionList[0], model: model, is2d: true, isAny3dRevisionOn: this.parentComponent?.isAny3dRevisionOn()})\r\n }\r\n } else {\r\n this.eventAggregator.publish('2dViewer:TurnOffRevision');\r\n }\r\n }\r\n\r\n async open3DViewerModel(model: BimViewerFileDtoSplitView, clicked: boolean, event: PointerEvent | undefined): Promise { // in model.ts\r\n\t\tconsole.log('model.ts, open3DViewerModel');\r\n this.isModelButtonsClicked = clicked; //making sure only the button is pressed\r\n if (event?.detail && event?.detail > 1) { console.warn(\"Multiple clicks are not supported\"); return; }\r\n\t\tlet revisions: BimViewerRevisionDtoSplitView[] | undefined = await this.parentComponent?.getAllRevisions_forMODEL(model,'O3VM');\r\n\t\tif (revisions == undefined || revisions.length == 0) { console.log('(no revisions)'); return; }\r\n\r\n\t\tlet isNewestPluginRevision: boolean | undefined = this.parentComponent?.isNewestPluginRevision(model, revisions[0]);\r\n\t\t// (JG: I don't understand the logic/reasoning of how isNewestPluginRevision() is expressed..?)\r\n\t\t// (Actually, I believe it is because it is intended for revision.ts, so here in model.ts, it becomes a no-op.\r\n\t\t// - because we have 'clicked the entire-model, NOT a revision, we automatically have 'chosen' to use the newest revision.. )\r\n\r\n if (model.pressed3d !== true) {\r\n\t\t\tconsole.log('open3DViewerModel emitting 3dViewer:TurnOn3dRevision');\r\n\t\t\tthis.eventAggregator.publish('3dViewer:TurnOn3dRevision', {model: model, revision: revisions[0], isNewestPluginRevision: isNewestPluginRevision});\r\n } else {\r\n\t\t\tconsole.log('emitting 3dViewer:TurnOffMultiple3dRevision');\r\n\t\t\tthis.eventAggregator.publish('3dViewer:TurnOffMultiple3dRevision', {model: model, revisions: revisions, isNewestPluginRevision: isNewestPluginRevision});\r\n }\r\n }\r\n\r\n closeModel(who:string): void { // UB MRP.closeModel_MRP, MRP.showRevisions og model.filteredInputModelChanged.\r\n\t\tconsole.log('model.ts,closeModel', who, 'with #', this.filteredModels.length, 'filteredModels');\r\n this.filteredModels.forEach(model => {\r\n\t\t\tif (!model.isOpen) { return; }\r\n\t\t\t// only log those we actually need to turn off.\r\n\t\t\t// What a weird and unpleasant design?\r\n\t\t\tconsole.log('model.ts-isOpen<-false', model.id, model);\r\n model.isOpen = false;\r\n });\r\n }\r\n\r\n closePriorModel(priorModelId: string): void {\r\n\t\tconsole.log('model.ts, closePriorModel');\r\n this.filteredModels.forEach(model => {\r\n if(model.id == priorModelId) {\r\n model.isOpen = false;\r\n }\r\n });\r\n }\r\n \r\n //Search filter handling\r\n filteredInputModelChanged(): void {\r\n\t\tconsole.log('model.ts, filteredInputModelChanged');\r\n let priorChosenModel = this.filteredModels[this.currentSelectedIndex];\r\n\r\n\t\tconsole.log('M-filteredInputModelChanged, filteredModels was:',this.filteredModels.length, 'becomes:', this.modelList.length);\r\n this.filteredModels = this.modelList;\r\n\r\n this.filteredModels = this.modelList.filter(model => {\r\n return model?.name?.toLocaleLowerCase().includes(this.filteredInputModel.toLocaleLowerCase())\r\n });\r\n\t\tconsole.log('(filter) M-filteredInputModelChanged, filteredModels down to#',this.filteredModels.length);\r\n\r\n let index = -1;\r\n if(priorChosenModel != undefined) {\r\n index = this.filteredModels.indexOf(priorChosenModel);\r\n }\r\n if(index != -1) {\r\n if(this.filteredModels[index] != undefined) { \r\n this.currentSelectedIndex = index;\r\n }\r\n } else {\r\n this.closeModel('in filteredInputModelChanged');\r\n\r\n if(priorChosenModel != undefined) {\r\n priorChosenModel.isOpen = false;\r\n this.parentComponent?.hideRevisions();\r\n }\r\n } \r\n }\r\n\r\n resetInput(): void {\r\n\t\tconsole.log('model.ts, resetInput');\r\n this.filteredInputModel = \"\";\r\n }\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","Model","constructor","userService","eventAggregator","modelList","filteredModels","isModelButtonsClicked","filteredInputModel","currentSelectedIndex","connectedModelName","console","log","handleReload","this","parentComponent","setupModels","bind","params","name","appContext","getSelectedProject","models","getModels","length","sortABC","sortModelsABC","setupConnectedModel","fillUsernames","formatDateTime","hasConnectedModel","connectedModelExist","fakeModel","createdByUser_Id","username","created","created_UTC","projectId","currentRevision","isChecked","isOpen","pluginUpload","isSynced","newestRevisionDate","pressed2d","pressed3d","objectsIdNotDoneLoading","altUpload","exists","filter","model","sort","element1","element2","toLocaleLowerCase","forEach","formatDate","openModel","showRevisions","open2DViewerModel","clicked","event","detail","warn","revisionList","getAllRevisions_forMODEL","undefined","publish","revision","is2d","isAny3dRevisionOn","open3DViewerModel","revisions","isNewestPluginRevision","closeModel","who","closePriorModel","priorModelId","filteredInputModelChanged","priorChosenModel","includes","index","indexOf","hideRevisions","resetInput","observable","autoinject","EventAggregator"],"sourceRoot":""}