[Monitor Dashboard | Trunk]: Add default stakeholder list on create a new stakeholder

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@58703 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
Konstantinos Triantafyllou 2020-05-15 09:44:44 +00:00
parent b7460043de
commit d4c6e9833c
5 changed files with 47 additions and 23 deletions

View File

@ -57,10 +57,10 @@
<li><a (click)="$event.stopPropagation();editStakeholder(stakeholder, true);hide(element);$event.preventDefault()">Edit</a> <li><a (click)="$event.stopPropagation();editStakeholder(stakeholder, true);hide(element);$event.preventDefault()">Edit</a>
</li> </li>
<li><a (click)="$event.stopPropagation();toggleStakeholderStatus(stakeholder);hide(element);$event.preventDefault()"> <li><a (click)="$event.stopPropagation();toggleStakeholderStatus(stakeholder);hide(element);$event.preventDefault()">
{{stakeholder.isActive ? 'Deactivate' : 'Activate'}}</a> {{stakeholder.isActive ? 'Inactive' : 'Active'}}</a>
</li> </li>
<li><a (click)="$event.stopPropagation();toggleStakeholderAccess(stakeholder);hide(element);$event.preventDefault()"> <li><a (click)="$event.stopPropagation();toggleStakeholderAccess(stakeholder);hide(element);$event.preventDefault()">
{{stakeholder.isPublic ? 'Unpublish' : 'Publish'}}</a> {{stakeholder.isPublic ? 'Private' : 'Public'}}</a>
</li> </li>
<hr class="uk-nav-divider"> <hr class="uk-nav-divider">
<li><a (click)="$event.stopPropagation();deleteStakeholderOpen(stakeholder);hide(element);$event.preventDefault()">Delete</a> <li><a (click)="$event.stopPropagation();deleteStakeholderOpen(stakeholder);hide(element);$event.preventDefault()">Delete</a>
@ -69,7 +69,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="md-card-toolbar-heading-text">{{stakeholder.index_name}}</div> <div class="md-card-toolbar-heading-text">{{stakeholder.name}}</div>
</div> </div>
<div *ngIf="grid" class="md-card-content"> <div *ngIf="grid" class="md-card-content">
<div class="uk-flex uk-flex-center" uk-grid> <div class="uk-flex uk-flex-center" uk-grid>
@ -101,7 +101,7 @@
<div *ngIf="grid" class="md-card-content"> <div *ngIf="grid" class="md-card-content">
<div uk-grid> <div uk-grid>
<div class="uk-width-1-1"> <div class="uk-width-1-1">
Create a new Stakeholder default profile base on type. Create a new Stakeholder default profile.
</div> </div>
<div class="uk-width-1-1 uk-flex uk-flex-center"> <div class="uk-width-1-1 uk-flex uk-flex-center">
<i class="material-icons md-48">add</i> <i class="material-icons md-48">add</i>
@ -155,7 +155,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="md-card-toolbar-heading-text">{{stakeholder.index_name}}</div> <div class="md-card-toolbar-heading-text">{{stakeholder.name}}</div>
</div> </div>
<div *ngIf="grid" class="md-card-content"> <div *ngIf="grid" class="md-card-content">
<div class="uk-flex uk-flex-center" uk-grid> <div class="uk-flex uk-flex-center" uk-grid>
@ -187,7 +187,7 @@
<div *ngIf="grid" class="md-card-content"> <div *ngIf="grid" class="md-card-content">
<div uk-grid> <div uk-grid>
<div class="uk-width-1-1"> <div class="uk-width-1-1">
Create a new Stakeholder by using a default profile base on his type. Create a new Stakeholder by selecting a default profile.
</div> </div>
<div class="uk-width-1-1 uk-flex uk-flex-center"> <div class="uk-width-1-1 uk-flex uk-flex-center">
<i class="material-icons md-48">add</i> <i class="material-icons md-48">add</i>
@ -203,16 +203,19 @@
(alertOutput)="saveStakeholder()" (alertOutput)="saveStakeholder()"
[okDisabled]="stakeholderFb && (stakeholderFb.invalid || (stakeholderFb.pristine && index !==-1))"> [okDisabled]="stakeholderFb && (stakeholderFb.invalid || (stakeholderFb.pristine && index !==-1))">
<div *ngIf="stakeholderFb" class="uk-padding-small" [formGroup]="stakeholderFb"> <div *ngIf="stakeholderFb" class="uk-padding-small" [formGroup]="stakeholderFb">
<div dashboard-input class="uk-form-row" [formInput]="stakeholderFb.get('index_name')" label="Name"></div> <div class="uk-form-row uk-flex uk-flex-middle uk-child-width-1-2" uk-grid>
<div dashboard-input [formInput]="stakeholderFb.get('name')" label="Name"></div>
<div dashboard-input [formInput]="stakeholderFb.get('alias')" label="Alias"></div>
</div>
<div class="uk-form-row uk-flex uk-flex-middle uk-child-width-1-3" uk-grid> <div class="uk-form-row uk-flex uk-flex-middle uk-child-width-1-3" uk-grid>
<div dashboard-input [formInput]="stakeholderFb.get('index_id')" <div dashboard-input [formInput]="stakeholderFb.get('index_id')"
label="ID"> label="Index id">
</div>
<div dashboard-input [formInput]="stakeholderFb.get('index_name')"
label="Index name">
</div> </div>
<div dashboard-input [formInput]="stakeholderFb.get('index_shortName')" <div dashboard-input [formInput]="stakeholderFb.get('index_shortName')"
label="Short name"> label="Index short name">
</div>
<div dashboard-input [formInput]="stakeholderFb.get('alias')"
label="Alias">
</div> </div>
</div> </div>
<div dashboard-input class="uk-form-row" [formInput]="stakeholderFb.get('logoUrl')" label="Logo Path/URL"></div> <div dashboard-input class="uk-form-row" [formInput]="stakeholderFb.get('logoUrl')" label="Logo Path/URL"></div>
@ -227,6 +230,12 @@
label="Type" [options]="stakeholderUtils.types" type="select"> label="Type" [options]="stakeholderUtils.types" type="select">
</div> </div>
</div> </div>
<div *ngIf="!stakeholderFb.get('isDefault').value && index === -1 && stakeholderFb.get('type').valid">
<div *ngIf="defaultStakeholdersOptions.length === 0" class="uk-text-danger">No default profiles has been found for this type.</div>
<div *ngIf="defaultStakeholdersOptions.length > 0"
dashboard-input class="uk-form-row" [formInput]="stakeholderFb.get('defaultId')"
label="Profile" [options]="defaultStakeholdersOptions" type="select"></div>
</div>
</div> </div>
</modal-alert> </modal-alert>
<modal-alert #deleteStakeholderModal (alertOutput)="deleteStakeholder()"></modal-alert> <modal-alert #deleteStakeholderModal (alertOutput)="deleteStakeholder()"></modal-alert>

