Resolved 1.0.2 PR

This commit is contained in:
Konstantinos Triantafyllou 2024-06-20 12:43:30 +03:00
commit 6047ad15dd
13 changed files with 102 additions and 401 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "monitor", "name": "monitor",
"version": "1.0.0", "version": "1.0.2",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": " ng serve --port 4500 --disable-host-check --host 0.0.0.0", "start": " ng serve --port 4500 --disable-host-check --host 0.0.0.0",

View File

@ -9,6 +9,7 @@ import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.compo
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
import {properties} from "../../environments/environment"; import {properties} from "../../environments/environment";
import {StakeholderEntities} from "../openaireLibrary/monitor/entities/stakeholder"; import {StakeholderEntities} from "../openaireLibrary/monitor/entities/stakeholder";
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
@Component({ @Component({
selector: 'about', selector: 'about',
@ -583,11 +584,7 @@ import {StakeholderEntities} from "../openaireLibrary/monitor/entities/stakehold
</div> </div>
</div> </div>
`, `,
styles: [` styleUrls: ['about.component.less']
.custom-translate-bottom-left {
transform: translate(-20%, 20%);
}
`]
}) })
export class AboutComponent { export class AboutComponent {
public url: string = null; public url: string = null;
@ -607,6 +604,7 @@ export class AboutComponent {
private _title: Title, private _title: Title,
private seoService: SEOService, private seoService: SEOService,
private _piwikService: PiwikService, private _piwikService: PiwikService,
private layoutService: LayoutService,
private helper: HelperService, private helper: HelperService,
private cdr: ChangeDetectorRef) { private cdr: ChangeDetectorRef) {
} }
@ -621,10 +619,14 @@ export class AboutComponent {
} }
ngAfterViewInit() { ngAfterViewInit() {
this.subscriptions.push(this.layoutService.isBottomIntersecting.subscribe(isBottomIntersecting => {
this.shouldSticky = !isBottomIntersecting;
this.cdr.detectChanges();
}));
if (typeof document !== 'undefined') { if (typeof document !== 'undefined') {
this.offset = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-height')); this.offset = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-height'));
this.cdr.detectChanges(); this.cdr.detectChanges();
this.observeBottom();
} }
} }
@ -636,20 +638,6 @@ export class AboutComponent {
}); });
} }
private observeBottom() {
let bottom = document.getElementById('bottom');
if (bottom) {
let bottomObs = new IntersectionObserver(entries => {
entries.forEach(entry => {
this.shouldSticky = !entry.isIntersecting;
this.cdr.detectChanges();
})
});
this.subscriptions.push(bottomObs);
bottomObs.observe(bottom);
}
}
private updateDescription(description: string) { private updateDescription(description: string) {
this._meta.updateTag({content: description}, "name='description'"); this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'"); this._meta.updateTag({content: description}, "property='og:description'");

View File

@ -17,9 +17,9 @@ declare var UIkit;
<div> <div>
<div class="uk-container"> <div class="uk-container">
<h2 class="uk-text-center uk-margin-large-top uk-margin-large-bottom">Are you a <span <h2 class="uk-text-center uk-margin-large-top uk-margin-large-bottom">Are you a <span
class="uk-text-primary">{{type}}?</span></h2> [ngClass]="titleClass">{{type}}?</span></h2>
</div> </div>
<div [id]="'sticky-' + id" #sticky class="uk-background-default uk-blur-background uk-sticky uk-visible@l" <div [id]="'sticky-' + id" #sticky class="uk-sticky uk-visible@l" [ngClass]="isSticky?backgroundClass:null"
uk-sticky="animation: uk-animation-slide-bottom" [attr.end]="'#' + id" uk-sticky="animation: uk-animation-slide-bottom" [attr.end]="'#' + id"
[attr.start]="'100vh -' + height + 'px'" [attr.offset]="offset"> [attr.start]="'100vh -' + height + 'px'" [attr.offset]="offset">
<div class="uk-container"> <div class="uk-container">
@ -60,6 +60,10 @@ export class YouWeComponent implements AfterViewInit, AfterContentChecked, OnDes
public type: StakeholderEntities.FUNDER | StakeholderEntities.RI | StakeholderEntities.ORGANIZATION = StakeholderEntities.FUNDER; public type: StakeholderEntities.FUNDER | StakeholderEntities.RI | StakeholderEntities.ORGANIZATION = StakeholderEntities.FUNDER;
@Input() @Input()
public id; public id;
@Input()
titleClass: string = "uk-text-primary";
@Input()
backgroundClass: string = "uk-background-default uk-blur-background";
@ViewChild('sticky') sticky: ElementRef; @ViewChild('sticky') sticky: ElementRef;
public isSticky: boolean = false; public isSticky: boolean = false;
public offset: number public offset: number

View File

@ -43,7 +43,7 @@
</div> </div>
<div class="uk-width-expand" uk-scrollspy-class> <div class="uk-width-expand" uk-scrollspy-class>
<div class="uk-position-relative"> <div class="uk-position-relative">
<img style="padding: 1px" src="assets/monitor-assets/home/monitor.jpg"> <img style="padding: 1px" src="assets/monitor-assets/home/monitor.jpg" uk-parallax="y: 300">
<img class="uk-position-top-left" src="assets/monitor-assets/home/mask.svg"> <img class="uk-position-top-left" src="assets/monitor-assets/home/mask.svg">
</div> </div>
</div> </div>
@ -118,7 +118,7 @@
</ng-container> </ng-container>
</div> </div>
<div *ngIf="fundersSize"> <div *ngIf="fundersSize">
<ng-container *ngTemplateOutlet="numberCard; context: {numberSize: fundersSize, name: stakeholderEntities.FUNDERS, <ng-container *ngTemplateOutlet="numberCard; context: {numberSize: fundersSize, name: stakeholderUtils.entities.funders,
url: 'https://explore.openaire.eu/search/find/projects'}"> url: 'https://explore.openaire.eu/search/find/projects'}">
</ng-container> </ng-container>
</div> </div>
@ -206,10 +206,9 @@
</div> </div>
<div class="uk-section uk-container uk-container-large uk-margin-large-bottom"> <div class="uk-section uk-container uk-container-large uk-margin-large-bottom">
<div class="uk-width-1-2@m uk-margin-bottom"> <div class="uk-width-1-2@m uk-margin-bottom">
<h2 class="uk-heading-xlarge">{{stakeholderEntities.STAKEHOLDERS}} in action<span <h2 class="uk-heading-xlarge">{{stakeholderUtils.entities.stakeholders}} in action<span class="uk-text-primary">.</span></h2>
class="uk-text-primary">.</span></h2>
<div class="uk-text-large"> <div class="uk-text-large">
View existing {{stakeholderEntities.STAKEHOLDERS | lowercase}} from collaborating organizations. Get a View existing {{stakeholderUtils.entities.stakeholders | lowercase}} from collaborating organizations. Get a
preview on how they work and how our service can be customized to serve you. preview on how they work and how our service can be customized to serve you.
</div> </div>
</div> </div>
@ -227,30 +226,17 @@
<div> <div>
<slider-tabs position="horizontal"> <slider-tabs position="horizontal">
<slider-tab [tabId]="'all'" tabTitle="All"></slider-tab> <slider-tab [tabId]="'all'" tabTitle="All"></slider-tab>
<slider-tab [tabId]="stakeholderEntities.FUNDERS" <slider-tab *ngFor="let type of types" [tabId]="type" tabTitle="{{getTitle(type) | titlecase}}"></slider-tab>
tabTitle="{{stakeholderEntities.FUNDERS | titlecase}}"></slider-tab>
<slider-tab [tabId]="stakeholderEntities.RIS"
tabTitle="{{stakeholderEntities.RIS | titlecase}}"></slider-tab>
<slider-tab [tabId]="stakeholderEntities.ORGANIZATIONS"
tabTitle="{{stakeholderEntities.ORGANIZATIONS | titlecase}}"></slider-tab>
</slider-tabs> </slider-tabs>
</div> </div>
<ul class="uk-switcher"> <ul *ngIf="stakeholdersSlider" class="uk-switcher">
<li> <li>
<ng-container <ng-container
*ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider.stakeholders}"></ng-container> *ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider['all']}"></ng-container>
</li> </li>
<li> <li *ngFor="let type of types">
<ng-container <ng-container
*ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider.funders}"></ng-container> *ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider[type]}"></ng-container>
</li>
<li>
<ng-container
*ngTemplateOutlet="sliderTemplate; context: {slides:stakeholdersSlider.ris}"></ng-container>
</li>
<li>
<ng-container
*ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider.organizations}"></ng-container>
</li> </li>
</ul> </ul>
</ng-container> </ng-container>
@ -405,7 +391,7 @@
</ng-container> </ng-container>
</div> </div>
<div *ngIf="fundersSize"> <div *ngIf="fundersSize">
<ng-container *ngTemplateOutlet="numberCardMobile; context: {numberSize: fundersSize, name: stakeholderEntities.FUNDERS, <ng-container *ngTemplateOutlet="numberCardMobile; context: {numberSize: fundersSize, name: stakeholderUtils.entities.funders,
url: 'https://explore.openaire.eu/search/find/projects'}"> url: 'https://explore.openaire.eu/search/find/projects'}">
</ng-container> </ng-container>
</div> </div>
@ -497,10 +483,10 @@
</div> </div>
<div class="uk-section uk-section-large uk-padding-remove-bottom uk-container uk-container-large"> <div class="uk-section uk-section-large uk-padding-remove-bottom uk-container uk-container-large">
<div class="uk-margin-bottom"> <div class="uk-margin-bottom">
<h2 class="uk-heading-xlarge">{{stakeholderEntities.STAKEHOLDERS}} in action<span <h2 class="uk-heading-xlarge">{{stakeholderUtils.entities.stakeholders}} in action<span
class="uk-text-primary">.</span></h2> class="uk-text-primary">.</span></h2>
<div class="uk-text-large"> <div class="uk-text-large">
View existing {{stakeholderEntities.STAKEHOLDERS | lowercase}} from collaborating organizations. Get a View existing {{stakeholderUtils.entities.stakeholders | lowercase}} from collaborating organizations. Get a
preview on how they work and how our service can be customized to serve you. preview on how they work and how our service can be customized to serve you.
</div> </div>
</div> </div>
@ -519,12 +505,8 @@
<div class="uk-padding-small uk-padding-remove-right"> <div class="uk-padding-small uk-padding-remove-right">
<slider-tabs position="horizontal"> <slider-tabs position="horizontal">
<slider-tab [tabId]="'all'" tabTitle="All"></slider-tab> <slider-tab [tabId]="'all'" tabTitle="All"></slider-tab>
<slider-tab [tabId]="stakeholderEntities.FUNDERS" <slider-tab *ngFor="let type of types" [tabId]="type"
tabTitle="{{stakeholderEntities.FUNDERS | titlecase}}"></slider-tab> tabTitle="{{getTitle(type) | titlecase}}"></slider-tab>
<slider-tab [tabId]="stakeholderEntities.RIS"
tabTitle="{{stakeholderEntities.RIS | titlecase}}"></slider-tab>
<slider-tab [tabId]="stakeholderEntities.ORGANIZATIONS"
tabTitle="{{stakeholderEntities.ORGANIZATIONS | titlecase}}"></slider-tab>
</slider-tabs> </slider-tabs>
</div> </div>
<ul class="uk-switcher uk-margin-top uk-overflow-hidden"> <ul class="uk-switcher uk-margin-top uk-overflow-hidden">
@ -540,38 +522,14 @@
</div> </div>
</div> </div>
</li> </li>
<li [id]="stakeholderEntities.FUNDERS" class="uk-overflow-auto"> <li *ngFor="let type of types" [id]="type" class="uk-overflow-auto">
<div class="uk-padding-small uk-padding-remove-right" <div class="uk-padding-small uk-padding-remove-right"
uk-height-match="target: .uk-card; row: false"> uk-height-match="target: .uk-card; row: false">
<div class="uk-flex uk-grid uk-grid-small uk-flex-nowrap" <div class="uk-grid uk-grid-small uk-flex-nowrap"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true"> uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<div *ngFor="let funder of funders" class="uk-width-4-5 uk-width-2-5@s uk-flex-none" <div *ngFor="let stakeholder of getStakeholdersByType(type)"
uk-scrollspy-class>
<browse-stakeholder [stakeholder]="funder"></browse-stakeholder>
</div>
</div>
</div>
</li>
<li [id]="stakeholderEntities.RIS" class="uk-overflow-auto">
<div class="uk-padding-small uk-padding-remove-right"
uk-height-match="target: .uk-card; row: false">
<div class="uk-flex uk-grid uk-grid-small uk-flex-nowrap"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<div *ngFor="let ri of ris" class="uk-width-4-5 uk-width-2-5@s uk-flex-none"
uk-scrollspy-class>
<browse-stakeholder [stakeholder]="ri"></browse-stakeholder>
</div>
</div>
</div>
</li>
<li [id]="stakeholderEntities.ORGANIZATIONS" class="uk-overflow-auto">
<div class="uk-padding-small uk-padding-remove-right"
uk-height-match="target: .uk-card; row: false">
<div class="uk-flex uk-grid uk-grid-small uk-flex-nowrap"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<div *ngFor="let organization of organizations"
class="uk-width-4-5 uk-width-2-5@s uk-flex-none" uk-scrollspy-class> class="uk-width-4-5 uk-width-2-5@s uk-flex-none" uk-scrollspy-class>
<browse-stakeholder [stakeholder]="organization"></browse-stakeholder> <browse-stakeholder [stakeholder]="stakeholder"></browse-stakeholder>
</div> </div>
</div> </div>
</div> </div>

