[Monitor Dashboard | Trunk]: Add full page loading on app component, fix admin dashboard guard
git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@59724 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
bb1893a62a
commit
fe47322863
|
@ -1,74 +1,79 @@
|
||||||
<!--disable_transitions -->
|
<!--disable_transitions -->
|
||||||
<div class="sidebar_main_swipe" [class.sidebar_main_active]="open && hasSidebar"
|
<div *ngIf="loading == true">
|
||||||
[class.sidebar_mini]="!open && hasSidebar" [class.stakeholderPage]="isFrontPage">
|
<loading [full]="true"></loading>
|
||||||
<div *ngIf="hasHeader" id="header_main" [class.light_header]="isFrontPage" [class.header_full]="!hasSidebar"
|
</div>
|
||||||
class=" " style="right: 0; top: 0; position: fixed; width: 100%; z-index:981;" >
|
<div *ngIf="loading == false">
|
||||||
<!-- <img
|
<div class="sidebar_main_swipe" [class.sidebar_main_active]="open && hasSidebar"
|
||||||
*ngIf="((!open && !hasMiniMenu) || !hasSidebar) && (properties.environment === 'beta' || properties.environment === 'development')"
|
[class.sidebar_mini]="!open && hasSidebar" [class.stakeholderPage]="isFrontPage">
|
||||||
class="badge"
|
<div *ngIf="hasHeader" id="header_main" [class.light_header]="isFrontPage" [class.header_full]="!hasSidebar"
|
||||||
[src]="'assets/common-assets/'+(properties.environment =='beta'?'beta_flag.svg':'prototype_flag.svg')"
|
class=" " style="right: 0; top: 0; position: fixed; width: 100%; z-index:981;" >
|
||||||
[alt]="properties.environment">-->
|
<!-- <img
|
||||||
<!--<nav class="uk-navbar" [class.uk-light]="!isFrontPage">
|
*ngIf="((!open && !hasMiniMenu) || !hasSidebar) && (properties.environment === 'beta' || properties.environment === 'development')"
|
||||||
<div *ngIf="stakeholder" class="uk-navbar-center">
|
class="badge"
|
||||||
<schema2jsonld *ngIf="properties" [URL]="properties.domain + properties.baseLink + '/' + stakeholder.alias"
|
[src]="'assets/common-assets/'+(properties.environment =='beta'?'beta_flag.svg':'prototype_flag.svg')"
|
||||||
[logoURL]="stakeholder.logoUrl" type="home"
|
[alt]="properties.environment">-->
|
||||||
[searchActionRoute]="properties.searchLinkToResults" [searchAction]="false"
|
<!--<nav class="uk-navbar" [class.uk-light]="!isFrontPage">
|
||||||
[name]="'Monitor Dashboard | ' + this.stakeholder.name"
|
<div *ngIf="stakeholder" class="uk-navbar-center">
|
||||||
[description]="stakeholder.name + ' monitoring dashboard'">
|
<schema2jsonld *ngIf="properties" [URL]="properties.domain + properties.baseLink + '/' + stakeholder.alias"
|
||||||
</schema2jsonld>
|
[logoURL]="stakeholder.logoUrl" type="home"
|
||||||
<ul class="uk-navbar-nav user_actions uk-padding uk-padding-remove-vertical uk-padding-remove-right">
|
[searchActionRoute]="properties.searchLinkToResults" [searchAction]="false"
|
||||||
<!–<li>
|
[name]="'Monitor Dashboard | ' + this.stakeholder.name"
|
||||||
<a class="uk-logo uk-navbar-item uk-link uk-margin-left "
|
[description]="stakeholder.name + ' monitoring dashboard'">
|
||||||
[routerLink]="'/'+stakeholder.alias">
|
</schema2jsonld>
|
||||||
<img *ngIf="stakeholder.logoUrl" [src]="stakeholder.logoUrl" class=" logo uk-responsive-height">
|
<ul class="uk-navbar-nav user_actions uk-padding uk-padding-remove-vertical uk-padding-remove-right">
|
||||||
</a>
|
<!–<li>
|
||||||
</li>–>
|
<a class="uk-logo uk-navbar-item uk-link uk-margin-left "
|
||||||
<li>
|
[routerLink]="'/'+stakeholder.alias">
|
||||||
<a class="uk-logo uk-navbar-item uk-link "
|
<img *ngIf="stakeholder.logoUrl" [src]="stakeholder.logoUrl" class=" logo uk-responsive-height">
|
||||||
[routerLink]="'/'+stakeholder.alias">
|
</a>
|
||||||
<div class="uk-text-capitalize uk-h4 uk-text-bold uk-margin-remove">
|
</li>–>
|
||||||
<span> {{stakeholder.name}}</span>
|
<li>
|
||||||
</div>
|
<a class="uk-logo uk-navbar-item uk-link "
|
||||||
</a>
|
[routerLink]="'/'+stakeholder.alias">
|
||||||
</li>
|
<div class="uk-text-capitalize uk-h4 uk-text-bold uk-margin-remove">
|
||||||
</ul>
|
<span> {{stakeholder.name}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-navbar-right">
|
</a>
|
||||||
<ul class="uk-navbar-nav user_actions">
|
</li>
|
||||||
<li *ngIf="isFrontPage" title="It is comming soon. Stay tuned!">
|
</ul>
|
||||||
<a [routerLink]="(isAdmin()?['/admin']:null)">
|
</div>
|
||||||
Manage
|
<div class="uk-navbar-right">
|
||||||
</a>
|
<ul class="uk-navbar-nav user_actions">
|
||||||
</li>
|
<li *ngIf="isFrontPage" title="It is comming soon. Stay tuned!">
|
||||||
<li>
|
<a [routerLink]="(isAdmin()?['/admin']:null)">
|
||||||
<user-mini *ngIf="properties"
|
Manage
|
||||||
[user]="user" [dashboard]="true"
|
</a>
|
||||||
[redirectUrl]="properties.afterLoginRedirectLink"
|
</li>
|
||||||
[logInUrl]=properties.loginUrl [logOutUrl]=properties.logoutUrl
|
<li>
|
||||||
[cookieDomain]=properties.cookieDomain
|
<user-mini *ngIf="properties"
|
||||||
[userMenuItems]=userMenuItems>
|
[user]="user" [dashboard]="true"
|
||||||
</user-mini>
|
[redirectUrl]="properties.afterLoginRedirectLink"
|
||||||
</li>
|
[logInUrl]=properties.loginUrl [logOutUrl]=properties.logoutUrl
|
||||||
</ul>
|
[cookieDomain]=properties.cookieDomain
|
||||||
</div>
|
[userMenuItems]=userMenuItems>
|
||||||
</nav>-->
|
</user-mini>
|
||||||
<!-- <navbar *ngIf="properties && showMenu" portal="monitor" [onlyTop]=false [stakeholder]="stakeholder"-->
|
</li>
|
||||||
<!-- [userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user"-->
|
</ul>
|
||||||
<!-- [showMenu]=showMenu [properties]="properties"></navbar>-->
|
</div>
|
||||||
<navbar *ngIf="properties" [properties]="properties" portal="monitor_dashboard" [header]="menuHeader"
|
</nav>-->
|
||||||
|
<!-- <navbar *ngIf="properties && showMenu" portal="monitor" [onlyTop]=false [stakeholder]="stakeholder"-->
|
||||||
[userMenuItems]=userMenuItems [menuItems]="menuItems" [user]="user" [offCanvasFlip]="true"></navbar>
|
<!-- [userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user"-->
|
||||||
</div>
|
<!-- [showMenu]=showMenu [properties]="properties"></navbar>-->
|
||||||
<dashboard-sidebar *ngIf="stakeholder && isFrontPage" [items]="sideBarItems"
|
<navbar *ngIf="properties" [properties]="properties" portal="monitor_dashboard" [header]="menuHeader"
|
||||||
[activeItem]="activeTopic?activeTopic.alias:null" [showHeader]=true
|
|
||||||
[specialMenuItem]="specialSideBarMenuItem"
|
[userMenuItems]=userMenuItems [menuItems]="menuItems" [user]="user" [offCanvasFlip]="true"></navbar>
|
||||||
[searchParams]="createSearchParameters()"
|
</div>
|
||||||
[headerUrl]="properties.domain + properties.baseLink" queryParamsHandling="preserve"
|
<dashboard-sidebar *ngIf="stakeholder && isFrontPage" [items]="sideBarItems"
|
||||||
></dashboard-sidebar>
|
[activeItem]="activeTopic?activeTopic.alias:null" [showHeader]=true
|
||||||
<dashboard-sidebar *ngIf="hasAdminMenu" [items]="adminMenuItems" headerName="Admin"
|
[specialMenuItem]="specialSideBarMenuItem"
|
||||||
headerDashboard="Administration Panel" [headerUrl]="properties.domain + properties.baseLink" [specialMenuItem]="specialSideBarMenuItem"
|
[searchParams]="createSearchParameters()"
|
||||||
></dashboard-sidebar>
|
[headerUrl]="properties.domain + properties.baseLink" queryParamsHandling="preserve"
|
||||||
<router-outlet></router-outlet>
|
></dashboard-sidebar>
|
||||||
<role-verification *ngIf="stakeholder && properties.environment === 'development'"
|
<dashboard-sidebar *ngIf="hasAdminMenu" [items]="adminMenuItems" headerName="Admin"
|
||||||
[id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type"></role-verification>
|
headerDashboard="Administration Panel" [headerUrl]="properties.domain + properties.baseLink" [specialMenuItem]="specialSideBarMenuItem"
|
||||||
|
></dashboard-sidebar>
|
||||||
|
<router-outlet></router-outlet>
|
||||||
|
<role-verification *ngIf="stakeholder && properties.environment === 'development'"
|
||||||
|
[id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type"></role-verification>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,6 +12,7 @@ import {Stakeholder, Topic, Visibility} from "./openaireLibrary/monitor/entities
|
||||||
import {LinksResolver} from "./search/links-resolver";
|
import {LinksResolver} from "./search/links-resolver";
|
||||||
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
|
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
|
||||||
import {arrow_left} from "./openaireLibrary/utils/icons/icons";
|
import {arrow_left} from "./openaireLibrary/utils/icons/icons";
|
||||||
|
import {properties} from "../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -19,7 +20,7 @@ import {arrow_left} from "./openaireLibrary/utils/icons/icons";
|
||||||
templateUrl: './app.component.html'
|
templateUrl: './app.component.html'
|
||||||
})
|
})
|
||||||
export class AppComponent implements OnInit, OnDestroy {
|
export class AppComponent implements OnInit, OnDestroy {
|
||||||
properties: EnvProperties;
|
properties: EnvProperties = properties;
|
||||||
user: User;
|
user: User;
|
||||||
params: BehaviorSubject<Params> = new BehaviorSubject<Params>(null);
|
params: BehaviorSubject<Params> = new BehaviorSubject<Params>(null);
|
||||||
hasSidebar: boolean = false;
|
hasSidebar: boolean = false;
|
||||||
|
@ -29,13 +30,23 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
isFrontPage: boolean = false;
|
isFrontPage: boolean = false;
|
||||||
isViewPublic: boolean = false;
|
isViewPublic: boolean = false;
|
||||||
sideBarItems: MenuItem[] = [];
|
sideBarItems: MenuItem[] = [];
|
||||||
specialSideBarMenuItem:MenuItem = null;
|
specialSideBarMenuItem: MenuItem = null;
|
||||||
menuItems: RootMenuItem[] = [];
|
menuItems: RootMenuItem[] = [];
|
||||||
menuHeader: Header = { route: "/", url: null, title: "Default menu header", logoUrl: null, logoSmallUrl:null, position:'center', badge: false };
|
menuHeader: Header = {
|
||||||
|
route: "/",
|
||||||
|
url: null,
|
||||||
|
title: "Default menu header",
|
||||||
|
logoUrl: null,
|
||||||
|
logoSmallUrl: null,
|
||||||
|
position: 'center',
|
||||||
|
badge: false
|
||||||
|
};
|
||||||
userMenuItems: MenuItem[] = [new MenuItem("", "My profile", "", "", false, [], [], {})];
|
userMenuItems: MenuItem[] = [new MenuItem("", "My profile", "", "", false, [], [], {})];
|
||||||
adminMenuItems: MenuItem[] = [];
|
adminMenuItems: MenuItem[] = [];
|
||||||
stakeholder: Stakeholder = null;
|
stakeholder: Stakeholder = null;
|
||||||
activeTopic: Topic = null;
|
activeTopic: Topic = null;
|
||||||
|
loading: boolean = true;
|
||||||
|
paramsResolved: boolean = false;
|
||||||
innerWidth;
|
innerWidth;
|
||||||
private subscriptions: any[] = [];
|
private subscriptions: any[] = [];
|
||||||
|
|
||||||
|
@ -53,13 +64,14 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
r = r.firstChild;
|
r = r.firstChild;
|
||||||
}
|
}
|
||||||
let params = r.snapshot.params;
|
let params = r.snapshot.params;
|
||||||
|
this.paramsResolved = true;
|
||||||
this.params.next(params);
|
this.params.next(params);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
if(window) {
|
if (window) {
|
||||||
this.innerWidth = window.innerWidth;
|
this.innerWidth = window.innerWidth;
|
||||||
}
|
}
|
||||||
this.subscriptions.push(this.layoutService.hasSidebar.subscribe(hasSidebar => {
|
this.subscriptions.push(this.layoutService.hasSidebar.subscribe(hasSidebar => {
|
||||||
|
@ -89,71 +101,71 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
this.isViewPublic = (params['view'] == 'public');
|
this.isViewPublic = (params['view'] == 'public');
|
||||||
});
|
});
|
||||||
this.layoutService.setOpen(false);
|
this.layoutService.setOpen(false);
|
||||||
this.propertiesService.loadEnvironment()
|
this.subscriptions.push(this.params.subscribe(params => {
|
||||||
.then(properties => {
|
if(this.paramsResolved) {
|
||||||
this.properties = properties;
|
this.loading = true;
|
||||||
this.subscriptions.push(this.params.subscribe(params => {
|
this.layoutService.setSmallScreen((this.innerWidth && this.innerWidth < 1219));
|
||||||
let isSearch = this.router.url.includes('search');
|
this.layoutService.setOpen(!(this.innerWidth && this.innerWidth < 1219));
|
||||||
if (params && params['stakeholder']) {
|
let isSearch = this.router.url.includes('search');
|
||||||
if (!this.stakeholderService.stakeholder ||
|
if (params && params['stakeholder']) {
|
||||||
this.stakeholderService.stakeholder.alias !== params['stakeholder']) {
|
this.stakeholder = this.stakeholderService.stakeholder;
|
||||||
this.stakeholderService.getStakeholder(this.properties.monitorServiceAPIURL, params['stakeholder']).subscribe(stakeholder => {
|
if (!this.stakeholder || this.stakeholderService.stakeholder.alias !== params['stakeholder']) {
|
||||||
if(stakeholder) {
|
this.stakeholderService.getStakeholder(params['stakeholder']).subscribe(stakeholder => {
|
||||||
this.stakeholder = stakeholder;
|
if (stakeholder) {
|
||||||
LinksResolver.setProperties(this.stakeholder.alias);
|
this.stakeholder = stakeholder;
|
||||||
this.buildMenu();
|
LinksResolver.setProperties(this.stakeholder.alias);
|
||||||
this.stakeholderService.setStakeholder(stakeholder);
|
this.buildMenu();
|
||||||
this.layoutService.setSmallScreen((this.innerWidth && this.innerWidth < 1219));
|
if (isSearch) {
|
||||||
this.layoutService.setOpen(!(this.innerWidth && this.innerWidth < 1219));
|
this.activeTopic = null;
|
||||||
if (isSearch) {
|
} else if (params && params['topic'] && !this.activeTopic) {
|
||||||
this.activeTopic = null;
|
this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && this.isPublicOrIsMember(topic.visibility));
|
||||||
} else if (params && params['topic'] && !this.activeTopic) {
|
|
||||||
this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && this.isPublicOrIsMember(topic.visibility));
|
|
||||||
} else {
|
|
||||||
this.activeTopic = this.stakeholder.topics.find(topic => this.isPublicOrIsMember(topic.visibility));
|
|
||||||
}
|
|
||||||
this.setSideBar();
|
|
||||||
} else {
|
} else {
|
||||||
this.stakeholderService.setStakeholder(null);
|
this.activeTopic = this.stakeholder.topics.find(topic => this.isPublicOrIsMember(topic.visibility));
|
||||||
LinksResolver.resetProperties();
|
|
||||||
this.navigateToError();
|
|
||||||
this.buildMenu();
|
|
||||||
}
|
}
|
||||||
}, error => {
|
this.setSideBar();
|
||||||
this.stakeholderService.setStakeholder(null);
|
this.loading = false;
|
||||||
|
} else {
|
||||||
LinksResolver.resetProperties();
|
LinksResolver.resetProperties();
|
||||||
this.navigateToError();
|
this.navigateToError();
|
||||||
this.buildMenu();
|
this.buildMenu();
|
||||||
});
|
this.loading = false;
|
||||||
} else {
|
|
||||||
this.buildMenu();
|
|
||||||
if(isSearch) {
|
|
||||||
this.activeTopic = null;
|
|
||||||
} else if (params && params['topic']) {
|
|
||||||
this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && this.isPublicOrIsMember(topic.visibility));
|
|
||||||
} else {
|
|
||||||
this.activeTopic = this.stakeholder.topics.find(topic => this.isPublicOrIsMember(topic.visibility));
|
|
||||||
}
|
}
|
||||||
|
}, error => {
|
||||||
}
|
LinksResolver.resetProperties();
|
||||||
|
this.navigateToError();
|
||||||
|
this.buildMenu();
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
LinksResolver.resetProperties();
|
|
||||||
this.stakeholderService.setStakeholder(null);
|
|
||||||
this.layoutService.setOpen(!(this.innerWidth && this.innerWidth < 1219));
|
|
||||||
this.stakeholder = null;
|
|
||||||
this.buildMenu();
|
this.buildMenu();
|
||||||
|
if (isSearch) {
|
||||||
|
this.activeTopic = null;
|
||||||
|
} else if (params && params['topic']) {
|
||||||
|
this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && this.isPublicOrIsMember(topic.visibility));
|
||||||
|
} else {
|
||||||
|
this.activeTopic = this.stakeholder.topics.find(topic => this.isPublicOrIsMember(topic.visibility));
|
||||||
|
}
|
||||||
|
this.loading = false;
|
||||||
}
|
}
|
||||||
}));
|
} else {
|
||||||
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
LinksResolver.resetProperties();
|
||||||
this.user = user;
|
this.stakeholderService.setStakeholder(null);
|
||||||
if(user){
|
this.layoutService.setOpen(!(this.innerWidth && this.innerWidth < 1219));
|
||||||
this.buildMenu();
|
this.stakeholder = null;
|
||||||
}
|
this.buildMenu();
|
||||||
}, error => {
|
this.loading = false;
|
||||||
console.log("App couldn't fetch properties");
|
}
|
||||||
console.log(error);
|
}
|
||||||
}));
|
}));
|
||||||
});
|
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
||||||
|
this.user = user;
|
||||||
|
if (user) {
|
||||||
|
this.buildMenu();
|
||||||
|
}
|
||||||
|
}, error => {
|
||||||
|
console.log("App couldn't fetch properties");
|
||||||
|
console.log(error);
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnDestroy() {
|
public ngOnDestroy() {
|
||||||
|
@ -198,7 +210,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
this.menuItems = [];
|
this.menuItems = [];
|
||||||
this.adminMenuItems = [];
|
this.adminMenuItems = [];
|
||||||
this.userMenuItems = [];
|
this.userMenuItems = [];
|
||||||
if(this.stakeholder) {
|
if (this.stakeholder) {
|
||||||
if (this.isFrontPage) {
|
if (this.isFrontPage) {
|
||||||
this.menuHeader = {
|
this.menuHeader = {
|
||||||
route: "/" + this.stakeholder.alias,
|
route: "/" + this.stakeholder.alias,
|
||||||
|
@ -209,16 +221,16 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
position: 'center',
|
position: 'center',
|
||||||
badge: false
|
badge: false
|
||||||
};
|
};
|
||||||
if(this.isAdmin()) {
|
if (this.isAdmin()) {
|
||||||
this.menuItems.push({
|
this.menuItems.push({
|
||||||
rootItem: new MenuItem("manage", "Manage",
|
rootItem: new MenuItem("manage", "Manage",
|
||||||
"", "/admin", false, [], null, {}), items: []
|
"", "/admin", false, [], null, {}), items: []
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
this.specialSideBarMenuItem = new MenuItem("search", "Search research outcomes", "", this.properties.searchLinkToResults, false, [], null, {})
|
this.specialSideBarMenuItem = new MenuItem("search", "Search research outcomes", "", this.properties.searchLinkToResults, false, [], null, {})
|
||||||
this.specialSideBarMenuItem.icon = '<span uk-icon="search"></span>';
|
this.specialSideBarMenuItem.icon = '<span uk-icon="search"></span>';
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.menuHeader = {
|
this.menuHeader = {
|
||||||
route: "/admin/" + this.stakeholder.alias,
|
route: "/admin/" + this.stakeholder.alias,
|
||||||
|
@ -231,14 +243,14 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
};
|
};
|
||||||
this.menuItems.push({
|
this.menuItems.push({
|
||||||
rootItem: new MenuItem("", "Dashboard",
|
rootItem: new MenuItem("", "Dashboard",
|
||||||
"", '/'+ this.stakeholder.alias+'/', false, [], null, {}), items: []
|
"", '/' + this.stakeholder.alias + '/', false, [], null, {}), items: []
|
||||||
});
|
});
|
||||||
this.adminMenuItems.push(new MenuItem("general", "General", "", "/admin/"+this.stakeholder.alias, false, [], [], {}, "<i uk-icon=\"image\"></i>"));
|
this.adminMenuItems.push(new MenuItem("general", "General", "", "/admin/" + this.stakeholder.alias, 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("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 uk-icon portal-button " >' + arrow_left.data + '</span>'; // '<span class="uk-icon-button uk-icon portal-button " uk-icon="chevron-left"></span>';
|
||||||
|
|
||||||
}
|
}
|
||||||
this.userMenuItems = [];
|
this.userMenuItems = [];
|
||||||
/* if (Session.isPortalAdministrator(this.user)) {
|
/* if (Session.isPortalAdministrator(this.user)) {
|
||||||
|
@ -253,13 +265,29 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
if (this.user) {
|
if (this.user) {
|
||||||
this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {}));
|
this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {}));
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
if(this.isFrontPage || !this.hasAdminMenu){
|
if (this.isFrontPage || !this.hasAdminMenu) {
|
||||||
this.menuHeader = { route: null, url: "https://" + (this.properties.environment =='beta'?'beta.':'')+'monitor.openaire.eu', title: "Monitor", logoUrl: 'assets/common-assets/logo-large-monitor.png', logoSmallUrl:"assets/common-assets/logo-small-monitor.png", position:'left' , badge: true };
|
this.menuHeader = {
|
||||||
|
route: null,
|
||||||
|
url: "https://" + (this.properties.environment == 'beta' ? 'beta.' : '') + 'monitor.openaire.eu',
|
||||||
|
title: "Monitor",
|
||||||
|
logoUrl: 'assets/common-assets/logo-large-monitor.png',
|
||||||
|
logoSmallUrl: "assets/common-assets/logo-small-monitor.png",
|
||||||
|
position: 'left',
|
||||||
|
badge: true
|
||||||
|
};
|
||||||
//TODO monitor menu items?
|
//TODO monitor menu items?
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
this.menuHeader = { route: "/", url: null, title: "Monitor Dashboard", logoUrl: null, logoSmallUrl:null, position:'center' , badge: false };
|
this.menuHeader = {
|
||||||
|
route: "/",
|
||||||
|
url: null,
|
||||||
|
title: "Monitor Dashboard",
|
||||||
|
logoUrl: null,
|
||||||
|
logoSmallUrl: null,
|
||||||
|
position: 'center',
|
||||||
|
badge: false
|
||||||
|
};
|
||||||
this.adminMenuItems = [];
|
this.adminMenuItems = [];
|
||||||
this.specialSideBarMenuItem = null;
|
this.specialSideBarMenuItem = null;
|
||||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, "<i uk-icon=\"cog\"></i>"));
|
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, "<i uk-icon=\"cog\"></i>"));
|
||||||
|
@ -275,18 +303,18 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
monitorOptions.items.push(new MenuItem("classes", "Class help texts", "", "/classContents", false, [], [], {communityId: 'openaire'}));
|
monitorOptions.items.push(new MenuItem("classes", "Class help texts", "", "/classContents", false, [], [], {communityId: 'openaire'}));
|
||||||
monitorOptions.items.push(new MenuItem("helptexts", "Help texts", "", "/helptexts", false, [], [], {communityId: 'openaire'}));
|
monitorOptions.items.push(new MenuItem("helptexts", "Help texts", "", "/helptexts", false, [], [], {communityId: 'openaire'}));
|
||||||
this.adminMenuItems.push(monitorOptions);*/
|
this.adminMenuItems.push(monitorOptions);*/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public isAdmin() {
|
public isAdmin() {
|
||||||
return this.user && (Session.isPortalAdministrator(this.user) || Session.isCommunityCurator(this.user) || Session.isMonitorCurator(this.user) || (this.stakeholder && Session.isManager(this.stakeholder.type,this.stakeholder.alias,this.user)));
|
return this.user && (Session.isPortalAdministrator(this.user) || Session.isCommunityCurator(this.user) || Session.isMonitorCurator(this.user) || (this.stakeholder && Session.isManager(this.stakeholder.type, this.stakeholder.alias, this.user)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public isPublicOrIsMember(visibility: Visibility): boolean {
|
public isPublicOrIsMember(visibility: Visibility): boolean {
|
||||||
if(visibility == "PRIVATE"){
|
if (visibility == "PRIVATE") {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (visibility == "PUBLIC") {
|
if (visibility == "PUBLIC") {
|
||||||
|
@ -294,25 +322,25 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
} else {
|
} else {
|
||||||
if (this.isViewPublic) { // preview for not members
|
if (this.isViewPublic) { // preview for not members
|
||||||
return false;
|
return false;
|
||||||
} else if(this.isAdmin()) {
|
} else if (this.isAdmin()) {
|
||||||
// if user is member, return true
|
// if user is member, return true
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createSearchParameters(){
|
createSearchParameters() {
|
||||||
if(!this.stakeholder){
|
if (!this.stakeholder) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
if(this.stakeholder.type == "funder"){
|
if (this.stakeholder.type == "funder") {
|
||||||
return { "relfunder":encodeURIComponent("\"" + this.stakeholder.index_id + "||"+this.stakeholder.index_name + "||"+this.stakeholder.index_shortName + "\"" )};
|
return {"relfunder": encodeURIComponent("\"" + this.stakeholder.index_id + "||" + this.stakeholder.index_name + "||" + this.stakeholder.index_shortName + "\"")};
|
||||||
}else if(this.stakeholder.type == "ri"){
|
} else if (this.stakeholder.type == "ri") {
|
||||||
// https://beta.explore.openaire.eu/search/find/research-outcomes?f0=q&fv0=&resultbestaccessright=%22Open%20Access%22&community=%22mes%7C%7CEuropean%20Marine%20Science%22&qf=true
|
// https://beta.explore.openaire.eu/search/find/research-outcomes?f0=q&fv0=&resultbestaccessright=%22Open%20Access%22&community=%22mes%7C%7CEuropean%20Marine%20Science%22&qf=true
|
||||||
return { "community":encodeURIComponent("\"" + this.stakeholder.index_id + "||"+this.stakeholder.index_name + "\"" )};
|
return {"community": encodeURIComponent("\"" + this.stakeholder.index_id + "||" + this.stakeholder.index_name + "\"")};
|
||||||
}else if(this.stakeholder.type == "organization"){
|
} else if (this.stakeholder.type == "organization") {
|
||||||
return { "cf":true};
|
return {"cf": true};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import {SideBarModule} from "./openaireLibrary/dashboard/sharedComponents/sideba
|
||||||
import {SharedModule} from "./openaireLibrary/shared/shared.module";
|
import {SharedModule} from "./openaireLibrary/shared/shared.module";
|
||||||
import {Schema2jsonldModule} from "./openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
|
import {Schema2jsonldModule} from "./openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
|
||||||
import {RoleVerificationModule} from "./openaireLibrary/role-verification/role-verification.module";
|
import {RoleVerificationModule} from "./openaireLibrary/role-verification/role-verification.module";
|
||||||
|
import {LoadingModule} from "./openaireLibrary/utils/loading/loading.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ import {RoleVerificationModule} from "./openaireLibrary/role-verification/role-v
|
||||||
SubscribeModule.forRoot(),
|
SubscribeModule.forRoot(),
|
||||||
BrowserModule.withServerTransition({appId: 'my-app'}),
|
BrowserModule.withServerTransition({appId: 'my-app'}),
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
UserMiniModule, SideBarModule, Schema2jsonldModule, RoleVerificationModule
|
UserMiniModule, SideBarModule, Schema2jsonldModule, RoleVerificationModule, LoadingModule
|
||||||
],
|
],
|
||||||
declarations: [AppComponent, OpenaireErrorPageComponent],
|
declarations: [AppComponent, OpenaireErrorPageComponent],
|
||||||
exports: [AppComponent],
|
exports: [AppComponent],
|
||||||
|
|
|
@ -2,7 +2,7 @@ import {NgModule} from '@angular/core';
|
||||||
import {RouterModule} from '@angular/router';
|
import {RouterModule} from '@angular/router';
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {ManageStakeholdersComponent} from "./manageStakeholders.component";
|
import {ManageStakeholdersComponent} from "./manageStakeholders.component";
|
||||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -10,7 +10,7 @@ import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: ManageStakeholdersComponent,
|
component: ManageStakeholdersComponent,
|
||||||
canActivate: [AdminDashboardGuard],
|
canActivate: [LoginGuard],
|
||||||
canDeactivate: [PreviousRouteRecorder],
|
canDeactivate: [PreviousRouteRecorder],
|
||||||
data: {hasSidebar: true}
|
data: {hasSidebar: true}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,11 +8,11 @@ import {InputModule} from "../openaireLibrary/dashboard/sharedComponents/input/i
|
||||||
import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module";
|
import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module";
|
||||||
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
||||||
import {ReactiveFormsModule} from "@angular/forms";
|
import {ReactiveFormsModule} from "@angular/forms";
|
||||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
|
||||||
import {EditStakeholderModule} from "../general/edit-stakeholder/edit-stakeholder.module";
|
import {EditStakeholderModule} from "../general/edit-stakeholder/edit-stakeholder.module";
|
||||||
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
|
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
|
||||||
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
||||||
import {bullet} from "../openaireLibrary/utils/icons/icons";
|
import {bullet} from "../openaireLibrary/utils/icons/icons";
|
||||||
|
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [ManageStakeholdersComponent],
|
declarations: [ManageStakeholdersComponent],
|
||||||
|
@ -28,12 +28,12 @@ import {bullet} from "../openaireLibrary/utils/icons/icons";
|
||||||
IconsModule
|
IconsModule
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
AdminDashboardGuard, PreviousRouteRecorder,
|
LoginGuard, PreviousRouteRecorder,
|
||||||
],
|
],
|
||||||
exports: [ManageStakeholdersComponent]
|
exports: [ManageStakeholdersComponent]
|
||||||
})
|
})
|
||||||
export class ManageStakeholdersModule {
|
export class ManageStakeholdersModule {
|
||||||
constructor(private iconsService: IconsService) {
|
constructor(private iconsService: IconsService) {
|
||||||
this.iconsService.registerIcons([ bullet]);
|
this.iconsService.registerIcons([bullet]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,25 +2,41 @@ import {Injectable} from '@angular/core';
|
||||||
import {ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot} from '@angular/router';
|
import {ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot} from '@angular/router';
|
||||||
import {Observable} from 'rxjs/Observable';
|
import {Observable} from 'rxjs/Observable';
|
||||||
|
|
||||||
import {filter, map} from "rxjs/operators";
|
import {filter, map, mergeMap} from "rxjs/operators";
|
||||||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||||
import {LoginErrorCodes} from "../openaireLibrary/login/utils/guardHelper.class";
|
import {LoginErrorCodes} from "../openaireLibrary/login/utils/guardHelper.class";
|
||||||
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
||||||
import {properties} from "../../environments/environment";
|
import {properties} from "../../environments/environment";
|
||||||
|
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
||||||
|
import {of} from "rxjs";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AdminDashboardGuard implements CanActivate, CanLoad {
|
export class AdminDashboardGuard implements CanActivate {
|
||||||
|
|
||||||
constructor(private router: Router,
|
constructor(private router: Router,
|
||||||
|
private stakeholderService: StakeholderService,
|
||||||
private userManagementService: UserManagementService) {
|
private userManagementService: UserManagementService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
check(path: string): Observable<boolean> | boolean {
|
check(path: string, alias: string): Observable<boolean> | boolean {
|
||||||
if (Session.isLoggedIn()) {
|
if (Session.isLoggedIn()) {
|
||||||
const obs = this.userManagementService.getUserInfo(false).pipe(map(user => {
|
const obs = this.userManagementService.getUserInfo(false).pipe(map(user => {
|
||||||
return (Session.isPortalAdministrator(user) || Session.isCommunityCurator(user) || Session.isMonitorCurator(user) || Session.isKindOfMonitorManager(user));
|
if(user) {
|
||||||
|
return this.stakeholderService.getStakeholder(alias).pipe(map(stakeholder => {
|
||||||
|
if(stakeholder) {
|
||||||
|
return (Session.isPortalAdministrator(user) || Session.isCommunityCurator(user) ||
|
||||||
|
Session.isMonitorCurator(user) || Session.isManager(stakeholder.type, stakeholder.alias, user));
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
return of(false);
|
||||||
|
}
|
||||||
|
}), mergeMap( authorized => {
|
||||||
|
return authorized;
|
||||||
}));
|
}));
|
||||||
obs.pipe(filter(isLoggedIn => !isLoggedIn)).subscribe(() => {
|
obs.pipe(filter(isManager => !isManager)).subscribe(() => {
|
||||||
this.router.navigate(['/user-info'], {queryParams: {'errorCode': LoginErrorCodes.NOT_ADMIN, 'redirectUrl':path}});
|
this.router.navigate(['/user-info'], {queryParams: {'errorCode': LoginErrorCodes.NOT_ADMIN, 'redirectUrl':path}});
|
||||||
});
|
});
|
||||||
return obs;
|
return obs;
|
||||||
|
@ -31,10 +47,6 @@ export class AdminDashboardGuard implements CanActivate, CanLoad {
|
||||||
}
|
}
|
||||||
|
|
||||||
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
|
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
|
||||||
return this.check(state.url);
|
return this.check(state.url, route.params.stakeholder);
|
||||||
}
|
|
||||||
|
|
||||||
canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
|
|
||||||
return this.check('/' + route.path);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,21 +32,7 @@
|
||||||
<app-root></app-root>
|
<app-root></app-root>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<!--<script src="assets/theme-assets/js/common.min.js"></script>
|
|
||||||
<script src="assets/theme-assets/js/altair_admin_common.min.js"></script>
|
|
||||||
<script src="assets/theme-assets/uikit/js/uikit.min.js"></script>
|
|
||||||
<script src="assets/theme-assets/uikit/js/uikit-icons.min.js"></script>-->
|
|
||||||
<script src="https://cdn.ckeditor.com/4.5.11/full-all/ckeditor.js"></script>
|
<script src="https://cdn.ckeditor.com/4.5.11/full-all/ckeditor.js"></script>
|
||||||
<script>
|
|
||||||
if(Modernizr.touch) {
|
|
||||||
// fastClick (touch devices)
|
|
||||||
FastClick.attach(document.body);
|
|
||||||
}
|
|
||||||
$window.load(function() {
|
|
||||||
// ie fixes
|
|
||||||
altair_helpers.ie_fix();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function loadAltmetrics(e, t, n) {
|
function loadAltmetrics(e, t, n) {
|
||||||
var d = "createElement", c = "getElementsByTagName", m = "setAttribute", n = document.getElementById(e);
|
var d = "createElement", c = "getElementsByTagName", m = "setAttribute", n = document.getElementById(e);
|
||||||
|
|
Loading…
Reference in New Issue