View File

@ -34,6 +34,8 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
public displayDefaultStakeholders: Stakeholder[]; public displayDefaultStakeholders: Stakeholder[];
public displayStakeholders: Stakeholder[]; public displayStakeholders: Stakeholder[];
public defaultStakeholdersOptions: Option[] = [];
/** /**
* Top filters * Top filters
*/ */
@ -126,6 +128,16 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
this.displayStakeholders = this.filterByKeyword(this.stakeholders, value); this.displayStakeholders = this.filterByKeyword(this.stakeholders, value);
} }
onTypeChange(value) {
this.defaultStakeholdersOptions = [];
this.defaultStakeholders.filter(stakeholder => stakeholder.type === value).forEach(stakeholder => {
this.defaultStakeholdersOptions.push({
label: stakeholder.name,
value: stakeholder._id
})
});
}
private filterPrivacy(stakeholders: Stakeholder[], value): Stakeholder[] { private filterPrivacy(stakeholders: Stakeholder[], value): Stakeholder[] {
if (value === 'all') { if (value === 'all') {
@ -169,10 +181,11 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
} }
this.stakeholderFb = this.fb.group({ this.stakeholderFb = this.fb.group({
_id: this.fb.control(this.stakeholder._id), _id: this.fb.control(this.stakeholder._id),
defaultId: this.fb.control(this.stakeholder.defaultId),
name: this.fb.control(this.stakeholder.name, Validators.required),
index_name: this.fb.control(this.stakeholder.index_name, Validators.required), index_name: this.fb.control(this.stakeholder.index_name, Validators.required),
index_id: this.fb.control(this.stakeholder.index_id, Validators.required), index_id: this.fb.control(this.stakeholder.index_id, Validators.required),
index_shortName: this.fb.control(this.stakeholder.index_shortName, 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), creationDate: this.fb.control(this.stakeholder.creationDate),
alias: this.fb.control(this.stakeholder.alias, alias: this.fb.control(this.stakeholder.alias,
[ [
@ -189,8 +202,14 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
type: this.fb.control(this.stakeholder.type, Validators.required), type: this.fb.control(this.stakeholder.type, Validators.required),
topics: this.fb.control(this.stakeholder.topics), topics: this.fb.control(this.stakeholder.topics),
managers: this.fb.control(this.stakeholder.managers), managers: this.fb.control(this.stakeholder.managers),
logoUrl: this.fb.control(this.stakeholder.logoUrl) logoUrl: this.fb.control(this.stakeholder.logoUrl),
}); });
this.subscriptions.push(this.stakeholderFb.get('type').valueChanges.subscribe(value => {
this.onTypeChange(value);
}));
if(!isDefault) {
this.stakeholderFb.setControl('defaultId', this.fb.control(this.stakeholder.defaultId, Validators.required));
}
if (this.index !== -1) { if (this.index !== -1) {
if (this.stakeholderFb.value.type) { if (this.stakeholderFb.value.type) {
setTimeout(() => { setTimeout(() => {
@ -217,15 +236,12 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
public saveStakeholder() { public saveStakeholder() {
if (this.index === -1) { if (this.index === -1) {
if (!this.stakeholderFb.value.isDefault) { if (!this.stakeholderFb.value.isDefault) {
let stakeholder = this.defaultStakeholders.find(value => value.type === this.stakeholderFb.value.type); let stakeholder = this.defaultStakeholders.find(value => value._id === this.stakeholderFb.value.defaultId);
this.stakeholderFb.get('defaultId').setValue(stakeholder._id);
this.stakeholderFb.setValue(this.stakeholderUtils.createFunderFromDefaultProfile(this.stakeholderFb.value, this.stakeholderFb.setValue(this.stakeholderUtils.createFunderFromDefaultProfile(this.stakeholderFb.value,
stakeholder.topics)); stakeholder.topics));
/* this.stakeholderFb.setValue(this.stakeholderUtils.createFunderFromDefaultProfile(this.stakeholderFb.value, } /*else {
StakeholderCreator.createFunderDefaultProfile().topics));*/
} else {
this.stakeholderFb.setValue(StakeholderCreator.createFunderDefaultProfile(this.stakeholderFb.value)); this.stakeholderFb.setValue(StakeholderCreator.createFunderDefaultProfile(this.stakeholderFb.value));
} }*/
this.stakeholderService.buildStakeholder(this.properties.monitorServiceAPIURL, this.stakeholderService.buildStakeholder(this.properties.monitorServiceAPIURL,
this.stakeholderFb.value).subscribe(stakeholder => { this.stakeholderFb.value).subscribe(stakeholder => {
if (stakeholder.defaultId === null) { if (stakeholder.defaultId === null) {

View File

@ -482,7 +482,7 @@ export class IndicatorsComponent implements OnInit, OnDestroy, OnChanges, AfterV
} }
this.filterCharts(); this.filterCharts();
this.indicatorFb = null; this.indicatorFb = null;
UIkit.notification('Section has been successfully saved', { UIkit.notification('Indicator has been successfully saved', {
status: 'success', status: 'success',
timeout: 3000, timeout: 3000,
pos: 'top-left' pos: 'top-left'

View File

@ -14,6 +14,7 @@ export type SourceType = 'statistics' | 'search' | 'metrics' | 'stats-tool' | 'o
export class Stakeholder { export class Stakeholder {
_id: string; _id: string;
type: StakeholderType; type: StakeholderType;
name: string;
index_id; index_id;
index_name: string; index_name: string;
index_shortName: string; index_shortName: string;

View File

@ -22,8 +22,6 @@ export class StakeholderCreator {
impact.categories.push(this.createEmptyCategory("Economic Impact","Indicators based on patents and collaboration between industry and academia","economic-impact")); impact.categories.push(this.createEmptyCategory("Economic Impact","Indicators based on patents and collaboration between industry and academia","economic-impact"));
impact.categories.push(this.createEmptyCategory("Societal Impact","Indicators that correlate research results with SDGs","societal-impact")); impact.categories.push(this.createEmptyCategory("Societal Impact","Indicators that correlate research results with SDGs","societal-impact"));
funder.topics.push(impact); funder.topics.push(impact);
console.log(funder);
return funder; return funder;
} }