View File

@ -24,7 +24,12 @@ import {NumberUtils} from "../openaireLibrary/utils/number-utils.class";
import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service"; import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
import {LocalStorageService} from "../openaireLibrary/services/localStorage.service"; import {LocalStorageService} from "../openaireLibrary/services/localStorage.service";
import {Stakeholder, StakeholderEntities, StakeholderInfo} from "../openaireLibrary/monitor/entities/stakeholder"; import {
Stakeholder,
StakeholderEntities,
StakeholderInfo,
StakeholderType
} from "../openaireLibrary/monitor/entities/stakeholder";
import {User} from "../openaireLibrary/login/utils/helper.class"; import {User} from "../openaireLibrary/login/utils/helper.class";
import {UserManagementService} from "../openaireLibrary/services/user-management.service"; import {UserManagementService} from "../openaireLibrary/services/user-management.service";
import {properties} from "../../environments/environment"; import {properties} from "../../environments/environment";
@ -34,6 +39,7 @@ import {IDeactivateComponent} from "../openaireLibrary/utils/can-exit.guard";
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields"; import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
import {isPlatformServer} from '@angular/common'; import {isPlatformServer} from '@angular/common';
import {LayoutService} from '../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service'; import {LayoutService} from '../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service';
import {StakeholderUtils} from "../openaireLibrary/monitor-admin/utils/indicator-utils";
@Component({ @Component({
selector: 'home', selector: 'home',
@ -44,12 +50,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
public pageTitle = "OpenAIRE | Monitor"; public pageTitle = "OpenAIRE | Monitor";
public description = "OpenAIRE - Monitor, A new era of monitoring research. Open data. Open methodologies. Work together with us to view, understand and visualize research statistics and indicators."; public description = "OpenAIRE - Monitor, A new era of monitoring research. Open data. Open methodologies. Work together with us to view, understand and visualize research statistics and indicators.";
public stakeholders: StakeholderInfo[] = []; public stakeholders: StakeholderInfo[] = [];
public stakeholdersSlider: { public stakeholdersSlider: any;
stakeholders: StakeholderInfo[][];
funders: StakeholderInfo[][];
ris: StakeholderInfo[][];
organizations: StakeholderInfo[][];
};
public selected: Stakeholder = null; public selected: Stakeholder = null;
public pageContents = null; public pageContents = null;
public divContents = null; public divContents = null;
@ -59,7 +60,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
public errorCodes: ErrorCodes; public errorCodes: ErrorCodes;
public properties: EnvProperties = properties; public properties: EnvProperties = properties;
public openaireEntities = OpenaireEntities; public openaireEntities = OpenaireEntities;
public stakeholderEntities = StakeholderEntities; public stakeholderUtils: StakeholderUtils = new StakeholderUtils();
public directLink: boolean = true; public directLink: boolean = true;
public publicationsSize: any = null; public publicationsSize: any = null;
public datasetsSize: any = null; public datasetsSize: any = null;
@ -235,8 +236,14 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
this.handleError("Error getting number of software data", err); this.handleError("Error getting number of software data", err);
} }
)); ));
}
get types(): StakeholderType[] {
return this.stakeholderUtils.types.map(option => option.value).filter(type => this.stakeholders.findIndex(stakeholder => stakeholder.type === type) > -1);
}
getTitle(type: string) {
return this.stakeholderUtils.entities[type + 's'] ? this.stakeholderUtils.entities[type + 's'] : type;
} }
public getStakeholders() { public getStakeholders() {
@ -251,11 +258,11 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
this.sort(this.stakeholders); this.sort(this.stakeholders);
this.stakeholders = this.publicStakeholders.concat(this.privateStakeholders); this.stakeholders = this.publicStakeholders.concat(this.privateStakeholders);
this.stakeholdersSlider = { this.stakeholdersSlider = {
stakeholders: this.stakeholderSlider(this.stakeholders), all: this.stakeholderSlider(this.stakeholders)
funders: this.stakeholderSlider(this.funders), }
ris: this.stakeholderSlider(this.ris), this.types.forEach(type => {
organizations: this.stakeholderSlider(this.organizations) this.stakeholdersSlider[type] = this.stakeholderSlider(this.getStakeholdersByType(type));
}; });
} }
this.loading = false; this.loading = false;
}, },
@ -294,28 +301,8 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
return this.stakeholders.filter(stakeholder => stakeholder.visibility !== "PUBLIC"); return this.stakeholders.filter(stakeholder => stakeholder.visibility !== "PUBLIC");
} }
get funders(): StakeholderInfo[] { getStakeholdersByType(type: StakeholderType = null) {
if (this.stakeholders) { return this.stakeholders.filter(stakeholder => !type || stakeholder.type === type)
return this.stakeholders.filter(stakeholder => stakeholder.type === "funder");
} else {
return [];
}
}
get ris(): StakeholderInfo[] {
if (this.stakeholders) {
return this.stakeholders.filter(stakeholder => stakeholder.type === "ri");
} else {
return [];
}
}
get organizations(): StakeholderInfo[] {
if (this.stakeholders) {
return this.stakeholders.filter(stakeholder => stakeholder.type === "organization");
} else {
return [];
}
} }
private handleError(message: string, error): number { private handleError(message: string, error): number {

View File

@ -103,7 +103,7 @@ export class MyStakeholdersComponent {
this.stakeholders = []; this.stakeholders = [];
this.subscriptions.push(this.stakeholderService.getMyStakeholders(properties.monitorServiceAPIURL).subscribe( this.subscriptions.push(this.stakeholderService.getMyStakeholders(properties.monitorServiceAPIURL).subscribe(
stakeholders => { stakeholders => {
this.stakeholders = StakeholderInfo.toStakeholderInfo(stakeholders, this.user); this.stakeholders = StakeholderInfo.toStakeholderInfo(stakeholders.standalone.concat(stakeholders.umbrella), this.user);
this.sort(this.stakeholders); this.sort(this.stakeholders);
this.loading = false; this.loading = false;
}, },

@ -1 +1 @@
Subproject commit 1a7624eed148c35659891198c403580dd48e3619 Subproject commit 4396999ce03bb96543f258f64e64459546b86e19

View File

@ -11,20 +11,21 @@ import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
import {UserManagementService} from "../openaireLibrary/services/user-management.service"; import {UserManagementService} from "../openaireLibrary/services/user-management.service";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
import {NewSearchPageComponent, SearchForm} from "../openaireLibrary/searchPages/searchUtils/newSearchPage.component"; import {NewSearchPageComponent, SearchForm} from "../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
import {StakeholderEntities, StakeholderInfo} from "../openaireLibrary/monitor/entities/stakeholder"; import {StakeholderInfo, StakeholderType} from "../openaireLibrary/monitor/entities/stakeholder";
import {properties} from "../../environments/environment"; import {properties} from "../../environments/environment";
import {Subscriber} from "rxjs"; import {Subscriber} from "rxjs";
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component"; import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
import {TitleCasePipe} from "@angular/common"; import {TitleCasePipe} from "@angular/common";
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service"; import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
import {StakeholderUtils} from "../openaireLibrary/monitor-admin/utils/indicator-utils";
@Component({ @Component({
selector: 'search-stakeholders', selector: 'search-stakeholders',
template: ` template: `
<new-search-page pageTitle="OpenAIRE-Monitor | Browse {{this.stakeholderEntities.STAKEHOLDERS}}" <new-search-page pageTitle="OpenAIRE-Monitor | Browse {{stakeholderUtils.entities.stakeholders}}"
[hasPrefix]=false [hasPrefix]=false
[formPlaceholderText]="'Search ' + (!isMobile?'OpenAIRE Monitor ':'') + this.stakeholderEntities.STAKEHOLDERS" [formPlaceholderText]="'Search ' + (!isMobile?'OpenAIRE Monitor ':'') +stakeholderUtils.entities.stakeholders"
[type]="(results.length > 1) ? this.stakeholderEntities.STAKEHOLDERS:this.stakeholderEntities.STAKEHOLDER" [type]="(results.length > 1) ? stakeholderUtils.entities.stakeholders:stakeholderUtils.entities.stakeholders"
entityType="stakeholder" entityType="stakeholder"
[results]="results" [searchUtils]="searchUtils" [results]="results" [searchUtils]="searchUtils"
[showResultCount]=true [showResultCount]=true
@ -43,6 +44,7 @@ export class SearchStakeholdersComponent {
private errorMessages: ErrorMessagesComponent; private errorMessages: ErrorMessagesComponent;
public results: StakeholderInfo[] = []; public results: StakeholderInfo[] = [];
public totalResults: StakeholderInfo[]; public totalResults: StakeholderInfo[];
public stakeholderUtils: StakeholderUtils = new StakeholderUtils();
public subscriptions = []; public subscriptions = [];
public filters = []; public filters = [];
public searchFields: SearchFields = new SearchFields(); public searchFields: SearchFields = new SearchFields();
@ -64,8 +66,7 @@ export class SearchStakeholdersComponent {
}; };
public keyword = ""; public keyword = "";
public searchLink; public searchLink;
public stakeholderEntities = StakeholderEntities; public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'Browse ' + this.stakeholderUtils.entities.stakeholders}];
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'Browse ' + this.stakeholderEntities.STAKEHOLDERS}];
public searchForm: SearchForm = {class: 'uk-background-muted', dark: false}; public searchForm: SearchForm = {class: 'uk-background-muted', dark: false};
public isMobile: boolean = false; public isMobile: boolean = false;
properties: EnvProperties = properties; properties: EnvProperties = properties;
@ -100,15 +101,15 @@ export class SearchStakeholdersComponent {
this.searchPage.refineFields = this.refineFields; this.searchPage.refineFields = this.refineFields;
this.searchLink = this.properties.searchLinkToStakeholders; this.searchLink = this.properties.searchLinkToStakeholders;
this.selectedFields = []; this.selectedFields = [];
this.searchPage.prepareSearchPage(this.fieldIds, this.selectedFields, this.refineFields, [], this.fieldIdsMap, null, params, "stakeholder", null); this.searchPage.prepareSearchPage(this.fieldIds, this.selectedFields, this.refineFields, [], [], this.fieldIdsMap, null, params, "stakeholder", null);
let queryParams = params; let queryParams = params;
if (typeof document !== 'undefined') { if (typeof document !== 'undefined') {
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
this.user = user; this.user = user;
this.initFunders(queryParams); this.initResults(queryParams);
})); }));
} else { } else {
this.initFunders(queryParams); this.initResults(queryParams);
} }
})); }));
this.layoutService.isMobile.subscribe(isMobile => { this.layoutService.isMobile.subscribe(isMobile => {
@ -125,28 +126,19 @@ export class SearchStakeholdersComponent {
}); });
} }
private parseResults(data: any) {
for (let i = 0; i < data.length; i++) {
this.totalResults[i] = data[i];
this.totalResults[i].isManager = this.isManager(data[i]);
this.totalResults[i].isMember = this.isMember(data[i]);
}
}
/** /**
* Initialize stakeholders from Communities APIs * Initialize stakeholders from Communities APIs
* *
* @param params * @param params
*/ */
private initFunders(params) { private initResults(params) {
if (this.totalResults) { if (this.totalResults) {
this.parseResults(this.totalResults); this.totalResults = StakeholderInfo.toStakeholderInfo(this.totalResults, this.user);
this._getResults(params); this._getResults(params);
} else { } else {
this.subscriptions.push(this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe( this.subscriptions.push(this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe(
data => { data => {
this.totalResults = []; this.totalResults = StakeholderInfo.toStakeholderInfo(data, this.user);
this.parseResults(data);
this._getResults(params); this._getResults(params);
}, },
err => { err => {
@ -430,13 +422,8 @@ export class SearchStakeholdersComponent {
} }
} }
private isManager(stakeholder) { get types(): StakeholderType[] {
return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) return this.stakeholderUtils.types.map(option => option.value).filter(type => this.totalResults.findIndex(stakeholder => stakeholder.type === type) > -1);
|| Session.isCommunityCurator(this.user) || Session.isManager(stakeholder.type, stakeholder.alias, this.user);
}
private isMember(stakeholder) {
return this.isManager(stakeholder) || Session.isSubscribedTo(stakeholder.type, stakeholder.alias, this.user);
} }
/** /**
@ -450,8 +437,8 @@ export class SearchStakeholdersComponent {
let value_original_ids = []; let value_original_ids = [];
filter_names.push("Type"); filter_names.push("Type");
filter_ids.push("type"); filter_ids.push("type");
value_names.push([this.stakeholderEntities.FUNDERS, this.titleCasePipe.transform(this.stakeholderEntities.RIS), this.titleCasePipe.transform(this.stakeholderEntities.ORGANIZATIONS)]); value_names.push(this.types.map(type => this.stakeholderUtils.entities[type + 's']));
value_original_ids.push(["funder", "ri", "organization"]); value_original_ids.push(this.types);
filter_names.push("Accessibility"); filter_names.push("Accessibility");
filter_ids.push("access"); filter_ids.push("access");
if (!this.user) { if (!this.user) {

@ -1 +1 @@
Subproject commit e77e591bbb8264895adb9934210844e70f01e219 Subproject commit 5026b8b38fcae493ec7bcdc272bf167798c18fa3

@ -1 +1 @@
Subproject commit 5b2ec5ad3c5d43fcd69f82ddfa3a841a0d34ba0c Subproject commit 6524ee362c8fc8fa6e482144920e305198e54fc8

View File

@ -1,91 +1,16 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common, commonBeta} from "../app/openaireLibrary/utils/properties/environments/environment";
export let properties: EnvProperties = { let props: EnvProperties = {
environment: "beta", environment: "beta",
enablePiwikTrack: true, enablePiwikTrack: true,
useCache: true,
showContent: true,
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
statisticsFrameNewAPIURL: "https://stats.madgik.di.uoa.gr/stats-api/",
useNewStatistisTool: true,
claimsAPIURL: "https://beta.services.openaire.eu/claims/rest/claimsService/",
searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",
csvAPIURL: "https://beta.services.openaire.eu/search/v2/api/reports",
searchCrossrefAPIURL: "https://api.crossref.org/works",
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
handleURL: "http://hdl.handle.net/",
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
zenodo: "https://zenodo.org/",
zenodoCommunities: "https://zenodo.org/api/communities/",
helpdesk: "https://www.openaire.eu/support/helpdesk",
utilsService: "https://demo.openaire.eu/utils-service",
vocabulariesAPI: "https://beta.services.openaire.eu/provision/mvc/vocabularies/",
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "298",
registryUrl: 'https://beta.services.openaire.eu/uoa-user-management/api/registry/',
loginUrl: "https://beta.services.openaire.eu/login-service/openid_connect_login",
userInfoUrl: "https://beta.services.openaire.eu/login-service/userInfo",
logoutUrl: "https://beta.services.openaire.eu/login-service/openid_logout",
cookieDomain: ".openaire.eu",
feedbackmail: "feedback@openaire.eu",
cacheUrl: "https://demo.openaire.eu/cache/get?url=",
monitorServiceAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/",
adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/", adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/",
adminToolsCommunity: "monitor",
adminToolsPortalType: "monitor", adminToolsPortalType: "monitor",
datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/search/", adminToolsCommunity: "monitor",
contextsAPI: "https://beta.services.openaire.eu/openaire/context",
communityAPI: "https://beta.services.openaire.eu/openaire/community/",
communitiesAPI: "https://beta.services.openaire.eu/openaire/community/communities",
csvLimit: 2000,
pagingLimit: 20,
resultsPerPage: 10,
baseLink : "",
domain : "https://beta.monitor.openaire.eu", domain : "https://beta.monitor.openaire.eu",
afterLoginRedirectLink: '/my-dashboards', afterLoginRedirectLink: '/my-dashboards',
searchLinkToResult: "/search/result?id=",
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrganization: "/search/organization?organizationId=",
searchLinkToOrp: "/search/other?orpId=",
searchLinkToStakeholders: "/browse",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToProjects: "/search/find/projects",
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToJournals: "/search/journals",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
searchLinkToAdvancedProjects: "/search/advanced/projects",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
errorLink: '/error',
lastIndexInformationLink: "https://beta.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
claimsInformationLink: "https://beta.openaire.eu/linking",
depositLearnHowPage: "/participate/deposit/learn-how",
depositSearchPage: "/participate/deposit/search",
shareInZenodoPage: "/participate/deposit/zenodo",
reCaptchaSiteKey: "6LezhVIUAAAAAOb4nHDd87sckLhMXFDcHuKyS76P",
admins: ["feedback@openaire.eu"],
lastIndexUpdate: "2019-08-07",
indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/",
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/",
b2noteAPIURL: "http://b2note-dev.bsc.es/",
footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452"
}; };
export let properties: EnvProperties = {
...common, ...commonBeta, ...props
}

View File

@ -1,91 +1,16 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common, commonProd} from "../app/openaireLibrary/utils/properties/environments/environment";
export let properties: EnvProperties = { let props: EnvProperties = {
environment: "production", environment: "production",
enablePiwikTrack: true, enablePiwikTrack: true,
useCache: true,
showContent: true,
statisticsAPIURL: "https://services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://www.openaire.eu/stats/",
statisticsFrameNewAPIURL: "",
useNewStatistisTool: false,
claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/",
searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",
csvAPIURL: "https://services.openaire.eu/search/v2/api/reports",
searchCrossrefAPIURL: "https://api.crossref.org/works",
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
handleURL: "http://hdl.handle.net/",
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
zenodo: "https://zenodo.org/",
zenodoCommunities: "https://zenodo.org/api/communities/",
helpdesk: "https://www.openaire.eu/support/helpdesk",
utilsService: "https://explore.openaire.eu/utils-service",
vocabulariesAPI: "https://services.openaire.eu/provision/mvc/vocabularies/",
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "104",
registryUrl: 'https://services.openaire.eu/uoa-user-management/api/registry/',
loginUrl: "https://services.openaire.eu/login-service/openid_connect_login",
userInfoUrl: "https://services.openaire.eu/login-service/userInfo",
logoutUrl: "https://services.openaire.eu/login-service/openid_logout",
cookieDomain: ".openaire.eu",
feedbackmail: "feedback@openaire.eu",
cacheUrl: "https://explore.openaire.eu/cache/get?url=",
datasourcesAPI: "https://services.openaire.eu/openaire/ds/search/",
monitorServiceAPIURL: "https://services.openaire.eu/uoa-monitor-service",
adminToolsAPIURL: "https://services.openaire.eu/uoa-monitor-service/", adminToolsAPIURL: "https://services.openaire.eu/uoa-monitor-service/",
adminToolsPortalType: "monitor", adminToolsPortalType: "monitor",
adminToolsCommunity: "monitor", adminToolsCommunity: "monitor",
contextsAPI: "https://services.openaire.eu/openaire/context",
communityAPI: "https://services.openaire.eu/openaire/community/",
communitiesAPI: "https://services.openaire.eu/openaire/community/communities",
csvLimit: 2000,
pagingLimit: 20,
resultsPerPage: 10,
baseLink : "",
domain : "https://monitor.openaire.eu", domain : "https://monitor.openaire.eu",
afterLoginRedirectLink: '/my-dashboards', afterLoginRedirectLink: '/my-dashboards',
searchLinkToResult: "/search/result?id=",
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrp: "/search/other?orpId=",
searchLinkToOrganization: "/search/organization?organizationId=",
searchLinkToStakeholders: "/browse",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToProjects: "/search/find/projects",
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToJournals: "/search/journals",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
searchLinkToAdvancedProjects: "/search/advanced/projects",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
errorLink: '/error',
lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
claimsInformationLink: "https://www.openaire.eu/linking",
depositLearnHowPage: "/participate/deposit/learn-how",
depositSearchPage: "/participate/deposit/search",
shareInZenodoPage: "/participate/deposit/zenodo",
reCaptchaSiteKey: "6LezhVIUAAAAAOb4nHDd87sckLhMXFDcHuKyS76P",
admins: ["feedback@openaire.eu"],
lastIndexUpdate: "2019-07-24",
indexInfoAPI: "https://services.openaire.eu/openaire/info/",
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/",
b2noteAPIURL: "http://b2note-dev.bsc.es/",
footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452"
}; };
export let properties: EnvProperties = {
...common, ...commonProd, ...props
}

View File

@ -1,91 +1,18 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common, commonDev} from "../app/openaireLibrary/utils/properties/environments/environment";
export let properties: EnvProperties = { let props: EnvProperties = {
environment: "development", environment: "development",
enablePiwikTrack: false, enablePiwikTrack: false,
useCache: false, useCache: false,
showContent: true, showContent: true,
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
statisticsFrameNewAPIURL: "http://88.197.53.71:8080/stats-api/",
useNewStatistisTool: false,
claimsAPIURL: "http://scoobydoo.di.uoa.gr:8080/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/",
searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",
csvAPIURL: "http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/reports",
searchCrossrefAPIURL: "https://api.crossref.org/works",
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
handleURL: "http://hdl.handle.net/",
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
zenodo: "https://zenodo.org/",
zenodoCommunities: "https://zenodo.org/api/communities/",
helpdesk: "https://www.openaire.eu/support/helpdesk",
utilsService: "http://mpagasas.di.uoa.gr:8000",
vocabulariesAPI: "https://beta.services.openaire.eu/provision/mvc/vocabularies/",
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "298",
registryUrl: 'http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/',
loginUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_connect_login",
userInfoUrl: "http://mpagasas.di.uoa.gr:19080/login-service/userInfo",
logoutUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_logout",
cookieDomain: ".di.uoa.gr",
feedbackmail: "openaire.test@gmail.com",
cacheUrl: "http://scoobydoo.di.uoa.gr:3000/get?url=",
monitorServiceAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service",
adminToolsAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service/", adminToolsAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service/",
adminToolsPortalType: "monitor", adminToolsPortalType: "monitor",
adminToolsCommunity: "monitor", adminToolsCommunity: "monitor",
datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/search/", domain : "http://mpagasas.di.uoa.gr:4000",
contextsAPI: "https://dev-openaire.d4science.org/openaire/context",
communityAPI: "https://dev-openaire.d4science.org/openaire/community/",
communitiesAPI: "https://dev-openaire.d4science.org/openaire/community/communities",
csvLimit: 2000,
pagingLimit: 20,
resultsPerPage: 10,
baseLink : "",
domain : "http://dl170.madgik.di.uoa.gr/monitor",
afterLoginRedirectLink: '/my-dashboards', afterLoginRedirectLink: '/my-dashboards',
searchLinkToResult: "/search/result?id=",
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrganization: "/search/organization?organizationId=",
searchLinkToOrp: "/search/other?orpId=",
searchLinkToStakeholders: "/browse",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToProjects: "/search/find/projects",
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToJournals: "/search/journals",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
searchLinkToAdvancedProjects: "/search/advanced/projects",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
errorLink: '/error',
lastIndexInformationLink: "https://beta.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
claimsInformationLink: "https://beta.openaire.eu/linking",
depositLearnHowPage: "/participate/deposit/learn-how",
depositSearchPage: "/participate/deposit/search",
shareInZenodoPage: "/participate/deposit/zenodo",
reCaptchaSiteKey: "6LcVtFIUAAAAAB2ac6xYivHxYXKoUvYRPi-6_rLu",
admins: ["kostis30fylloy@gmail.com"],
lastIndexUpdate: "2019-05-16",
indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/",
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/",
b2noteAPIURL: "http://b2note-dev.bsc.es/",
footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452"
}; };
export let properties: EnvProperties = {
...common, ...commonDev, ...props
}