{"version":3,"file":"app-b41379de.d141864e8b55481b.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\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);\r\n this.sourcesFromFilter = result.content;\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}","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","async","document","getElementById","this","mainSplit","minSize","gutterSize","dragInterval","direction","onDrag","sizes","window","dispatchEvent","Event","autoinject","TakeoffViewer","modal","threeSel","bind","attached","hasCatenda3d","console","warn","publish","objectIds","$","viewer","length","OpenConfirm","whenClosed","wasCancelled","updateFilterSources","e","log","objectIDs","getSelectedObjectIDs","shiftKey","showInSearchMode","deselectAll","catendaViewer","bindable","TypeOverview","apiClient","appContext","sourcesFromFilter","subscription","QF","subscribe","updateQuantitySources","unbind","forEach","s","dispose","qf","undefined","result","project","projectId","get","response","statusCode","content","OpenMessage","source","combined","postJson","formatDate","date","getCategoryName","cat","name","UpdateSourcesDialog","dialog","qtService","qsService","allQFs","sourcesFromViewer","deletedSources","Set","params","selectedQF","GetQuantityFilters","selectedSources","GetTypesByEntityLabels","getSelectedTypes","setAllSelected","type","selected","size","clear","filterType","add","filter","t","has","r","cancel","x","save","sourcesToAdd","map","Array","from","updateSources","ok","getFormattedDate","created","DialogController"],"sourceRoot":""}