{"version":3,"file":"app-b41379de.3a8ae33e5a0ab634.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/quantity-takeoff/takeoff-viewer/takeoff-viewer.scss","webpack://client-app/./src/app/project/quantity-takeoff/type-overview/type-overview.scss","webpack://client-app/./src/app/project/quantity-takeoff/update-sources-dialog/update-sources-dialog.scss","webpack://client-app/./src/app/project/quantity-takeoff/takeoff-viewer/takeoff-viewer.html","webpack://client-app/./src/app/project/quantity-takeoff/type-overview/type-overview.html","webpack://client-app/./src/app/project/quantity-takeoff/update-sources-dialog/update-sources-dialog.html","webpack://client-app/./src/app/project/quantity-takeoff/split-handler.ts","webpack://client-app/./src/app/project/quantity-takeoff/takeoff-viewer/takeoff-viewer.ts","webpack://client-app/./src/app/project/quantity-takeoff/type-overview/type-overview.ts","webpack://client-app/./src/app/project/quantity-takeoff/update-sources-dialog/update-sources-dialog.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, `.takeoff-viewer-top{display:block;min-width:400px;height:50px;padding:10px 10px}.takeoff-viewer-top .event-button{float:right;margin-right:2px}.takeoff-viewers-container{display:block;height:calc(100% - 50px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/quantity-takeoff/takeoff-viewer/takeoff-viewer.scss\"],\"names\":[],\"mappings\":\"AAAA,oBACI,aAAA,CACA,eAAA,CACA,WAAA,CACA,iBAAA,CACA,kCACI,WAAA,CACA,gBAAA,CAIR,2BACI,aAAA,CACA,wBAAA\",\"sourcesContent\":[\".takeoff-viewer-top {\\r\\n display: block;\\r\\n min-width: 400px;\\r\\n height: 50px;\\r\\n padding: 10px 10px;\\r\\n .event-button {\\r\\n float:right;\\r\\n margin-right: 2px;\\r\\n }\\r\\n}\\r\\n\\r\\n.takeoff-viewers-container {\\r\\n display: block;\\r\\n height: calc(100% - 50px);\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// 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, `.type-overview-grid{width:100%}.type-overview-grid td,.type-overview-grid th{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:0;padding-left:5px;padding-right:5px}.type-overview-grid td button,.type-overview-grid th button{display:flex;width:15px;height:15px;justify-content:center;align-items:center}.type-overview-grid .red-text{color:red}.type-overview-grid .green-text{color:green}.type-overview-grid .yellow-text{color:#d5b60a}.type-overview-grid .grey-text{color:#d3d3d3}.type-overview-grid thead{position:sticky;top:0;z-index:10;background-color:#fff}.type-overview-grid thead tr{line-height:2em;height:2em}.type-overview-grid thead tr th{border:1px solid rgba(0,0,0,.175);border-top:0px}.type-overview-grid thead tr th:first-child{max-width:40px;min-width:40px;width:40px !important;border-left:0px}.type-overview-grid thead tr th:last-child{border-right:0px}.type-overview-grid tbody tr{line-height:1.5em;height:1.5em}.type-overview-grid tbody tr td{border:1px solid rgba(0,0,0,.175)}.type-overview-grid tbody tr td:first-child{border-left:0px}.type-overview-grid tbody tr td:last-child{border-right:0px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/quantity-takeoff/type-overview/type-overview.scss\"],\"names\":[],\"mappings\":\"AAEA,oBACI,UAAA,CACA,8CACI,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,gBAAA,CACA,iBAAA,CACA,4DACI,YAAA,CACA,UAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CAIR,8BACI,SAAA,CAEJ,gCACI,WAAA,CAEJ,iCACI,aAAA,CAEJ,+BACI,aAAA,CAEJ,0BACI,eAAA,CACA,KAAA,CACA,UAAA,CACA,qBAAA,CACA,6BACI,eAAA,CACA,UAAA,CACA,gCACI,iCAAA,CACA,cAAA,CAEJ,4CACI,cAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CAEJ,2CACI,gBAAA,CAKR,6BACI,iBAAA,CACA,YAAA,CACA,gCACI,iCAAA,CAEJ,4CACI,eAAA,CAEJ,2CACI,gBAAA\",\"sourcesContent\":[\"@import \\\"src/resources/customized-styles/variables\\\";\\r\\n\\r\\n.type-overview-grid {\\r\\n width: 100%;\\r\\n td, th{\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n text-overflow: ellipsis;\\r\\n max-width: 0;\\r\\n padding-left:5px;\\r\\n padding-right:5px;\\r\\n button {\\r\\n display: flex;\\r\\n width: 15px;\\r\\n height: 15px;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n }\\r\\n\\r\\n }\\r\\n .red-text {\\r\\n color: red;\\r\\n }\\r\\n .green-text {\\r\\n color: green;\\r\\n }\\r\\n .yellow-text {\\r\\n color: #D5B60A;\\r\\n }\\r\\n .grey-text {\\r\\n color: lightgrey;\\r\\n }\\r\\n thead {\\r\\n position: sticky;\\r\\n top:0;\\r\\n z-index: 10;\\r\\n background-color: white;\\r\\n tr {\\r\\n line-height: 2em;\\r\\n height: 2em;\\r\\n th {\\r\\n border: 1px solid $border-color;\\r\\n border-top: 0px;\\r\\n }\\r\\n th:first-child {\\r\\n max-width: 40px;\\r\\n min-width: 40px;\\r\\n width: 40px!important;\\r\\n border-left: 0px;\\r\\n }\\r\\n th:last-child {\\r\\n border-right: 0px;\\r\\n }\\r\\n }\\r\\n }\\r\\n tbody {\\r\\n tr {\\r\\n line-height: 1.5em;\\r\\n height: 1.5em;\\r\\n td {\\r\\n border: 1px solid $border-color;\\r\\n }\\r\\n td:first-child {\\r\\n border-left: 0px;\\r\\n }\\r\\n td:last-child {\\r\\n border-right: 0px;\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// 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, `.dialog-container-sources{height:80vh;width:60vw;overflow:hidden}.dialog-container-sources .dialog-header{width:100%;border-bottom:solid 1px #d3d3d3}.dialog-container-sources .dialog-header h3{padding:10px;vertical-align:middle;margin-bottom:0}.dialog-container-sources .sources-dialog-body{display:block !important;margin:10px;overflow:auto}.dialog-container-sources .sources-dialog-body--header{height:35px}.dialog-container-sources .sources-dialog-body--header .quantity-filter-headline{border-bottom:1px solid #a9a9a9;padding:2px;padding-right:15px}.dialog-container-sources .sources-dialog-body--header .quantity-filter-item{padding-left:3px;cursor:pointer}.dialog-container-sources .sources-dialog-body .sources-body-content{display:grid;grid-template-columns:50% 50%;height:calc(100% - 35px - 33px)}.dialog-container-sources .sources-dialog-body .sources-body-content .types-in-filter{height:100%;border-right:1px #d3d3d3 solid}.dialog-container-sources .sources-dialog-body .sources-body-content .types-in-filter .item{overflow:hidden;white-space:nowrap;line-height:2em;text-overflow:ellipsis}.dialog-container-sources .sources-dialog-body .sources-body-content .selected-types{height:100%;padding-left:10px}.dialog-container-sources .sources-dialog-body .sources-body-content .selected-types .item{line-height:2em;overflow:hidden;white-space:nowrap}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/quantity-takeoff/update-sources-dialog/update-sources-dialog.scss\"],\"names\":[],\"mappings\":\"AAGA,0BACI,WAAA,CACA,UAAA,CACA,eAAA,CACA,yCACI,UAAA,CACA,+BAAA,CACA,4CACI,YAAA,CACA,qBAAA,CACA,eAAA,CAIR,+CACI,wBAAA,CACA,WAAA,CACA,aAAA,CACA,uDACI,WAtBG,CAuBH,iFACI,+BAAA,CACA,WAAA,CACA,kBAAA,CAEJ,6EACI,gBAAA,CACA,cAAA,CAGR,qEACI,YAAA,CACA,6BAAA,CACA,+BAAA,CACA,sFACI,WAAA,CACA,8BAAA,CACA,4FACI,eAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGR,qFACI,WAAA,CACA,iBAAA,CACA,2FACI,eAAA,CACA,eAAA,CACA,kBAAA\",\"sourcesContent\":[\"$filter-height:35px;\\r\\n$hr-line-height: 33px;\\r\\n\\r\\n.dialog-container-sources {\\r\\n height: 80vh;\\r\\n width: 60vw; \\r\\n overflow: hidden;\\r\\n .dialog-header {\\r\\n width: 100%;\\r\\n border-bottom: solid 1px lightgrey;\\r\\n h3 {\\r\\n padding: 10px;\\r\\n vertical-align: middle;\\r\\n margin-bottom: 0;\\r\\n }\\r\\n }\\r\\n\\r\\n .sources-dialog-body {\\r\\n display: block!important;\\r\\n margin: 10px;\\r\\n overflow: auto;\\r\\n &--header {\\r\\n height:$filter-height;\\r\\n .quantity-filter-headline {\\r\\n border-bottom: 1px solid darkgray;\\r\\n padding: 2px;\\r\\n padding-right:15px;\\r\\n }\\r\\n .quantity-filter-item {\\r\\n padding-left:3px;\\r\\n cursor: pointer;\\r\\n }\\r\\n }\\r\\n .sources-body-content {\\r\\n display: grid;\\r\\n grid-template-columns: 50% 50%;\\r\\n height: calc(100% - $filter-height - $hr-line-height);\\r\\n .types-in-filter {\\r\\n height: 100%;\\r\\n border-right: 1px lightgrey solid;\\r\\n .item {\\r\\n overflow: hidden; \\r\\n white-space: nowrap;\\r\\n line-height: 2em;\\r\\n text-overflow: ellipsis;\\r\\n }\\r\\n }\\r\\n .selected-types {\\r\\n height: 100%;\\r\\n padding-left:10px;\\r\\n .item {\\r\\n line-height: 2em;\\r\\n overflow: hidden; \\r\\n white-space: nowrap;\\r\\n //text-overflow: ellipsis; //Come back to this, making it work.\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"\\r\\n\";","module.exports = \"\";","module.exports = \"\";","import Split from 'split.js'; // ES6 module.\r\n//import Split from \"split.js/dist/split.js\";\t\t\r\n//var Split = require('split.js'); // CommonJS, som vi ikke bruger.\r\n\r\nimport {EventAggregator} from 'aurelia-event-aggregator';\r\nimport {autoinject} from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class SplitHandler {\r\n private mainSplit: Split.Instance | undefined;\r\n\r\n constructor(public events: EventAggregator){\r\n } \r\n\r\n async setupMainSplitter(): Promise {\r\n if (document.getElementById('takeoff-left') != null && document.getElementById('takeoff-right') != null) {\r\n this.mainSplit = Split(['#takeoff-left','#takeoff-right'],\r\n {\r\n minSize: 0,\r\n gutterSize: 13,\r\n dragInterval: 10,\r\n direction: 'horizontal',\r\n onDrag: function (sizes: any) {\r\n window.dispatchEvent(new Event('resize'));\r\n },\r\n sizes:[50,50]\r\n });\r\n }\r\n }\r\n}","import { Three_Sel } from 'app/components/base-viewer-three-d/Three_Sel';\r\nimport { QuantityFilterDto } from 'app/project/quantity-views/quantity-filters';\r\nimport { ModalService } from 'app/services/modal-service';\r\nimport { DialogCloseResult } from 'aurelia-dialog';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject,bindable } from 'aurelia-framework';\r\n\r\ndeclare let $: any;\r\n@autoinject\r\nexport class TakeoffViewer {\r\n @bindable QF: QuantityFilterDto|undefined;\r\n\r\n\tthreeSel:Three_Sel = new Three_Sel();\r\n\r\n constructor(private events: EventAggregator, private modal: ModalService) {}\r\n\r\n bind():void {}\r\n\r\n attached(): void {}\r\n\r\n async switchToSearchMode(): Promise {\r\n\t\tif (!this.hasCatenda3d()) {\r\n\t\t\tconsole.warn(\"Ignoring switchToSearchMode, because no Catenda.\");\r\n\t\t\tthis.events.publish('takeoff-switch-right-view');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n let objectIds: number[] = [];\r\n $('#viewerContainer3d').viewer('eachSelected', (id: number) => {\r\n objectIds.push(id)\r\n });\r\n if (objectIds.length > 0) {\r\n let response: DialogCloseResult = await this.modal.OpenConfirm(\"Selected objects\", \"The selected objects might not have been saved. Do you wish to continue?\").whenClosed();\r\n if (response.wasCancelled == true) {\r\n return;\r\n }\r\n }\r\n $('#viewerContainer3d').viewer('deselectAll');\r\n this.events.publish('takeoff-switch-right-view');\r\n }\r\n\r\n updateFilterSources(e: PointerEvent): void {\r\n\t\tconsole.log('TakeoffViewer.updateFilterSources');\r\n\r\n let objectIDs: number[] = [];\r\n\t\tthis.getSelectedObjectIDs(objectIDs);\r\n\r\n if (e.shiftKey == true) { //The developer check up dialog will be opened.\r\n this.events.publish('quantity-takeoff:open-source-dialog', objectIDs);\r\n } else { //Types are directly added to the filter if any is selected.\r\n this.events.publish('quantity-takeoff:add-found-types', objectIDs);\r\n }\r\n\t\t\r\n\t\tif (!this.hasCatenda3d()) {\r\n\t\t\tconsole.log(\"Ignoring deselect in updateFilterSources, because no Catenda.\");\r\n\t\t\treturn;\r\n\t\t}\r\n $('#viewerContainer3d').viewer('deselectAll');\r\n }\r\n\r\n\tgetSelectedObjectIDs(objectIDs: number[]) { \r\n\t\t//this.threeSel.hello();\r\n\t\tthis.threeSel.getSelectedObjectIDs(objectIDs); \r\n\t\tconsole.log('takeoff-viewer.getSelectedObjectIDs: #', objectIDs);\r\n\t} //this.getObjectIDsFromCatenda(objectIDs); \r\n\r\n showInSearchMode(): void {\r\n let objectIDs: number[] = [];\r\n this.getSelectedObjectIDs(objectIDs); //$('#viewerContainer3d').viewer('eachSelected', function(id: number) { objectIds.push(id) });\r\n this.events.publish('takeoff-show-in-search', objectIDs);\r\n\t\tthis.threeSel.deselectAll(); //$('#viewerContainer3d').viewer('deselectAll');\r\n\r\n\t\t//this.OB?.highlighter?.zoomToSelection();\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\treconvertFragment() {\r\n\t\tconsole.log('takeoff-viewer.reconvertFragment');\r\n\t\tthis.events.publish('takeoff-reconvert-fragment');\r\n\t}\r\n\r\n}\r\n\r\n\r\n","import { TypeDtoWBuiltInCategory } from \"app/components/quantity-filter-sources/quantity-filter-sources\";\r\nimport { QuantityFilterDto } from \"app/project/quantity-views/quantity-filters\";\r\nimport { ApiClient } from \"app/services/api-client\";\r\nimport { AppContextService } from \"app/services/app-context-service\";\r\nimport { DateTimeFormatter } from \"app/services/date-time-formatter\";\r\nimport { ModalService } from \"app/services/modal-service\";\r\nimport { DialogCloseResult } from \"aurelia-dialog\";\r\nimport { bindable, autoinject } from \"aurelia-framework\";\r\nimport { HttpResponseMessage } from \"aurelia-http-client\";\r\nimport { EventAggregator, Subscription } from \"aurelia-event-aggregator\";\r\nimport { aoCategories } from 'resources/categories/categories';\r\n\r\n\r\n@autoinject\r\nexport class TypeOverview {\r\n @bindable QF: QuantityFilterDto|undefined;\r\n sourcesFromFilter: TypeDtoWBuiltInCategory[] = [];\r\n private subscription: Subscription[] = [];\r\n constructor(public apiClient: ApiClient, public appContext:AppContextService, public modal: ModalService, public events: EventAggregator) {}\r\n\r\n async bind(): Promise {\r\n console.log(\"type-overview:bind\", this.QF);\r\n this.subscription = [\r\n this.events.subscribe('type-overview:update-sources', () => { this.updateQuantitySources() }),\r\n // this.events.subscribe('pivot-grid-component:update-grid',() => {\r\n\t\t\t// \tthis.updateQuantitySources(\"pivot-grid-component:update-grid\");\r\n\t\t\t// })\r\n ]\r\n\r\n \r\n }\r\n\r\n async attached(): Promise {\r\n console.log(\"type-overview:attached\");\r\n }\r\n\r\n unbind(): void {\r\n this.subscription.forEach(s => s.dispose());\r\n }\r\n\r\n async QFChanged(qf: QuantityFilterDto): Promise {\r\n this.QF = qf;\r\n await this.updateQuantitySources();\r\n }\r\n\r\n async updateQuantitySources(): Promise {\r\n if (this.QF != undefined) {\r\n let result: HttpResponseMessage = await this.apiClient.project(this.appContext.projectId).get(`QuantitySources/GetSelectedTypes/${this.QF?.id}`).response();\r\n if (result.statusCode == 200) {\r\n //console.log(\"result \" , result); // TMI\r\n this.sourcesFromFilter = result.content;\r\n\t\t\t\t//console.log('updateQuantitySources, #sourcesFromFilter:', this.sourcesFromFilter.length);\r\n } else {\r\n this.modal.OpenMessage(\"Types not fetched\" , \"The types could not be fetched.\");\r\n }\r\n console.log(\"sources: \" , this.sourcesFromFilter);\r\n } else {\r\n this.sourcesFromFilter = [];\r\n }\r\n }\r\n \r\n async deleteEmptyType(source: TypeDtoWBuiltInCategory): Promise {\r\n let response: DialogCloseResult = await this.modal.OpenConfirm(\"Delete source from filter\",`Are you sure you want to delete ${source.combined} from this filter?`).whenClosed();\r\n if (response.wasCancelled) { return }\r\n \r\n let result: HttpResponseMessage = await this.apiClient.project(this.appContext.projectId).postJson(`QuantitySources/RemoveQuantitySources/${this.QF?.id}`, [source.id]).response();\r\n if (result.statusCode == 200) {\r\n await this.updateQuantitySources();\r\n this.events.publish('pivot-grid-component:update-grid'); //Idont like we subscribe on this in this class.\r\n } else {\r\n this.modal.OpenMessage(\"Type not deleted\" , \"The type could not be deleted.\");\r\n }\r\n }\r\n\r\n formatDate(date:string): string {\r\n return DateTimeFormatter.formatDate(date);\r\n }\r\n\r\n getCategoryName(id: number): string | undefined {\r\n return aoCategories.find(cat => cat.id == id)?.name;\r\n }\r\n\r\n}\r\n","import { TypeDto, TypeDtoWithSelect } from \"app/components/quantity-filter-sources/quantity-filter-sources\";\r\nimport { QuantityFilterDto } from \"app/project/quantity-views/quantity-filters\";\r\nimport { DateTimeFormatter } from \"app/services/date-time-formatter\";\r\nimport { ModalService } from \"app/services/modal-service\";\r\nimport { QuantitySourcesService } from \"app/services/quantity-sources-service\";\r\nimport { QuantityTakeoffService } from \"app/services/quantity-takeoff-service\";\r\nimport { DialogCloseResult, DialogController } from \"aurelia-dialog\";\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class UpdateSourcesDialog {\r\n selectedQF: QuantityFilterDto | undefined;\r\n allQFs: QuantityFilterDto[] = [];\r\n sourcesFromViewer: TypeDtoWithSelect[] = [];\r\n sourcesFromFilter: TypeDto[] = [];\r\n deletedSources: Set = new Set()\r\n\r\n constructor(protected dialog: DialogController, private modal: ModalService, private qtService: QuantityTakeoffService,\r\n private qsService: QuantitySourcesService) {}\r\n\r\n async activate(params: SourcesDialogParams): Promise {\r\n console.log(\"add-sources-dialog:activate\", params);\r\n this.selectedQF = params.selectedQF;\r\n this.allQFs = await this.qtService.GetQuantityFilters();\r\n\r\n\t\tconsole.log('UpdateSourcesDialog.GetTypesByEntityLabels,C, with: (#) objectIds:', params.selectedSources.length, params.selectedSources);\r\n this.sourcesFromViewer = await this.qtService.GetTypesByEntityLabels(params.selectedSources);\r\n\t\t\r\n if (this.selectedQF != undefined) {\r\n this.sourcesFromFilter = await this.qsService.getSelectedTypes(this.selectedQF.id);\r\n }\r\n this.setAllSelected();\r\n console.log(\"all QF's \" , this.allQFs);\r\n }\r\n \r\n setAllSelected(): void {\r\n this.sourcesFromViewer.forEach((type: TypeDtoWithSelect) => {\r\n type.selected = true;\r\n });\r\n }\r\n\r\n async setSelectedQF(QF: QuantityFilterDto): Promise {\r\n let result: DialogCloseResult | undefined;\r\n if (this.deletedSources.size > 0) {\r\n result = await this.modal.OpenConfirm('Unsaved changes' , 'You have unsaved changes to the filter, these changes will be lost if you switch filter. Are you sure you want to switch filter?').whenClosed();\r\n }\r\n if (result == undefined || result.wasCancelled == false) {\r\n console.log(\"trigger?\" , QF);\r\n this.selectedQF = QF;\r\n this.sourcesFromFilter = await this.qsService.getSelectedTypes(this.selectedQF.id);\r\n this.deletedSources.clear();\r\n }\r\n }\r\n\r\n async deleteSource(filterType: TypeDto): Promise {\r\n this.deletedSources.add(filterType.id);\r\n this.sourcesFromFilter = this.sourcesFromFilter.filter((t: TypeDto) => !this.deletedSources.has(t.id));\r\n }\r\n \r\n async canDeactivate(r: DialogCloseResult):Promise {\r\n return true;\r\n }\r\n\r\n async handleCancelDialog():Promise {\r\n if (this.selectedQF == undefined) {\r\n this.dialog.cancel();\r\n } else {\r\n let shouldSave: boolean = await this.modal.OpenConfirm(\"Changes not saved\", \"Do you want to save the changes before closing?\").whenClosed((x: DialogCloseResult) => {\r\n return x.wasCancelled == false;\r\n });\r\n if (shouldSave) {\r\n this.save();\r\n } else {\r\n this.dialog.cancel();\r\n }\r\n }\r\n }\r\n async save(): Promise {\r\n let sourcesToAdd: string[] = this.sourcesFromViewer.filter(t => t.selected).map(t => t.id);\r\n if (this.selectedQF != undefined) {\r\n console.log(\"sources to add \" , sourcesToAdd);\r\n console.log(\"sources to remove \" , Array.from(this.deletedSources));\r\n await this.qsService.updateSources(this.selectedQF.id,sourcesToAdd, Array.from(this.deletedSources));\r\n }\r\n this.dialog.ok(this.selectedQF);\r\n }\r\n\r\n getFormattedDate(): string {\r\n if (this.selectedQF?.created != undefined) {\r\n return DateTimeFormatter.formatDate(this.selectedQF?.created);\r\n }\r\n return \"\";\r\n }\r\n}\r\n\r\nexport class SourcesDialogParams {\r\n selectedQF: QuantityFilterDto | undefined;\r\n selectedSources: number[] = [];\r\n\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","SplitHandler","constructor","events","setupMainSplitter","document","getElementById","this","mainSplit","minSize","gutterSize","dragInterval","direction","onDrag","sizes","window","dispatchEvent","Event","autoinject","EventAggregator","TakeoffViewer","modal","threeSel","bind","attached","switchToSearchMode","hasCatenda3d","console","warn","publish","objectIds","$","viewer","length","OpenConfirm","whenClosed","wasCancelled","updateFilterSources","e","log","objectIDs","getSelectedObjectIDs","shiftKey","showInSearchMode","deselectAll","catendaViewer","reconvertFragment","bindable","TypeOverview","apiClient","appContext","sourcesFromFilter","subscription","QF","subscribe","updateQuantitySources","unbind","forEach","s","dispose","QFChanged","qf","undefined","result","project","projectId","get","response","statusCode","content","OpenMessage","deleteEmptyType","source","combined","postJson","formatDate","date","getCategoryName","find","cat","name","UpdateSourcesDialog","dialog","qtService","qsService","allQFs","sourcesFromViewer","deletedSources","Set","activate","params","selectedQF","GetQuantityFilters","selectedSources","GetTypesByEntityLabels","getSelectedTypes","setAllSelected","type","selected","setSelectedQF","size","clear","deleteSource","filterType","add","filter","t","has","canDeactivate","r","handleCancelDialog","cancel","x","save","sourcesToAdd","map","Array","from","updateSources","ok","getFormattedDate","created","DialogController"],"sourceRoot":""}