From 563ecc6f7cbf04385f3b438209ca090c022bbd09 Mon Sep 17 00:00:00 2001 From: Konstantinos Triantafyllou Date: Mon, 2 Dec 2019 11:27:12 +0000 Subject: [PATCH] [Monitor Dashboard]: Add default stakeholder profile. Fix a bug with disable input. Delete stakeholder git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@57777 d315682c-612b-4755-9ff5-7f18f6832af3 --- src/app/home/home.component.html | 48 ++- src/app/home/home.component.ts | 388 ++++++++++-------- .../sharedComponents/input/input.component.ts | 7 +- 3 files changed, 250 insertions(+), 193 deletions(-) diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index 139cf06..f6654a8 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -35,14 +35,13 @@ class="uk-grid-match uk-grid-small" uk-grid> - -
+ + -
+
+
+
+
+
+ add + Create a Default Stakeholder +
+
+
+
+
+ Create a new Stakeholder default profile base on type. +
+
+ add +
+
+
+
+

Stakeholders

- {{stakeholderUtils.isPublicIcon.get(stakeholder.isPublic)}} + {{stakeholderUtils.isPublicIcon.get(stakeholder.isPublic)}} {{(stakeholder.isPublic) ? 'Public' : 'Private'}} @@ -135,7 +161,7 @@
-
+
{ - this.properties = properties; - let data = zip( - this.stakeholderService.getDefaultStakeholders(this.properties.monitorServiceAPIURL), - this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL) - ); - data.subscribe(res => { - this.defaultStakeholders = res[0]; - this.stakeholders = res[1]; - this.displayDefaultStakeholders = res[0]; - this.displayStakeholders = res[1]; - this.loading = false; + ngOnInit(): void { + this.buildFilters(); + this.propertiesService.loadEnvironment() + .then(properties => { + this.properties = properties; + let data = zip( + this.stakeholderService.getDefaultStakeholders(this.properties.monitorServiceAPIURL), + this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL) + ); + data.subscribe(res => { + this.defaultStakeholders = res[0]; + this.stakeholders = res[1]; + this.displayDefaultStakeholders = res[0]; + this.displayStakeholders = res[1]; + this.loading = false; + }); + }); + } + + ngOnDestroy(): void { + this.subscriptions.forEach(value => { + if (value instanceof Subscriber) { + value.unsubscribe(); + } }); - }); - } - - ngOnDestroy(): void { - this.subscriptions.forEach(value => { - if (value instanceof Subscriber) { - value.unsubscribe(); - } - }); - } - - public changeGrid(value) { - this.grid = value; - } - - private buildFilters() { - this.filters = this.fb.group({ - privacy: this.fb.control('all'), - status: this.fb.control('all'), - keyword: this.fb.control('') - }); - this.subscriptions.push(this.filters.get('privacy').valueChanges.subscribe(value => { - this.onPrivacyChange(value); - })); - this.subscriptions.push(this.filters.get('status').valueChanges.subscribe(value => { - this.onStatusChange(value); - })); - this.subscriptions.push(this.filters.get('keyword').valueChanges.subscribe(value => { - this.onKeywordChange(value); - })); - } - - onPrivacyChange(value) { - this.displayDefaultStakeholders = this.filterPrivacy(this.defaultStakeholders, value); - this.displayStakeholders = this.filterPrivacy(this.stakeholders, value); - } - - onStatusChange(value) { - this.displayDefaultStakeholders = this.filterStatus(this.defaultStakeholders, value); - this.displayStakeholders = this.filterStatus(this.stakeholders, value); - } - - onKeywordChange(value) { - this.displayDefaultStakeholders = this.filterByKeyword(this.defaultStakeholders, value); - this.displayStakeholders = this.filterByKeyword(this.stakeholders, value); - } - - - private filterPrivacy(stakeholders: Stakeholder[], value): Stakeholder[] { - if (value === 'all') { - return stakeholders; - } else { - return stakeholders.filter(stakeholder => stakeholder.isPublic === value); } - } - private filterStatus(stakeholders: Stakeholder[], value): Stakeholder[] { - if (value === 'all') { - return stakeholders; - } else { - return stakeholders.filter(stakeholder => stakeholder.isActive === value); + public changeGrid(value) { + this.grid = value; } - } - private filterByKeyword(stakeholders: Stakeholder[], value): Stakeholder[] { - if (value === null || value === '') { - return stakeholders; - } else { - return stakeholders.filter(stakeholder => ( - stakeholder.index_id && stakeholder.index_id.toLowerCase().includes(value.toLowerCase())) || - stakeholder.index_shortName && stakeholder.index_shortName.toLowerCase().includes(value.toLowerCase()) || - stakeholder.index_name && stakeholder.index_name.toLowerCase().includes(value.toLowerCase()) - ); + private buildFilters() { + this.filters = this.fb.group({ + privacy: this.fb.control('all'), + status: this.fb.control('all'), + keyword: this.fb.control('') + }); + this.subscriptions.push(this.filters.get('privacy').valueChanges.subscribe(value => { + this.onPrivacyChange(value); + })); + this.subscriptions.push(this.filters.get('status').valueChanges.subscribe(value => { + this.onStatusChange(value); + })); + this.subscriptions.push(this.filters.get('keyword').valueChanges.subscribe(value => { + this.onKeywordChange(value); + })); } - } - public editStakeholder(stakeholder: Stakeholder = null, isDefault: boolean = false) { - if (isDefault) { - this.index = (stakeholder) ? this.defaultStakeholders.findIndex(value => value._id === stakeholder._id) : -1; - } else { - this.index = (stakeholder) ? this.stakeholders.findIndex(value => value._id === stakeholder._id) : -1; + onPrivacyChange(value) { + this.displayDefaultStakeholders = this.filterPrivacy(this.defaultStakeholders, value); + this.displayStakeholders = this.filterPrivacy(this.stakeholders, value); } - if (!stakeholder) { - this.stakeholder = new Stakeholder(null, null, null, - null, null, isDefault, null, false, false, null); - } else { - this.stakeholder = stakeholder; - } - this.stakeholderFb = this.fb.group({ - _id: this.fb.control(this.stakeholder ._id), - index_name: this.fb.control(this.stakeholder .index_name, Validators.required), - index_id: this.fb.control(this.stakeholder .index_id, Validators.required), - index_shortName: this.fb.control(this.stakeholder .index_shortName, Validators.required), - isDefaultProfile: this.fb.control(this.stakeholder .isDefaultProfile), - alias: this.fb.control(this.stakeholder .alias, Validators.required), - isPublic: this.fb.control(this.stakeholder .isPublic), - isActive: this.fb.control(this.stakeholder .isActive), - type: this.fb.control(this.stakeholder .type, Validators.required), - topics: this.fb.control(this.stakeholder .topics) - }); - if (this.index !== -1 && this.stakeholderFb.value.type) { - this.stakeholderFb.get('type').disable(); - } - this.editStakeholderModal.cancelButtonText = 'Cancel'; - this.editStakeholderModal.okButtonText = 'Save Changes'; - this.editStakeholderModal.okButtonLeft = false; - this.editStakeholderModal.alertMessage = false; - this.editStakeholderModal.open(); - } - public saveStakeholder() { - if (this.index === -1) { - // this.stakeholderFb.setValue(this.stakeholderUtils. - // createFunderFromDefaultProfile(this.stakeholderFb.value, - // this.defaultStakeholders.find( value => value.type === this.stakeholderFb.value.type).topics)); - this.stakeholderFb.setValue(this.stakeholderUtils. - createFunderFromDefaultProfile(this.stakeholderFb.value, StakeholderCreator.createFunderDefaultProfile().topics)); - this.stakeholderService.buildStakeholder(this.properties.monitorServiceAPIURL, this.stakeholderFb.value).subscribe(stakeholder => { - if (stakeholder.isDefaultProfile) { - this.defaultStakeholders.push(stakeholder); + onStatusChange(value) { + this.displayDefaultStakeholders = this.filterStatus(this.defaultStakeholders, value); + this.displayStakeholders = this.filterStatus(this.stakeholders, value); + } + + onKeywordChange(value) { + this.displayDefaultStakeholders = this.filterByKeyword(this.defaultStakeholders, value); + this.displayStakeholders = this.filterByKeyword(this.stakeholders, value); + } + + + private filterPrivacy(stakeholders: Stakeholder[], value): Stakeholder[] { + if (value === 'all') { + return stakeholders; } else { - this.stakeholders.push(stakeholder); + return stakeholders.filter(stakeholder => stakeholder.isPublic === value); } - }); - } else { - this.stakeholderFb.get('type').enable(); - this.stakeholderService.saveElement(this.properties.monitorServiceAPIURL, this.stakeholderFb.value).subscribe(stakeholder => { - if (stakeholder.isDefaultProfile) { - this.defaultStakeholders[this.index] = stakeholder; + } + + private filterStatus(stakeholders: Stakeholder[], value): Stakeholder[] { + if (value === 'all') { + return stakeholders; } else { - this.stakeholders[this.index] = stakeholder; + return stakeholders.filter(stakeholder => stakeholder.isActive === value); } - }); } - } - public deleteStakeholderOpen(stakeholder: Stakeholder, isDefault = false) { - if (isDefault) { - this.index = (stakeholder) ? this.defaultStakeholders.findIndex(value => value._id === stakeholder._id) : -1; - } else { - this.index = (stakeholder) ? this.stakeholders.findIndex(value => value._id === stakeholder._id) : -1; + private filterByKeyword(stakeholders: Stakeholder[], value): Stakeholder[] { + if (value === null || value === '') { + return stakeholders; + } else { + return stakeholders.filter(stakeholder => ( + stakeholder.index_id && stakeholder.index_id.toLowerCase().includes(value.toLowerCase())) || + stakeholder.index_shortName && stakeholder.index_shortName.toLowerCase().includes(value.toLowerCase()) || + stakeholder.index_name && stakeholder.index_name.toLowerCase().includes(value.toLowerCase()) + ); + } } - } - public deleteStakeholder() { + public editStakeholder(stakeholder: Stakeholder = null, isDefault: boolean = false) { + if (isDefault) { + this.index = (stakeholder) ? this.defaultStakeholders.findIndex(value => value._id === stakeholder._id) : -1; + } else { + this.index = (stakeholder) ? this.stakeholders.findIndex(value => value._id === stakeholder._id) : -1; + } + if (!stakeholder) { + this.stakeholder = new Stakeholder(null, null, null, + null, null, isDefault, null, false, false, null); + } else { + this.stakeholder = stakeholder; + } + this.stakeholderFb = this.fb.group({ + _id: this.fb.control(this.stakeholder._id), + index_name: this.fb.control(this.stakeholder.index_name, Validators.required), + index_id: this.fb.control(this.stakeholder.index_id, Validators.required), + index_shortName: this.fb.control(this.stakeholder.index_shortName, Validators.required), + isDefaultProfile: this.fb.control(this.stakeholder.isDefaultProfile), + alias: this.fb.control(this.stakeholder.alias, Validators.required), + isPublic: this.fb.control(this.stakeholder.isPublic), + isActive: this.fb.control(this.stakeholder.isActive), + type: this.fb.control(this.stakeholder.type, Validators.required), + topics: this.fb.control(this.stakeholder.topics), + managers: this.fb.control(this.stakeholder.managers), + logoUrl: this.fb.control(this.stakeholder.logoUrl) + }); + if (this.index !== -1) { + if (this.stakeholderFb.value.type) { + setTimeout(() => { + this.stakeholderFb.get('type').disable(); + }, 0); + } else { + setTimeout(() => { + this.stakeholderFb.get('type').enable(); + }, 0); + } + this.editStakeholderModal.okButtonText = 'Save Changes'; + } else { + setTimeout(() => { + this.stakeholderFb.get('type').enable(); + }, 0); + this.editStakeholderModal.okButtonText = 'Create'; + } + this.editStakeholderModal.cancelButtonText = 'Cancel'; + this.editStakeholderModal.okButtonLeft = false; + this.editStakeholderModal.alertMessage = false; + this.editStakeholderModal.open(); + } - } + public saveStakeholder() { + if (this.index === -1) { + if(!this.stakeholderFb.value.isDefaultProfile) { + // this.stakeholderFb.setValue(this.stakeholderUtils. + // createFunderFromDefaultProfile(this.stakeholderFb.value, + // this.defaultStakeholders.find( value => value.type === this.stakeholderFb.value.type).topics)); + this.stakeholderFb.setValue(this.stakeholderUtils.createFunderFromDefaultProfile(this.stakeholderFb.value, StakeholderCreator.createFunderDefaultProfile().topics)); + }/* else { + this.stakeholderFb.setValue(StakeholderCreator.createFunderDefaultProfile()); + }*/ + this.stakeholderService.buildStakeholder(this.properties.monitorServiceAPIURL, this.stakeholderFb.value).subscribe(stakeholder => { + if (stakeholder.isDefaultProfile) { + this.defaultStakeholders.push(stakeholder); + } else { + this.stakeholders.push(stakeholder); + } + }); + } else { + this.stakeholderFb.get('type').enable(); + this.stakeholderService.saveElement(this.properties.monitorServiceAPIURL, this.stakeholderFb.value).subscribe(stakeholder => { + if (stakeholder.isDefaultProfile) { + this.defaultStakeholders[this.index] = stakeholder; + } else { + this.stakeholders[this.index] = stakeholder; + } + }); + } + } + + public deleteStakeholderOpen(stakeholder: Stakeholder) { + this.stakeholder = stakeholder; + this.deleteStakeholderModal.alertTitle = 'Delete ' + this.stakeholder.index_name; + this.deleteStakeholderModal.cancelButtonText = 'No'; + this.deleteStakeholderModal.okButtonText = 'Yes'; + this.deleteStakeholderModal.message = 'This stakeholder will permanently be deleted. Are you sure you want to proceed?'; + this.deleteStakeholderModal.open(); + } + + public deleteStakeholder() { + if (this.stakeholder.isDefaultProfile) { + this.index = (this.stakeholder) ? this.defaultStakeholders.findIndex(value => value._id === this.stakeholder._id) : -1; + } else { + this.index = (this.stakeholder) ? this.stakeholders.findIndex(value => value._id === this.stakeholder._id) : -1; + } + this.stakeholderService.deleteElement(this.properties.monitorServiceAPIURL, [this.stakeholder._id]).subscribe(() => { + if (this.stakeholder.isDefaultProfile) { + this.defaultStakeholders.splice(this.index, 1); + } else { + this.stakeholders.splice(this.index, 1); + } + }); + } } diff --git a/src/app/library/sharedComponents/input/input.component.ts b/src/app/library/sharedComponents/input/input.component.ts index eabe596..e5a4651 100644 --- a/src/app/library/sharedComponents/input/input.component.ts +++ b/src/app/library/sharedComponents/input/input.component.ts @@ -9,9 +9,10 @@ import {HelperFunctions} from "../../../openaireLibrary/utils/HelperFunctions.cl - - + + {{option.label}}