diff --git a/src/app/app.component.html b/src/app/app.component.html index b6745f2..5e7a84f 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -11,7 +11,7 @@ diff --git a/src/app/app.component.ts b/src/app/app.component.ts index d329db3..4633aa0 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -262,7 +262,7 @@ export class AppComponent implements OnInit, OnDestroy { } if(this.isPublicOrIsMember(this.stakeholder.visibility)) { - this.specialSideBarMenuItem = new MenuItem("search", "Search research outcomes", "", this.properties.searchLinkToResults, false, [], null, this.createSearchParameters()); + this.specialSideBarMenuItem = new MenuItem("search", "Search research outcomes", "", this.properties.searchLinkToResults, false, [], null, {}); this.specialSideBarMenuItem.icon = ''; }else{ this.specialSideBarMenuItem =null; @@ -371,17 +371,16 @@ export class AppComponent implements OnInit, OnDestroy { return true; } - createSearchParameters() { +/* createSearchParameters() { if (!this.stakeholder) { return {}; } if (this.stakeholder.type == "funder") { return {"relfunder": encodeURIComponent("\"" + this.stakeholder.index_id + "||" + this.stakeholder.index_name + "||" + this.stakeholder.index_shortName + "\"")}; } 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 return {"community": encodeURIComponent("\"" + this.stakeholder.index_id + "||" + this.stakeholder.index_name + "\"")}; } else if (this.stakeholder.type == "organization") { return {"cf": true}; } - } + }*/ } diff --git a/src/app/monitor/monitor.component.html b/src/app/monitor/monitor.component.html index 3b59555..4b1680a 100644 --- a/src/app/monitor/monitor.component.html +++ b/src/app/monitor/monitor.component.html @@ -150,8 +150,8 @@
+ class="uk-grid uk-grid-medium uk-margin-bottom uk-flex uk-flex-middle " + uk-height-match="target: div > div > div > div > .chartTitle">

{{chart.title}}

@@ -162,14 +162,14 @@ [class.uk-width-1-2@m]="indicator.width === 'medium'" [class.uk-width-1-1]="indicator.width === 'large'" class="uk-margin-bottom">
-

-
{{indicator.name + " "}}
-

+

+
{{indicator.name + " "}}
+

@@ -198,10 +200,19 @@
- Send us your feedback. - + (activeTopic.categories == null || activeTopic.categories.length == 0)))" class="uk-margin-small-top uk-flex"> + +
+ + Powered by OpenAIRE Research Graph + + . Last update of statistics in OpenAIRE: {{statsUpdateDate | date: 'MMM dd, yyyy'}} + +
+ +
+ Send us your feedback. +
diff --git a/src/app/monitor/monitor.component.ts b/src/app/monitor/monitor.component.ts index 306337a..3feb7fd 100644 --- a/src/app/monitor/monitor.component.ts +++ b/src/app/monitor/monitor.component.ts @@ -30,6 +30,7 @@ import {Filter} from "../openaireLibrary/searchPages/searchUtils/searchHelperCla import {Location} from "@angular/common"; import {RouterHelper} from "../openaireLibrary/utils/routerHelper.class"; import {properties} from "../../environments/environment"; +import {IndexInfoService} from "../openaireLibrary/utils/indexInfo.service"; @Component({ selector: 'monitor', @@ -71,7 +72,7 @@ export class MonitorComponent implements OnInit, OnDestroy { }; privateStakeholder = false; public keyword: FormControl; - + public statsUpdateDate: Date; constructor( private route: ActivatedRoute, private _router: Router, @@ -85,6 +86,7 @@ export class MonitorComponent implements OnInit, OnDestroy { private layoutService: LayoutService, private seoService: SEOService, private cdr: ChangeDetectorRef, + private indexInfoService: IndexInfoService, private sanitizer: DomSanitizer, private _fb: FormBuilder, private router: Router) { this.errorCodes = new ErrorCodes(); this.errorMessages = new ErrorMessagesComponent(); @@ -92,6 +94,13 @@ export class MonitorComponent implements OnInit, OnDestroy { } public ngOnInit() { + if (typeof document !== 'undefined') { + this.subscriptions.push(this.indexInfoService.getStatsLastDate(this.properties).subscribe(lastIndexUpdate => { + if (lastIndexUpdate) { + this.statsUpdateDate = new Date(lastIndexUpdate); + } + })); + } this.keyword = this._fb.control(''); this.subscriptions.push(this.keyword.valueChanges.subscribe(value => { console.log("Keyword Changed!"); @@ -196,7 +205,7 @@ export class MonitorComponent implements OnInit, OnDestroy { for (let filter of this.filters) { if (this.queryParams[filter.filterId]) { for (let value of filter.values) { - if (value.id == this.queryParams[filter.filterId]) { + if (value.id == StringUtils.URIDecode(StringUtils.unquote(this.queryParams[filter.filterId]))) { value.selected = true; filter.countSelectedValues = 1; break; @@ -364,7 +373,7 @@ export class MonitorComponent implements OnInit, OnDestroy { } } if (selected) { - this.queryParams[$event.value.filterId] = selected; + this.queryParams[$event.value.filterId] = StringUtils.quote(StringUtils.URIEncode(selected)); } else { delete this.queryParams[$event.value.filterId]; } @@ -377,7 +386,8 @@ export class MonitorComponent implements OnInit, OnDestroy { private getfl0() { if (this.queryParams["relfundinglevel0_id"] && this.filters.length > 0) { - return this.queryParams["relfundinglevel0_id"].split("::")[this.queryParams["relfundinglevel0_id"].split("::").length - 1]; + let value = StringUtils.URIDecode(StringUtils.unquote(this.queryParams["relfundinglevel0_id"] )); + return value.split("::")[value.split("::").length - 1]; } return null; } diff --git a/src/app/search/searchPages/advanced/searchDataproviders.component.ts b/src/app/search/searchPages/advanced/searchDataproviders.component.ts index 4764697..3f428c6 100644 --- a/src/app/search/searchPages/advanced/searchDataproviders.component.ts +++ b/src/app/search/searchPages/advanced/searchDataproviders.component.ts @@ -40,17 +40,13 @@ export class MonitorAdvancedSearchDataprovidersComponent { if (stakeholder.type === "organization") { let value = stakeholder.index_id; this.customFilter = new SearchCustomFilter("Organization", "relorganizationid", value, ""); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; this.showSwitchSearchLink = true; } else if (stakeholder.type === "funder") { let value = stakeholder.index_id+"||"+stakeholder.index_name+"||"+stakeholder.index_shortName; this.customFilter = new SearchCustomFilter("Funder", "relfunder", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; } else if (stakeholder.type === "ri") { let value = stakeholder.index_id+"||"+stakeholder.index_name; this.customFilter = new SearchCustomFilter("Community", "community", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; } this.initialized = true; } diff --git a/src/app/search/searchPages/advanced/searchProjects.component.ts b/src/app/search/searchPages/advanced/searchProjects.component.ts index ec9a049..e462e02 100644 --- a/src/app/search/searchPages/advanced/searchProjects.component.ts +++ b/src/app/search/searchPages/advanced/searchProjects.component.ts @@ -3,6 +3,7 @@ import {SearchCustomFilter} from "../../../openaireLibrary/searchPages/searchUti import {ActivatedRoute, Router} from "@angular/router"; import {StakeholderService} from "../../../openaireLibrary/monitor/services/stakeholder.service"; import {Subscriber} from "rxjs"; +import {properties} from "../../../../environments/environment"; @Component({ selector: 'monitor-advanced-search-projects', @@ -10,7 +11,9 @@ import {Subscriber} from "rxjs";
+ [includeOnlyResultsAndFilter]="false" [showSwitchSearchLink]="showSwitchSearchLink" + [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/simple/projects'" + >
` @@ -20,6 +23,7 @@ export class MonitorAdvancedSearchProjectsComponent { customFilter: SearchCustomFilter = null; initialized: boolean = false; showSwitchSearchLink:boolean = false; + properties; constructor(private route: ActivatedRoute, private router: Router, private stakeholderService: StakeholderService) { @@ -34,6 +38,7 @@ export class MonitorAdvancedSearchProjectsComponent { } ngOnInit() { + this.properties = properties; this.subscriptions.push(this.route.params.subscribe(params => { if (params['stakeholder']) { this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { @@ -41,19 +46,14 @@ export class MonitorAdvancedSearchProjectsComponent { if (stakeholder.type === "funder") { let value = stakeholder.index_id+"||"+stakeholder.index_name+"||"+stakeholder.index_shortName; this.customFilter = new SearchCustomFilter("Funder", "funder", value, ""); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; this.showSwitchSearchLink = true; } else if (stakeholder.type === "organization") { let value = stakeholder.index_id; this.customFilter = new SearchCustomFilter("Organization", "relorganizationid", value, ""); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; this.showSwitchSearchLink = true; } else if (stakeholder.type === "ri") { let value = stakeholder.index_id+"||"+stakeholder.index_name; this.customFilter = new SearchCustomFilter("Community", "community", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; } this.initialized = true; } diff --git a/src/app/search/searchPages/advanced/searchResearchResults.component.ts b/src/app/search/searchPages/advanced/searchResearchResults.component.ts index 3ff105b..f2e4dc0 100644 --- a/src/app/search/searchPages/advanced/searchResearchResults.component.ts +++ b/src/app/search/searchPages/advanced/searchResearchResults.component.ts @@ -3,6 +3,7 @@ import {SearchCustomFilter} from "../../../openaireLibrary/searchPages/searchUti import {ActivatedRoute, Router} from "@angular/router"; import {StakeholderService} from "../../../openaireLibrary/monitor/services/stakeholder.service"; import {Subscriber} from "rxjs"; +import {properties} from "../../../../environments/environment"; @Component({ selector: 'monitor-advanced-search-results', @@ -11,14 +12,16 @@ import {Subscriber} from "rxjs"; + [showSwitchSearchLink]="true" + [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/research-outcomes'" + > ` }) export class MonitorAdvancedSearchResearchResultsComponent { customFilter: SearchCustomFilter = null; initialized: boolean = false; - + properties; constructor(private route: ActivatedRoute, private router: Router, private stakeholderService: StakeholderService) { @@ -33,6 +36,7 @@ export class MonitorAdvancedSearchResearchResultsComponent { } ngOnInit() { + this.properties = properties; this.subscriptions.push(this.route.params.subscribe(params => { if (params['stakeholder']) { this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { @@ -40,18 +44,12 @@ export class MonitorAdvancedSearchResearchResultsComponent { if (stakeholder.type === "funder") { let value = stakeholder.index_id+"||"+stakeholder.index_name+"||"+stakeholder.index_shortName; this.customFilter = new SearchCustomFilter("Funder", "relfunder", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } else if (stakeholder.type === "organization") { let value = stakeholder.index_id; this.customFilter = new SearchCustomFilter("Organization", "relorganizationid", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } else if (stakeholder.type === "ri") { let value = stakeholder.index_id+"||"+stakeholder.index_name; this.customFilter = new SearchCustomFilter("Community", "community", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } this.initialized = true; } diff --git a/src/app/search/searchPages/simple/searchDataproviders.component.ts b/src/app/search/searchPages/simple/searchDataproviders.component.ts index 012a7a5..c99e133 100644 --- a/src/app/search/searchPages/simple/searchDataproviders.component.ts +++ b/src/app/search/searchPages/simple/searchDataproviders.component.ts @@ -42,8 +42,6 @@ export class MonitorSearchDataprovidersComponent { } else if (stakeholder.type === "organization") { let value = stakeholder.index_id; this.customFilter = new SearchCustomFilter("Organization", "relorganizationid", value, ""); - this.customFilter.isHiddenFilter = false; - this.showSwitchSearchLink = true; } else if (stakeholder.type === "ri") { this.navigateToError(); } diff --git a/src/app/search/searchPages/simple/searchProjects.component.ts b/src/app/search/searchPages/simple/searchProjects.component.ts index 5fcb367..84c3ff4 100644 --- a/src/app/search/searchPages/simple/searchProjects.component.ts +++ b/src/app/search/searchPages/simple/searchProjects.component.ts @@ -3,6 +3,7 @@ import {SearchCustomFilter} from "../../../openaireLibrary/searchPages/searchUti import {ActivatedRoute, Router} from "@angular/router"; import {StakeholderService} from "../../../openaireLibrary/monitor/services/stakeholder.service"; import {Subscriber} from "rxjs"; +import {properties} from "../../../../environments/environment"; @Component({ selector: 'monitor-search-projects', @@ -10,7 +11,8 @@ import {Subscriber} from "rxjs";
+ [includeOnlyResultsAndFilter]="false" + [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/simple/projects'">
` @@ -19,7 +21,7 @@ import {Subscriber} from "rxjs"; export class MonitorSearchProjectsComponent { customFilter: SearchCustomFilter = null; initialized: boolean = false; - + properties constructor(private route: ActivatedRoute, private router: Router, private stakeholderService: StakeholderService) { @@ -34,6 +36,7 @@ export class MonitorSearchProjectsComponent { } ngOnInit() { + this.properties = properties; this.subscriptions.push(this.route.params.subscribe(params => { if (params['stakeholder']) { this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { @@ -41,13 +44,9 @@ export class MonitorSearchProjectsComponent { if (stakeholder.type === "funder") { let value = stakeholder.index_id+"||"+stakeholder.index_name+"||"+stakeholder.index_shortName; this.customFilter = new SearchCustomFilter("Funder", "funder", value, ""); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } else if (stakeholder.type === "organization") { let value = stakeholder.index_id; this.customFilter = new SearchCustomFilter("Organization", "relorganizationid", value, ""); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } else if (stakeholder.type === "ri") { this.navigateToError(); } diff --git a/src/app/search/searchPages/simple/searchResearchResults.component.ts b/src/app/search/searchPages/simple/searchResearchResults.component.ts index fe95b88..aa0e558 100644 --- a/src/app/search/searchPages/simple/searchResearchResults.component.ts +++ b/src/app/search/searchPages/simple/searchResearchResults.component.ts @@ -3,6 +3,7 @@ import {SearchCustomFilter} from "../../../openaireLibrary/searchPages/searchUti import {ActivatedRoute, Router} from "@angular/router"; import {StakeholderService} from "../../../openaireLibrary/monitor/services/stakeholder.service"; import {Subscriber} from "rxjs"; +import {properties} from "../../../../environments/environment"; @Component({ selector: 'monitor-search-results', @@ -11,14 +12,16 @@ import {Subscriber} from "rxjs"; + [showSwitchSearchLink]="true" + [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/simple/research-outcomes'" + > `, }) export class MonitorSearchResearchResultsComponent { customFilter: SearchCustomFilter = null; initialized: boolean = false; - + properties; constructor(private route: ActivatedRoute, private router: Router, private stakeholderService: StakeholderService) { @@ -33,6 +36,7 @@ export class MonitorSearchResearchResultsComponent { } ngOnInit() { + this.properties = properties; this.subscriptions.push(this.route.params.subscribe(params => { if (params['stakeholder']) { this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { @@ -40,18 +44,12 @@ export class MonitorSearchResearchResultsComponent { if (stakeholder.type === "funder") { let value = stakeholder.index_id+"||"+stakeholder.index_name+"||"+stakeholder.index_shortName; this.customFilter = new SearchCustomFilter("Funder", "relfunder", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } else if (stakeholder.type === "organization") { let value = stakeholder.index_id; this.customFilter = new SearchCustomFilter("Organization", "relorganizationid", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } else if (stakeholder.type === "ri") { let value = stakeholder.index_id+"||"+stakeholder.index_name; this.customFilter = new SearchCustomFilter("Community", "community", value, stakeholder.name); - this.customFilter.isHiddenFilter = false; - this.customFilter.promptToAddFilter = true; } this.initialized = true; } diff --git a/src/app/topic/indicators.component.html b/src/app/topic/indicators.component.html index 1e414a2..358410c 100644 --- a/src/app/topic/indicators.component.html +++ b/src/app/topic/indicators.component.html @@ -185,10 +185,12 @@ + [class]="' uk-width-1-1 uk-height-' + + (indicator.height?indicator.height.toLowerCase():'medium')">
- +
@@ -343,7 +345,11 @@
+ label="Chart width"> +
+
{ this.addNumberIndicatorPath(this.statisticsService.getNumberUrl(indicatorPath.source, this.indicatorUtils.getFullUrl(this.stakeholder, indicatorPath)), indicatorPath.parameters, indicatorPath.source, this.getJsonPathAsFormArray(indicatorPath)); }); } else { - this.indicator = new Indicator('', '', '', 'number', 'small', "PUBLIC", []); + this.indicator = new Indicator('', '', '', 'number', 'small', 'small', "PUBLIC", []); this.numberIndicatorFb = this.fb.group({ _id: this.fb.control(this.indicator._id), name: this.fb.control(this.indicator.name, Validators.required), @@ -676,6 +677,7 @@ export class IndicatorsComponent implements OnInit, OnDestroy, OnChanges, AfterV indicatorPaths: this.fb.array([], Validators.required), type: this.fb.control(this.indicator.type), width: this.fb.control(this.indicator.width), + height: this.fb.control(this.indicator.height), defaultId: this.fb.control(this.indicator.defaultId) }); this.addNumberIndicatorPath(); @@ -718,6 +720,7 @@ export class IndicatorsComponent implements OnInit, OnDestroy, OnChanges, AfterV visibility: this.fb.control(this.indicator.visibility), indicatorPaths: this.fb.array([]), width: this.fb.control(this.indicator.width), + height: this.fb.control(this.indicator.height), defaultId: this.fb.control(this.indicator.defaultId) }); this.indicator.indicatorPaths.forEach(indicatorPath => { @@ -726,7 +729,7 @@ export class IndicatorsComponent implements OnInit, OnDestroy, OnChanges, AfterV indicatorPath.safeResourceUrl = this.getSecureUrlByStakeHolder(indicatorPath); }); } else { - this.indicator = new Indicator('', '', '', 'chart', 'medium', "PUBLIC", []); + this.indicator = new Indicator('', '', '', 'chart', 'medium', 'medium', "PUBLIC", []); this.chartIndicatorFb = this.fb.group({ _id: this.fb.control(this.indicator._id), name: this.fb.control(this.indicator.name), @@ -735,6 +738,7 @@ export class IndicatorsComponent implements OnInit, OnDestroy, OnChanges, AfterV visibility: this.fb.control(this.indicator.visibility), indicatorPaths: this.fb.array([]), width: this.fb.control(this.indicator.width, Validators.required), + height: this.fb.control(this.indicator.height, Validators.required), defaultId: this.fb.control(this.indicator.defaultId) }); this.addChartIndicatorPath(); diff --git a/src/app/utils/indicator-utils.ts b/src/app/utils/indicator-utils.ts index b76b271..b6ae2ed 100644 --- a/src/app/utils/indicator-utils.ts +++ b/src/app/utils/indicator-utils.ts @@ -512,12 +512,12 @@ export class IndicatorUtils { } } } - console.debug(values); + // console.debug(values); return values.length > 1; } generateIndicatorByForm(form: any, indicatorPaths: IndicatorPath[], type:IndicatorType, addParameters:boolean = true ): Indicator { let indicator: Indicator = new Indicator(form.name, form.description, form.additionalDescription, type, - form.width, form.visibility, indicatorPaths, form.defaultId); + form.width, form.height, form.visibility, indicatorPaths, form.defaultId); indicator._id = form._id; form.indicatorPaths.forEach((indicatorPath, index) => { indicator.indicatorPaths[index].type = indicatorPath.type;