[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>
<li><a (click)="$event.stopPropagation();toggleStakeholderStatus(stakeholder);hide(element);$event.preventDefault()">
{{stakeholder.isActive ? 'Deactivate' : 'Activate'}}</a>
{{stakeholder.isActive ? 'Inactive' : 'Active'}}</a>
</li>
<li><a (click)="$event.stopPropagation();toggleStakeholderAccess(stakeholder);hide(element);$event.preventDefault()">
{{stakeholder.isPublic ? 'Unpublish' : 'Publish'}}</a>
{{stakeholder.isPublic ? 'Private' : 'Public'}}</a>
</li>
<hr class="uk-nav-divider">
<li><a (click)="$event.stopPropagation();deleteStakeholderOpen(stakeholder);hide(element);$event.preventDefault()">Delete</a>
@ -69,7 +69,7 @@
</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 *ngIf="grid" class="md-card-content">
<div class="uk-flex uk-flex-center" uk-grid>
@ -101,7 +101,7 @@
<div *ngIf="grid" class="md-card-content">
<div uk-grid>
<div class="uk-width-1-1">
Create a new Stakeholder default profile base on type.
Create a new Stakeholder default profile.
</div>
<div class="uk-width-1-1 uk-flex uk-flex-center">
<i class="material-icons md-48">add</i>
@ -155,7 +155,7 @@
</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 *ngIf="grid" class="md-card-content">
<div class="uk-flex uk-flex-center" uk-grid>
@ -187,7 +187,7 @@
<div *ngIf="grid" class="md-card-content">
<div uk-grid>
<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 class="uk-width-1-1 uk-flex uk-flex-center">
<i class="material-icons md-48">add</i>
@ -203,16 +203,19 @@
(alertOutput)="saveStakeholder()"
[okDisabled]="stakeholderFb && (stakeholderFb.invalid || (stakeholderFb.pristine && index !==-1))">
<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 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 dashboard-input [formInput]="stakeholderFb.get('index_shortName')"
label="Short name">
</div>
<div dashboard-input [formInput]="stakeholderFb.get('alias')"
label="Alias">
label="Index short name">
</div>
</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">
</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>
</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 displayStakeholders: Stakeholder[];
public defaultStakeholdersOptions: Option[] = [];
/**
* Top filters
*/
@ -126,6 +128,16 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
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[] {
if (value === 'all') {
@ -169,10 +181,11 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
}
this.stakeholderFb = this.fb.group({
_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_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,
[
@ -189,8 +202,14 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
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)
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.stakeholderFb.value.type) {
setTimeout(() => {
@ -217,15 +236,12 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
public saveStakeholder() {
if (this.index === -1) {
if (!this.stakeholderFb.value.isDefault) {
let stakeholder = this.defaultStakeholders.find(value => value.type === this.stakeholderFb.value.type);
this.stakeholderFb.get('defaultId').setValue(stakeholder._id);
let stakeholder = this.defaultStakeholders.find(value => value._id === this.stakeholderFb.value.defaultId);
this.stakeholderFb.setValue(this.stakeholderUtils.createFunderFromDefaultProfile(this.stakeholderFb.value,
stakeholder.topics));
/* this.stakeholderFb.setValue(this.stakeholderUtils.createFunderFromDefaultProfile(this.stakeholderFb.value,
StakeholderCreator.createFunderDefaultProfile().topics));*/
} else {
} /*else {
this.stakeholderFb.setValue(StakeholderCreator.createFunderDefaultProfile(this.stakeholderFb.value));
}
}*/
this.stakeholderService.buildStakeholder(this.properties.monitorServiceAPIURL,
this.stakeholderFb.value).subscribe(stakeholder => {
if (stakeholder.defaultId === null) {

View File

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

View File

@ -14,6 +14,7 @@ export type SourceType = 'statistics' | 'search' | 'metrics' | 'stats-tool' | 'o
export class Stakeholder {
_id: string;
type: StakeholderType;
name: string;
index_id;
index_name: 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("Societal Impact","Indicators that correlate research results with SDGs","societal-impact"));
funder.topics.push(impact);
console.log(funder);
return funder;
}