{"version":3,"file":"app-1729e5d9.5382e2fc30b6cecb.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/components/quantity-filter-sources/quantity-filter-sources.scss","webpack://client-app/./src/app/components/rte/rich-text-editor.scss","webpack://client-app/./src/app/components/quantity-filter-sources/quantity-filter-sources.html","webpack://client-app/./src/app/components/rte/rich-text-editor.html","webpack://client-app/./src/app/components/quantity-filter-sources/quantity-filter-sources.ts","webpack://client-app/./src/app/components/rte/rich-text-editor.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, `.selected-items-body .item span{display:inline-block;zwidth:25ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:2ch}.dialog-container-sources{height:90vh;width:90vw;overflow:hidden}.dialog-container-sources .dialog-header{width:100%;border-bottom:solid 1px #d3d3d3}.dialog-container-sources .dialog-header h4{padding:10px;vertical-align:middle;margin-bottom:0}.dialog-container-sources .modal-body{display:flex;flex-direction:row;margin-top:5px}.dialog-container-sources .modal-body .left-column{display:flex;flex-direction:column;padding-top:5px;padding-left:15px;padding-right:15px;padding-bottom:2px;width:40%;overflow:hidden}.dialog-container-sources .modal-body .left-column .left-header{margin-left:5px;height:auto;margin-bottom:3px}.dialog-container-sources .modal-body .left-column .selected-items-body{flex-grow:1;flex-basis:0;overflow:auto;margin-top:5px;padding-left:5px}.dialog-container-sources .modal-body .left-column .selected-items-body .right-aligned-item{float:right;margin-right:10px}.dialog-container-sources .modal-body .left-column .selected-items-body .right-aligned-item{background-color:#d3d3d3;cursor:pointer}.dialog-container-sources .modal-body .right-column{display:flex;flex-direction:column;padding-left:10px;padding-right:10px;padding-bottom:2px;border-left:solid 1px #d3d3d3;width:60%;overflow:hidden}.dialog-container-sources .modal-body .right-column .right-header{margin-top:5px}.dialog-container-sources .modal-body .right-column .search-result{flex-grow:1;flex-basis:0;overflow:auto}.dialog-container-sources .modal-body .right-column .search-result .type-item{padding:5px}.dialog-container-sources .modal-body .right-column .search-result .right-aligned-item{float:right;margin-right:10px}.dialog-container-sources .modal-body .right-column .search-result .expanded{transform:rotate(180deg)}.dialog-container-sources .modal-body .right-column .item{width:100%;padding:5px}.dialog-container-sources .modal-body .right-column .item .add-all-btn{background-color:#a9a9a9;transition:background-color .2s;border-radius:5px;padding:2px;border:1px solid #d3d3d3;color:#fff;transform:translateY(-2.5px)}.dialog-container-sources .modal-body .right-column .item .add-all-btn:hover{background-color:#646464;transition:background-color .2s;cursor:pointer;color:#fff}.dialog-container-sources .modal-body .right-column .item:hover,.dialog-container-sources .modal-body .right-column .type-item:hover{background-color:#d3d3d3;cursor:pointer}.dialog-container-sources .modal-body .right-column .type-list-holder .type-item{width:100%;margin-bottom:0;padding:5px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/components/quantity-filter-sources/quantity-filter-sources.scss\"],\"names\":[],\"mappings\":\"AAAA,gCACC,oBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,0BACI,WAAA,CACA,UAAA,CAEA,eAAA,CACA,yCACI,UAAA,CACA,+BAAA,CACA,4CACI,YAAA,CACA,qBAAA,CACA,eAAA,CAGR,sCACI,YAAA,CACA,kBAAA,CACA,cAAA,CAEA,mDACL,YAAA,CACA,qBAAA,CAES,eAAA,CACA,iBAAA,CACA,kBAAA,CACA,kBAAA,CAGA,SAAA,CAEA,eAAA,CACA,gEACI,eAAA,CACA,WAAA,CACA,iBAAA,CAEJ,wEACR,WAAA,CACA,YAAA,CAGY,aAAA,CACA,cAAA,CACA,gBAAA,CACA,4FACI,WAAA,CACA,iBAAA,CAEJ,4FACI,wBAAA,CACA,cAAA,CAIZ,oDACL,YAAA,CACA,qBAAA,CAES,iBAAA,CACA,kBAAA,CACA,kBAAA,CACA,6BAAA,CACA,SAAA,CACA,eAAA,CACA,kEACI,cAAA,CAEJ,mEACR,WAAA,CACA,YAAA,CAGY,aAAA,CACA,8EACI,WAAA,CAEJ,uFACI,WAAA,CACA,iBAAA,CAEJ,6EACI,wBAAA,CAGR,0DACI,UAAA,CACA,WAAA,CACA,uEACI,wBAAA,CACA,+BAAA,CACA,iBAAA,CACA,WAAA,CACA,wBAAA,CACA,UAAA,CACA,4BAAA,CAEJ,6EACI,wBAAA,CACA,+BAAA,CACA,cAAA,CACA,UAAA,CAIR,qIACI,wBAAA,CACA,cAAA,CAGA,iFACI,UAAA,CACA,eAAA,CACA,WAAA\",\"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, `:root{--ck-border-radius: 4px;--ck-color-base-border: rgba(0, 0, 0, 0.175)}.ck-content{min-height:300px;padding:0 .75rem !important}.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused{border-color:#00b3c9}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/components/rte/rich-text-editor.scss\",\"webpack://./src/resources/customized-styles/variables.scss\"],\"names\":[],\"mappings\":\"AAEA,MACC,uBAAA,CACA,4CAAA,CAIA,YACC,gBAAA,CACA,2BAAA,CAGD,oEACC,oBCRO\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = ` `;\n// Exports\nexport default code;","// Module\nvar code = ` `;\n// Exports\nexport default code;","import { CategoryWithTypesDto } from 'app/models/category-dto';\r\nimport { QuantityFilterDto } from 'app/project/quantity-views/quantity-filters';\r\nimport { ModalService } from 'app/services/modal-service';\r\nimport { QuantitySourcesService } from 'app/services/quantity-sources-service';\r\nimport { DialogCloseResult, DialogController } from 'aurelia-dialog';\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class QuantityFilterSources {\r\n private quantityFilter: QuantityFilterDto | undefined\r\n private listFromStart: string[] = [];\r\n private types: TypeDto[] = [];\r\n private typesLoading: boolean = false;\r\n private currentTypePageNumber: number = 0;\r\n\r\n private categories: CategoryWithTypesDto[] = [];\r\n private categoriesLoading: boolean = false;\r\n private currentCategoryPageNumber: number = 0;\r\n \r\n private families: FamilyWithTypesDto[] = [];\r\n private familiesLoading: boolean = false;\r\n private currentFamiliePageNumber: number = 0;\r\n\r\n private readonly pageSize: number = 50; //There is 50 items loaded per time.\r\n \r\n private userInput: string = \"\";\r\n private selectedTypes: TypeDto[] = [];\r\n private addAllClicked: boolean = false;\r\n\r\n private typeSelected: boolean = true;\r\n private categorySelected: boolean = false;\r\n private familySelected: boolean = false;\r\n\r\n public keybuttonHandling: ((this: Window, ev: KeyboardEvent) => any) | undefined;\r\n\r\n\r\n constructor(protected dialog: DialogController, public quantitySourcesService: QuantitySourcesService, public modal: ModalService) {}\r\n \r\n async activate(quantityFilter: QuantityFilterDto): Promise {\r\n this.quantityFilter = quantityFilter;\r\n let result = await this.quantitySourcesService.getSelectedTypes(quantityFilter.id, 'QuantityFilterSources.activate', false);\r\n this.selectedTypes = result;\r\n this.listFromStart.push(...this.selectedTypes.map(type => type.id));\r\n // this.selectedTypes.forEach(type => {\r\n // this.listFromStart.push(new TypeDto(type.id, type.name, type.family, type.combined));\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.searchForType();\r\n\t\t\t}\r\n };\r\n\t\twindow.addEventListener('keyup', this.keybuttonHandling, false);\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 async searchForType(): Promise {\r\n if (this.userInput.length > 0) {\r\n this.types = await this.quantitySourcesService.getTypes(this.userInput, 0);\r\n this.categories = await this.quantitySourcesService.getProjectCategories(this.userInput, 0);\r\n this.families = await this.quantitySourcesService.getProjectFamilies(this.userInput, 0);\r\n }\r\n }\r\n \r\n selectOption(name: string) {\r\n this.typeSelected = name === \"type\";\r\n this.categorySelected = name === \"category\";\r\n this.familySelected = name === \"family\";\r\n return true;\r\n }\r\n\r\n async getMoreTypes(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.types.length / this.pageSize);\r\n if (!this.typesLoading && this.currentTypePageNumber != newPageIndex) {\r\n this.typesLoading = true;\r\n this.currentTypePageNumber = newPageIndex;\r\n this.types.push(...await this.quantitySourcesService.getTypes(this.userInput, this.currentTypePageNumber));\r\n this.typesLoading = false;\r\n }\r\n }\r\n\r\n async getMoreCategories(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.categories.length / this.pageSize);\r\n if (!this.categoriesLoading && this.currentCategoryPageNumber != newPageIndex) {\r\n this.categoriesLoading = true;\r\n this.currentCategoryPageNumber = newPageIndex;\r\n this.categories.push(...await this.quantitySourcesService.getProjectCategories(this.userInput, this.currentCategoryPageNumber));\r\n this.categoriesLoading = false;\r\n }\r\n }\r\n\r\n async getMoreFamilies(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.families.length / this.pageSize);\r\n if (!this.familiesLoading && this.currentFamiliePageNumber != newPageIndex) {\r\n this.familiesLoading = true;\r\n this.currentFamiliePageNumber = newPageIndex;\r\n this.families.push(...await this.quantitySourcesService.getProjectFamilies(this.userInput, this.currentFamiliePageNumber));\r\n this.familiesLoading = false;\r\n } \r\n }\r\n\r\n async addTypeItem(item: TypeDto): Promise {\r\n if (!this.isItemInList(item)) {\r\n this.selectedTypes.push(item);\r\n }\r\n }\r\n \r\n async addCategoryItem(item: CategoryWithTypesDto): Promise {\r\n let result: TypeDto[] = await this.quantitySourcesService.getTypeByBuiltInCategory(item.builtInCategory);\r\n this.addItemsToList(result);\r\n }\r\n\r\n async showTypesByCategory(category: CategoryWithTypesDto): Promise {\r\n if (this.addAllClicked) {\r\n this.addAllClicked = false;\r\n return;\r\n } \r\n if (category.isExpanded == true) {\r\n category.isExpanded = false;\r\n return;\r\n }\r\n category.isExpanded = true;\r\n if (!category.types) {\r\n category.types = await this.quantitySourcesService.getTypeByBuiltInCategory(category.builtInCategory);\r\n }\r\n console.log(category);\r\n }\r\n\r\n async showTypesByFamily(family: FamilyWithTypesDto): Promise {\r\n if (this.addAllClicked) {\r\n this.addAllClicked = false;\r\n return;\r\n } \r\n if (family.isExpanded == true) {\r\n family.isExpanded = false;\r\n return;\r\n }\r\n family.isExpanded = true;\r\n if (!family.types) {\r\n family.types = await this.quantitySourcesService.getTypeIdByFamilyId(family.id);\r\n }\r\n console.log(family);\r\n }\r\n\r\n async addFamilyItem(item: FamilyWithTypesDto): Promise {\r\n let result: TypeDto[] = await this.quantitySourcesService.getTypeIdByFamilyId(item.id);\r\n this.addItemsToList(result);\r\n }\r\n \r\n addItemsToList(result: TypeDto[]): void {\r\n if (result.length > 0) {\r\n result.forEach((element: TypeDto) => {\r\n if (!this.isItemInList(element)) {\r\n this.selectedTypes.push(element) \r\n }\r\n });\r\n }\r\n }\r\n\r\n async addAllCategoryTypes(category: CategoryWithTypesDto): Promise {\r\n this.addAllClicked = true;\r\n if (!category.types) {\r\n category.types = await this.quantitySourcesService.getTypeByBuiltInCategory(category.builtInCategory);\r\n }\r\n this.addItemsToList(category.types);\r\n }\r\n async addAllFamilyTypes(family: FamilyWithTypesDto): Promise {\r\n this.addAllClicked = true;\r\n if (!family.types) {\r\n family.types = await this.quantitySourcesService.getTypeIdByFamilyId(family.id);\r\n }\r\n this.addItemsToList(family.types);\r\n }\r\n\r\n removeItem(type: TypeDto): void {\r\n this.selectedTypes = this.selectedTypes.filter((element: TypeDto) => {return element != type});\r\n }\r\n\r\n isItemInList(element: TypeDto): boolean {\r\n let isFound = false;\r\n this.selectedTypes.forEach((item: TypeDto) => {\r\n if (element.id == item.id) {\r\n isFound = true;\r\n return;\r\n }\r\n });\r\n return isFound;\r\n }\r\n async canDeactivate(r: DialogCloseResult):Promise {\r\n if (r.wasCancelled) {\r\n return await this.close();\r\n }\r\n return true;\r\n }\r\n\r\n async close(): Promise {\r\n if (this.checkIfSame()) {\r\n return true;\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 }\r\n return true;\r\n }\r\n\r\n checkIfSame(): boolean {\r\n let self = this;\r\n let isSameLength = (this.listFromStart.length == this.selectedTypes.length)\r\n let isSameTypes = (this.selectedTypes.every(function(type) {\r\n return self.listFromStart.includes(type.id); \r\n }));\r\n return isSameLength && isSameTypes;\r\n }\r\n\r\n async save(): Promise {\r\n if (this.quantityFilter) {\r\n let newlySelectedIds = this.selectedTypes.map((type: TypeDto) => type.id);\r\n let itemsToRemove: string[] = [];\r\n this.listFromStart.forEach((typeId: string) => {\r\n if (!newlySelectedIds.includes(typeId)) {\r\n itemsToRemove.push(typeId);\r\n }\r\n }); \r\n let itemsToAdd: string[] = [];\r\n newlySelectedIds.forEach(typeId => {\r\n if (!this.listFromStart.includes(typeId)) {\r\n itemsToAdd.push(typeId);\r\n }\r\n });\r\n await this.quantitySourcesService.updateSources(this.quantityFilter.id,itemsToAdd,itemsToRemove);\r\n this.dialog.ok(); //Ok can also take an output. This might come in handy.\r\n }\r\n }\r\n}\r\n\r\nexport class TypeDto {\r\n constructor(public id:string, public name:string, public created: string, public hasNoInstances: boolean, public updatedHasNoInstances: string | null, public family:string, public combined:string) {}\r\n //id: string;\r\n //name: string;\r\n\t//family: string;\r\n\t//combined: string;\r\n\r\n\t//this.id = id;\r\n\t//this.name = name; \r\n}\r\nexport class TypeDtoWithSelect extends TypeDto {\r\n selected: boolean = false;\r\n}\r\n\r\nexport class TypeDtoWCategory extends TypeDto {\r\n category: number = -1;\r\n categoryName: string = \"\";\r\n selected: boolean = false;\r\n}\r\n\r\nexport class TypeDtoWBuiltInCategory extends TypeDto {\r\n builtInCategory: string = \"\";\r\n}\r\n\r\n\r\nexport interface FamilyWithTypesDto {\r\n id: string;\r\n name: string;\r\n builtInCategory: number;\r\n isExpanded: boolean;\r\n types: TypeDto[];\r\n}\r\n","import * as ClassicEditor from './ckeditor/ckeditor.js';\r\nimport { bindable, bindingMode, autoinject } from 'aurelia-framework';\r\nimport { GuidGenerator } from 'resources/utilities/GuidGenerator';\r\n\r\n@autoinject\r\nexport class RichTextEditor {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) value: string = '';\r\n\teditor = null;\r\n\teditorId: string = '';\r\n\r\n\tconstructor(private guidGenerator: GuidGenerator) {\r\n\t\tthis.editorId = `rte-${guidGenerator.createGuid()}`;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.clearEditor();\r\n\r\n\t\tClassicEditor\r\n\t\t\t.create(document.querySelector(`#${this.editorId}`), {\r\n\t\t\t\ttoolbar: [ 'bold', 'italic', 'underline', 'link' ]\r\n\t\t\t})\r\n\t\t\t.then((editor: any) => {\r\n\t\t\t\tthis.editor = editor;\r\n\t\t\t\t(this.editor)?.setData(this.value);\r\n\t\t\r\n\t\t\t\t(this.editor)?.model.document.on('change', () => {\r\n\t\t\t\t\tthis.value = (this.editor)?.getData();\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch((err: any) => {\r\n\t\t\t\tconsole.error(err.stack);\r\n\t\t\t});\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tthis.clearEditor();\r\n\t}\r\n\r\n\tclearEditor() {\r\n\t\tif (this.editor) {\r\n\t\t\t(this.editor).destroy();\r\n\t\t\tthis.editor = null;\r\n\t\t}\r\n\t}\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","QuantityFilterSources","constructor","dialog","quantitySourcesService","modal","listFromStart","types","typesLoading","currentTypePageNumber","categories","categoriesLoading","currentCategoryPageNumber","families","familiesLoading","currentFamiliePageNumber","pageSize","userInput","selectedTypes","addAllClicked","typeSelected","categorySelected","familySelected","activate","quantityFilter","this","result","getSelectedTypes","map","type","settings","keyboard","keybuttonHandling","async","event","key","searchForType","window","addEventListener","unbind","removeEventListener","length","getTypes","getProjectCategories","getProjectFamilies","selectOption","name","getMoreTypes","scrollContext","isAtBottom","newPageIndex","Math","round","getMoreCategories","getMoreFamilies","addTypeItem","item","isItemInList","addCategoryItem","getTypeByBuiltInCategory","builtInCategory","addItemsToList","showTypesByCategory","category","isExpanded","console","log","showTypesByFamily","family","getTypeIdByFamilyId","addFamilyItem","forEach","element","addAllCategoryTypes","addAllFamilyTypes","removeItem","filter","isFound","canDeactivate","r","wasCancelled","close","checkIfSame","OpenConfirm","whenClosed","x","save","self","isSameLength","isSameTypes","every","includes","newlySelectedIds","itemsToRemove","typeId","itemsToAdd","updateSources","ok","autoinject","DialogController","TypeDto","created","hasNoInstances","updatedHasNoInstances","combined","TypeDtoWithSelect","selected","TypeDtoWCategory","categoryName","TypeDtoWBuiltInCategory","RichTextEditor","guidGenerator","value","editor","editorId","createGuid","attached","clearEditor","document","querySelector","toolbar","then","setData","model","on","getData","catch","err","error","stack","detached","destroy","bindable","defaultBindingMode","bindingMode","twoWay"],"sourceRoot":""}