From 5da23e9673be8f52bef3a2e28baf9da23902b4fe Mon Sep 17 00:00:00 2001 From: Konstantinos Triantafyllou Date: Sun, 15 Dec 2019 12:38:09 +0000 Subject: [PATCH] [Monitor Dashboard | Trunk]: Reset user menu items before build git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@57884 d315682c-612b-4755-9ff5-7f18f6832af3 --- src/app/app.component.ts | 3 +- src/app/monitor/monitor.component.ts | 651 ++++++++++++++------------- 2 files changed, 327 insertions(+), 327 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index dcf83ad..dbe67b0 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -17,7 +17,6 @@ import {MenuItem} from "./openaireLibrary/sharedComponents/menu"; export class AppComponent implements OnInit, OnDestroy { properties: EnvProperties; user: User; - loginCheck: boolean = false; hasSidebar: boolean = false; hasHeader: boolean = false; userMenuItems: MenuItem[] = [new MenuItem("", "My profile", "", "", false, [], [], {})]; @@ -65,7 +64,6 @@ export class AppComponent implements OnInit, OnDestroy { })); this.subscriptions.push(this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe(user => { this.user = user; - this.loginCheck = true; this.buildMenu(); }, error => { console.log("App couldn't fetch properties"); @@ -96,6 +94,7 @@ export class AppComponent implements OnInit, OnDestroy { buildMenu() { + this.userMenuItems = []; if (Session.isPortalAdministrator(this.user)) { this.userMenuItems.push(new MenuItem("", "Manage helptexts", ((this.properties.environment == "beta") ? "https://beta.admin.connect.openaire.eu" : "https://admin.explore.openaire.eu") + "/dashboard?communityId=openaire", "", true, [], [], {})) diff --git a/src/app/monitor/monitor.component.ts b/src/app/monitor/monitor.component.ts index ffc0ff9..476257b 100644 --- a/src/app/monitor/monitor.component.ts +++ b/src/app/monitor/monitor.component.ts @@ -25,347 +25,348 @@ import {MenuItem} from "../openaireLibrary/sharedComponents/menu"; import {UserManagementService} from "../openaireLibrary/services/user-management.service"; @Component({ - selector: 'monitor', - templateUrl: 'monitor.component.html', + selector: 'monitor', + templateUrl: 'monitor.component.html', }) export class MonitorComponent implements OnInit, OnDestroy, IDeactivateComponent { - private static sidebarStatus: { - id; - status; - }; - public user: User; - public userMenuItems: MenuItem[] = [new MenuItem("", "My profile", "", "", false, [], [], {})]; - public subscriptions: any[] = []; - public piwiksub: any; - public pageContents = null; - public divContents = null; - public status: number; - public loading: boolean = true; - public indicatorUtils: IndicatorUtils = new IndicatorUtils(); - public stakeholderUtils: StakeholderUtils = new StakeholderUtils(); - public activeTopic: Topic = null; - public activeCategory: Category = null; - public activeSubCategory: SubCategory = null; - public sideBar: Sidebar = null; - public errorCodes: ErrorCodes; - public stakeholder: Stakeholder; - public numberResults: Map = new Map(); - public chartsActiveType: Map = new Map(); - private errorMessages: ErrorMessagesComponent; - properties: EnvProperties; - fundingL0; - startYear; - endYear; - - public keyword: FormControl; - - constructor( - private route: ActivatedRoute, - private _router: Router, - private _meta: Meta, - private _title: Title, - private _piwikService: PiwikService, - private helper: HelperService, - private stakeholderService: StakeholderService, - private userManagementService: UserManagementService, - private statisticsService: StatisticsService, - private layoutService: LayoutService, - private seoService: SEOService, - private cdr: ChangeDetectorRef, - private sanitizer: DomSanitizer, private _fb: FormBuilder) { - this.errorCodes = new ErrorCodes(); - this.errorMessages = new ErrorMessagesComponent(); - this.status = this.errorCodes.LOADING; - } - - public ngOnInit() { - this.keyword = this._fb.control(''); - this.keyword.valueChanges.subscribe(value => { - console.log("Keyword Changed!"); - //TODO do a real action - }); - this.route.data - .subscribe((data: { envSpecific: EnvProperties }) => { - let subscription: Subscription; - this.route.params.subscribe(params => { - if(subscription) { - subscription.unsubscribe(); - } - this.properties = data.envSpecific; - var url = data.envSpecific.baseLink + this._router.url; - if (!this.stakeholder || this.stakeholder.alias !== params['stakeholder']) { - this.status = this.errorCodes.LOADING; - this.numberResults = new Map(); - this.chartsActiveType = new Map(); - // subscription = this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { - let stakeholder: Stakeholder = null; - if (params['stakeholder'] == "fwf") { - stakeholder = new Stakeholder(null, "funder", "fwf_________::FWF", "Austrian Science Fund (FWF)", "FWF", - false, "fwf", true, true, null); - stakeholder = this.stakeholderUtils.createFunderFromDefaultProfile(stakeholder, StakeholderCreator.createFunderDefaultProfile().topics); - stakeholder.logoUrl = "./assets/fwf.png"; - } else if (params['stakeholder'] == "arc") { - stakeholder = new Stakeholder(null, "funder", "arc_________::ARC", - "Australian Research Council (ARC)", "ARC", - false, null, true, true, null); - stakeholder = this.stakeholderUtils.createFunderFromDefaultProfile(stakeholder, StakeholderCreator.createFunderDefaultProfile().topics); - stakeholder.logoUrl = "./assets/arc1.gif"; - } else { - stakeholder = new Stakeholder(null, "funder", "ec__________::EC", - "European Commission", "EC", - false, "ec", true, true, null); - stakeholder = this.stakeholderUtils.createFunderFromDefaultProfile(stakeholder, StakeholderCreator.createFunderDefaultProfile().topics); - stakeholder.logoUrl = "./assets/ec.png"; - } - if (stakeholder) { - this.stakeholder = stakeholder; - this.seoService.createLinkForCanonicalURL(url, false); - this._meta.updateTag({content: url}, "property='og:url'"); - var description = "Monitor Dashboard | " + this.stakeholder.index_name; - var title = "Monitor Dashboard | " + this.stakeholder.index_shortName; - this._meta.updateTag({content: description}, "name='description'"); - this._meta.updateTag({content: description}, "property='og:description'"); - this._meta.updateTag({content: title}, "property='og:title'"); - this._title.setTitle(title); - if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) { - this.piwiksub = this._piwikService.trackView(this.properties, title, this.properties.piwikSiteId).subscribe(); - } - //this.getDivContents(); - this.getPageContents(); - this.status = this.errorCodes.DONE; - this.setView(params); - } - // }, error => { - // this.navigateToError(); - // }); - this.subscriptions.push(subscription); - } else { - this.setView(params); - } - this.subscriptions.push(this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe(user => { - this.user = user; - this.buildMenu(); - }, error => { - console.log("App couldn't fetch properties"); - console.log(error); - })); - }); - }); - } - - canExit() { - if (this.sideBar) { - let status = []; - this.sideBar.items.forEach(item => { - status.push(item.open); - }); - MonitorComponent.sidebarStatus = { - id: this.activeTopic.alias, - status: status - }; - } - return true; - } - - public get open() { - return this.layoutService.open; - } - - public toggleOpen(event = null) { - if (!event) { - this.layoutService.setOpen(!this.open); - } else if (event && event['value'] === true) { - this.layoutService.setOpen(false); - } - } - - private getPageContents() { - this.helper.getPageHelpContents(this._router.url, this.properties, 'monitor').subscribe(contents => { - this.pageContents = contents; - }) - } - - private getDivContents() { - this.helper.getDivHelpContents(this._router.url, this.properties, 'monitor').subscribe(contents => { - this.divContents = contents; - }) - } - - private setView(params: Params) { - if (params['topic']) { - this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && topic.isPublic && topic.isActive); - if (this.activeTopic) { - if (params['category']) { - this.activeCategory = this.activeTopic.categories.find(category => - (category.alias === params['category']) && category.isPublic && category.isActive); - if(!this.activeCategory) { - this.navigateToError(); - return; - } - } else { - this.activeCategory = this.activeTopic.categories.find(category => category.isPublic && category.isActive); - if (this.activeCategory) { - this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => - subCategory.isPublic && subCategory.isActive); - this.setSideBar(); - if (this.activeSubCategory) { - this.setIndicators(); - } - } else { - this.setSideBar(); - } - return; - } - if (this.activeCategory) { - if (params['subCategory']) { - this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => - (subCategory.alias === params['subCategory'] && subCategory.isPublic && subCategory.isActive)); - if(!this.activeSubCategory) { - this.navigateToError(); - return; - } - } else { - this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => - subCategory.isPublic && subCategory.isActive); - } - if (this.activeSubCategory) { - this.setSideBar(); - this.setIndicators(); - } else { - this.navigateToError(); - } - return; - } else { - this.activeSubCategory = null; - } + private static sidebarStatus: { + id; + status; + }; + public user: User; + public userMenuItems: MenuItem[] = [new MenuItem("", "My profile", "", "", false, [], [], {})]; + public subscriptions: any[] = []; + public piwiksub: any; + public pageContents = null; + public divContents = null; + public status: number; + public loading: boolean = true; + public indicatorUtils: IndicatorUtils = new IndicatorUtils(); + public stakeholderUtils: StakeholderUtils = new StakeholderUtils(); + public activeTopic: Topic = null; + public activeCategory: Category = null; + public activeSubCategory: SubCategory = null; + public sideBar: Sidebar = null; + public errorCodes: ErrorCodes; + public stakeholder: Stakeholder; + public numberResults: Map = new Map(); + public chartsActiveType: Map = new Map(); + private errorMessages: ErrorMessagesComponent; + properties: EnvProperties; + fundingL0; + startYear; + endYear; + + public keyword: FormControl; + + constructor( + private route: ActivatedRoute, + private _router: Router, + private _meta: Meta, + private _title: Title, + private _piwikService: PiwikService, + private helper: HelperService, + private stakeholderService: StakeholderService, + private userManagementService: UserManagementService, + private statisticsService: StatisticsService, + private layoutService: LayoutService, + private seoService: SEOService, + private cdr: ChangeDetectorRef, + private sanitizer: DomSanitizer, private _fb: FormBuilder) { + this.errorCodes = new ErrorCodes(); + this.errorMessages = new ErrorMessagesComponent(); + this.status = this.errorCodes.LOADING; + } + + public ngOnInit() { + this.keyword = this._fb.control(''); + this.keyword.valueChanges.subscribe(value => { + console.log("Keyword Changed!"); + //TODO do a real action + }); + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + let subscription: Subscription; + this.route.params.subscribe(params => { + if (subscription) { + subscription.unsubscribe(); + } + this.properties = data.envSpecific; + var url = data.envSpecific.baseLink + this._router.url; + if (!this.stakeholder || this.stakeholder.alias !== params['stakeholder']) { + this.status = this.errorCodes.LOADING; + this.numberResults = new Map(); + this.chartsActiveType = new Map(); + // subscription = this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { + let stakeholder: Stakeholder = null; + if (params['stakeholder'] == "fwf") { + stakeholder = new Stakeholder(null, "funder", "fwf_________::FWF", "Austrian Science Fund (FWF)", "FWF", + false, "fwf", true, true, null); + stakeholder = this.stakeholderUtils.createFunderFromDefaultProfile(stakeholder, StakeholderCreator.createFunderDefaultProfile().topics); + stakeholder.logoUrl = "./assets/fwf.png"; + } else if (params['stakeholder'] == "arc") { + stakeholder = new Stakeholder(null, "funder", "arc_________::ARC", + "Australian Research Council (ARC)", "ARC", + false, null, true, true, null); + stakeholder = this.stakeholderUtils.createFunderFromDefaultProfile(stakeholder, StakeholderCreator.createFunderDefaultProfile().topics); + stakeholder.logoUrl = "./assets/arc1.gif"; } else { - this.navigateToError(); - return; + stakeholder = new Stakeholder(null, "funder", "ec__________::EC", + "European Commission", "EC", + false, "ec", true, true, null); + stakeholder = this.stakeholderUtils.createFunderFromDefaultProfile(stakeholder, StakeholderCreator.createFunderDefaultProfile().topics); + stakeholder.logoUrl = "./assets/ec.png"; } + if (stakeholder) { + this.stakeholder = stakeholder; + this.seoService.createLinkForCanonicalURL(url, false); + this._meta.updateTag({content: url}, "property='og:url'"); + var description = "Monitor Dashboard | " + this.stakeholder.index_name; + var title = "Monitor Dashboard | " + this.stakeholder.index_shortName; + this._meta.updateTag({content: description}, "name='description'"); + this._meta.updateTag({content: description}, "property='og:description'"); + this._meta.updateTag({content: title}, "property='og:title'"); + this._title.setTitle(title); + if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) { + this.piwiksub = this._piwikService.trackView(this.properties, title, this.properties.piwikSiteId).subscribe(); + } + //this.getDivContents(); + this.getPageContents(); + this.status = this.errorCodes.DONE; + this.setView(params); + } + // }, error => { + // this.navigateToError(); + // }); + this.subscriptions.push(subscription); + } else { + this.setView(params); + } + this.subscriptions.push(this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe(user => { + this.user = user; + this.buildMenu(); + }, error => { + console.log("App couldn't fetch properties"); + console.log(error); + })); + }); + }); + } + + canExit() { + if (this.sideBar) { + let status = []; + this.sideBar.items.forEach(item => { + status.push(item.open); + }); + MonitorComponent.sidebarStatus = { + id: this.activeTopic.alias, + status: status + }; + } + return true; + } + + public get open() { + return this.layoutService.open; + } + + public toggleOpen(event = null) { + if (!event) { + this.layoutService.setOpen(!this.open); + } else if (event && event['value'] === true) { + this.layoutService.setOpen(false); + } + } + + private getPageContents() { + this.helper.getPageHelpContents(this._router.url, this.properties, 'monitor').subscribe(contents => { + this.pageContents = contents; + }) + } + + private getDivContents() { + this.helper.getDivHelpContents(this._router.url, this.properties, 'monitor').subscribe(contents => { + this.divContents = contents; + }) + } + + private setView(params: Params) { + if (params['topic']) { + this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && topic.isPublic && topic.isActive); + if (this.activeTopic) { + if (params['category']) { + this.activeCategory = this.activeTopic.categories.find(category => + (category.alias === params['category']) && category.isPublic && category.isActive); + if (!this.activeCategory) { + this.navigateToError(); + return; + } } else { - this.activeTopic = this.stakeholder.topics.find(topic => topic.isPublic && topic.isActive); - if (this.activeTopic) { - this.activeCategory = this.activeTopic.categories.find(category => category.isPublic && category.isActive); - if (this.activeCategory) { - this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => subCategory.isPublic && subCategory.isActive); - if (this.activeSubCategory) { - this.setSideBar(); - this.setIndicators(); - } else { - this.navigateToError(); - } - } else { - this.navigateToError(); - } - } else { - this.navigateToError(); + this.activeCategory = this.activeTopic.categories.find(category => category.isPublic && category.isActive); + if (this.activeCategory) { + this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => + subCategory.isPublic && subCategory.isActive); + this.setSideBar(); + if (this.activeSubCategory) { + this.setIndicators(); } + } else { + this.setSideBar(); + } + return; } - } - - private setSideBar() { - let items: Item[] = []; - this.activeTopic.categories.forEach((category, index) => { - if (category.isPublic && category.isActive) { - let subItems: Item[] = []; - category.subCategories.forEach(subCategory => { - if (subCategory.isPublic && subCategory.isActive) { - subItems.push(new Item(subCategory.alias, subCategory.name, ( - '/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias + '/' + subCategory.alias), - null, null, false)); - } - }); - let open = this.activeCategory.alias === category.alias; - if (MonitorComponent.sidebarStatus && MonitorComponent.sidebarStatus.id === this.activeTopic.alias) { - open = MonitorComponent.sidebarStatus.status[index]; - } - items.push(new Item(category.alias, category.name, ( - '/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias), - subItems, null, open)); + if (this.activeCategory) { + if (params['subCategory']) { + this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => + (subCategory.alias === params['subCategory'] && subCategory.isPublic && subCategory.isActive)); + if (!this.activeSubCategory) { + this.navigateToError(); + return; } - }); - if(items.length === 0) { - items.push(new Item('noCategories', 'No categories available yet', null, [], null, false)); + } else { + this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => + subCategory.isPublic && subCategory.isActive); + } + if (this.activeSubCategory) { + this.setSideBar(); + this.setIndicators(); + } else { + this.navigateToError(); + } + return; + } else { + this.activeSubCategory = null; } - this.sideBar = new Sidebar(items, null); - } - - private setIndicators() { - let urls: Map = new Map(); - this.activeSubCategory.numbers.forEach((number, index) => { - if (number.isActive && number.isPublic) { - let url = number.indicatorPaths[0].url; - //add fundingLevel0 filter in the query - if (this.fundingL0 && number.indicatorPaths[0].filters.get("fundingL0")) { - url = url + number.indicatorPaths[0].filters.get("fundingL0").replace(ChartHelper.prefix + 'fundingL0' + ChartHelper.suffix, encodeURIComponent(this.fundingL0)); - } - const pair = JSON.stringify([number.indicatorPaths[0].source, url]); - const indexes = urls.get(pair) ? urls.get(pair) : []; - indexes.push(index); - urls.set(pair, indexes); - } - }); - urls.forEach((indexes, pair) => { - pair = JSON.parse(pair); - this.statisticsService.getNumbers(pair[0], pair[1]).subscribe(response => { - indexes.forEach(index => { - let result = JSON.parse(JSON.stringify(response)); - this.activeSubCategory.numbers[index].indicatorPaths[0].jsonPath.forEach(jsonPath => { - if (result) { - result = result[jsonPath]; - } - }); - this.numberResults.set(index, result); - }); - }) - }); - this.activeSubCategory.charts.forEach((chart, index) => { - if (chart.indicatorPaths.length > 0) { - chart.indicatorPaths[0].safeResourceUrl = this.getUrlByStakeHolder(chart.indicatorPaths[0]); - this.chartsActiveType.set(index, chart.indicatorPaths[0]); - } - }); - this.cdr.detectChanges(); - } - - public getUrlByStakeHolder(indicatorPath: IndicatorPath) { - return this.sanitizer.bypassSecurityTrustResourceUrl( - this.statisticsService.getChartUrl(indicatorPath.source, this.indicatorUtils.getFullUrl(indicatorPath, this.fundingL0, this.startYear, this.endYear))); - } - - public setActiveChart(index, type: string) { - let activeChart = this.activeSubCategory.charts[index].indicatorPaths.filter(indicatorPath => indicatorPath.type === type)[0]; - activeChart.safeResourceUrl = this.getUrlByStakeHolder(activeChart); - this.chartsActiveType.set(index, activeChart); - } - - private navigateToError() { - this._router.navigate(['/error'], {queryParams: {'page': this._router.url}}); - } - - public navigateTo(stakeholder: string, topic: string, category: string = null, subcategory: string = null) { - let url = stakeholder + '/' + topic + ((category) ? ('/' - + category) : '') + ((subcategory) ? ('/' + subcategory) : ''); - return this._router.navigate([url]); - } - - public quote(param: string): string { - return StringUtils.quote(param); - } - - public ngOnDestroy() { - if (this.piwiksub) { - this.piwiksub.unsubscribe(); + } else { + this.navigateToError(); + return; + } + } else { + this.activeTopic = this.stakeholder.topics.find(topic => topic.isPublic && topic.isActive); + if (this.activeTopic) { + this.activeCategory = this.activeTopic.categories.find(category => category.isPublic && category.isActive); + if (this.activeCategory) { + this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => subCategory.isPublic && subCategory.isActive); + if (this.activeSubCategory) { + this.setSideBar(); + this.setIndicators(); + } else { + this.navigateToError(); + } + } else { + this.navigateToError(); } + } else { + this.navigateToError(); + } } - + } + + private setSideBar() { + let items: Item[] = []; + this.activeTopic.categories.forEach((category, index) => { + if (category.isPublic && category.isActive) { + let subItems: Item[] = []; + category.subCategories.forEach(subCategory => { + if (subCategory.isPublic && subCategory.isActive) { + subItems.push(new Item(subCategory.alias, subCategory.name, ( + '/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias + '/' + subCategory.alias), + null, null, false)); + } + }); + let open = this.activeCategory.alias === category.alias; + if (MonitorComponent.sidebarStatus && MonitorComponent.sidebarStatus.id === this.activeTopic.alias) { + open = MonitorComponent.sidebarStatus.status[index]; + } + items.push(new Item(category.alias, category.name, ( + '/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias), + subItems, null, open)); + } + }); + if (items.length === 0) { + items.push(new Item('noCategories', 'No categories available yet', null, [], null, false)); + } + this.sideBar = new Sidebar(items, null); + } + + private setIndicators() { + let urls: Map = new Map(); + this.activeSubCategory.numbers.forEach((number, index) => { + if (number.isActive && number.isPublic) { + let url = number.indicatorPaths[0].url; + //add fundingLevel0 filter in the query + if (this.fundingL0 && number.indicatorPaths[0].filters.get("fundingL0")) { + url = url + number.indicatorPaths[0].filters.get("fundingL0").replace(ChartHelper.prefix + 'fundingL0' + ChartHelper.suffix, encodeURIComponent(this.fundingL0)); + } + const pair = JSON.stringify([number.indicatorPaths[0].source, url]); + const indexes = urls.get(pair) ? urls.get(pair) : []; + indexes.push(index); + urls.set(pair, indexes); + } + }); + urls.forEach((indexes, pair) => { + pair = JSON.parse(pair); + this.statisticsService.getNumbers(pair[0], pair[1]).subscribe(response => { + indexes.forEach(index => { + let result = JSON.parse(JSON.stringify(response)); + this.activeSubCategory.numbers[index].indicatorPaths[0].jsonPath.forEach(jsonPath => { + if (result) { + result = result[jsonPath]; + } + }); + this.numberResults.set(index, result); + }); + }) + }); + this.activeSubCategory.charts.forEach((chart, index) => { + if (chart.indicatorPaths.length > 0) { + chart.indicatorPaths[0].safeResourceUrl = this.getUrlByStakeHolder(chart.indicatorPaths[0]); + this.chartsActiveType.set(index, chart.indicatorPaths[0]); + } + }); + this.cdr.detectChanges(); + } + + public getUrlByStakeHolder(indicatorPath: IndicatorPath) { + return this.sanitizer.bypassSecurityTrustResourceUrl( + this.statisticsService.getChartUrl(indicatorPath.source, this.indicatorUtils.getFullUrl(indicatorPath, this.fundingL0, this.startYear, this.endYear))); + } + + public setActiveChart(index, type: string) { + let activeChart = this.activeSubCategory.charts[index].indicatorPaths.filter(indicatorPath => indicatorPath.type === type)[0]; + activeChart.safeResourceUrl = this.getUrlByStakeHolder(activeChart); + this.chartsActiveType.set(index, activeChart); + } + + private navigateToError() { + this._router.navigate(['/error'], {queryParams: {'page': this._router.url}}); + } + + public navigateTo(stakeholder: string, topic: string, category: string = null, subcategory: string = null) { + let url = stakeholder + '/' + topic + ((category) ? ('/' + + category) : '') + ((subcategory) ? ('/' + subcategory) : ''); + return this._router.navigate([url]); + } + + public quote(param: string): string { + return StringUtils.quote(param); + } + + public ngOnDestroy() { + if (this.piwiksub) { + this.piwiksub.unsubscribe(); + } + } + buildMenu() { + this.userMenuItems = []; if (Session.isPortalAdministrator(this.user)) { this.userMenuItems.push(new MenuItem("", "Manage helptexts", ((this.properties.environment == "beta") ? "https://beta.admin.connect.openaire.eu" : "https://admin.explore.openaire.eu") + "/dashboard?communityId=openaire", "", true, [], [], {})) - + } - if(this.user) { + if (this.user) { this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {})); } }