{"version":3,"file":"app-d5aa3f9d.76b0ebfc4d60571f.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/components/quantity-filter-columns/quantity-filter-columns.scss","webpack://client-app/./src/app/components/quantity-filter-columns/quantity-filter-columns.html","webpack://client-app/./src/app/components/quantity-filter-columns/quantity-filter-columns.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, `.dialog-container-columns{height:90vh;width:70vw;overflow:hidden}.dialog-container-columns .dialog-header{width:100%;border-bottom:solid 1px #d3d3d3}.dialog-container-columns .dialog-header h4{padding:10px;vertical-align:middle;margin-bottom:0}.dialog-container-columns .modal-body{display:flex;flex-direction:row;margin-top:5px}.dialog-container-columns .modal-body .left-column{display:flex;flex-direction:column;padding-top:5px;padding-left:15px;padding-right:15px;padding-bottom:2px;width:70%}.dialog-container-columns .modal-body .left-column .header{flex-grow:0}.dialog-container-columns .modal-body .left-column .body-content{height:100%;display:grid;grid-template-rows:50% 50%}.dialog-container-columns .modal-body .left-column .body-content .selected-items-body{flex-grow:1;padding-left:5px;padding-top:5px;overflow:auto}.dialog-container-columns .modal-body .left-column .body-content .selected-items-body .inline-wrapper{display:grid;grid-template-columns:repeat(6, 3.5em) auto}.dialog-container-columns .modal-body .left-column .body-content .selected-items-body .parameter-item .param-type{display:inline-block;width:1.3em;text-align:center;color:#b9b9b9;padding:1px;border-radius:50%;border:solid 1px #b9b9b9;font-family:sans-serif;font-weight:1000}.dialog-container-columns .modal-body .left-column .body-content .selected-items-body .parameter-item .not-right-aligned-item{padding-left:8px;padding-right:8px;padding-top:4px;padding-bottom:4px}.dialog-container-columns .modal-body .left-column .body-content .selected-items-body .parameter-item .right-aligned-item{float:right;margin-right:10px;margin-top:5px;cursor:pointer}.dialog-container-columns .modal-body .left-column .body-content .table-preview-container{overflow:hidden}.dialog-container-columns .modal-body .left-column .body-content .table-preview-container table{width:100%}.dialog-container-columns .modal-body .left-column .body-content .table-preview-container table thead>tr>th{font-weight:900;text-decoration:underline;border:.5px solid #ddd;border-top:0px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:0}.dialog-container-columns .modal-body .left-column .body-content .table-preview-container table thead>tr>th:first-child{border-left:0px}.dialog-container-columns .modal-body .left-column .body-content .table-preview-container table thead>tr>th:last-child{border-right:0px}.dialog-container-columns .modal-body .right-column{display:flex;flex-direction:column;padding-top:5px;padding-left:15px;padding-right:15px;padding-bottom:2px;border-left:solid 1px #d3d3d3;width:30%;max-width:30em;overflow:hidden}.dialog-container-columns .modal-body .right-column .header{flex-grow:0}.dialog-container-columns .modal-body .right-column .search-items-body{flex-basis:0;flex-grow:1;overflow:auto}.dialog-container-columns .modal-body .right-column .search-items-body .item{padding:3px}.dialog-container-columns .modal-body .right-column .search-items-body .item .param-type{display:inline-block;width:1.3em;text-align:center;color:#b9b9b9;padding:1px;border-radius:50%;border:solid 1px #b9b9b9;font-family:sans-serif;font-weight:1000}.dialog-container-columns .modal-body .right-column .search-items-body .item:hover{background-color:#d3d3d3;cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/components/quantity-filter-columns/quantity-filter-columns.scss\"],\"names\":[],\"mappings\":\"AAAA,0BACI,WAAA,CACA,UAAA,CACA,eAAA,CACA,yCACI,UAAA,CACA,+BAAA,CACA,4CACI,YAAA,CACA,qBAAA,CACA,eAAA,CAIR,sCACI,YAAA,CACA,kBAAA,CACA,cAAA,CACA,mDACL,YAAA,CACA,qBAAA,CAES,eAAA,CACA,iBAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CACT,2DAAA,WAAA,CACS,iEACI,WAAA,CACA,YAAA,CACA,0BAAA,CACA,sFACI,WAAA,CACA,gBAAA,CACA,eAAA,CACA,aAAA,CACA,sGACI,YAAA,CACA,2CAAA,CAGA,kHACI,oBAAA,CACA,WAAA,CACA,iBAAA,CAEA,aAAA,CACA,WAAA,CACA,iBAAA,CACA,wBAAA,CACA,sBAAA,CACA,gBAAA,CAEJ,8HACI,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CAEJ,0HACI,WAAA,CACA,iBAAA,CACA,cAAA,CACA,cAAA,CAKZ,0FACI,eAAA,CACA,gGACI,UAAA,CACA,4GACI,eAAA,CACA,yBAAA,CACA,sBAAA,CACA,cAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CAEJ,wHACI,eAAA,CAEJ,uHACI,gBAAA,CAMpB,oDACL,YAAA,CACA,qBAAA,CAES,eAAA,CACA,iBAAA,CACA,kBAAA,CACA,kBAAA,CACA,6BAAA,CACA,SAAA,CACT,cAAA,CACS,eAAA,CAET,4DAAA,WAAA,CACS,uEACR,YAAA,CACA,WAAA,CAEY,aAAA,CAEA,6EACI,WAAA,CAEC,yFACf,oBAAA,CACA,WAAA,CACA,iBAAA,CAEkB,aAAA,CACA,WAAA,CACA,iBAAA,CACA,wBAAA,CACA,sBAAA,CACA,gBAAA,CAGR,mFACI,wBAAA,CACA,cAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = ` `;\n// Exports\nexport default code;","import { Category } from 'app/models/parameter-definition-dto';\r\nimport { QuantityFilterDto } from 'app/project/quantity-views/quantity-filters';\r\nimport { DnDService } from 'app/services/d-n-d-service';\r\nimport { ModalService } from 'app/services/modal-service';\r\nimport { DisplayUnit, QuantityColumnService, SimpleParameterDto } from 'app/services/quantity-column-service';\r\nimport { DialogCloseResult, DialogController } from 'aurelia-dialog';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { VirtualizationEvents } from 'aurelia-ui-virtualization';\r\nimport { aoCategories } from 'resources/categories/categories';\r\nimport { TypeDto } from '../quantity-filter-sources/quantity-filter-sources';\r\nimport {ApiClient} from \"../../services/api-client\";\r\nimport {AppContextService} from \"../../services/app-context-service\";\r\n\r\n@autoinject\r\nexport class QuantityFilterColumns {\r\n private AggrFuncEnum: typeof AggrFuncEnum = AggrFuncEnum;\r\n private quantityFilter: QuantityFilterDto | undefined;\r\n private parameterColumns: (SimpleParameterDto | null)[] = [];\r\n private selectedParameterColumns: QuantityColumnDto[] = [];\r\n private startingColumnIds: string[] = [];\r\n private userInput: string = \"\";\r\n private catMap: {[key: string]: number[]} = {}\r\n private listFromStart: QuantityColumnDto[] = [];\r\n private readonly pageSize: number = 25;\r\n private parametersLoading: boolean = false;\r\n private hasSearched: boolean = false;\r\n private currentPageNumber: number = 0;\r\n public dragFilter: QuantityColumnDto | undefined; // This is a hack used to change the dragged html at the time it is copied to the mouse\r\n public listId: string = \"\";\r\n private saveClicked: boolean = false;\r\n\tprivate filterContainsRevisions: boolean = false;\r\n\tprivate removePreviousRevisionsOnSave: boolean = false;\r\n\r\n \r\n public keybuttonHandling: ((this: Window, ev: KeyboardEvent) => any) | undefined;\r\n\r\n constructor(protected dialog: DialogController,\r\n\t\t\t\tpublic quantityColumnService: QuantityColumnService,\r\n\t\t\t\tpublic modal: ModalService,\r\n\t\t\t\tprivate dndService: DnDService,\r\n\t\t\t\tprivate api: ApiClient,\r\n\t\t\t\tprivate appContext: AppContextService) { }\r\n\r\n async activate(filter: QuantityFilterDto): Promise {\r\n this.saveClicked = false;\r\n this.catMap = await this.quantityColumnService.getCatMap();\r\n console.log(\"MAP \" , this.catMap);\r\n this.quantityFilter = filter;\r\n\t\tthis.filterContainsRevisions = await this.filterHasRevisions(filter.id);\r\n console.log(\"FILTER ID \" , filter.id);\r\n let parameterIds: string[] = await this.POCGetTypeAndInstProjectParameters();\r\n await this.POCGettingUnits(parameterIds);\r\n\r\n await this.initParameterColumns();\r\n \r\n this.dialog.settings.keyboard = ['Escape'];\r\n this.keybuttonHandling = async (event) => {\r\n\t\t\tif (event.key == \"Enter\") {\r\n await this.searchForParameters();\r\n\t\t\t}\r\n };\r\n\t\twindow.addEventListener('keyup', this.keybuttonHandling, false);\r\n\r\n }\r\n async initParameterColumns() {\r\n this.parameterColumns = [];\r\n this.insertIdentityParameter();\r\n let more = await this.quantityColumnService.GetPartialProjectSimpleParametersByQF(0, this.quantityFilter!.id);\r\n this.parameterColumns.push(...more);\r\n }\r\n\r\n insertIdentityParameter() {\r\n let identityParam:SimpleParameterDto = {\r\n id: '00000000-0000-0000-0000-000000000001',\r\n name: 'AjourCount',\r\n parameterScope: true // what does true/false mean here??\r\n };\r\n this.parameterColumns.push(identityParam);\r\n }\r\n\r\n attached() {\r\n let draggedItem: QuantityColumnDto | undefined;\r\n this.listId = \"selected-columns-list\";\r\n\t\tthis.dndService.attachListInteraction(this.listId, {\r\n\t\t\tanimation: 150,\r\n\t\t\tforceFallback: true,\r\n\t\t\tgroup: \"aggregate-parameter\",\r\n\t\t\thandle: \".drag-handle\",\r\n\t\t\tdraggable: \".draggable-item\",\r\n\t\t\tdragClass: \"draggable-item--dragged\",\r\n\t\t\tchosenClass: \"draggable-item--chosen\",\r\n\t\t\tghostClass: \"draggable-item--ghost\",\r\n\t\t\tonChoose: (event: any) => {\r\n\t\t\t\tdraggedItem = this.selectedParameterColumns[event.oldDraggableIndex];\r\n\t\t\t},\r\n\t\t\tonEnd: (event: any) => {\r\n\t\t\t\tif (event.to.id === this.listId && draggedItem) {\r\n\t\t\t\t\tthis.selectedParameterColumns.splice(event.oldDraggableIndex, 1); // remove from old index\r\n\t\t\t\t\tthis.selectedParameterColumns.splice(event.newDraggableIndex, 0, draggedItem); // add to new index\r\n this.resetParameterOrder();\r\n this.handleCheckbox(event.newDraggableIndex);\r\n\t\t\t\t} \r\n\t\t\t\tdraggedItem = undefined;\r\n\t\t\t}\r\n\t\t});\r\n this.setSelectedAggr();\r\n }\r\n async handleCheckbox(newDraggableIndex: number): Promise {\r\n setTimeout(() => { \r\n //Timeout needed for view to update then setting the checkbox checked again (if it was).\r\n //This is needed as we distinguish on the only unique thing about quantity-columns which is their order.\r\n //There might be multiple guid.empties.\r\n let columnToChange: QuantityColumnDto | undefined = this.selectedParameterColumns.find(column => column.order == newDraggableIndex);\r\n (>document.getElementsByName(columnToChange?.order+'')).forEach((input: HTMLInputElement) => {\r\n if (columnToChange?.aggregate == input.value) {\r\n input.checked = true;\r\n }\r\n });\r\n }, 0);\r\n }\r\n \r\n //This will set the correct aggr for each column if any is selected.\r\n setSelectedAggr(): void {\r\n this.selectedParameterColumns.forEach((column:QuantityColumnDto) => {\r\n let aggrInputs: NodeListOf = >document.getElementsByName(column.order+'');\r\n aggrInputs.forEach((input:HTMLInputElement) => {\r\n if (column.aggregate == input.value) {\r\n input.checked = true;\r\n return;\r\n }\r\n });\r\n });\r\n }\r\n\r\n resetParameterOrder(): void {\r\n for (let parameter of this.selectedParameterColumns) {\r\n parameter.order = this.selectedParameterColumns.indexOf(parameter);\r\n }\r\n }\r\n\r\n unbind() {\r\n if (this.keybuttonHandling) {\r\n window.removeEventListener('keyup', this.keybuttonHandling, false);\r\n }\r\n }\r\n\r\n detached() {\r\n this.dndService.detachListInteraction(this.listId);\r\n }\r\n\r\n private async POCGettingUnits(parameterIds: string[]) {\r\n let units: DisplayUnit[] = await this.quantityColumnService.GetunitsByParameters(parameterIds);\r\n console.log(\"UNITS \" , units);\r\n this.selectedParameterColumns = await this.quantityColumnService.GetQuantityColumns();\r\n this.selectedParameterColumns.forEach(column => {\r\n this.startingColumnIds.push(column.id);\r\n this.listFromStart.push(Object.assign({},column));\r\n });\r\n console.log(this.selectedParameterColumns);\r\n }\r\n\r\n private async POCGetTypeAndInstProjectParameters(): Promise {\r\n let parameterIds: string[] = [];\r\n if (this.quantityFilter) {\r\n let types: TypeDto[] = await this.quantityColumnService.getSelectedTypes(this.quantityFilter.id);\r\n console.log(\"Selected Types \" , types);\r\n let typeIds: string[] = [];\r\n for (let type of types) {\r\n typeIds.push(type.id);\r\n }\r\n \r\n //Type parameters\r\n // let typeParameters = await this.quantityColumnService.GetTypeProjectParameters(typeIds);\r\n // console.log(\"Type Parameter options \" , typeParameters);\r\n // for (let parameter of typeParameters) {\r\n // parameterIds.push(parameter.id);\r\n // }\r\n \r\n // //Inst parameters\r\n // let instParameters = await this.quantityColumnService.GetInstProjectParameters(typeIds);\r\n // console.log(\"Inst Parameter options \" , instParameters);\r\n \r\n // for (let parameter of instParameters) {\r\n // parameterIds.push(parameter.id);\r\n // }\r\n }\r\n return parameterIds;\r\n }\r\n\r\n async getMoreParameters(scrollContext: any): Promise {\r\n if (!scrollContext.isAtBottom) { //built in virtual-repeat.for used for only getting more items if bottom is reached.\r\n return;\r\n }\r\n let newPageIndex: number = Math.round(this.parameterColumns.length / this.pageSize);\r\n if (!this.parametersLoading && this.currentPageNumber != newPageIndex) {\r\n await this.loadMoreParameters(newPageIndex);\r\n //Next line is to avoid \"Scroll intersection not handled. With indices: new\" showing more than once.\r\n document.getElementById('search-items-body')?.dispatchEvent(new CustomEvent(VirtualizationEvents.itemSizeChange));\r\n }\r\n this.sortParameters();\r\n }\r\n\r\n async loadMoreParameters(newPageIndex: number): Promise {\r\n if (this.quantityFilter) {\r\n this.parametersLoading = true;\r\n this.currentPageNumber = newPageIndex;\r\n this.parameterColumns.push(...await this.quantityColumnService.GetPartialProjectSimpleParametersByQF(this.currentPageNumber, this.quantityFilter.id));\r\n this.parametersLoading = false;\r\n }\r\n }\r\n\r\n async searchForParameters(): Promise {\r\n if (this.quantityFilter) { \r\n this.hasSearched = true;\r\n console.log(\"YOUR INPUT WAS - \",this.userInput);\r\n if (this.userInput == \"\") {\r\n await this.reinitParameters(); \r\n } else {\r\n this.parameterColumns = await this.quantityColumnService.GetProjectSimpleParametersByInputByQF(this.userInput, this.quantityFilter.id);\r\n this.handleAjourCount();\r\n this.sortParameters();\r\n }\r\n console.log(\"RETURN \" , this.parameterColumns);\r\n }\r\n }\r\n \r\n handleAjourCount() {\r\n if(\"AjourCount\".toLocaleLowerCase().indexOf(this.userInput.toLocaleLowerCase()) > -1) {\r\n this.insertIdentityParameter();\r\n }\r\n }\r\n\r\n async reinitParameters() {\r\n await this.initParameterColumns();\r\n }\r\n \r\n sortParameters(): void {\r\n this.parameterColumns.sort((element1, element2) => {\r\n if (element1 && element2) {\r\n return element1.name.localeCompare(element2.name);\r\n }\r\n return 0;\r\n })\r\n }\r\n\r\n selectParameter(parameter: SimpleParameterDto): void {\r\n if (this.quantityFilter) {\r\n console.log(\"Selected Parameter \" , parameter);\r\n let column: QuantityColumnDto = new QuantityColumnDto(\r\n\t\t\t\tthis.quantityFilter.id, \r\n\t\t\t\tparameter.name, \r\n\t\t\t\tparameter.id, \r\n\t\t\t\tfalse, \r\n\t\t\t\tparameter.parameterScope, \r\n\t\t\t\tAggrFuncEnum.None //QuantityColumnDTO.None\r\n\t\t\t);\r\n console.log(\"NEWLY SELECTED COLUMN \" , column);\r\n this.selectedParameterColumns.push(column);\r\n console.log(\"Columns\" , this.selectedParameterColumns);\r\n this.resetParameterOrder();\r\n }\r\n }\r\n\r\n removeColumn(column: QuantityColumnDto): void {\r\n console.log(\"PARAMETER TO REMOVE \" , column);\r\n if (column) {\r\n let index = this.selectedParameterColumns.indexOf(column);\r\n if (index != -1) {\r\n this.selectedParameterColumns.splice(index, 1);\r\n this.resetParameterOrder();\r\n }\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.checkIfSame()) {//handleCancelDialog\r\n this.dialog.cancel();\r\n return;\r\n }\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 this.saveClicked = true;\r\n await this.removeColumns();\r\n\r\n\t\tlet columnsToAdd = this.selectedParameterColumns.filter(column => column.id == \"00000000-0000-0000-0000-000000000000\");\r\n\t\tif (columnsToAdd.length != 0) {\r\n\t\t\tlet allColumnsInDb: QuantityColumnDto[] = await this.quantityColumnService.AddQuantityColumns(columnsToAdd);\r\n\t\t\tconsole.log('AddQuantityColumns returned ',allColumnsInDb.length, allColumnsInDb );\r\n\t\t\tawait this.editExistingColumns(allColumnsInDb);//save\r\n\t\t} else {\r\n\t\t\tconsole.log('(no columns to ADD.');\t\t\t\r\n\t\t\tawait this.editExistingColumns(this.selectedParameterColumns);//save, no-added.\r\n\t\t}\r\n\t\t\r\n\t\tif (this.removePreviousRevisionsOnSave) {\r\n\t\t\t// Remove all revisions\r\n\t\t\tawait this.api.project(this.appContext.projectId)\r\n\t\t\t\t.postText(`QuantityFilter/RemoveRevisions/${this.quantityFilter?.id}`, '')\r\n\t\t\t\t.handleError(\"Could not remove revisions\", \"An error occured\")\r\n\t\t\t\t.response();\r\n\t\t}\r\n\t\tawait this.dialog.ok();\r\n }\r\n\r\n checkIfSame(): boolean {//UB:handleCancelDialog\r\n let self = this;\r\n let isSame = (this.listFromStart.length == this.selectedParameterColumns.length) && (this.listFromStart.every(function(element, index) {\r\n return self.isElementSame(element,self.selectedParameterColumns[index]);//in-checkIfSame,UB:handleCancelDialog\r\n }));\r\n return isSame\r\n }\r\n\r\n private isElementSame(newColumn: QuantityColumnDto, oldColumn: QuantityColumnDto): boolean {\r\n return newColumn.id === oldColumn.id \r\n && newColumn.grouped === oldColumn.grouped\r\n\t\t\t\t&& newColumn.aggregate === oldColumn.aggregate\r\n //&& newColumn.withAvg === oldColumn.withAvg\r\n //&& newColumn.withMax === oldColumn.withMax\r\n //&& newColumn.withMin === oldColumn.withMin\r\n //&& newColumn.withNum === oldColumn.withNum\r\n //&& newColumn.withSum === oldColumn.withSum\r\n && newColumn.prjParameterId === oldColumn.prjParameterId\r\n && newColumn.order == oldColumn.order;\r\n }\r\n\r\n private async removeColumns(): Promise {\r\n let listOfSelectedColumIds: string [] = [];\r\n this.selectedParameterColumns.forEach(element => {\r\n listOfSelectedColumIds.push(element.id);\r\n });\r\n\t\tlet columnsToRemove = this.startingColumnIds.filter(element => !listOfSelectedColumIds.includes(element));\r\n\t\tif (columnsToRemove.length == 0) {\r\n\t\t\tconsole.log('(no columns to remove.)'); return;\r\n\t\t}\r\n\r\n await this.quantityColumnService.RemoveQuantityColumns(columnsToRemove);\r\n }\r\n\r\n private async editExistingColumns(allColumnsInDb: QuantityColumnDto[]) {\r\n let existingParameters = this.selectedParameterColumns.filter(element => element.id != \"00000000-0000-0000-0000-000000000000\");\r\n let listOfColumnsToEdit: QuantityColumnDto[] = [];\r\n existingParameters.forEach((existingElement: QuantityColumnDto) => {\r\n let elementToCheck: QuantityColumnDto | undefined = allColumnsInDb.find(element => element.id == existingElement.id);\r\n\r\n if (elementToCheck && !this.isElementSame(elementToCheck, existingElement)) {//-in-editExistingColumns\r\n listOfColumnsToEdit.push(existingElement);\r\n }\r\n });\r\n console.log(\"List to Change \" , listOfColumnsToEdit);\r\n if (listOfColumnsToEdit.length > 0) {\r\n await this.quantityColumnService.EditQuantityColumns(listOfColumnsToEdit);\r\n }\r\n }\r\n showIncludedCategories(parameterId: string): string {\r\n let result: string = `cats: `;\r\n let containedCategories: Category[] = aoCategories.filter(f => this.catMap[parameterId]?.includes(f.id)); \r\n for (let i = 0; i < containedCategories?.length; i++) {\r\n if (i < containedCategories.length - 1) {\r\n result += containedCategories[i].name + \", \";\r\n } else {\r\n result += containedCategories[i].name + \".\";\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n changeAggregate(column: QuantityColumnDto, aggregate: string): void {\r\n //change.delegate is called after an input has been checked or unchecked.\r\n //Getting all input check boxes from the specific column.\r\n let columnInputs: NodeListOf = >document.getElementsByName(column.order+'');\r\n for (let input of columnInputs) {\r\n if (input.value != aggregate) {//If the input is not the clicked input set checked false\r\n input.checked = false;\r\n } else {\r\n if (input.checked) { //If we have a match and it is selected, set aggregate to selected\r\n column.aggregate = aggregate;\r\n } else { //Othervise set the aggregate to none, as the input is no longer selected.\r\n column.aggregate = AggrFuncEnum.None;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\tpublic async filterHasRevisions(filterId: string): Promise {\r\n\t\treturn await this.api.project(this.appContext.projectId).get(`QuantityFilter/ContainsRevisions/${filterId}`).handleError(\"Could not get an answer about if the filter contains any revisions\", \"The answer could not be fetched.\").jsonResult();\r\n\t}\r\n\t\r\n\tpublic async changeGrouping(column: QuantityColumnDto): Promise {\r\n\t\t\r\n\t\t// Ask for confirmation if the filter has revisions\r\n\t\t\r\n\t\tif (this.filterContainsRevisions && !this.removePreviousRevisionsOnSave) {\r\n\t\t\tawait this.modal.OpenConfirm(\"Filter has revisions\", \"The filter has revisions. Changing grouping will remove all revisions when the changes have been saved. Do you want to continue?\").whenClosed(async (x: DialogCloseResult) => {\r\n\t\t\t\tif (x.wasCancelled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\r\n\t\t\t\t\tthis.removePreviousRevisionsOnSave = true;\r\n\t\t\t\t\t// Change grouping\r\n\t\t\t\t\tcolumn.grouped = !column.grouped;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tcolumn.grouped = !column.grouped;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\nexport enum AggrFuncEnum {\r\n\tNone='None', //-1\r\n\tMax='Max', //0\r\n\tMin='Min', //1,\r\n\tAvg='Avg', //2,\r\n\tSum='Sum', //3,\r\n\tNum='Num', //4,\r\n}\r\n\r\n\r\nexport class QuantityColumnDto {\r\n id: string = \"00000000-0000-0000-0000-000000000000\"\r\n quantityFilterId: string = \"\"; \r\n parameterName: string = \"\";\r\n prjParameterId: string = \"\";\r\n order: number = -1;\r\n parameterScope: boolean = false;\r\n \r\n grouped: boolean = false;\r\n\taggregate:string = 'None' ;\r\n\t//withMax:boolean = false;\r\n\t//withMin:boolean = false;\r\n\t//withAvg:boolean = false;\r\n\t//withSum:boolean = false;\r\n\t//withNum:boolean = false;\r\n\r\n constructor(qf: string, name: string, pp: string, grouped: boolean, parameterScope: boolean, aggrFunc:AggrFuncEnum) {\r\n this.quantityFilterId = qf; // Needs parameterScope.\r\n this.parameterName = name;\r\n this.prjParameterId = pp;\r\n this.grouped = grouped;\r\n this.parameterScope = parameterScope;\r\n\t\tthis.aggregate = aggrFunc; // IE we use the enum value/literal as a string value.\r\n }\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","QuantityFilterColumns","constructor","dialog","quantityColumnService","modal","dndService","api","appContext","AggrFuncEnum","parameterColumns","selectedParameterColumns","startingColumnIds","userInput","catMap","listFromStart","pageSize","parametersLoading","hasSearched","currentPageNumber","listId","saveClicked","filterContainsRevisions","removePreviousRevisionsOnSave","activate","filter","this","getCatMap","console","log","quantityFilter","filterHasRevisions","parameterIds","POCGetTypeAndInstProjectParameters","POCGettingUnits","initParameterColumns","settings","keyboard","keybuttonHandling","async","event","key","searchForParameters","window","addEventListener","insertIdentityParameter","more","GetPartialProjectSimpleParametersByQF","name","parameterScope","attached","draggedItem","attachListInteraction","animation","forceFallback","group","handle","draggable","dragClass","chosenClass","ghostClass","onChoose","oldDraggableIndex","onEnd","to","splice","newDraggableIndex","resetParameterOrder","handleCheckbox","undefined","setSelectedAggr","setTimeout","columnToChange","find","column","order","document","getElementsByName","forEach","input","aggregate","value","checked","parameter","indexOf","unbind","removeEventListener","detached","detachListInteraction","units","GetunitsByParameters","GetQuantityColumns","Object","assign","types","getSelectedTypes","typeIds","type","getMoreParameters","scrollContext","isAtBottom","newPageIndex","Math","round","length","loadMoreParameters","getElementById","dispatchEvent","CustomEvent","VirtualizationEvents","itemSizeChange","sortParameters","reinitParameters","GetProjectSimpleParametersByInputByQF","handleAjourCount","toLocaleLowerCase","sort","element1","element2","localeCompare","selectParameter","QuantityColumnDto","None","removeColumn","index","canDeactivate","r","handleCancelDialog","checkIfSame","cancel","OpenConfirm","whenClosed","x","wasCancelled","save","removeColumns","columnsToAdd","allColumnsInDb","AddQuantityColumns","editExistingColumns","project","projectId","postText","handleError","response","ok","self","every","element","isElementSame","newColumn","oldColumn","grouped","prjParameterId","listOfSelectedColumIds","columnsToRemove","includes","RemoveQuantityColumns","existingParameters","listOfColumnsToEdit","existingElement","elementToCheck","EditQuantityColumns","showIncludedCategories","parameterId","result","containedCategories","f","i","changeAggregate","columnInputs","filterId","get","jsonResult","changeGrouping","autoinject","DialogController","qf","pp","aggrFunc","quantityFilterId","parameterName"],"sourceRoot":""}