[Monitor Dashboard]: 1. Change menus. 2. Fix visibility edit options. 3. add page_content_header on css

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@59729 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
Konstantinos Triantafyllou 2020-10-31 16:02:30 +00:00
parent d83f8ca0b2
commit 0d59ccee27
13 changed files with 359 additions and 337 deletions

View File

@ -253,8 +253,8 @@ export class AppComponent implements OnInit, OnDestroy {
this.adminMenuItems.push(new MenuItem("indicators", "Indicators", "", "/admin/" + this.stakeholder.alias + '/indicators', false, [], [], {}, "<i uk-icon=\"image\"></i>")); this.adminMenuItems.push(new MenuItem("indicators", "Indicators", "", "/admin/" + this.stakeholder.alias + '/indicators', false, [], [], {}, "<i uk-icon=\"image\"></i>"));
this.adminMenuItems.push(new MenuItem("users", "Users", "", "/admin/" + this.stakeholder.alias + "/users", false, [], [], {}, "<i uk-icon=\"users\"></i>")); this.adminMenuItems.push(new MenuItem("users", "Users", "", "/admin/" + this.stakeholder.alias + "/users", false, [], [], {}, "<i uk-icon=\"users\"></i>"));
this.specialSideBarMenuItem = new MenuItem("back", "Manage profiles", "", "/admin", false, [], null, {}); this.specialSideBarMenuItem = new MenuItem("back", "Manage profiles", "", "/admin", false, [], null, {});
this.specialSideBarMenuItem.icon = '<span class="uk-icon-button uk-icon portal-button " >' + arrow_left.data + '</span>'; // '<span class="uk-icon-button uk-icon portal-button " uk-icon="chevron-left"></span>'; this.specialSideBarMenuItem.icon = '<span class="uk-icon-button small uk-icon uk-button-secondary">' + arrow_left.data + '</span>'; // '<span class="uk-icon-button uk-icon portal-button " uk-icon="chevron-left"></span>';
this.specialSideBarMenuItem.customClass = 'uk-text-uppercase uk-text-bold uk-text-secondary';
} }
this.userMenuItems = []; this.userMenuItems = [];
/* if (Session.isPortalAdministrator(this.user)) { /* if (Session.isPortalAdministrator(this.user)) {

View File

@ -81,8 +81,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class="md-card-dropdown uk-inline clickable visibilityMenuIcon"> <div class="md-card-dropdown uk-inline clickable visibility">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get(stakeholder.visibility)" <i [attr.uk-icon]="stakeholderUtils.visibilityIcon.get(stakeholder.visibility)"
(click)="$event.stopPropagation();$event.preventDefault()"></i> (click)="$event.stopPropagation();$event.preventDefault()"></i>
<div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false"> <div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false">
<ul class="uk-nav uk-dropdown-nav"> <ul class="uk-nav uk-dropdown-nav">
@ -91,9 +91,9 @@
<a <a
*ngIf="stakeholder.visibility != v.value" *ngIf="stakeholder.visibility != v.value"
(click)="$event.stopPropagation();changeStakeholderStatus(stakeholder,v.value);hide(element);$event.preventDefault()"> (click)="$event.stopPropagation();changeStakeholderStatus(stakeholder,v.value);hide(element);$event.preventDefault()">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get( v.value)"></i> {{v.label}}</a> <i [attr.uk-icon]="stakeholderUtils.visibilityIcon.get( v.value)"></i> {{v.label}}</a>
<a *ngIf="stakeholder.visibility == v.value"> <a *ngIf="stakeholder.visibility == v.value">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get( v.value)"></i> {{v.label}} <icon <i [attr.uk-icon]="stakeholderUtils.visibilityIcon.get( v.value)"></i> {{v.label}} <icon
customClass="uk-text-secondary uk-float-right" [ratio]="0.5" customClass="uk-text-secondary uk-float-right" [ratio]="0.5"
name="bullet"></icon></a> name="bullet"></icon></a>
</li> </li>

View File

@ -1,7 +1,9 @@
<ng-template #selected_filters_pills let-margin="margin"> <ng-template #selected_filters_pills let-margin="margin">
<!-- <div class="uk-grid uk-grid-small uk-text-small" uk-grid>--> <!-- <div class="uk-grid uk-grid-small uk-text-small" uk-grid>-->
<span *ngIf="periodFilter.selectedFromAndToValues.length > 0" class="uk-grid-margin"> <span *ngIf="periodFilter.selectedFromAndToValues.length > 0" class="uk-grid-margin">
<a (click)="clearPeriodFilter()" [class]="((loading)?' uk-disabled':' ')+' uk-link-text '"> <span class="selectedFilterLabel" [class.uk-margin-small-left]="margin" title="Remove {{periodFilter.selectedFromAndToValues}}"> <a (click)="clearPeriodFilter()" [class]="((loading)?' uk-disabled':' ')+' uk-link-text '"> <span
class="selectedFilterLabel" [class.uk-margin-small-left]="margin"
title="Remove {{periodFilter.selectedFromAndToValues}}">
<i uk-icon="close"></i> <i uk-icon="close"></i>
<span class="uk-margin-small-left">{{periodFilter.selectedFromAndToValues}}</span> <span class="uk-margin-small-left">{{periodFilter.selectedFromAndToValues}}</span>
</span></a> </span></a>
@ -39,13 +41,11 @@
<!-- </div>--> <!-- </div>-->
</ng-template> </ng-template>
<div id="page_content" [class.greyOut]="filterToggle" (click)=" (filterToggle)?filterToggle = false:filterToggle"> <div id="page_content" [class.greyOut]="filterToggle" (click)=" (filterToggle)?filterToggle = false:filterToggle">
<div> <div *ngIf="activeTopic && activeTopic.categories.length > 1" id="page_content_header">
<div class="uk-navbar-container uk-navbar-transparent uk-sticky uk-sticky-fixed" style="top: 100px; position:
fixed; width: 100%">
<div class="uk-margin-large-left"> <div class="uk-margin-large-left">
<nav class=" "> <nav class=" ">
<div *ngIf="stakeholder && status === errorCodes.DONE && activeTopic" class=""> <div *ngIf="stakeholder && status === errorCodes.DONE && activeTopic" class="">
<ul *ngIf="activeTopic && activeTopic.categories.length > 1" <ul
class="customTabs uk-tab "> class="customTabs uk-tab ">
<ng-template ngFor [ngForOf]="activeTopic.categories" let-category let-i="index"> <ng-template ngFor [ngForOf]="activeTopic.categories" let-category let-i="index">
<li *ngIf="isPublicOrIsMember(category.visibility)" <li *ngIf="isPublicOrIsMember(category.visibility)"
@ -76,11 +76,7 @@
</div> </div>
</div> </div>
</div> </div>
<div id="page_content_inner" class="" [style.margin-top.px]="(24+ <div id="page_content_inner" class="">
(activeCategory &&
activeCategory.subCategories.length > 1?40:0)+(activeTopic &&
activeTopic.categories.length > 1?20:0)+(countSelectedFilters()
> 0?40:0))">
<div class=" indicators"> <div class=" indicators">
<div *ngIf="privateStakeholder"> <div *ngIf="privateStakeholder">
<div class="uk-text-center uk-height-medium"> <div class="uk-text-center uk-height-medium">
@ -183,7 +179,8 @@
{{indicatorPath.type}} {{indicatorPath.type}}
</button> </button>
</div> </div>
<div *ngIf="properties.environment == 'development'">Filtered: {{chartsActiveType.get(i + '-' + j).filtersApplied}} out of <div *ngIf="properties.environment == 'development'">
Filtered: {{chartsActiveType.get(i + '-' + j).filtersApplied}} out of
{{countSelectedFilters()}}</div> {{countSelectedFilters()}}</div>
<iframe *ngIf="chartsActiveType.get(i + '-' + j).source !== 'image'" <iframe *ngIf="chartsActiveType.get(i + '-' + j).source !== 'image'"
[src]="chartsActiveType.get(i + '-' + j).safeResourceUrl" [src]="chartsActiveType.get(i + '-' + j).safeResourceUrl"
@ -213,7 +210,6 @@
<bottom *ngIf="properties" [darkBackground]="false" <bottom *ngIf="properties" [darkBackground]="false"
[centered]="true" [properties]="properties" [showMenuItems]="true"></bottom> [centered]="true" [properties]="properties" [showMenuItems]="true"></bottom>
</div> </div>
</div>
</div> </div>
<!--(click)="filterToggle= !filterToggle" <!--(click)="filterToggle= !filterToggle"
@ -241,12 +237,15 @@
</div> </div>
<div class="uk-padding"> <div class="uk-padding">
<div class="uk-grid uk-flex uk-flex-middle"><div class="uk-h4 ">Filters</div><a *ngIf="countSelectedFilters() > 1" <div class="uk-grid uk-flex uk-flex-middle">
<div class="uk-h4 ">Filters</div>
<a *ngIf="countSelectedFilters() > 1"
class=" portal-link uk-width-1-2" (click)="clearAll()"> Clear All </a></div> class=" portal-link uk-width-1-2" (click)="clearAll()"> Clear All </a></div>
<div class="uk-grid uk-grid-small uk-text-small" uk-grid> <div class="uk-grid uk-grid-small uk-text-small" uk-grid>
<ng-container *ngTemplateOutlet="selected_filters_pills; context: {margin:false}"></ng-container> <ng-container *ngTemplateOutlet="selected_filters_pills; context: {margin:false}"></ng-container>
</div> </div>
<div class="uk-margin-small-top"><i class="uk-text-muted uk-text-small"> If your filter selection cannot be applied to a chart, that chart will appear grayed-out.</i></div> <div class="uk-margin-small-top"><i class="uk-text-muted uk-text-small"> If your filter selection cannot be
applied to a chart, that chart will appear grayed-out.</i></div>
<ul class="uk-list uk-list-divider uk-margin-medium"> <ul class="uk-list uk-list-divider uk-margin-medium">
<li> <li>
<range-filter [filter]="periodFilter" yearMin="2000" yearMax="2020" [mandatoryRange]="true" <range-filter [filter]="periodFilter" yearMin="2000" yearMax="2020" [mandatoryRange]="true"

View File

@ -504,16 +504,16 @@
<!--</modal-alert>--> <!--</modal-alert>-->
<ng-template #visibilityOptions let-indicator="indicator" > <ng-template #visibilityOptions let-indicator="indicator" >
<span class="uk-invisible-hover uk-padding-remove" (click)="$event.stopPropagation();$event.preventDefault()"> <span class="uk-invisible-hover uk-padding-remove" (click)="$event.stopPropagation();$event.preventDefault()">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get(indicator.visibility)" class="clickable visibilityMenuIcon"></i> <i [attr.uk-icon]="stakeholderUtils.visibilityIcon.get(indicator.visibility)" class="clickable visibility"></i>
<div #element uk-dropdown="mode: click; pos: bottom-left; delay-hide: 0; flip: false"> <div #element uk-dropdown="mode: click; pos: bottom-left; delay-hide: 0; flip: false">
<ul class="uk-nav uk-dropdown-nav"> <ul class="uk-nav uk-dropdown-nav">
<li *ngFor="let v of stakeholderUtils.visibility" [class.selectedVisibility]="v.value == indicator.visibility"> <li *ngFor="let v of stakeholderUtils.visibility" [class.selectedVisibility]="v.value == indicator.visibility">
<a <a
*ngIf="indicator.visibility != v.value" *ngIf="indicator.visibility != v.value"
(click)="$event.stopPropagation();toggleIndicatorStatus(indicator._id, indicator,v.value);hide(element);$event.preventDefault()"> (click)="$event.stopPropagation();toggleIndicatorStatus(indicator._id, indicator,v.value);hide(element);$event.preventDefault()">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get( v.value)"></i> {{v.label}}</a> <i [attr.uk-icon]="stakeholderUtils.visibilityIcon.get( v.value)"></i> {{v.label}}</a>
<a *ngIf="indicator.visibility == v.value"> <a *ngIf="indicator.visibility == v.value">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get( v.value)"></i> {{v.label}} <icon <i [attr.uk-icon]="stakeholderUtils.visibilityIcon.get( v.value)"></i> {{v.label}} <icon
customClass="uk-text-secondary uk-float-right" [ratio]="0.5" customClass="uk-text-secondary uk-float-right" [ratio]="0.5"
name="bullet"></icon></a> name="bullet"></icon></a>
</li> </li>

View File

@ -1,47 +1,33 @@
<aside id="sidebar_main"> <aside id="sidebar_main">
<div id="sidebar_content"> <div id="sidebar_content">
<!--<div *ngIf="stakeholder" class="sidebar_main_header uk-margin-remove-bottom uk-text-center">
<img *ngIf="properties.environment =='beta' || properties.environment =='development'" class="badge"
[src]="'assets/common-assets/'+(properties.environment =='beta'?'beta_flag.svg':'prototype_flag.svg')"
[alt]="properties.environment">
<div class="uk-position-relative uk-margin-small-top">
&lt;!&ndash; <div *ngIf="!stakeholder.defaultId" class="uk-badge default">Default</div>&ndash;&gt;
&lt;!&ndash; <img class="logo" *ngIf="stakeholder.logoUrl" [src]="stakeholder.logoUrl">&ndash;&gt;
&lt;!&ndash; <div class="uk-margin-top" *ngIf="!stakeholder.logoUrl" >{{stakeholder.name}}</div>&ndash;&gt;
<a [href]="properties.domain + properties.baseLink"><div class="portalLogo logo" ></div></a>
</div>
</div>-->
<div *ngIf="stakeholder && stakeholder.topics[topicIndex]" class="menu_section uk-margin-top"> <div *ngIf="stakeholder && stakeholder.topics[topicIndex]" class="menu_section uk-margin-top">
<div class="uk-text-center"> <div class="uk-text-center">
<a [routerLink]="'/admin/' + stakeholder.alias" class="uk-h5 uk-link-heading"> <a [routerLink]="'/admin/' + stakeholder.alias"
class="uk-link-heading uk-text-uppercase uk-flex uk-flex-middle uk-flex-center">
<span class="" uk-icon="icon:close;ratio:1.8"></span> <span class="" uk-icon="icon:close;ratio:1.8"></span>
<span class="uk-margin-left">Indicators</span> <span *ngIf="open" class="uk-margin-left">Indicators</span>
</a> </a>
</div> </div>
<div class="menu_section uk-margin-xlarge-top">
<ul class="uk-list"> <ul class="uk-list">
<li class="submenu_trigger">
<li class="submenu_trigger">
<ul class="uk-nav-default">
<ng-template ngFor [ngForOf]="stakeholder.topics" let-topic let-i="index"> <ng-template ngFor [ngForOf]="stakeholder.topics" let-topic let-i="index">
<li <li class="uk-visible-toggle"
[title]="topic.name+': '+(topic.isActive?'Active':'Inactive')+', '+(topic.isPublic?'Public':'Private')" [class.uk-active]="topicIndex == i">
class="uk-margin-top uk-margin-small-right uk-visible-toggle" <a [routerLink]="'/admin/'+stakeholder.alias + '/indicators/' + topic.alias"
[class.uk-active]="topicIndex == i" class="uk-flex uk-flex-middle">
[class.uk-text-bold]="topicIndex == i"> <span *ngIf="topic.icon"></span>
<a [routerLink]="'/admin/'+stakeholder.alias + '/indicators/' + topic.alias" class="uk-flex"> <div class="uk-width-expand uk-position-relative uk-flex uk-flex-middle"
<span *ngIf="topic.icon" class="menu_icon"> [class.uk-flex-center]="open">
<!-- <span [innerHTML]="satinizeHTML(topic.icon)"></span>--> <span>
</span>
<div class="menu_title uk-width-expand uk-text-center">
<ng-container *ngTemplateOutlet="visibilityOptions; context: <ng-container *ngTemplateOutlet="visibilityOptions; context:
{i:i, type: 'topic', {i:i, type: 'topic', visibility: stakeholder.topics[i].visibility}">
visibility: stakeholder.topics[i].visibility}"></ng-container> </ng-container>
{{topic.name}} </span>
</div> <span class="uk-text-truncate" [class.uk-width-3-5]="!open">{{topic.name}}</span>
<div class="uk-invisible-hover" (click)="$event.stopPropagation();$event.preventDefault()"> <span class="uk-invisible-hover color"
<i class=" onHover" uk-icon="more-vertical"></i> (click)="$event.stopPropagation();$event.preventDefault()">
<div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false" <span class="uk-icon uk-position-center-right" uk-icon="more-vertical"></span>
class="uk-padding-remove-horizontal"> <div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false">
<ul class="uk-nav uk-dropdown-nav uk-list"> <ul class="uk-nav uk-dropdown-nav uk-list">
<li><a (click)="editTopicOpen(i); hide(element)">Edit</a></li> <li><a (click)="editTopicOpen(i); hide(element)">Edit</a></li>
<ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v> <ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v>
@ -59,22 +45,22 @@
</li> </li>
</ul> </ul>
</div> </div>
</span>
</div> </div>
</a> </a>
</li> </li>
</ng-template> </ng-template>
<li class="uk-text-center uk-margin-top uk-visible-toggle"> <li class="uk-margin-top" [class.uk-visible-toggle]="open">
<span (click)="editTopicOpen(-1); $event.preventDefault()"> <span (click)="editTopicOpen(-1); $event.preventDefault()"
<!-- <span class="menu_icon"><i class="material-icons">add</i></span>--> class="clickable uk-flex uk-flex-middle uk-flex-center">
<span <span class="uk-icon-button small portal-icon-button" [class.uk-margin-left]="open">
class="menu_icon uk-icon-button portal-icon-button icon-button-small"><i <icon name="add"></icon>
uk-icon="icon:plus; ratio:0.7"></i></span> </span>
<span class="uk-hidden-hover"> Create new topic</span> <span class="uk-hidden-hover space" [class.uk-hidden]="!open"> Create new topic</span>
</span> </span>
</li> </li>
</ul> </ul>
</li> </div>
</ul>
</div> </div>
</div> </div>
<div *ngIf="!isSmallScreen" id="sidebar_switcher_toggle" class="clickable " <div *ngIf="!isSmallScreen" id="sidebar_switcher_toggle" class="clickable "
@ -84,29 +70,25 @@
</div> </div>
</aside> </aside>
<div id="page_content"> <div id="page_content">
<div *ngIf="stakeholder" <div *ngIf="stakeholder" id="page_content_header">
class="uk-navbar-container uk-sticky uk-sticky-fixed"
style="top: 100px; position: fixed; width: 100%">
<div class="uk-margin-large-left"> <div class="uk-margin-large-left">
<nav class=" "> <nav class=" ">
<div *ngIf="stakeholder && stakeholder.topics[topicIndex]" class=""> <div *ngIf="stakeholder && stakeholder.topics[topicIndex]" class="">
<ul *ngIf="stakeholder.topics[topicIndex] && stakeholder.topics[topicIndex].categories.length > 0" <ul *ngIf="stakeholder.topics[topicIndex] && stakeholder.topics[topicIndex].categories.length > 0"
class="customTabs uk-tab admin uk-flex uk-flex-middle"> class="customTabs uk-tab ignore admin uk-flex uk-flex-middle">
<ng-template ngFor [ngForOf]="stakeholder.topics[topicIndex].categories" let-category let-i="index"> <ng-template ngFor [ngForOf]="stakeholder.topics[topicIndex].categories" let-category let-i="index">
<li class="uk-visible-toggle" <li class="uk-visible-toggle uk-flex uk-flex-middle"
[class.uk-active]="category.alias === stakeholder.topics[topicIndex].categories[categoryIndex].alias"> [class.uk-active]="category.alias === stakeholder.topics[topicIndex].categories[categoryIndex].alias">
<a (click)="toggleCategory(i)"
class="uk-margin-remove-bottom uk-h4"
>
<ng-container *ngTemplateOutlet="visibilityOptions; context: <ng-container *ngTemplateOutlet="visibilityOptions; context:
{i:i, type: 'cat', {i:i, type: 'cat',
visibility: stakeholder.topics[topicIndex].categories[i].visibility}"></ng-container> visibility: stakeholder.topics[topicIndex].categories[i].visibility}">
</ng-container>
<a (click)="toggleCategory(i)">
<span class="title"> {{category.name}}</span> <span class="title"> {{category.name}}</span>
<span class="uk-invisible-hover" </a>
(click)="$event.stopPropagation();$event.preventDefault()"> <span class="uk-invisible-hover" (click)="$event.stopPropagation();$event.preventDefault()">
<i class=" onHover" uk-icon="more-vertical"></i> <span class="uk-icon clickable" uk-icon="more-vertical"></span>
<div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false" <div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false">
class="uk-padding-remove-horizontal">
<ul class="uk-nav uk-dropdown-nav"> <ul class="uk-nav uk-dropdown-nav">
<li><a (click)="editCategoryOpen(i); hide(element)">Edit</a></li> <li><a (click)="editCategoryOpen(i); hide(element)">Edit</a></li>
<ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v> <ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v>
@ -122,14 +104,14 @@
</ul> </ul>
</div> </div>
</span> </span>
</a>
</li> </li>
</ng-template> </ng-template>
<li> <li class="uk-visible-toggle">
<span href="#" (click)="editCategoryOpen();$event.preventDefault()" class="uk-visible-toggle clickable"> <span (click)="editCategoryOpen(); $event.preventDefault()" class="clickable">
<span class="menu_icon uk-icon-button portal-icon-button icon-button-small"><i <span class="uk-icon-button small portal-icon-button">
uk-icon="icon:plus; ratio:0.7"></i></span> <icon name="add"></icon>
<span class="uk-hidden-hover uk-te"> Create new category</span> </span>
<span class="uk-hidden-hover space">Create new category</span>
</span> </span>
</li> </li>
</ul> </ul>
@ -137,26 +119,25 @@
</nav> </nav>
<ul *ngIf=" stakeholder.topics[topicIndex].categories[categoryIndex] && <ul *ngIf=" stakeholder.topics[topicIndex].categories[categoryIndex] &&
stakeholder.topics[topicIndex].categories[categoryIndex].subCategories.length > 0" stakeholder.topics[topicIndex].categories[categoryIndex].subCategories.length > 0"
class="uk-subnav uk-subnav-pill subCategoriesTabs admin"> class="uk-subnav uk-subnav-pill subCategoriesTabs ignore admin uk-flex uk-flex-middle">
<ng-template ngFor [ngForOf]="stakeholder.topics[topicIndex].categories[categoryIndex].subCategories" <ng-template ngFor [ngForOf]="stakeholder.topics[topicIndex].categories[categoryIndex].subCategories"
let-subCategory let-i="index"> let-subCategory let-i="index">
<li <li [class.uk-active]="(subCategory.alias ===
[class.uk-active]="(subCategory.alias ===
stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[subCategoryIndex].alias)" stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[subCategoryIndex].alias)"
class=" uk-visible-toggle uk-flex uk-flex-middle"> class="uk-visible-toggle uk-position-relative uk-padding-remove-horizontal">
<span>
<ng-container *ngTemplateOutlet="visibilityOptions; context: <ng-container *ngTemplateOutlet="visibilityOptions; context:
{i:i, type: 'sub', {i:i, type: 'sub',
visibility: stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[i].visibility}"></ng-container> visibility: stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[i].visibility}">
</ng-container>
<a (click)="chooseSubcategory(categoryIndex, i);$event.preventDefault()" <a (click)="chooseSubcategory(categoryIndex, i);$event.preventDefault()"
class="uk-margin-remove-bottom" class="space">
><span>{{subCategory.name}}</span> <span>{{subCategory.name}}</span>
</a> </a>
<span class="uk-invisible-hover" <span class="uk-invisible-hover uk-position-center-right color"
(click)="$event.stopPropagation();$event.preventDefault()"> (click)="$event.stopPropagation();$event.preventDefault()">
<i class=" onHover" uk-icon="more-vertical"></i> <span class="clickable" uk-icon="more-vertical"></span>
<div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false" <div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false">
class="uk-padding-remove-horizontal">
<ul class="uk-nav uk-dropdown-nav"> <ul class="uk-nav uk-dropdown-nav">
<li><a (click)="editSubCategoryOpen(i); hide(element)">Edit</a></li> <li><a (click)="editSubCategoryOpen(i); hide(element)">Edit</a></li>
<ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v> <ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v>
@ -174,21 +155,21 @@
</ul> </ul>
</div> </div>
</span> </span>
</span>
</li> </li>
</ng-template> </ng-template>
<li> <li class="uk-visible-toggle ignore">
<span href="#" (click)="editSubCategoryOpen();$event.preventDefault()" <span (click)="editSubCategoryOpen(); $event.preventDefault()" class="clickable">
class="uk-padding-remove uk-visible-toggle clickable"> <span class="uk-icon-button small portal-icon-button">
<span class="menu_icon uk-icon-button portal-icon-button icon-button-small"><i <icon name="add"></icon>
uk-icon="icon:plus; ratio:0.7"></i></span> </span>
<span class="uk-hidden-hover"> Create new sub category</span> <span class="uk-hidden-hover space">Create new subcategory</span>
</span> </span>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="page_content_inner" style="margin-top: 40px;"> <div id="page_content_inner">
<indicators *ngIf="stakeholder" [properties]="properties" <indicators *ngIf="stakeholder" [properties]="properties"
[topicIndex]="topicIndex" [topicIndex]="topicIndex"
[categoryIndex]="categoryIndex" [categoryIndex]="categoryIndex"
@ -221,22 +202,25 @@
<ng-template #visibilityOptions let-type="type" let-i="i" let-visibility="visibility"> <ng-template #visibilityOptions let-type="type" let-i="i" let-visibility="visibility">
<span class="uk-invisible-hover uk-padding-remove" (click)="$event.stopPropagation();$event.preventDefault()"> <span class="uk-invisible-hover visibility small" (click)="$event.stopPropagation();$event.preventDefault()">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get(visibility)" <span class="clickable">
class="clickable visibilityMenuIcon"></i> <icon [name]="stakeholderUtils.visibilityIcon.get(visibility)" [ratio]="0.5"></icon>
</span>
<div #element uk-dropdown="mode: click; pos: bottom-left; delay-hide: 0; flip: false"> <div #element uk-dropdown="mode: click; pos: bottom-left; delay-hide: 0; flip: false">
<ul class="uk-nav uk-dropdown-nav"> <ul class="uk-nav uk-dropdown-nav">
<li *ngFor="let v of stakeholderUtils.visibility" <li *ngFor="let v of stakeholderUtils.visibility">
[class.selectedVisibility]="v.value == visibility"> <a *ngIf="visibility != v.value"
<a
*ngIf="visibility != v.value"
(click)="$event.stopPropagation();toggleStatusByIndex(i, v.value, type);hide(element);$event.preventDefault()"> (click)="$event.stopPropagation();toggleStatusByIndex(i, v.value, type);hide(element);$event.preventDefault()">
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get( v.value)"></i> {{v.label}}</a> <icon [name]="stakeholderUtils.visibilityIcon.get(v.value)" ratio="0.8"></icon>
<a *ngIf="visibility == v.value"> <span> {{v.label}}</span>
<i [attr.uk-icon]="stakeholderUtils.isPublicIcon.get( v.value)"></i> {{v.label}} </a>
<icon <a *ngIf="visibility == v.value" class="uk-position-relative">
customClass="uk-text-secondary uk-float-right" [ratio]="0.5" <icon [name]="stakeholderUtils.visibilityIcon.get(v.value)" [ratio]="0.8"></icon>
name="bullet"></icon></a> <span> {{v.label}}</span>
<span class="uk-position-center-right">
<icon customClass="uk-text-secondary" [ratio]="0.5" name="bullet"></icon>
</span>
</a>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -201,6 +201,7 @@ export class TopicComponent implements OnInit, OnDestroy, IDeactivateComponent {
this.stakeholder._id, this.stakeholder._id,
this.stakeholder.topics[index]._id this.stakeholder.topics[index]._id
]; ];
console.log('here')
this.toggleStatus(this.stakeholder.topics[index], path, visibility); this.toggleStatus(this.stakeholder.topics[index], path, visibility);
} }

View File

@ -15,7 +15,7 @@ import {InputModule} from "../openaireLibrary/dashboard/sharedComponents/input/i
import {ClickModule} from "../openaireLibrary/utils/click/click.module"; import {ClickModule} from "../openaireLibrary/utils/click/click.module";
import {AdminDashboardGuard} from "../utils/adminDashboard.guard"; import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
import {IconsService} from "../openaireLibrary/utils/icons/icons.service"; import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
import {preview, bullet} from "../openaireLibrary/utils/icons/icons"; import {preview, bullet, add, earth, lock, group} from "../openaireLibrary/utils/icons/icons";
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module"; import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
@NgModule({ @NgModule({
@ -36,6 +36,6 @@ import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
}) })
export class TopicModule { export class TopicModule {
constructor(private iconsService: IconsService) { constructor(private iconsService: IconsService) {
this.iconsService.registerIcons([preview, bullet]); this.iconsService.registerIcons([preview, bullet, add, earth, lock, group]);
} }
} }

View File

@ -35,10 +35,10 @@ export class StakeholderUtils {
{icon: 'brightness_1', value: false, label: 'Inactive'}, {icon: 'brightness_1', value: false, label: 'Inactive'},
]; ];
isPublicIcon: Map<Visibility, string> = new Map<Visibility, string> ([ visibilityIcon: Map<Visibility, string> = new Map<Visibility, string> ([
["PUBLIC", 'world'], ["PUBLIC", 'earth'],
["PRIVATE", 'lock'], ["PRIVATE", 'lock'],
["RESTRICTED", 'users'] ["RESTRICTED", 'group']
]); ]);
isActiveIcon: string = 'brightness_1'; isActiveIcon: string = 'brightness_1';

View File

@ -5,18 +5,38 @@
text-align: left; text-align: left;
} }
.sidebar_main_swipe.sidebar_mini .uk-dropdown {
min-width: auto;
}
.uk-dropdown > ul { .uk-dropdown > ul {
padding: 0 !important; padding: 0 !important;
} }
.uk-dropdown-nav > li > a, .uk-dropdown-nav > li:hover > a { .uk-dropdown-nav > li > a, .uk-dropdown-nav > li:hover > a {
padding: 4px 10px; padding: 3px 10px;
color: var(--text-color); color: rgb(var(--text-color));
font-weight: 400 !important; font-weight: 400 !important;
font-size: var(--small-font-size); font-size: var(--xs-font-size);
font-family: "Open Sans", sans-serif;
}
.uk-dropdown-nav > li, .uk-dropdown-nav > li > a {
position: relative;
}
.uk-dropdown-nav > li:hover::before {
content: "";
width: 100%;
height: 100%;
position: absolute;
left: 0;
background-color: var(--secondary-color);
opacity: 0.3;
} }
.uk-dropdown .uk-nav-divider { .uk-dropdown .uk-nav-divider {
margin: 4px 10px; margin: 3px 10px;
border-color: var(--secondary-color); border-color: var(--secondary-color);
} }

View File

@ -25,52 +25,78 @@
left: 0; left: 0;
z-index: 981; z-index: 981;
background: #fff; background: #fff;
transition: 0.5s;
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
transition-property: width;
} }
.sidebar_main_swipe.sidebar_mini #sidebar_switcher_toggle { .sidebar_main_swipe.sidebar_mini #sidebar_switcher_toggle {
left: calc(var(--sidebar-mini-width) + 0px); left: var(--sidebar-mini-width);
} }
.sidebar_main_swipe #sidebar_switcher_toggle { .sidebar_main_swipe #sidebar_switcher_toggle {
left: calc(var(--sidebar-width) + 0px); left: var(--sidebar-width);
} }
#sidebar_main .menu_section > ul > li > a, #sidebar_main .menu_section > ul > li > ul > li > a { #sidebar_main .menu_section {
min-height: 30vh;
}
#sidebar_main .menu_section ul:not(.uk-dropdown-nav) > li, #sidebar_main .special_section ul:not(.uk-dropdown-nav) > li {
padding: 5px 0;
}
#sidebar_main .menu_section ul:not(.uk-dropdown-nav) > li > a, #sidebar_main .special_section ul:not(.uk-dropdown-nav) > li > a {
display: block;
font-size: var(--sidebar-font-size); font-size: var(--sidebar-font-size);
color: rgba(0, 0, 0, .7); color: rgba(var(--text-color), 0.5);
} }
#sidebar_main .menu_section > ul > li > a:hover, #sidebar_main .menu_section > ul > li > ul > li > a:hover{ #sidebar_main .menu_section ul:not(.uk-dropdown-nav) > li:hover > a, #sidebar_main .special_section ul:not(.uk-dropdown-nav) > li:hover > a {
color: var(--secondary-color); color: var(--secondary-color);
} }
#sidebar_main .menu_section > ul li.current_section > a, #sidebar_main .menu_section > ul li.current_section > ul > li.current_section > a {
#sidebar_main .menu_section ul:not(.uk-dropdown-nav) li.uk-active > a, #sidebar_main .special_section ul:not(.uk-dropdown-nav) > li.uk-active > a {
color: var(--primary-color); color: var(--primary-color);
font-weight: 700;
} }
#sidebar_switcher_toggle { #sidebar_switcher_toggle {
top: 320px !important; top: 50%;
transform: translateY(-50%);
position: fixed; position: fixed;
background: #ffffff; background: #ffffff;
border: 1px solid var(--portal-dark-color); border: 1px solid rgb(var(--text-color));
border-left: 0; border-left: 0;
cursor: pointer; cursor: pointer;
padding: 0 4px; padding: 0 4px;
width: 10px; width: 10px;
height: 66px; height: 66px;
z-index: 981; z-index: 981;
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
transition-property: left;
} }
.sidebar_main_swipe #page_content { .sidebar_main_swipe #page_content {
padding-left: var(--sidebar-width); padding-left: var(--sidebar-width);
padding-top: var(--header-height); padding-top: var(--header-height);
transition: 0.5s; transition: 0.5s;
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
} }
/*Sidebar close*/ /*Sidebar close*/
.sidebar_main_swipe:not(.sidebar_main_active):not(.sidebar_mini) #page_content { .sidebar_main_swipe:not(.sidebar_main_active):not(.sidebar_mini) #page_content {
padding-left: 0; padding-left: 0;
transition: 0.5s;
} }
.sidebar_main_swipe:not(.sidebar_main_active):not(.sidebar_mini) #sidebar_main #sidebar_content { .sidebar_main_swipe:not(.sidebar_main_active):not(.sidebar_mini) #sidebar_main #sidebar_content {
@ -86,18 +112,18 @@
.sidebar_main_swipe.sidebar_mini #page_content { .sidebar_main_swipe.sidebar_mini #page_content {
padding-left: var(--sidebar-mini-width); padding-left: var(--sidebar-mini-width);
transition: 0.5s; transition: 0.5s;
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
} }
.sidebar_mini #sidebar_main #sidebar_content { .sidebar_mini #sidebar_main #sidebar_content {
width: var(--sidebar-mini-width); width: var(--sidebar-mini-width);
} }
#sidebar_main .menu_section > ul > li > a {
display: block;
}
#sidebar_main #sidebar_content { #sidebar_main #sidebar_content {
border-right: 1px solid var(--portal-dark-color); border-right: 1px solid rgb(var(--text-color));
} }
#page_content { #page_content {
@ -105,6 +131,19 @@
background-color: var(--background-color); background-color: var(--background-color);
} }
#page_content_header + #page_content_inner {
margin-top: 100px;
}
#page_content_header {
position: fixed;
background: var(--background-color);
top: var(--header-height);
z-index: 980;
width: 100%;
height: 100px;
}
#page_content_inner { #page_content_inner {
padding: 90px; padding: 90px;
} }

