[Monitor Dashboard | Trunk]: 1. Add icon SVG on topi's form. 2. Add sections' creation on number indicators

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@58881 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
Konstantinos Triantafyllou 2020-06-11 10:12:30 +00:00
parent eb2ea8235a
commit 2ea3faac05
5 changed files with 138 additions and 107 deletions

View File

@ -119,6 +119,9 @@
<div dashboard-input class="uk-form-row" [formInput]="form.get('description')"
label="Description" type="textarea">
</div>
<div dashboard-input class="uk-form-row" [formInput]="form.get('iconUrl')"
label="Icon(SVG)" type="textarea">
</div>
<div class="uk-form-row uk-flex uk-flex-middle">
<div dashboard-input class="uk-width-small" [formInput]="form.get('isPublic')"
label="Accessibility" [options]="stakeholderUtils.isPublic" type="select">

View File

@ -96,7 +96,8 @@ export class StakeholderComponent implements OnInit, OnDestroy, IDeactivateCompo
isActive: this.fb.control(topic.isActive),
isPublic: this.fb.control(topic.isPublic),
defaultId: this.fb.control(topic.defaultId),
categories: this.fb.control(topic.categories)
categories: this.fb.control(topic.categories),
iconUrl: this.fb.control(topic.iconUrl)
});
this.subscriptions.push(this.form.get('name').valueChanges.subscribe(value => {
let i = 1;

View File

@ -63,117 +63,134 @@
</div>
</div>
<h4 class="uk-text-bold">Number Indicators</h4>
<div [class.list-view]="!grid" [id]="number._id"
class="uk-grid-match uk-grid-small"
*ngFor="let number of displayNumbers; let i = index"
uk-sortable="group: number" uk-grid>
<!--<div *ngIf="grid" class="tools disable-sortable uk-sortable-nodrag">
<div class="md-btn-group">
<button class="md-btn md-btn-mini"><i class="material-icons">add</i></button>
<button class="md-btn md-btn-mini"><i class="material-icons rotate-90">drag_indicator</i></button>
<button class="md-btn md-btn-mini"><i class="material-icons">clear</i></button>
</div>
</div>-->
<div *ngIf="false"
class="uk-form-row uk-width-1-1 uk-grid-medium uk-flex uk-flex-middle disable-sortable uk-sortable-nodrag"
uk-grid>
<div dashboard-input class="uk-width-2-3 uk-width-1-3@m" [formInput]="null"
label="Add a section title"></div>
<div class="uk-width-expand">
<button class="md-btn md-btn-small">
Save
</button>
</div>
</div>
<div *ngIf="!grid && number.title" class="uk-width-1-1 disable-sortable uk-sortable-nodrag">
<h4>{{number.title}}</h4>
</div>
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
<div *ngIf="indicator" [id]="indicator._id"
[class.uk-width-1-3@m]="grid && indicator.width === 'small'"
[class.uk-width-1-2@m]="grid && indicator.width === 'medium'"
[class.uk-width-1-1@m]="!grid || indicator.width === 'large'"
[class.disable-sortable]="!canReorder"
[class.uk-sortable-nodrag]="!canReorder">
<div class="md-card" [class.md-card-hover]="canReorder">
<div class="md-card-toolbar">
<div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
<ng-template [ngIf]="!grid">
<div class="uk-margin-medium-right uk-flex uk-flex-middle">
<i class="material-icons md-24 uk-margin-small-right">{{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}</i>
{{(indicator.isPublic) ? 'Public' : 'Private'}}
<div *ngIf="numberSections">
<ng-template ngFor [ngForOf]="displayNumbers" let-number let-i="index">
<div [class.list-view]="!grid" [id]="number._id"
class="uk-grid-match section uk-grid-small uk-grid uk-margin-top"
uk-sortable="group: number" uk-grid>
<div *ngIf="grid" class="tools disable-sortable uk-sortable-nodrag">
<div class="md-btn-group">
<button class="md-btn md-btn-mini" (click)="createSection(i, 'number')"><i class="material-icons">add</i></button>
<!--<button class="md-btn md-btn-mini"><i class="material-icons rotate-90">drag_indicator</i></button>-->
<button class="md-btn md-btn-mini" (click)="deleteNumberSectionOpen(number, i)"><i class="material-icons">clear</i>
</button>
</div>
</div>
<div *ngIf="grid && numberSections.at(i)"
class="uk-form-row uk-width-1-1 uk-grid-medium uk-flex uk-flex-middle uk-margin-bottom disable-sortable uk-sortable-nodrag"
uk-grid>
<div dashboard-input class="uk-width-2-3 uk-width-1-3@m" [formInput]="numberSections.at(i).get('title')"
label="Add a section title"></div>
<div class="uk-width-expand">
<button *ngIf="numberSections.at(i).dirty" class="md-btn"
(click)="saveSection(numberSections.at(i).value, i, 'number')">
Save
</button>
</div>
</div>
<div *ngIf="!grid && number.title" class="uk-width-1-1 disable-sortable uk-sortable-nodrag">
<h4>{{number.title}}</h4>
</div>
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
<div *ngIf="indicator" [id]="indicator._id"
[class.uk-width-1-3@m]="grid && indicator.width === 'small'"
[class.uk-width-1-2@m]="grid && indicator.width === 'medium'"
[class.uk-width-1-1@m]="!grid || indicator.width === 'large'"
[class.disable-sortable]="!canReorder"
[class.uk-sortable-nodrag]="!canReorder">
<div class="md-card" [class.md-card-hover]="canReorder">
<div class="md-card-toolbar">
<div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
<ng-template [ngIf]="!grid">
<div class="uk-margin-medium-right uk-flex uk-flex-middle">
<i class="material-icons md-24 uk-margin-small-right">{{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}</i>
{{(indicator.isPublic) ? 'Public' : 'Private'}}
</div>
<div class="uk-margin-medium-right uk-flex uk-flex-middle">
<i class="material-icons md-24 uk-margin-small-right"
[class.md-color-green-300]="indicator.isActive">{{indicatorUtils.isActiveIcon}}</i>
{{(indicator.isActive) ? 'Active' : 'Inactive'}}
</div>
</ng-template>
<div class="md-card-dropdown uk-inline">
<i class="md-icon material-icons">more_vert</i>
<div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false"
class="uk-padding-remove-horizontal">
<ul class="uk-nav uk-dropdown-nav">
<li *ngIf="isAdministrator"><a
(click)="editNumberIndicatorOpen(number, indicator._id)">Edit</a></li>
<li><a (click)="toggleIndicatorStatus(number._id, indicator);hide(element)">
{{indicator.isActive ? 'Inactive' : 'Active'}}</a>
</li>
<li><a (click)="toggleIndicatorAccess(number._id, indicator);hide(element)">
{{indicator.isPublic ? 'Private' : 'Public'}}</a>
</li>
<hr *ngIf="isAdministrator" class="uk-nav-divider">
<li *ngIf="isAdministrator"><a
(click)="deleteIndicatorOpen(number, indicator._id, 'number');hide(element)">Delete</a>
</li>
</ul>
</div>
</div>
</div>
<div class="uk-margin-medium-right uk-flex uk-flex-middle">
<i class="material-icons md-24 uk-margin-small-right"
[class.md-color-green-300]="indicator.isActive">{{indicatorUtils.isActiveIcon}}</i>
{{(indicator.isActive) ? 'Active' : 'Inactive'}}
</div>
</ng-template>
<div class="md-card-dropdown uk-inline">
<i class="md-icon material-icons">more_vert</i>
<div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false"
class="uk-padding-remove-horizontal">
<ul class="uk-nav uk-dropdown-nav">
<li *ngIf="isAdministrator"><a (click)="editNumberIndicatorOpen(number, indicator._id)">Edit</a></li>
<li><a (click)="toggleIndicatorStatus(number._id, indicator);hide(element)">
{{indicator.isActive ? 'Inactive' : 'Active'}}</a>
</li>
<li><a (click)="toggleIndicatorAccess(number._id, indicator);hide(element)">
{{indicator.isPublic ? 'Private' : 'Public'}}</a>
</li>
<hr *ngIf="isAdministrator" class="uk-nav-divider">
<li *ngIf="isAdministrator"><a (click)="deleteIndicatorOpen(number, indicator._id, 'number');hide(element)">Delete</a>
</li>
</ul>
<div class="md-card-toolbar-heading-text">
{{indicator.name ? indicator.name : 'No title available'}}
</div>
</div>
<div *ngIf="grid" class="md-card-content">
<div class="uk-flex uk-flex-center" uk-grid>
<div class="uk-width-1-1">
{{indicator.description}}
</div>
<div class="uk-width-1-2 uk-text-center"
title="{{indicator.isPublic?'Visible to all users':'Visible to members'}}">
<i class="material-icons md-24">{{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}</i>
<div>{{(indicator.isPublic) ? 'Public' : 'Private'}}</div>
</div>
<div class="uk-width-1-2 uk-text-center"
title="{{indicator.isActive?'Included in the indicators list':'Available only through administration dashboard'}}">
<i class="material-icons md-24"
[class.md-color-green-300]="indicator.isActive">{{indicatorUtils.isActiveIcon}}</i>
<div>{{(indicator.isActive) ? 'Active' : 'Inactive'}}</div>
</div>
</div>
</div>
</div>
<div class="md-card-toolbar-heading-text">
{{indicator.name ? indicator.name : 'No title available'}}
</div>
</div>
<div *ngIf="grid" class="md-card-content">
<div class="uk-flex uk-flex-center" uk-grid>
<div class="uk-width-1-1">
{{indicator.description}}
</ng-template>
<div *ngIf="isAdministrator" class="disable-sortable uk-sortable-nodrag"
[class.uk-width-1-3@m]="grid"
[class.uk-width-1-1@m]="!grid">
<div class="md-card clickable" (click)="editNumberIndicatorOpen(number)">
<div class="md-card-toolbar">
<div class="md-card-toolbar-heading-text"
[class.uk-flex-middle]="!grid"
[class.uk-flex]="!grid"
[class.uk-flex-center]="!grid">
<i *ngIf="!grid" class="material-icons md-36">add</i>
<span>Create a custom Indicator</span>
</div>
<div class="uk-width-1-2 uk-text-center" title="{{indicator.isPublic?'Visible to all users':'Visible to members'}}">
<i class="material-icons md-24">{{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}</i>
<div>{{(indicator.isPublic) ? 'Public' : 'Private'}}</div>
</div>
<div class="uk-width-1-2 uk-text-center" title="{{indicator.isActive?'Included in the indicators list':'Available only through administration dashboard'}}">
<i class="material-icons md-24"
[class.md-color-green-300]="indicator.isActive">{{indicatorUtils.isActiveIcon}}</i>
<div>{{(indicator.isActive) ? 'Active' : 'Inactive'}}</div>
</div>
<div *ngIf="grid" class="md-card-content">
<div uk-grid>
<div class="uk-width-1-1">
Create a new number Indicator
</div>
<div class="uk-width-1-1 uk-flex uk-flex-center">
<i class="material-icons md-48">add</i>
</div>
</div>
</div>
</div>
</div>
</div>
</ng-template>
<div *ngIf="isAdministrator" class="disable-sortable uk-sortable-nodrag"
[class.uk-width-1-3@m]="grid"
[class.uk-width-1-1@m]="!grid">
<div class="md-card clickable" (click)="editNumberIndicatorOpen(number)">
<div class="md-card-toolbar">
<div class="md-card-toolbar-heading-text"
[class.uk-flex-middle]="!grid"
[class.uk-flex]="!grid"
[class.uk-flex-center]="!grid">
<i *ngIf="!grid" class="material-icons md-36">add</i>
<span>Create a custom Indicator</span>
</div>
</div>
<div *ngIf="grid" class="md-card-content">
<div uk-grid>
<div class="uk-width-1-1">
Create a new number Indicator
</div>
<div class="uk-width-1-1 uk-flex uk-flex-center">
<i class="material-icons md-48">add</i>
</div>
</div>
</div>
<div *ngIf="grid" class="new-section uk-margin-top">
<div class="tools uk-flex uk-flex-middle">
<button class="md-btn uk-margin-small-right" (click)="createSection(-1, 'number')">
<i class="material-icons md-24 md-color-white">add</i>
</button>
<span>Create a new section</span>
</div>
</div>
</div>
@ -187,7 +204,8 @@
<div class="md-btn-group">
<button class="md-btn md-btn-mini" (click)="createSection(i)"><i class="material-icons">add</i></button>
<!--<button class="md-btn md-btn-mini"><i class="material-icons rotate-90">drag_indicator</i></button>-->
<button class="md-btn md-btn-mini" (click)="deleteChartSectionOpen(chart, i)"><i class="material-icons">clear</i></button>
<button class="md-btn md-btn-mini" (click)="deleteChartSectionOpen(chart, i)"><i class="material-icons">clear</i>
</button>
</div>
</div>
<div *ngIf="grid && chartSections.at(i)"
@ -196,7 +214,8 @@
<div dashboard-input class="uk-width-2-3 uk-width-1-3@m" [formInput]="chartSections.at(i).get('title')"
label="Add a section title"></div>
<div class="uk-width-expand">
<button *ngIf="chartSections.at(i).dirty" class="md-btn" (click)="saveSection(chartSections.at(i).value, i)">
<button *ngIf="chartSections.at(i).dirty" class="md-btn"
(click)="saveSection(chartSections.at(i).value, i)">
Save
</button>
</div>
@ -223,13 +242,15 @@
{{indicatorPath.type + ' Chart'}}
</div>
</ng-template>
<div *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle" title="{{indicator.isPublic?'Visible to all users':'Visible to members'}}">
<div *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle"
title="{{indicator.isPublic?'Visible to all users':'Visible to members'}}">
<i class="material-icons md-24 uk-margin-small-right">
{{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}
</i>
{{(indicator.isPublic) ? 'Public' : 'Private'}}
</div>
<div *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle" title="{{indicator.isActive?'Included in the indicators list':'Available only through administration dashboard'}}" >
<div *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle"
title="{{indicator.isActive?'Included in the indicators list':'Available only through administration dashboard'}}">
<i class="material-icons md-24 uk-margin-small-right"
[class.md-color-green-300]="indicator.isActive">
{{indicatorUtils.isActiveIcon}}
@ -366,7 +387,8 @@
[formGroup]="indicatorPath">
<div class="uk-grid-medium uk-form-row uk-flex uk-flex-middle" uk-grid>
<div class="uk-width-2-3@s">
<div dashboard-input [formInput]="indicatorPath.get('url')" type="textarea" rows="3" label="Number path url"></div>
<div dashboard-input [formInput]="indicatorPath.get('url')" type="textarea" rows="3"
label="Number path url"></div>
</div>
<div class="uk-width-1-3@s">
<div dashboard-input [formInput]="indicatorPath.get('source')" label="Source"
@ -383,7 +405,8 @@
<div dashboard-input class="uk-width-small"
[formInput]="jsonPath"
[label]="'Level ' + +(j + 1)"></div>
<i *ngIf="getJsonPath(i).length !== 1" class="material-icons md-24 uk-margin-left uk-text-danger clickable" (click)="removeJsonPath(i, j)">close</i>
<i *ngIf="getJsonPath(i).length !== 1"
class="material-icons md-24 uk-margin-left uk-text-danger clickable" (click)="removeJsonPath(i, j)">close</i>
<div *ngIf="j < (getJsonPath(i).length - 1)" class="uk-text-center uk-margin-left">
<i class="material-icons">arrow_forward</i>
</div>

View File

@ -130,6 +130,9 @@
<div dashboard-input class="uk-form-row" [formInput]="form.get('description')"
label="Description" type="textarea">
</div>
<div *ngIf="form.get('iconUrl')" dashboard-input class="uk-form-row" [formInput]="form.get('iconUrl')"
label="Icon(SVG)" type="textarea">
</div>
<div class="uk-form-row uk-flex uk-flex-middle">
<div dashboard-input class="uk-width-small" [formInput]="form.get('isPublic')"
label="Accessibility" [options]="stakeholderUtils.isPublic" type="select">

View File

@ -137,7 +137,8 @@ export class TopicComponent implements OnInit, OnDestroy, IDeactivateComponent {
isActive: this.fb.control(topic.isActive),
isPublic: this.fb.control(topic.isPublic),
defaultId: this.fb.control(topic.defaultId),
categories: this.fb.control(topic.categories)
categories: this.fb.control(topic.categories),
iconUrl: this.fb.control(topic.iconUrl)
});
this.subscriptions.push(this.form.get('name').valueChanges.subscribe(value => {
let i = 1;