{"version":3,"file":"app-525cc5af.7aa7a41fde6c748d.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/value-lists/value-lists.ts"],"sourcesContent":["import { ListService, SelectResult } from 'app/services/list-service';\r\nimport { ModalService } from './../../services/modal-service';\r\nimport { Router } from 'aurelia-router';\r\nimport { AppContextService } from 'app/services/app-context-service';\r\nimport { ErrorService } from 'app/services/error-service';\r\nimport { Subscription, EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject, observable } from \"aurelia-framework\";\r\nimport { ValueListDto, ValueListItemDto } from \"app/models/value-list-dtos\";\r\nimport { ValueListService } from \"app/services/value-list/value-list-service\";\r\nimport { ApiClient } from 'app/services/api-client';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { ValuelistUpload } from 'app/components/file-upload/specific-uploads/valuelist-upload';\r\nimport { ImportValuelistModel } from 'app/models/viewmodels/import-valuelist-model';\r\nimport { NewValueList } from 'app/components/modals/new-value-list/new-value-list';\r\nimport { ContextMenuService } from 'app/services/context-menu-service';\r\nimport { OrgTokenService } from 'app/services/org-token-service';\r\n\r\ndeclare let $: any;\r\n\r\n@autoinject\r\nexport class ValueLists {\r\n\tshowValues: boolean = false;\r\n\t@observable public selectedValueLists: ValueListDto[] = [];\r\n\tpublic selectedValueList: ValueListDto | null = null; // does not correspond to checkbox-selection, only subnavigate dialog.. (inconsistent design.)\r\n\tpublic selectedValueListItem: ValueListItemDto | null = null;\r\n\tpublic selectedValueListItemOriginal: ValueListItemDto | null = null;\r\n\tpublic newValueList: ValueListDto | null = null;\r\n\tpublic newValueListItem: ValueListItemDto | null = null;\r\n\tpublic valueLists: ValueListDto[] = [];\r\n\tpublic viewContext: string;\r\n\tpublic searchTerm: string = \"\";\r\n\tpublic searchTermValues: string = \"\";\r\n\tprivate allSelected: boolean = false;\r\n\tpublic column: string = \"name\";\r\n\tpublic columnsToSearch:string[] = [\"name\"];\r\n\tpublic displayState: { icon: string, direction: string } | undefined;\r\n\tprivate subscriptions: Subscription[] = [];\r\n\tpublic isDeleteDisabled: boolean = true;\r\n\tpublic newValueListItemName: string = \"\";\r\n\r\n\tpublic keybuttonHandling: ((this: Window, ev: KeyboardEvent) => any) | undefined; //How to avoid strictmode getting unsatisfied?\r\n\r\n\tconstructor(\r\n\t\tprivate valueListService: ValueListService, private router: Router, private modal: ModalService, private apiClient: ApiClient, private i18n: I18N, private events: EventAggregator, private errorService: ErrorService, private appContext: AppContextService, \r\n\t\tprivate listService: ListService, \r\n\t\tpublic contextMenuService: ContextMenuService,\r\n\t\tprivate orgTokenService: OrgTokenService\r\n\t) {\r\n\t\tthis.viewContext = \"TopBar\";\r\n\t}\r\n\r\n\tasync activate(params: any) {\r\n\t\t/*\r\n\t\tvi skal navigere til en route URL for det \"valgte projekt\".\r\n\t\tDer ER ikke noget valgt projekt..\r\n\t\tDen konkrete vaerdi vi staar med i haanden, er undefined.\r\n\t\tundefined bliver formateret ind i vores routeURl.\r\n\r\n\t\tnaar aurelias magi senere skal populere params,\r\n\t\tfinder den \"vaerdien\" u-n-d-e-f-i-n-e-d i URL'en, og det kan jo vaere hvad som helst, dog ikke et tal..\r\n\r\n\t\taox.ts er modtageren - den er grunden til, der dekodes TEKSTEN u-n-d-e-f-i-n-e-d ind i params\r\n\t\tnavigation.ts er afsenderen: Det er den der formaterer u-n-d-e-f-i-n-e-d ind i routeURL..\r\n\t\t*/\r\n\t\tif (params.projectId != 'undefined') {\r\n\t\t\tthis.appContext.setProject(params.projectId); //activate\r\n\t\t}\r\n\t\tif (this.appContext.projectId) {\r\n\t\t\tawait this.getValueLists();\r\n\t\t}\r\n\t\tthis.setupKeyHandler();\r\n\t\tthis.displayState = { icon: \"fa-sort-up\", direction: \"ascending\" };\r\n\t}\r\n\t\r\n\tsetupKeyHandler() {\r\n\t\tthis.keybuttonHandling = (event) => {\r\n if (event.key == \"Escape\") {\r\n this.closeValuesPanel();\r\n } \r\n\t\t\tif (event.key == \"Enter\") {\r\n\t\t\t\tif ($('.list-item-input').is(\":focus\")) {\r\n\t\t\t\t\tthis.addNewListItem();\r\n\t\t\t\t}\r\n\t\t\t}\r\n };\r\n\t\twindow.addEventListener('keyup', this.keybuttonHandling, false);\r\n\t}\r\n\r\n\tattached() {\r\n\t\tconst searchHandler = (data: any) => this.handleSearchEvent(data);\r\n\t\tthis.subscriptions = [\r\n\t\t\tthis.events.subscribe(this.viewContext + \":SearchTermChanged\", searchHandler)\r\n\t\t];\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tif (this.keybuttonHandling) {\r\n\t\t\twindow.removeEventListener('keyup', this.keybuttonHandling, false);\r\n\t\t}\r\n\t\tthis.subscriptions.forEach(subscription => (\r\n\t\t\tsubscription.dispose()\r\n\t\t));\r\n\t}\r\n\r\n\tprivate handleSearchEvent(data: string) {\r\n\t\tthis.searchTerm = data;\r\n\t\tlet includedList: ValueListDto[] = this.valueLists.filter(valueList => {\r\n\t\t\treturn valueList.name.toLocaleLowerCase().includes(this.searchTerm);\r\n\t\t});\r\n\t\tif (this.selectedValueList && !includedList.includes(this.selectedValueList)) {\r\n\t\t\tthis.closeValuesPanel();\r\n\t\t}\r\n\t}\r\n\r\n\tselectedValueListsChanged() {\r\n\t\tthis.isDeleteDisabled = \r\n\t\t( this.selectedValueLists.length === 0\r\n || this.selectedValueLists.every(x => x.sourceProjectId === \"00000000-0000-0000-0000-000000000000\")\r\n\t\t);\r\n\t}\r\n\r\n\t/*\r\n\t* ValueLists \r\n\t*/\r\n\tpublic selectList(list: ValueListDto) { \r\n\t\t/* select og deselect er utilities til showValuesPanel,\r\n\t\tDe svarer IKKE til checkbox-selects!\r\n\t\t*/\r\n\t\tthis.isDeleteDisabled = false;\r\n\t\tconsole.log('vl.selectList');\r\n\t\t// if (this.has_selectedValueList()) {\r\n\t\t// \tif (this.selectedValueList_id() === list.id) {\r\n\t\t\t\t// this.deselectList(list); // in selectList.\r\n\t\t\t\t// return;\r\n\t\t\t// }\r\n\t\t\t// this.selectedValueList_setSelected(false);\r\n\t\t\t// this.selectedValueList_setEditMode(false);\r\n\t\t// }\r\n\t\t// list.selected = true; //TODO - See if this functionality i necessary.\r\n\t\tthis.set_selectedValueList(list); // in selectList.\r\n\t\tthis.selectedValueListItem = null;\r\n\t\tthis.newValueList = null;\r\n\t\tthis.newValueListItem = null;\r\n\t\t// this.selectedValueLists = [...this.selectedValueLists, list];\r\n\t}\r\n\r\n\tpublic deselectList(list: ValueListDto) {\r\n\t\tthis.isDeleteDisabled = true;\r\n\t\tconsole.log('vl.deselectList');\r\n\t\tif (this.selectedValueList_isInEditMode()) {\r\n\t\t\tthis.cancelEditListMode();\r\n\t\t}\r\n\t\tthis.selectedValueList_setSelected(false);\r\n\t\tthis.set_selectedValueList(null); // in deselectList.\r\n\t\tthis.selectedValueLists.splice(this.selectedValueLists.indexOf(list), 1);\r\n\t}\r\n\r\n\tshowValuesPanel(list: ValueListDto) {\r\n\t\t/* A...HA! value-list dialogen har TO selection-modeller..\r\n\r\n\t\tValueItems-redigerings-panelet \r\n\t\thar sin egen 'focused-row-selection',\r\n\t\tsom kun bliver sat når man vælger en hel række som fokus\r\n\t\t(er uafhængigt af checkbox-selection-modellen.)\r\n\t\tAk.\r\n\t\t*/\r\n\t\tconsole.log('VL.showValuesPanel');\r\n\t\tthis.newValueListItemName = \"\";\r\n\t\tif (this.get_SelectedValueList() != null) {\r\n\t\t\tthis.cancelEditListMode();\r\n\t\t}\r\n\t\tif (this.has_selectedValueList() && this.selectedValueList == list) {\r\n\t\t\tthis.closeValuesPanel();\r\n\t\t\treturn;\r\n\t\t\t// this.deselectList(list); // in showValuesPanel.\r\n\t\t}\r\n\t\tthis.selectList(list);\r\n\t\tthis.retrieveValueListItems();//showValuesPanel\r\n\t\tthis.showValues = true;\r\n\t\tthis.events.publish(\"aside-toggled\");\r\n\t}\r\n\r\n\tcloseValuesPanel() {\r\n\t\tthis.showValues = false;\r\n\t\tthis.selectedValueList = null;\r\n\t\tthis.searchTermValues = \"\";\r\n\t\tthis.newValueListItemName = \"\";\r\n\t\tthis.events.publish(\"aside-toggled\");\r\n\t}\r\n\r\n\tpublic editListName() {\r\n\t\tthis.selectedValueList_setEditMode(true);\r\n\t\tthis.selectedValueList_setEditName(this.selectedValueList_name());\r\n\t}\r\n\r\n\tpublic cancelEditListMode() {\r\n\t\tthis.selectedValueList_setEditMode(false);\r\n\t}\r\n\r\n\tpublic async newList() {\r\n\t\tif (this.appContext.projectId != undefined) {\r\n\t\t\tawait this.modal.OpenModal(NewValueList).whenClosed(async x => {\r\n\t\t\t\tif (!x.wasCancelled) {\r\n\t\t\t\t\tawait this.addNewList(x.output);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getValueLists() {\r\n\t\tthis.valueLists = (await this.valueListService.getValueListsOnProject()).filter(x => x.id !== \"00000000-0000-0000-0000-000000000000\");\r\n\t\tif(this.selectedValueList != undefined) {\r\n\t\t\tthis.valueLists.forEach(element => {\r\n\t\t\tif(element.id == this.selectedValueList?.id) {\r\n\t\t\t\t\tthis.selectedValueList = element;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate async retrieveValueListItems() {\r\n\t\tlet sel_ValueList:string | null = this.selectedValueList_id();\r\n\t\tif (!sel_ValueList) {\r\n\t\t\tconsole.warn('retrieveValueListItems: no current valueList selected.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet items = await this.valueListService.getValueListItemsOnProject(sel_ValueList);\r\n\t\tif (this.selectedValueList) {\r\n\t\t\tthis.selectedValueList.items=items;//_in_retrieveValueListItems.\r\n\t\t}\r\n\t\t// this.selectedValueList.selected = true;\r\n\t}\r\n\r\n\tpublic async addNewList(name: string) {\r\n\t\tif (name.trim().length > 0) {\r\n\t\t\tlet createdValueList: ValueListDto | undefined = await this.valueListService.addNewListToProject(name).finally(() => { this.newValueList = null; });\r\n\t\t\tif (createdValueList != undefined) {\r\n\t\t\t\tawait this.getValueLists();\r\n\t\t\t\tawait this.retrieveValueListItems();\r\n\t\t\t\tlet finishedSetupValueList: ValueListDto[] = this.valueLists.filter(valuelist => {\r\n\t\t\t\t\treturn valuelist.id == createdValueList?.id;\r\n\t\t\t\t});\r\n\t\t\t\tif (finishedSetupValueList.length > 0) {\r\n\t\t\t\t\tthis.showValuesPanel(finishedSetupValueList[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic renameList() {\r\n\t\tif (this.selectedValueList) {\r\n\t\t\tthis.selectedValueList_setName( this.selectedValueList_editName() );\r\n\t\t\tthis.valueListService.renameValueListOnProject(this.selectedValueList)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.cancelEditListMode();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic removeList() {\r\n\t\tconsole.log('vl.removeList');\r\n\t\t$(\".delete-button\").blur()\r\n\t\tthis.modal.OpenConfirm(\"Delete value lists\", `Are you sure you wish to delete the selected value lists?`).whenClosed(y => {\r\n\t\t\tif (!y.wasCancelled) {\r\n\t\t\t\t// let ids: string[] = [];\r\n\t\t\t\t// this.selectedValueLists.forEach(x => {\r\n\t\t\t\t// \tif (x.sourceProjectId !== \"00000000-0000-0000-0000-000000000000\") {\r\n\t\t\t\t// \t\tids.push(x.id);\r\n\t\t\t\t// \t}\r\n\t\t\t\t// });\r\n\t\t\t\tif (this.selectedValueList?.id) {\r\n\t\t\t\t\tthis.valueListService.removeListFromProject([this.selectedValueList?.id])\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.set_selectedValueList(null); // in removeList.\r\n\t\t\t\t\t\tthis.selectedValueListItem = null;\r\n\t\t\t\t\t\tthis.selectedValueLists = [];\r\n\t\t\t\t\t\tif (this.showValues) {\r\n\t\t\t\t\t\t\tthis.closeValuesPanel();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.getValueLists();\r\n\t\t\t\t\t\tthis.allSelected = false;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync changeToSystemValueList() {\r\n\t\t$('.convert-button').blur();\r\n\t\tif (!this.selectedValueList || this.selectedValueList.sourceProjectId === \"00000000-0000-0000-0000-000000000000\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.modal.OpenConfirm(\"Change to system value list\", \"Are you sure you wish to change the selected value list to a system value list?\").whenClosed(x => {\r\n\t\t\tif (!x.wasCancelled && this.selectedValueList) {\r\n\t\t\t\tthis.valueListService.changeProjectValueListIntoSystemValueList(this.selectedValueList.id)\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.getValueLists();\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.closeValuesPanel();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/* old crap for exportToExcel:\r\n\t\t//var idToExport:string = undefined;\r\n\t\t// var anySelectedValueList:ValueListDto = this.selectedValueLists.find(x => x.selected);\r\n\t\t// if (!anySelectedValueList) {\r\n\t\t// \tconsole.log('trying to use focused valueList row, as no SELECTED valuelistrow.');\r\n\t\t// \t// her fejler den, fordi this.selectedValueList er syg.\r\n\t\t// \tanySelectedValueList = this.get_SelectedValueList();\r\n\t\t// \tDette skal istedet integreres med den ANDEN selection-model..\r\n\t\t// }\r\n\t */\r\n\r\n\tpublic async hasOrgSelected():Promise {\r\n\t\tlet ots=this.orgTokenService;\r\n\t\tlet hasOrgSelected:boolean = ots.hasOrgSelected();\r\n\t\tconsole.log('hasOrgSelected B?', hasOrgSelected, ots.orgId());\r\n\t\tif (!hasOrgSelected) {\r\n\t\t\tawait this.modal.OpenMessage('Information','Please select a current organisation');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic async exportToExcel() {\r\n\t\tconsole.log('exportToExcel B C:/dev/aoc/AO.Client/ClientApp/src/app/project/value-lists/value-lists.ts');\r\n\t\tif (!await this.hasOrgSelected()) { return; }\r\n\r\n\t\tlet orgId =\tthis.orgTokenService.orgId();\r\n\t\t\r\n\t\t// New take on it downloading, based on changes to the selectedValueLists.\r\n\r\n\t\tfor (const valueList of this.selectedValueLists) {//: ValueListDto\r\n\t\t\tconsole.log('prjcase, vl:', valueList);\r\n\t\t\tif (this.isSystemValueList('xtx',valueList)) {\r\n\t\t\t\tconsole.log('A');\r\n\t\t\t\tif (await this.giveUpOnMismatch(orgId, valueList.orgId, valueList)) { return; }\r\n\r\n\t\t\t\tthis.apiClient.orgByToken\r\n\t\t\t\t.get(\"Excel/ExportValueList?id=\" + valueList.id) // under project.\r\n\t\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t\t.downloadFile(`${valueList.name}.xlsx`);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('B');\r\n\t\t\t\tif (await this.giveUpOnMismatch(orgId, valueList.orgId, valueList)) { return; }\r\n\r\n\t\t\t\tthis.apiClient.project(this.appContext.projectId)\t\r\n\t\t\t\t.get(\"Excel/ExportValueList?id=\" + valueList.id)\r\n\t\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t\t.downloadFile(`${valueList.name}.xlsx`);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync giveUpOnMismatch(orgId:string, vl_orgId2:string, valueList:ValueListDto):Promise { \r\n\t\tconst mismatch = !(orgId === vl_orgId2);// || true;\r\n\t\tif (!mismatch) { return mismatch; }\r\n\r\n\t\tconst orgName = orgId;\r\n\t\tconst otherOrg = vl_orgId2;\r\n\t\tconst vlId = valueList.id;\r\n\t\tconst name = valueList.name;\r\n\t\tconst msg = \r\n\t\t `You are currently viewing organisation ${orgName},\\n`\r\n\t\t+`but this value list belongs to organisation ${otherOrg}.\\n`\r\n\t\t+` Please switch to ${otherOrg} to work with that value list.\\n`\r\n\t\t+`(Value list ${name} ${vlId}).`;\r\n\r\n\t\tawait this.modal.OpenMessage('Information', msg);\r\n\t\treturn mismatch; \r\n\t}\r\n\r\n\topenImportModal() {\r\n\t\tlet valueListsForImport = this.valueLists.filter(x => x.sourceProjectId !== \"00000000-0000-0000-0000-000000000000\");\r\n\r\n\t\tthis.modal.OpenModal(ValuelistUpload, valueListsForImport).whenClosed(x => {\r\n\t\t\tif (!x.wasCancelled) {\r\n\t\t\t\tif (Boolean(x.output.isNewValueList)) {\r\n\t\t\t\t\tthis.importNewFromExcel(x.output);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.importExistingFromExcel(x.output);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic importNewFromExcel(model: ImportValuelistModel) {\r\n\t\tlet formData = new FormData();\r\n\t\tif (model.files) {\r\n\t\t\tformData.append(this.appContext.projectId, model.files[0]);\r\n\t\t\tthis.apiClient.project(this.appContext.projectId).postForm(`Excel/ImportNewValueList?name=${model.name}&containsHeaders=${model.containsHeaders}`, formData)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t.stringResult().then(receipt => {\r\n\t\t\t\tthis.modal.OpenMessage(\"Import Receipt\", receipt);\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tthis.handleImportFinished();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic importExistingFromExcel(model: ImportValuelistModel) {\r\n\t\tlet formData = new FormData();\r\n\t\tif (model.files) {\r\n\t\t\tformData.append(this.appContext.projectId, model.files[0]);\r\n\t\t\tthis.apiClient.project(this.appContext.projectId)\r\n\t\t\t\t.postForm(`Excel/ImportExistingValueList?listId=${model.selectedValueListId}&containsHeaders=${model.containsHeaders}`, formData)\r\n\t\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t\t.stringResult().then(receipt => {\r\n\t\t\t\t\tthis.modal.OpenMessage(\"Import Receipt\", receipt);\r\n\t\t\t\t}).finally(() => {\r\n\t\t\t\t\tthis.handleImportFinished();\r\n\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleImportFinished() {\r\n\t\tthis.getValueLists();\r\n\t\tthis.retrieveValueListItems();//importNewFromExcel\r\n\t}\r\n\r\n\tpublic async assignColors() {\r\n\t\tif (!this.selectedValueList) { console.log('no selected value list.'); return; }\r\n\r\n\t\tlet rsp = await this.valueListService.assignColorsWithProject(this.selectedValueList.id, this.appContext.projectId);\r\n\t\tif (rsp) {\r\n\t\t\tawait this.getValueLists();\r\n\t\t\tawait this.retrieveValueListItems();//assignColors\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t* ValueListItems \r\n\t*/\r\n\r\n\tpublic selectListItem(item: ValueListItemDto) {\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.selected = false;\r\n\t\t\tthis.selectedValueListItem.editValue = false;\r\n\t\t\tthis.selectedValueListItem.editSortOrder = false;\r\n\t\t}\r\n\t\titem.selected = true;\r\n\t\tthis.selectedValueListItem = item;\r\n\t\tthis.selectedValueListItemOriginal = Object.assign({}, item);\r\n\t}\r\n\r\n\tpublic newListItem() {\r\n\t\tthis.newValueListItem = {\r\n\t\t\tvalue: this.newValueListItemName,\r\n\t\t\tid: '00000000-0000-0000-0000-000000000000',\r\n\t\t\tvalueListId: this.selectedValueList_id() ? this.selectedValueList_id()+\"\" : \"\",\r\n\t\t\tsortOrder: 0,\r\n\t\t\tisDefault: false,\r\n\t\t\tcolorUI: null // Means that it should be generated on the back end\r\n\t\t}\r\n\t}\r\n\r\n\tpublic cancelNewListItem() {\r\n\t\tthis.newValueListItem = null;\r\n\t\tthis.selectedValueListItem = null;\r\n\t}\r\n\r\n\tpublic editListItemValue(item: ValueListItemDto) {\r\n\t\tthis.selectListItem(item);\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editValue = true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic editListItemSortOrder(item: ValueListItemDto) {\r\n\t\tthis.selectListItem(item);\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editSortOrder = true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic cancelEditListItemValue() {\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editValue = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic cancelEditListItemSortOrder() {\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editSortOrder = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic addNewListItem() {\r\n\t\t$('button-add').blur();\r\n\t\tthis.newListItem();\r\n\t\tif (this.newValueListItem) {\r\n\t\t\tthis.valueListService.addNewListItemOnProject(this.newValueListItem, this.selectedValueList_name())\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet newListItem = Object.assign({}, response);\r\n\t\t\t\tthis.selectedValueList_items().push(newListItem);\r\n\t\t\t\tthis.selectedValueListItem = newListItem;\r\n\t\t\t\tthis.newValueListItem = null;\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tthis.retrieveValueListItems();//addNewListItem\r\n\t\t\t});\r\n\t\t\tthis.newValueListItemName = \"\";\r\n\t\t\t$('list-item-input').focus();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic renameListItem() {\r\n\t\tif (this.selectedValueListItem && this.selectedValueListItem?.value.trim() !== this.selectedValueListItemOriginal?.value.trim()) {\r\n\t\t\tthis.valueListService.renameListItemOnProject(this.selectedValueListItem, this.selectedValueList_name())\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tif (this.selectedValueListItem) {\r\n\t\t\t\t\t\tthis.selectedValueListItem.editValue = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}).finally(() => {\r\n\t\t\t\t\tthis.retrieveValueListItems();//renameListItem\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.cancelEditListItemValue();\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic async setColor(item : ValueListItemDto) {\r\n\t\tawait this.valueListService.assignColorToListItemWithProject(item, this.appContext.projectId);\r\n\t}\r\n\r\n\tpublic setDefaultListItem(item: ValueListItemDto) {\r\n\t\tif (this.isSystemValueListItem('sdli', item)) {\r\n\t\t\titem.isDefault = !item.isDefault;\r\n\t\t\tthis.valueListService.setDefaultListItemOnProject(item, this.selectedValueList_name())\r\n\t\t\t\t.finally(async () => this.retrieveValueListItems());//setDefaultListItem\r\n\t\t} else {\r\n\t\t\tthis.modal.OpenMessage(this.i18n.tr('Error_Title_Generic'), `This is a system value list item. If you wish to set this item as the default, you will have to do this in 'System value lists' under the 'Administration' area.`);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic reorderListItem() {\r\n\t\tif (this.selectedValueListItem && this.selectedValueListItem?.sortOrder !== this.selectedValueListItemOriginal?.sortOrder) {\r\n\t\t\tthis.valueListService.reorderListItemOnProject(this.selectedValueListItem, this.selectedValueList_name())\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tif (this.selectedValueListItem) {\r\n\t\t\t\t\t\tthis.selectedValueListItem.editSortOrder = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tthis.retrieveValueListItems();//reorderListItem\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.cancelEditListItemSortOrder();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic removeListItem(item: ValueListItemDto) {\r\n\t\t$('.btn-delete-value-list').blur();\r\n\t\tthis.modal.OpenConfirm(`Delete`, `Please confirm that you want to delete the selected value lists`).whenClosed(result => {\r\n\t\t\tif (result.wasCancelled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.valueListService.removeListItemOnProject(item, this.selectedValueList_name())\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tlet itemIndex = this.selectedValueList_items().findIndex(x => x === item);\r\n\t\t\t\t\tthis.selectedValueList_items().splice(itemIndex, 1);\r\n\t\t\t\t\tthis.selectedValueListItem = null;\r\n\t\t\t\t});\r\n\t\t})\r\n\t}\r\n\r\n\tpublic selectedValueList_items():ValueListItemDto[] { \r\n\t\tlet selectedValueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (selectedValueList && selectedValueList.items) {\r\n\t\t\treturn selectedValueList.items;\r\n\t\t} else {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tpublic selectedValueList_id():string | null { \r\n\t\t// This is NOT the checkbox selection.\r\n\t\t// This selection may be empty!\r\n\t\tlet sel_VL:ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (!sel_VL) {\r\n\t\t\tconsole.warn('selectedValueList_id, no current get_SelectedValueList.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn sel_VL.id; \r\n\t}\r\n\tpublic selectedValueList_editName():string | undefined { return this.get_SelectedValueList()?.editName; }\r\n\tpublic selectedValueList_setEditName(newEditName:string | undefined) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\t valueList.editName = newEditName ? newEditName : \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tpublic selectedValueList_name():string | undefined { return this.get_SelectedValueList()?.name; }\r\n\tpublic selectedValueList_setName(newName:string | undefined) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\tvalueList.name = newName ? newName : \"\"; \t\r\n\t\t}\r\n\t}\r\n\r\n\tpublic selectedValueList_isInEditMode():boolean { return Boolean(this.get_SelectedValueList()?.inEditMode); }\r\n\t\r\n\tpublic selectedValueList_setEditMode(is:boolean) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\tvalueList.inEditMode = is;\r\n\t\t} \r\n\t}\r\n\t\r\n\tpublic selectedValueList_setSelected(sel:boolean) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\tvalueList.selected = sel;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic has_selectedValueList():boolean { return Boolean(this.get_SelectedValueList()); }\r\n\r\n\tpublic get_SelectedValueList():ValueListDto | null { \r\n\t\treturn this.selectedValueList; // is NULL unless someone set_selectedValueList().\r\n\t}\r\n\r\n\tpublic set_selectedValueList(newValueList:ValueListDto | null){this.selectedValueList=newValueList;}\r\n\r\n\tpublic async sortBy(columnName: string) {\r\n\t\tawait this.listService.sortBy(columnName).then(result => {\r\n\t\t\tthis.column = result.column;\r\n\t\t\tthis.displayState = result.displayState;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async toggleList() {\r\n\t\tawait this.listService.toggleElement(this.valueLists).then( (result:SelectResult) => {\r\n\t\t\tthis.selectedValueLists = result.selected; // IN toggleList.\r\n\t\t\tthis.allSelected = result.allSelected; // IN toggleList.\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async toggleAll() {\r\n\t\tawait this.listService.toggleAll(this.valueLists, this.searchTerm, this.columnsToSearch).then((result:SelectResult | undefined) => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.selectedValueLists = result.selected;//IN-toggleAll\r\n\t\t\t\tthis.allSelected = result.allSelected;//IN-toggleAll\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tpublic isSystemValueList(who:string, valueListDto : ValueListDto) : boolean {\r\n\t\t// console.log(who,\"is System Value List\" , valueListDto);\r\n\t\tif (valueListDto == null) {\r\n\t\t\tconsole.warn('Cannot determine type of value list')\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn valueListDto.sourceProjectId === '00000000-0000-0000-0000-000000000000';\r\n\t}\r\n\r\n\tpublic isSystemValueListItem(who:string, valueListItemDto : ValueListItemDto) : boolean {\r\n\t\tconsole.log(who,\"is System Value List item\" , valueListItemDto);\r\n\t\tif (valueListItemDto == null) {\r\n\t\t\tconsole.warn('Cannot determine type of value list item')\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn valueListItemDto.sourceProjectId === '00000000-0000-0000-0000-000000000000';\r\n\t}\r\n\r\n\tasync showMenuItems(event: Event): Promise {\r\n\t\tlet actions = [];\r\n\t\tactions.push({ viewKey: \"button\", setup: { textKey: \"Create Value list\", icon:\"fa-solid fa-list\", actionKey: \"createValueList\", service: {createValueList: () => { this.newList() }}}});\r\n\t\tactions.push({ viewKey: \"line\", setup: {}});\r\n\t\tactions.push({ viewKey: \"button\", setup: { textKey: \"Import from Excel\", icon:\"fa-solid fa-download\", actionKey: \"importFromExcel\", service: {importFromExcel: () => { this.openImportModal() }}}});\r\n\t\tactions.push({ viewKey: \"button\", setup: { textKey: \"Export selected to Excel\", icon:\"fa-solid fa-upload\", isDisabled: !(this.selectedValueLists.length > 0), actionKey: \"exportToExcel\", service: {exportToExcel: () => { this.exportToExcel() }}}});\r\n this.contextMenuService.open(event, actions);\r\n\t}\r\n\t\r\n\tformatDate(date: string): string {\r\n\t\tlet formattedDate = new Date(date);\r\n\t\tlet minutes = (formattedDate.getMinutes().toString().length > 1) ? formattedDate.getMinutes() : \"0\" + formattedDate.getMinutes();\r\n\t\tlet hours = (formattedDate.getHours().toString().length > 1) ? formattedDate.getHours() : \"0\" + formattedDate.getHours();\r\n\t\treturn formattedDate.toDateString() + \" - \" + hours + \":\" + minutes;\r\n\t}\r\n}\r\n"],"names":["ValueLists","constructor","valueListService","router","modal","apiClient","i18n","events","errorService","appContext","listService","contextMenuService","orgTokenService","showValues","selectedValueLists","selectedValueList","selectedValueListItem","selectedValueListItemOriginal","newValueList","newValueListItem","valueLists","searchTerm","searchTermValues","allSelected","column","columnsToSearch","subscriptions","isDeleteDisabled","newValueListItemName","this","viewContext","async","params","projectId","setProject","getValueLists","setupKeyHandler","displayState","icon","direction","keybuttonHandling","event","key","closeValuesPanel","$","is","addNewListItem","window","addEventListener","attached","subscribe","data","handleSearchEvent","detached","removeEventListener","forEach","subscription","dispose","includedList","filter","valueList","name","toLocaleLowerCase","includes","selectedValueListsChanged","length","every","x","sourceProjectId","selectList","list","console","log","set_selectedValueList","deselectList","selectedValueList_isInEditMode","cancelEditListMode","selectedValueList_setSelected","splice","indexOf","showValuesPanel","get_SelectedValueList","has_selectedValueList","retrieveValueListItems","publish","editListName","selectedValueList_setEditMode","selectedValueList_setEditName","selectedValueList_name","undefined","OpenModal","whenClosed","wasCancelled","addNewList","output","getValueListsOnProject","id","element","sel_ValueList","selectedValueList_id","warn","items","getValueListItemsOnProject","trim","createdValueList","addNewListToProject","finally","finishedSetupValueList","valuelist","renameList","selectedValueList_setName","selectedValueList_editName","renameValueListOnProject","then","removeList","blur","OpenConfirm","y","removeListFromProject","changeProjectValueListIntoSystemValueList","ots","hasOrgSelected","orgId","OpenMessage","isSystemValueList","giveUpOnMismatch","orgByToken","get","handleError","tr","downloadFile","project","vl_orgId2","mismatch","orgName","otherOrg","vlId","msg","openImportModal","valueListsForImport","Boolean","isNewValueList","importNewFromExcel","importExistingFromExcel","model","formData","FormData","files","append","postForm","containsHeaders","stringResult","receipt","handleImportFinished","selectedValueListId","assignColorsWithProject","selectListItem","item","selected","editValue","editSortOrder","Object","assign","newListItem","value","valueListId","sortOrder","isDefault","colorUI","cancelNewListItem","editListItemValue","editListItemSortOrder","cancelEditListItemValue","cancelEditListItemSortOrder","addNewListItemOnProject","response","selectedValueList_items","push","focus","renameListItem","renameListItemOnProject","assignColorToListItemWithProject","setDefaultListItem","isSystemValueListItem","setDefaultListItemOnProject","reorderListItem","reorderListItemOnProject","removeListItem","result","removeListItemOnProject","itemIndex","findIndex","sel_VL","editName","newEditName","newName","inEditMode","sel","columnName","sortBy","toggleElement","toggleAll","who","valueListDto","valueListItemDto","actions","viewKey","setup","textKey","actionKey","service","createValueList","newList","importFromExcel","isDisabled","exportToExcel","open","formatDate","date","formattedDate","Date","minutes","getMinutes","toString","hours","getHours","toDateString","observable","autoinject","I18N"],"sourceRoot":""}