View File

@ -1,12 +1,11 @@
.uk-subnav-pill, .uk-tab { .uk-subnav-pill:not(.ignore), .uk-tab:not(.ignore) {
flex-wrap: nowrap; flex-wrap: nowrap;
overflow-x: auto; overflow-x: auto;
} }
.uk-subnav-pill > * > a, .uk-subnav>*>a:first-child { .uk-subnav-pill > * > a, .uk-subnav>*>a:first-child, .uk-subnav-pill > * > span > a {
color: currentColor !important; color: currentColor !important;
font-size: 13px; font-size: 13px;
text-transform: none;
opacity: 0.5; opacity: 0.5;
border-radius: 40px; border-radius: 40px;
border: 1px solid currentColor !important; border: 1px solid currentColor !important;
@ -14,31 +13,63 @@
line-height: 18px; line-height: 18px;
} }
.uk-tab > * > a { .uk-subnav-pill > * > *, .uk-subnav > * > *:first-child {
color: currentColor !important; text-transform: none;
opacity: 0.5; font-size: var(--font-size);
color: rgb(var(--text-color));
} }
.uk-subnav-pill > li > a:hover { .uk-subnav-pill > li > a:hover, .uk-subnav-pill > li > span > a:hover {
border-color: var(--secondary-color); border-color: var(--secondary-color);
color: var(--secondary-color) !important; color: var(--secondary-color) !important;
background-color: var(--contrast-color); background-color: var(--contrast-color);
opacity: 1; opacity: 1;
} }
.uk-subnav-pill > li.uk-active > a { .uk-subnav-pill > li.uk-active > a, .uk-subnav-pill > li.uk-active > span > a {
opacity: 1; opacity: 1;
border-color: var(--primary-color); border-color: var(--primary-color) !important;
color: var(--contrast-color) !important; color: var(--contrast-color) !important;
background-color: var(--primary-color); background-color: var(--primary-color);
font-weight: bold; font-weight: bold;
} }
.uk-tab > li > a {
color: rgb(var(--text-color), 0.5) !important;
font-size: var(--small-font-size);
font-family: "Open Sans", sans-serif !important;
text-transform: capitalize;
}
.uk-tab > li:hover > a { .uk-tab > li:hover > a {
color: var(--secondary-color); color: var(--secondary-color) !important;
opacity: 1;
} }
.uk-tab > li.uk-active > a { .uk-tab > li.uk-active > a {
opacity: 1; color: var(--primary-color) !important;
font-weight: 700;
}
.customTabs.uk-tab > li > a, .customTabs.uk-tab > li.uk-active > a,.customTabs.uk-tab > li > a:focus, .customTabs.uk-tab > li > a:hover {
border: 0 transparent !important;
}
.subCategoriesTabs > li > a{
font-size: 13px;
}
.uk-tab.customTabs::before {
border-bottom: none !important;
}
/*dashboard tabs*/
.customTabs.uk-tab.admin > li.uk-active > a .title {
border-bottom: 3px solid var(--portal-main-color);
margin-left: 3px;
}
.uk-subnav-pill.subCategoriesTabs.admin > li.uk-active > a{
border: 1px solid var(--primary-color);
background-color: var(--primary-color);
} }

