diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 8de29aa..a447fe6 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -60,6 +60,7 @@ export class AppComponent implements OnInit, OnDestroy {
this.hasAdminMenu = hasAdminMenu;
this.cdr.detectChanges();
}));
+ this.layoutService.setOpen(false);
this.propertiesService.loadEnvironment()
.then(properties => {
this.properties = properties;
diff --git a/src/app/manageStakeholders/manageStakeholders.component.ts b/src/app/manageStakeholders/manageStakeholders.component.ts
index 70875e6..d811e2b 100644
--- a/src/app/manageStakeholders/manageStakeholders.component.ts
+++ b/src/app/manageStakeholders/manageStakeholders.component.ts
@@ -12,251 +12,250 @@ import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sideb
import {Option} from "../openaireLibrary/dashboard/sharedComponents/input/input.component";
@Component({
- selector: 'home',
- templateUrl: "./manageStakeholders.component.html"
+ selector: 'home',
+ templateUrl: "./manageStakeholders.component.html"
})
export class ManageStakeholdersComponent implements OnInit, OnDestroy {
-
- public properties: EnvProperties;
- public loading: boolean = true;
- public stakeholderUtils: StakeholderUtils = new StakeholderUtils();
- public defaultStakeholders: Stakeholder[];
- public stakeholders: Stakeholder[];
- public stakeholder: Stakeholder;
- public stakeholderFb: FormGroup;
- public index: number;
-
- /**
- * Filtered Stakeholders
- */
- public displayDefaultStakeholders: Stakeholder[];
- public displayStakeholders: Stakeholder[];
-
- /**
- * Top filters
- */
- public filters: FormGroup;
- public all: Option = {
- value: 'all',
- label: 'All'
- };
-
- /**
- * Grid or List View
- */
- public grid: boolean = true;
- private subscriptions: any[] = [];
-
- @ViewChild('editStakeholderModal') editStakeholderModal: AlertModal;
- @ViewChild('deleteStakeholderModal') deleteStakeholderModal: AlertModal;
-
- constructor(private stakeholderService: StakeholderService,
- private propertiesService: EnvironmentSpecificService,
- private fb: FormBuilder, private layoutService: LayoutService) {
- }
-
- 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;
- });
- });
- this.layoutService.setHasHeader(true);
- this.layoutService.setOpen(true);
- }
-
- ngOnDestroy(): void {
- this.subscriptions.forEach(value => {
- if (value instanceof Subscriber) {
- value.unsubscribe();
- }
+
+ public properties: EnvProperties;
+ public loading: boolean = true;
+ public stakeholderUtils: StakeholderUtils = new StakeholderUtils();
+ public defaultStakeholders: Stakeholder[];
+ public stakeholders: Stakeholder[];
+ public stakeholder: Stakeholder;
+ public stakeholderFb: FormGroup;
+ public index: number;
+
+ /**
+ * Filtered Stakeholders
+ */
+ public displayDefaultStakeholders: Stakeholder[];
+ public displayStakeholders: Stakeholder[];
+
+ /**
+ * Top filters
+ */
+ public filters: FormGroup;
+ public all: Option = {
+ value: 'all',
+ label: 'All'
+ };
+
+ /**
+ * Grid or List View
+ */
+ public grid: boolean = true;
+ private subscriptions: any[] = [];
+
+ @ViewChild('editStakeholderModal') editStakeholderModal: AlertModal;
+ @ViewChild('deleteStakeholderModal') deleteStakeholderModal: AlertModal;
+
+ constructor(private stakeholderService: StakeholderService,
+ private propertiesService: EnvironmentSpecificService,
+ private fb: FormBuilder) {
+ }
+
+ 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();
+ }
+ });
+ }
+
+ 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);
}
-
- public changeGrid(value) {
- this.grid = value;
+ }
+
+ private filterStatus(stakeholders: Stakeholder[], value): Stakeholder[] {
+ if (value === 'all') {
+ return stakeholders;
+ } else {
+ return stakeholders.filter(stakeholder => stakeholder.isActive === 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);
- }));
+ }
+
+ 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())
+ );
}
-
- onPrivacyChange(value) {
- this.displayDefaultStakeholders = this.filterPrivacy(this.defaultStakeholders, value);
- this.displayStakeholders = this.filterPrivacy(this.stakeholders, 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;
}
-
- onStatusChange(value) {
- this.displayDefaultStakeholders = this.filterStatus(this.defaultStakeholders, value);
- this.displayStakeholders = this.filterStatus(this.stakeholders, value);
+ if (!stakeholder) {
+ this.stakeholder = new Stakeholder(null, null, null,
+ null, null, null, false, false, null);
+ } else {
+ this.stakeholder = stakeholder;
}
-
- onKeywordChange(value) {
- this.displayDefaultStakeholders = this.filterByKeyword(this.defaultStakeholders, value);
- this.displayStakeholders = this.filterByKeyword(this.stakeholders, value);
+ 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),
+ defaultId: this.fb.control((isDefault) ? null : 'id'),
+ creationDate: this.fb.control(this.stakeholder.creationDate),
+ alias: this.fb.control(this.stakeholder.alias,
+ [
+ Validators.required,
+ this.stakeholderUtils.aliasValidator(
+ (isDefault) ?
+ this.defaultStakeholders.filter(stakeholder => stakeholder.alias !== this.stakeholder.alias) :
+ this.stakeholders.filter(stakeholder => stakeholder.alias !== this.stakeholder.alias)
+ )]
+ ),
+ 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';
}
-
-
- 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);
- }
- }
-
- 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 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),
- creationDate: this.fb.control(this.stakeholder.creationDate),
- alias: this.fb.control(this.stakeholder.alias,
- [
- Validators.required,
- this.stakeholderUtils.aliasValidator(
- (this.stakeholder.isDefaultProfile) ?
- this.defaultStakeholders.filter(stakeholder => stakeholder.alias !== this.stakeholder.alias):
- this.stakeholders.filter(stakeholder => stakeholder.alias !== this.stakeholder.alias)
- )]
- ),
- 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.editStakeholderModal.cancelButtonText = 'Cancel';
+ this.editStakeholderModal.okButtonLeft = false;
+ this.editStakeholderModal.alertMessage = false;
+ this.editStakeholderModal.open();
+ }
+
+ public saveStakeholder() {
+ if (this.index === -1) {
+ if (this.stakeholderFb.value.defaultId) {
+ // TODO set defaultId from default profile
+ // 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);
- }
- });
+ this.stakeholderService.buildStakeholder(this.properties.monitorServiceAPIURL, this.stakeholderFb.value).subscribe(stakeholder => {
+ if (stakeholder.defaultId === null) {
+ this.defaultStakeholders.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;
- }
- });
+ this.stakeholders.push(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.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.index = (this.stakeholder) ? this.stakeholders.findIndex(value => value._id === this.stakeholder._id) : -1;
+ this.stakeholders[this.index] = stakeholder;
}
- 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);
- }
- });
+ });
}
+ }
+
+ 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.defaultId) {
+ 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.defaultId) {
+ this.defaultStakeholders.splice(this.index, 1);
+ } else {
+ this.stakeholders.splice(this.index, 1);
+ }
+ });
+ }
}
diff --git a/src/app/monitor/monitor.component.html b/src/app/monitor/monitor.component.html
index fb350c7..8adadb4 100644
--- a/src/app/monitor/monitor.component.html
+++ b/src/app/monitor/monitor.component.html
@@ -39,7 +39,8 @@