{"version":3,"file":"app-784739f1.06531a1db5f4425a.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","async","this","parentComponent","setupModels","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","showRevisions","clicked","event","detail","warn","revisionList","getAllRevisions_forMODEL","undefined","publish","revision","is2d","isAny3dRevisionOn","revisions","isNewestPluginRevision","closeModel","who","closePriorModel","priorModelId","filteredInputModelChanged","priorChosenModel","includes","index","indexOf","hideRevisions","resetInput","observable","autoinject"],"sourceRoot":""}