From e0e2e4741bed35ed25c1d90886d59aa48dfaedb1 Mon Sep 17 00:00:00 2001 From: Konstantinos Triantafyllou Date: Mon, 14 Oct 2019 08:46:41 +0000 Subject: [PATCH] [Monitor]: Stakeholder page: Build menu and navigation git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor@57357 d315682c-612b-4755-9ff5-7f18f6832af3 --- src/app/monitor/monitor-routing.module.ts | 5 +- src/app/monitor/monitor.component.html | 30 +- src/app/monitor/monitor.component.ts | 125 +++++-- src/app/monitor/monitor.module.ts | 3 +- src/app/services/stakeholder.service.ts | 10 +- src/app/{ => utils/entities}/stakeholder.ts | 4 + src/assets/monitor-custom.css | 16 +- src/assets/stakeholders.json | 383 ++++++++++++++------ 8 files changed, 423 insertions(+), 153 deletions(-) rename src/app/{ => utils/entities}/stakeholder.ts (93%) diff --git a/src/app/monitor/monitor-routing.module.ts b/src/app/monitor/monitor-routing.module.ts index 6393522..758d752 100644 --- a/src/app/monitor/monitor-routing.module.ts +++ b/src/app/monitor/monitor-routing.module.ts @@ -7,7 +7,10 @@ import {MonitorComponent} from "./monitor.component"; @NgModule({ imports: [ RouterModule.forChild([ - { path: ':id', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] } + { path: ':stakeholder', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] }, + { path: ':stakeholder/:topic', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] }, + { path: ':stakeholder/:topic/:category', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] }, + { path: ':stakeholder/:topic/:category/:subCategory', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] } ]) ] }) diff --git a/src/app/monitor/monitor.component.html b/src/app/monitor/monitor.component.html index bcf7580..27dbbec 100644 --- a/src/app/monitor/monitor.component.html +++ b/src/app/monitor/monitor.component.html @@ -3,9 +3,33 @@ name="OpenAIRE Monitor">
- + +
+
+
+ {{stakeholder.index_name}}
+ Monitor Dashboard +
+ +
+
+
+ +
diff --git a/src/app/monitor/monitor.component.ts b/src/app/monitor/monitor.component.ts index 9630b83..c72faff 100644 --- a/src/app/monitor/monitor.component.ts +++ b/src/app/monitor/monitor.component.ts @@ -1,10 +1,7 @@ import {Component} from '@angular/core'; -import {ActivatedRoute, Router} from '@angular/router'; +import {ActivatedRoute, Params, Router} from '@angular/router'; import {Meta, Title} from '@angular/platform-browser'; import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties'; -import {CommunitiesService} from '../openaireLibrary/connect/communities/communities.service'; -import {SubscribeService} from '../openaireLibrary/utils/subscribe/subscribe.service'; -import {CommunityInfo} from '../openaireLibrary/connect/community/communityInfo'; import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service'; import {StringUtils} from '../openaireLibrary/utils/string-utils.class'; @@ -14,19 +11,23 @@ import {ErrorMessagesComponent} from '../openaireLibrary/utils/errorMessages.com import {HelperService} from "../openaireLibrary/utils/helper/helper.service"; import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service"; import {StakeholderService} from "../services/stakeholder.service"; -import {Stakeholder} from "../stakeholder"; +import {Category, Stakeholder, SubCategory, Topic} from "../utils/entities/stakeholder"; +import {MenuItem, RootMenuItem, SideMenuItem} from "../openaireLibrary/sharedComponents/menu"; @Component({ selector: 'monitor', templateUrl: 'monitor.component.html', }) - export class MonitorComponent { public piwiksub: any; public pageContents = null; public divContents = null; public status: number; public loading: boolean = true; + public activeTopic: Topic = null; + public activeCategory: Category = null; + public activeSubCategory: SubCategory = null; + public sideMenuItems: SideMenuItem[] = null; public errorCodes: ErrorCodes; public stakeholder: Stakeholder; private errorMessages: ErrorMessagesComponent; @@ -52,25 +53,31 @@ export class MonitorComponent { this.route.params.subscribe( params => { this.properties = data.envSpecific; var url = data.envSpecific.baseLink + this._router.url; - this.stakeholderService.getStakeholder(params['id']).subscribe(stakeholder => { - this.stakeholder = stakeholder; - this.seoService.createLinkForCanonicalURL(url, false); - this._meta.updateTag({content: url}, "property='og:url'"); - var description = "Monitor | " + this.stakeholder.index_name; - var title = "Monitor | " + 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(); - }, error => { - console.log(error); - this._router.navigate(['']); - }) + if(!this.stakeholder || this.stakeholder.index_id !== params['stakeholder']) { + this.status = this.errorCodes.LOADING; + this.stakeholderService.getStakeholder(params['stakeholder']).subscribe(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(); + }) + } else { + this.setView(params); + } }); }); } @@ -87,6 +94,74 @@ export class MonitorComponent { }) } + private setView(params: Params) { + if(params && params['topic']) { + this.activeTopic = this.stakeholder.topics.filter(topic => topic.alias === decodeURIComponent(params['topic']))[0]; + if(this.activeTopic) { + if(params['category']) { + this.activeCategory = this.activeTopic.categories.filter(category => + category.alias === decodeURIComponent(params['category']))[0]; + } else { + let category: Category = this.activeTopic.categories[0]; + this.navigateTo(this.stakeholder.alias, this.activeTopic.alias, category.alias); + return; + } + if(this.activeCategory) { + if(params['subCategory']) { + this.activeSubCategory = this.activeCategory.subCategories.filter(subCategory => + subCategory.alias = decodeURIComponent(params['subCategory']))[0]; + } else { + this.activeSubCategory = this.activeCategory.subCategories.filter(subCategory => !subCategory.alias)[0]; + } + if(this.activeSubCategory) { + this.setSideBar(); + return; + } + } + } + this.navigateToError(); + } else { + let topic: Topic = this.stakeholder.topics[0]; + let category: Category = topic.categories[0]; + this.navigateTo(this.stakeholder.alias, topic.alias, category.alias); + } + } + + private setSideBar() { + this.sideMenuItems = []; + this.activeTopic.categories.forEach(category => { + let rootItem: MenuItem = new MenuItem(category.alias, category.name, null, ( + '/monitor/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias), + false, null, null, null); + let items: RootMenuItem[] = []; + category.subCategories.forEach(subCategory => { + if(subCategory.alias != null) { + items.push({ + items: [], + rootItem: new MenuItem(subCategory.alias, subCategory.name, null, ( + '/monitor/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias + '/' + subCategory.alias), + false, null, null, null) + }); + } + }); + this.sideMenuItems.push({ + rootItem: rootItem, + items: items, + ukIcon: null + }); + }); + } + + public navigateToError() { + this._router.navigate(['/error'],{queryParams: {'page': this._router.url}}); + } + + public navigateTo(stakeholder: string, topic: string, category: string = null, subcategory: string = null) { + let url = 'monitor/' + stakeholder+ '/' + topic + ((category)?('/' + + category):'') + ((subcategory)?('/' + subcategory):''); + return this._router.navigate([url]); + } + public quote(param: string): string { return StringUtils.quote(param); } diff --git a/src/app/monitor/monitor.module.ts b/src/app/monitor/monitor.module.ts index ed57fbc..86b1ba5 100644 --- a/src/app/monitor/monitor.module.ts +++ b/src/app/monitor/monitor.module.ts @@ -14,11 +14,12 @@ import {SEOServiceModule} from "../openaireLibrary/sharedComponents/SEO/SEOServi import {MonitorRoutingModule} from "./monitor-routing.module"; import {MonitorComponent} from "./monitor.component"; import {StakeholderService} from "../services/stakeholder.service"; +import {SideBarModule} from "../openaireLibrary/sharedComponents/sidebar/sideBar.module"; @NgModule({ imports: [ CommonModule, FormsModule, RouterModule, ErrorMessagesModule, - HelperModule, Schema2jsonldModule, SEOServiceModule, MonitorRoutingModule + HelperModule, Schema2jsonldModule, SEOServiceModule, MonitorRoutingModule, SideBarModule ], declarations: [ MonitorComponent diff --git a/src/app/services/stakeholder.service.ts b/src/app/services/stakeholder.service.ts index d51abce..bd8a87d 100644 --- a/src/app/services/stakeholder.service.ts +++ b/src/app/services/stakeholder.service.ts @@ -1,20 +1,20 @@ import {Injectable} from "@angular/core"; import {HttpClient, HttpErrorResponse} from "@angular/common/http"; import {Observable} from "rxjs"; -import {Stakeholder} from "../stakeholder"; +import {Stakeholder} from "../utils/entities/stakeholder"; import {map} from "rxjs/operators"; @Injectable() export class StakeholderService { - constructor(private http: HttpClient) { } - getStakeholder(id: string): Observable { + getStakeholder(alias: string): Observable { return this.http.get('./assets/stakeholders.json').pipe(map(json => { - let stakeholder = json.stakeholders.filter(stakeholder => stakeholder.index_id === id)[0]; - if(stakeholder) { + let stakeholder = json.stakeholders.filter(stakeholder => stakeholder.alias === alias)[0]; + if (stakeholder) { + stakeholder.topics = stakeholder.topics.filter(topic => topic.isActive && topic.isPublic); return stakeholder; } else { throw new HttpErrorResponse({ diff --git a/src/app/stakeholder.ts b/src/app/utils/entities/stakeholder.ts similarity index 93% rename from src/app/stakeholder.ts rename to src/app/utils/entities/stakeholder.ts index a08ab22..d503698 100644 --- a/src/app/stakeholder.ts +++ b/src/app/utils/entities/stakeholder.ts @@ -4,6 +4,7 @@ export class Stakeholder { index_id; index_name: string; index_shortName:string; + alias: string; isDefaultProfile: boolean; isActive: boolean; isPublic: boolean; @@ -14,6 +15,7 @@ export class Stakeholder { } export class Topic { name: string; + alias: string; description: string; isActive: boolean; isPublic: boolean; @@ -21,6 +23,7 @@ export class Topic { } export class Category { name: string; + alias: string; description: string; isActive: boolean; isPublic: boolean; @@ -30,6 +33,7 @@ export class Category { export class SubCategory { name: string; + alias: string; description: string; isActive: boolean; isPublic: boolean; diff --git a/src/assets/monitor-custom.css b/src/assets/monitor-custom.css index 2c11db0..d3ec973 100644 --- a/src/assets/monitor-custom.css +++ b/src/assets/monitor-custom.css @@ -16,12 +16,6 @@ --monitor-portal-lower-tone: #7c9144; --connect-portal-lower-tone: #b48536; --develop-portal-lower-tone: #9f4e7e; - - --community_main_color: #4C9CD5; - --community_main_color_rgb: 76,156,213; - --community_secondary_color:#24857F; - --community_main_dark_color:#2276B9; - } .tm-toolbar .uk-subnav-line .custom-monitor-li { @@ -67,3 +61,13 @@ div:not(.connect_App) bottom .uk-totop{ .uk-breadcrumb .active{ font-weight: bold; } + +.uk-light .topic-nav .uk-navbar-nav > li > a { + font-size: 20px; + text-transform: unset; +} + +.uk-light .topic-nav .uk-navbar-nav > li.uk-active > a, .uk-light .topic-nav .uk-navbar-nav > li > a:hover, +.uk-light .topic-nav .uk-navbar-nav > li > a:focus { + color: white !important; +} diff --git a/src/assets/stakeholders.json b/src/assets/stakeholders.json index dcb9c45..7fe1f9d 100644 --- a/src/assets/stakeholders.json +++ b/src/assets/stakeholders.json @@ -1,153 +1,312 @@ { - "stakeholders":[ - { - "id": "1", - "type": "funder", - "index_id": "EC", - "index_name": "European Comission", - "index_shortName": "EC", - "isDefaultProfile": false, - "isActive": true, - "isPublic": true, - "creationDate": "08-10-2019", - "updateDate": "08-10-2019", - "managers": null, - - "topics": [{ - "name": "Open Science", - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "stakeholders": [ + { + "id": "1", + "type": "funder", + "index_id": "EC", + "index_name": "European Comission", + "index_shortName": "EC", + "alias": "EC", + "isDefaultProfile": false, "isActive": true, "isPublic": true, - "categories": [ + "creationDate": "08-10-2019", + "updateDate": "08-10-2019", + "managers": null, + "topics": [ { - "name": "Overview", - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", - "isOverview": true, - "isActive": true, - "isPublic": true, - "subCategories": [{ - "name": null, - "description": null, - "isActive": true, - "isPublic": true, - "numbers": ["1","2","3"], - "charts": ["4"] - }] - }, - { - "name": "Publications", + "name": "OpenScience", + "alias": "openScience", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", - "isOverview": false, "isActive": true, "isPublic": true, - "subCategories": [{ - "name": null, - "description": null, - "isActive": true, - "isPublic": true, - "numbers": ["1","2","3"], - "charts": ["4"] - }] + "categories": [ + { + "name": "Overview", + "alias": "overView", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "isOverview": true, + "isActive": true, + "isPublic": true, + "subCategories": [ + { + "name": null, + "description": null, + "alias": null, + "isActive": true, + "isPublic": true, + "numbers": [ + "1", + "2", + "3" + ], + "charts": [ + "4" + ] + }, + { + "name": "Open", + "description": "open", + "alias": "open", + "isActive": true, + "isPublic": true, + "numbers": [ + "1", + "2", + "3" + ], + "charts": [ + "4" + ] + } + ] + }, + { + "name": "Publications", + "alias": "publications", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "isOverview": false, + "isActive": true, + "isPublic": true, + "subCategories": [ + { + "name": null, + "description": null, + "alias": null, + "isActive": true, + "isPublic": true, + "numbers": [ + "1", + "2", + "3" + ], + "charts": [ + "4" + ] + } + ] + }, + { + "name": "Research data", + "alias": "researchData", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "isOverview": false, + "isActive": true, + "isPublic": true, + "subCategories": [ + { + "name": null, + "description": null, + "alias": null, + "isActive": true, + "isPublic": true, + "numbers": [ + ], + "charts": [ + ] + } + ] + }, + { + "name": "Software", + "alias": "software", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "isOverview": false, + "isActive": true, + "isPublic": true, + "subCategories": [ + { + "name": null, + "description": null, + "alias": null, + "isActive": true, + "isPublic": true, + "numbers": [ + ], + "charts": [ + ] + } + ] + }, + { + "name": "Other", + "alias": "other", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "isOverview": false, + "isActive": true, + "isPublic": true, + "subCategories": [ + { + "name": null, + "description": null, + "alias": null, + "isActive": true, + "isPublic": true, + "numbers": [ + ], + "charts": [ + ] + } + ] + } + ] }, { - "name": "Research data", + "name": "Collaboration", + "alias": "collaboration", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", - "isOverview": false, "isActive": true, "isPublic": true, - "subCategories": [{ - "name": null, - "description": null, - "isActive": true, - "isPublic": true, - "numbers": [ - ], - "charts": [ - ] - }] + "categories": [ + { + "name": "Overview", + "alias": "overView", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "isOverview": true, + "isActive": true, + "isPublic": true, + "subCategories": [ + { + "name": null, + "description": null, + "alias": null, + "isActive": true, + "isPublic": true, + "numbers": [ + "1", + "2", + "3" + ], + "charts": [ + "4" + ] + } + ] + } + ] }, { - "name": "Software", + "name": "Impact/Correlation", + "alias": "impact-correlation", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", - "isOverview": false, "isActive": true, "isPublic": true, - "subCategories": [{ - "name": null, - "description": null, - "isActive": true, - "isPublic": true, - "numbers": [ - ], - "charts": [ - ] - }] - }, { - "name": "Other", - "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", - "isOverview": false, - "isActive": true, - "isPublic": true, - "subCategories": [{ - "name": null, - "description": null, - "isActive": true, - "isPublic": true, - "numbers": [ - ], - "charts": [ - ] - }] + "categories": [ + { + "name": "Overview", + "alias": "overView", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...", + "isOverview": true, + "isActive": true, + "isPublic": true, + "subCategories": [ + { + "name": null, + "description": null, + "alias": null, + "isActive": true, + "isPublic": true, + "numbers": [ + "1", + "2", + "3" + ], + "charts": [ + "4" + ] + } + ] + } + ] } ] - }] - }], - "indicators": [{ - "id": "1", - "type": "number", - "name": "Total", - "description": "Total number of publications", - "tags":["publications"], - "width": "small", - "indicatorPaths":[{"type":"", - "url": "/stats-api/funders/{index_shortname}", - "jsonPath":["statistics","publications"]}] - }, + } + ], + "indicators": [ + { + "id": "1", + "type": "number", + "name": "Total", + "description": "Total number of publications", + "tags": [ + "publications" + ], + "width": "small", + "indicatorPaths": [ + { + "type": "", + "url": "/stats-api/funders/{index_shortname}", + "jsonPath": [ + "statistics", + "publications" + ] + } + ] + }, { "id": "2", "type": "number", "name": "Open", "description": "Total number of open access publications", - "tags":["publication", "open access"], + "tags": [ + "publication", + "open access" + ], "width": "small", - "indicatorPaths": [{"type":"", - "url": "/stats-api/funders/{index_shortname}", - "jsonPath":["statistics","open"]}] + "indicatorPaths": [ + { + "type": "", + "url": "/stats-api/funders/{index_shortname}", + "jsonPath": [ + "statistics", + "open" + ] + } + ] }, { "id": "3", "type": "number", "name": "Embargo", "description": "Total number of embargoed publications", - "tags":["publication", "embargo"], + "tags": [ + "publication", + "embargo" + ], "width": "small", - "indicatorPaths": [{"type":"", - "url": "/stats-api/funders/{index_shortname}", - "jsonPath":["statistics","embargo"]}] + "indicatorPaths": [ + { + "type": "", + "url": "/stats-api/funders/{index_shortname}", + "jsonPath": [ + "statistics", + "embargo" + ] + } + ] }, { "id": "4", "type": "charts", "name": "Number of publications by project", "description": "Number of publications by project", - "tags":["publication", "project"], + "tags": [ + "publication", + "project" + ], "width": "large", - "indicatorPaths":[{ "type":"bar graph", - "url": "https://www.openaire.eu/stats/chart.php?com=query&data={%22table%22%3A%22result%22%2C%22fields%22%3A[{%22fld%22%3A%22number%22%2C%22agg%22%3A%22count%22%2C%22type%22%3A%22bar%22%2C%22yaxis%22%3A1%2C%22c%22%3Afalse}]%2C%22xaxis%22%3A{%22name%22%3A%22result_projects-project-acronym%22%2C%22agg%22%3A%22avg%22}%2C%22group%22%3A%22%22%2C%22color%22%3A%22%22%2C%22type%22%3A%22chart%22%2C%22size%22%3A30%2C%22sort%22%3A%22count-number%22%2C%22yaxisheaders%22%3A[%22%22]%2C%22fieldsheaders%22%3A[%22publications%22]%2C%22in%22%3A[]%2C%22filters%22%3A[{%22name%22%3A%22result_projects-project-funding_lvl0%22%2C%22values%22%3A[%22H2020%22]%2C%22to%22%3A%22-1%22}%2C{%22name%22%3A%22type%22%2C%22values%22%3A[%22publication%22]%2C%22to%22%3A%22-1%22}]%2C%22having%22%3A[]%2C%22xStyle%22%3A{%22r%22:%22-%22,%22s%22:%22-%22,%22l%22:%22-%22,%22ft%22:%22-%22,%22wt%22:%22-%22}%2C%22title%22%3A%22H2020%20Publications%20per%20project%20%28top%2030%29%22%2C%22subtitle%22%3A%22%22%2C%22xaxistitle%22%3A%22project%22%2C%22order%22%3A%22d%22}&h=100%&w=80%", - "jsonPath":[]}, - { "type":"table", - "url":"https://www.openaire.eu/stats/gtable.php?com=query&data={%22table%22:%22result%22,%22fields%22:[{%22fld%22:%22number%22,%22agg%22:%22count%22,%22type%22:%22pie%22,%22yaxis%22:1,%22c%22:false}],%22xaxis%22:{%22name%22:%22result_projects-project-title%22,%22agg%22:%22avg%22},%22group%22:%22%22,%22color%22:%22%22,%22type%22:%22chart%22,%22size%22:%2230%22,%22sort%22:%22count-number%22,%22yaxisheaders%22:[%22%22],%22fieldsheaders%22:[%22publications%22],%22in%22:[],%22filters%22:[{%22name%22:%22result_projects-project-funder%22,%22values%22:[%22{index_name}%22],%22to%22:%22-1%22},{%22name%22:%22type%22,%22values%22:[%22publication%22],%22to%22:%22-1%22}],%22having%22:[],%22xStyle%22:{%22r%22:-90,%22s%22:%22-%22,%22l%22:%22-%22,%22ft%22:10,%22wt%22:%22-%22},%22title%22:%22{index_shortname}%20Publications%20by%20project%20(top%2030)%22,%22subtitle%22:%22%22,%22xaxistitle%22:%22project%22,%22order%22:%22d%22}", - "jsonPath":[]} + "indicatorPaths": [ + { + "type": "bar graph", + "url": "https://www.openaire.eu/stats/chart.php?com=query&data={%22table%22%3A%22result%22%2C%22fields%22%3A[{%22fld%22%3A%22number%22%2C%22agg%22%3A%22count%22%2C%22type%22%3A%22bar%22%2C%22yaxis%22%3A1%2C%22c%22%3Afalse}]%2C%22xaxis%22%3A{%22name%22%3A%22result_projects-project-acronym%22%2C%22agg%22%3A%22avg%22}%2C%22group%22%3A%22%22%2C%22color%22%3A%22%22%2C%22type%22%3A%22chart%22%2C%22size%22%3A30%2C%22sort%22%3A%22count-number%22%2C%22yaxisheaders%22%3A[%22%22]%2C%22fieldsheaders%22%3A[%22publications%22]%2C%22in%22%3A[]%2C%22filters%22%3A[{%22name%22%3A%22result_projects-project-funding_lvl0%22%2C%22values%22%3A[%22H2020%22]%2C%22to%22%3A%22-1%22}%2C{%22name%22%3A%22type%22%2C%22values%22%3A[%22publication%22]%2C%22to%22%3A%22-1%22}]%2C%22having%22%3A[]%2C%22xStyle%22%3A{%22r%22:%22-%22,%22s%22:%22-%22,%22l%22:%22-%22,%22ft%22:%22-%22,%22wt%22:%22-%22}%2C%22title%22%3A%22H2020%20Publications%20per%20project%20%28top%2030%29%22%2C%22subtitle%22%3A%22%22%2C%22xaxistitle%22%3A%22project%22%2C%22order%22%3A%22d%22}&h=100%&w=80%", + "jsonPath": [] + }, + { + "type": "table", + "url": "https://www.openaire.eu/stats/gtable.php?com=query&data={%22table%22:%22result%22,%22fields%22:[{%22fld%22:%22number%22,%22agg%22:%22count%22,%22type%22:%22pie%22,%22yaxis%22:1,%22c%22:false}],%22xaxis%22:{%22name%22:%22result_projects-project-title%22,%22agg%22:%22avg%22},%22group%22:%22%22,%22color%22:%22%22,%22type%22:%22chart%22,%22size%22:%2230%22,%22sort%22:%22count-number%22,%22yaxisheaders%22:[%22%22],%22fieldsheaders%22:[%22publications%22],%22in%22:[],%22filters%22:[{%22name%22:%22result_projects-project-funder%22,%22values%22:[%22{index_name}%22],%22to%22:%22-1%22},{%22name%22:%22type%22,%22values%22:[%22publication%22],%22to%22:%22-1%22}],%22having%22:[],%22xStyle%22:{%22r%22:-90,%22s%22:%22-%22,%22l%22:%22-%22,%22ft%22:10,%22wt%22:%22-%22},%22title%22:%22{index_shortname}%20Publications%20by%20project%20(top%2030)%22,%22subtitle%22:%22%22,%22xaxistitle%22:%22project%22,%22order%22:%22d%22}", + "jsonPath": [] + } ] - }] + } + ] }