View File

@ -1,17 +1,22 @@
:root { :root {
--font-size: 16px; --font-size: 16px;
--text-color: #1A1A1A; --text-color: 26,26,26;
--muted-color: #4D4D4D; --muted-color: #4D4D4D;
--xs-font-size: 12px;
--small-font-size: 14px; --small-font-size: 14px;
--large-font-size: 18px; --large-font-size: 18px;
} }
body { body {
color: var(--text-color); color: rgb(var(--text-color));
font-size: var(--font-size); font-size: var(--font-size);
font-family: "Open Sans", sans-serif; font-family: "Open Sans", sans-serif;
} }
.color {
color: rgb(var(--text-color));
}
.uk-text-small { .uk-text-small {
font-size: var(--small-font-size); font-size: var(--small-font-size);
} }
@ -23,3 +28,9 @@ body {
.uk-text-muted { .uk-text-muted {
color: var(--muted-color); color: var(--muted-color);
} }
.uk-logo {
font-family: "Roboto", sans-serif;
font-size: 24px;
color: rgb(var(--text-color));
}

View File

@ -65,7 +65,7 @@
/*Sidebar*/ /*Sidebar*/
/*Style*/ /*Style*/
/*#sidebar_main .menu_section > ul li.current_section > a {*/ /*#sidebar_main .menu_section > ul li.uk-active > a {*/
/* font-size: var(--sidebar-font-size);*/ /* font-size: var(--sidebar-font-size);*/
/* color: rgba(0,0,0,.7);*/ /* color: rgba(0,0,0,.7);*/
/*}*/ /*}*/
@ -84,7 +84,7 @@
} }
/*Sidebar Rotation*/ /*Sidebar Rotation*/
.stakeholderPage #sidebar_main .menu_section > ul > li.current_section { .stakeholderPage #sidebar_main .menu_section > ul > li.uk-active {
width: 150px; width: 150px;
height: 100%; height: 100%;
transition: 0.70s; transition: 0.70s;
@ -110,7 +110,8 @@
/*margin-right: auto;*/ /*margin-right: auto;*/
/*margin-left: auto;*/ /*margin-left: auto;*/
} }
.sidebar_mini #sidebar_main .menu_section > ul > li.current_section{
.stakeholderPage.sidebar_mini #sidebar_main .menu_section > ul > li.uk-active{
-webkit-transform: rotate(0deg); -webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg); -moz-transform: rotate(0deg);
-o-transform: rotate(0deg); -o-transform: rotate(0deg);
@ -118,60 +119,13 @@
transform: rotate(0deg); transform: rotate(0deg);
width: inherit; width: inherit;
height: inherit; height: inherit;
margin: 0;
margin: 0px 0px;
} }
.stakeholderPage #sidebar_main #sidebar_content, .stakeholderPage #sidebar_switcher_toggle { .stakeholderPage #sidebar_main #sidebar_content, .stakeholderPage #sidebar_switcher_toggle {
border-color: var(--monitor-portal-color); border-color: var(--monitor-portal-color);
} }
/*tabs
*/
.customTabs.uk-tab > li > a, .customTabs.uk-tab > li.uk-active > a,.customTabs.uk-tab > li > a:focus, .customTabs.uk-tab > li > a:hover {
border: 0 transparent !important;
}
.customTabs.uk-tab > li.uk-active > a,.customTabs.uk-tab > li > a:focus, .customTabs.uk-tab > li > a:hover {
color: var(--secondary-color) !important
}
.customTabs >li a{
font-size: 14px;
text-transform: capitalize;
}
.subCategoriesTabs >li a{
font-size: 13px;
text-transform: capitalize;
}
.customTabs > li.uk-active a {
font-weight:bold;
}
.uk-tab.customTabs::before {
border-bottom: none !important;
}
/*dashboard tabs*/
.customTabs.uk-tab.admin > li.uk-active > a .title {
color: var(--primary-color) !important;
border-bottom: 3.5px solid var(--portal-main-color);
}
.customTabs.uk-tab.admin > li > a:hover .uk-icon, .uk-nav-default > li > a:hover .uk-icon{
color: #646464 !important;
}
.customTabs.uk-tab.admin > li:not(.uk-active) > a.title:focus, .customTabs.uk-tab.admin > li:not(.uk-active) > a:hover,
uk-nav-default > li:not(.uk-active) > a.title:focus, .uk-nav-default > li:not(.uk-active) > a:hover{
color: var(--secondary-color) !important
}
.uk-subnav-pill.subCategoriesTabs.admin > li.uk-active > a{
border: 1px solid var(--primary-color);
background-color: var(--primary-color);
}
/* Section Tools*/ /* Section Tools*/
.dashboard .section { .dashboard .section {
@ -257,40 +211,23 @@ uk-nav-default > li:not(.uk-active) > a.title:focus, .uk-nav-default > li:not(.u
height: 250px; height: 250px;
} }
li.selectedVisibility::before a, li.selectedVisibility a::before, li.selectedVisibility::after a, li.selectedVisibility a, .selectedVisibility{
background-color:var(--secondary-color);
background:blue;
opacity: 0.5;
}
li.selectedVisibility{
position: relative;
}
li.selectedVisibility::before {
content: "";
width: 100%;
height: 100%;
position: absolute;
left: 0;
background-color: var(--secondary-color);
opacity: 0.3;
}
.uk-modal .large-modal {
width: 800px;
}
.tm-header .uk-navbar-container{ .tm-header .uk-navbar-container{
background-color: var(--background-color) !important; background-color: var(--background-color) !important;
box-shadow: none !important; box-shadow: none !important;
} }
.visibilityMenuIcon{ .visibility {
border-right: 1px solid var(--secondary-color); border-right: 1px solid var(--secondary-color);
border-bottom: 1px solid var(--secondary-color); border-bottom: 1px solid var(--secondary-color);
padding: 0px 2px 3px 0px; padding: 10px 8px;
margin-right: 4px;
color: rgba(var(--text-color), 0.5);
} }
.visibility.small {
padding: 3px 2px;
}
.descriptionIcon{ .descriptionIcon{
position: absolute; position: absolute;
bottom: 3px; bottom: 3px;