Merge from origin/develop
This commit is contained in:
commit
fcc8cd653d
|
@ -14,6 +14,7 @@ import axios, {AxiosHeaders} from "axios";
|
||||||
import {Stakeholder} from "./src/app/openaireLibrary/monitor/entities/stakeholder";
|
import {Stakeholder} from "./src/app/openaireLibrary/monitor/entities/stakeholder";
|
||||||
import {CacheIndicators} from "./src/app/openaireLibrary/monitor-admin/utils/cache-indicators/cache-indicators";
|
import {CacheIndicators} from "./src/app/openaireLibrary/monitor-admin/utils/cache-indicators/cache-indicators";
|
||||||
import {Session, User} from "./src/app/openaireLibrary/login/utils/helper.class";
|
import {Session, User} from "./src/app/openaireLibrary/login/utils/helper.class";
|
||||||
|
import {UserManagementService} from "./src/app/openaireLibrary/services/user-management.service";
|
||||||
|
|
||||||
var bodyParser = require('body-parser');
|
var bodyParser = require('body-parser');
|
||||||
var jsonParser = bodyParser.json();
|
var jsonParser = bodyParser.json();
|
||||||
|
@ -72,7 +73,7 @@ export function app() {
|
||||||
async function checkPermissions(req, res, access: (stakeholder, user) => void) {
|
async function checkPermissions(req, res, access: (stakeholder, user) => void) {
|
||||||
let headers: AxiosHeaders = new AxiosHeaders();
|
let headers: AxiosHeaders = new AxiosHeaders();
|
||||||
headers.set('Cookie', req.headers.cookie);
|
headers.set('Cookie', req.headers.cookie);
|
||||||
let userinfoRes = (await axios.get<any>(properties.userInfoUrl, {
|
let userinfoRes = (await axios.get<any>(UserManagementService.userInfoUrl(), {
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
headers: headers
|
headers: headers
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
|
|
|
@ -18,7 +18,7 @@ import {LinksResolver} from "./search/links-resolver";
|
||||||
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
|
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
|
||||||
import {properties} from "../environments/environment";
|
import {properties} from "../environments/environment";
|
||||||
import {ConfigurationService} from "./openaireLibrary/utils/configuration/configuration.service";
|
import {ConfigurationService} from "./openaireLibrary/utils/configuration/configuration.service";
|
||||||
import {StakeholderUtils} from "./openaireLibrary/monitor-admin/utils/indicator-utils";
|
import {StakeholderConfiguration, StakeholderUtils} from "./openaireLibrary/monitor-admin/utils/indicator-utils";
|
||||||
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
|
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
|
||||||
import {ConnectHelper} from "./openaireLibrary/connect/connectHelper";
|
import {ConnectHelper} from "./openaireLibrary/connect/connectHelper";
|
||||||
import {ResourcesService} from "./openaireLibrary/monitor/services/resources.service";
|
import {ResourcesService} from "./openaireLibrary/monitor/services/resources.service";
|
||||||
|
@ -26,6 +26,8 @@ import {StringUtils} from "./openaireLibrary/utils/string-utils.class";
|
||||||
import {
|
import {
|
||||||
NotificationConfiguration
|
NotificationConfiguration
|
||||||
} from "./openaireLibrary/notifications/notifications-sidebar/notifications-sidebar.component";
|
} from "./openaireLibrary/notifications/notifications-sidebar/notifications-sidebar.component";
|
||||||
|
import {StakeholderBaseComponent} from "./openaireLibrary/monitor-admin/utils/stakeholder-base.component";
|
||||||
|
import {SidebarBaseComponent} from "./openaireLibrary/dashboard/sharedComponents/sidebar/sidebar-base.component";
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -33,12 +35,9 @@ import {
|
||||||
templateUrl: './app.component.html',
|
templateUrl: './app.component.html',
|
||||||
styleUrls: ['app.component.less']
|
styleUrls: ['app.component.less']
|
||||||
})
|
})
|
||||||
export class AppComponent implements OnInit, OnDestroy {
|
export class AppComponent extends SidebarBaseComponent implements OnInit {
|
||||||
properties: EnvProperties = properties;
|
|
||||||
user: User;
|
user: User;
|
||||||
updateStakeholder: boolean = true;
|
updateStakeholder: boolean = true;
|
||||||
params: BehaviorSubject<Params> = new BehaviorSubject<Params>(null);
|
|
||||||
data: BehaviorSubject<Data> = new BehaviorSubject<Data>(null);
|
|
||||||
hasSidebar: boolean = false;
|
hasSidebar: boolean = false;
|
||||||
hasHeader: boolean = false;
|
hasHeader: boolean = false;
|
||||||
hasAdminMenu: boolean = false;
|
hasAdminMenu: boolean = false;
|
||||||
|
@ -46,13 +45,10 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
isFrontPage: boolean = false;
|
isFrontPage: boolean = false;
|
||||||
isMobile: boolean = false;
|
isMobile: boolean = false;
|
||||||
view: Visibility;
|
view: Visibility;
|
||||||
sideBarItems: MenuItem[] = [];
|
|
||||||
backItem: MenuItem = null;
|
|
||||||
menuItems: MenuItem[] = [];
|
menuItems: MenuItem[] = [];
|
||||||
notificationGroupsInitialized: boolean = false;
|
notificationGroupsInitialized: boolean = false;
|
||||||
notificationConfiguration: NotificationConfiguration = new NotificationConfiguration();
|
notificationConfiguration: NotificationConfiguration = new NotificationConfiguration();
|
||||||
stakeholderUtils: StakeholderUtils = new StakeholderUtils();
|
stakeholderUtils: StakeholderUtils = new StakeholderUtils();
|
||||||
public stakeholderEntities = StakeholderEntities;
|
|
||||||
menuHeader: Header = {
|
menuHeader: Header = {
|
||||||
route: "/",
|
route: "/",
|
||||||
url: null,
|
url: null,
|
||||||
|
@ -73,38 +69,25 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
innerWidth;
|
innerWidth;
|
||||||
projectUpdate: 'danger' | 'warning';
|
projectUpdate: 'danger' | 'warning';
|
||||||
paramsSubscription: Subscription;
|
paramsSubscription: Subscription;
|
||||||
private subscriptions: any[] = [];
|
|
||||||
|
|
||||||
constructor(private route: ActivatedRoute,
|
constructor(protected _route: ActivatedRoute,
|
||||||
private router: Router,
|
protected _router: Router,
|
||||||
|
protected layoutService: LayoutService,
|
||||||
|
protected cdr: ChangeDetectorRef,
|
||||||
private userManagementService: UserManagementService,
|
private userManagementService: UserManagementService,
|
||||||
private layoutService: LayoutService,
|
|
||||||
private smoothScroll: SmoothScroll,
|
private smoothScroll: SmoothScroll,
|
||||||
private stakeholderService: StakeholderService,
|
private stakeholderService: StakeholderService,
|
||||||
private cdr: ChangeDetectorRef,
|
|
||||||
private configurationService: ConfigurationService,
|
private configurationService: ConfigurationService,
|
||||||
private resourcesService: ResourcesService) {
|
private resourcesService: ResourcesService) {
|
||||||
this.subscriptions.push(this.router.events.subscribe(event => {
|
super();
|
||||||
if (event instanceof NavigationEnd) {
|
this.initRouterParams(_route);
|
||||||
let r = this.route;
|
|
||||||
while (r.firstChild) {
|
|
||||||
r = r.firstChild;
|
|
||||||
}
|
|
||||||
this.paramsResolved = true;
|
|
||||||
this.params.next(r.snapshot.params);
|
|
||||||
this.data.next(r.snapshot.data);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
super.ngOnInit();
|
||||||
if (typeof document !== 'undefined' && window) {
|
if (typeof document !== 'undefined' && window) {
|
||||||
this.innerWidth = window.innerWidth;
|
this.innerWidth = window.innerWidth;
|
||||||
}
|
}
|
||||||
this.subscriptions.push(this.layoutService.hasSidebar.subscribe(hasSidebar => {
|
|
||||||
this.hasSidebar = hasSidebar;
|
|
||||||
this.cdr.detectChanges();
|
|
||||||
}));
|
|
||||||
this.subscriptions.push(this.layoutService.hasHeader.subscribe(hasHeader => {
|
this.subscriptions.push(this.layoutService.hasHeader.subscribe(hasHeader => {
|
||||||
this.hasHeader = hasHeader;
|
this.hasHeader = hasHeader;
|
||||||
this.cdr.detectChanges();
|
this.cdr.detectChanges();
|
||||||
|
@ -113,10 +96,6 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
this.hasAdminMenu = hasAdminMenu;
|
this.hasAdminMenu = hasAdminMenu;
|
||||||
this.cdr.detectChanges();
|
this.cdr.detectChanges();
|
||||||
}));
|
}));
|
||||||
this.subscriptions.push(this.layoutService.hasInternalSidebar.subscribe(hasInternalSidebar => {
|
|
||||||
this.hasInternalSidebar = hasInternalSidebar;
|
|
||||||
this.cdr.detectChanges();
|
|
||||||
}));
|
|
||||||
this.subscriptions.push(this.layoutService.isFrontPage.subscribe(isFrontPage => {
|
this.subscriptions.push(this.layoutService.isFrontPage.subscribe(isFrontPage => {
|
||||||
this.isFrontPage = isFrontPage;
|
this.isFrontPage = isFrontPage;
|
||||||
this.cdr.detectChanges();
|
this.cdr.detectChanges();
|
||||||
|
@ -125,13 +104,12 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
this.isMobile = isMobile;
|
this.isMobile = isMobile;
|
||||||
this.cdr.detectChanges();
|
this.cdr.detectChanges();
|
||||||
}));
|
}));
|
||||||
this.route.queryParams.subscribe(params => {
|
this._route.queryParams.subscribe(params => {
|
||||||
this.view = params['view'];
|
this.view = params['view'];
|
||||||
if(this.stakeholder) {
|
if(this.stakeholder) {
|
||||||
this.setSideBar();
|
this.setSideBar();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.layoutService.setOpen(true);
|
|
||||||
this.subscriptions.push(this.data.subscribe(data => {
|
this.subscriptions.push(this.data.subscribe(data => {
|
||||||
if (data && data.portal) {
|
if (data && data.portal) {
|
||||||
this.setProperties(data.portal);
|
this.setProperties(data.portal);
|
||||||
|
@ -139,7 +117,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
||||||
this.updateStakeholder = !this.router.url.includes('user-info');
|
this.updateStakeholder = !this._router.url.includes('user-info');
|
||||||
if (user) {
|
if (user) {
|
||||||
this.user = user;
|
this.user = user;
|
||||||
if (!this.notificationGroupsInitialized) {
|
if (!this.notificationGroupsInitialized) {
|
||||||
|
@ -258,14 +236,10 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnDestroy() {
|
public ngOnDestroy() {
|
||||||
|
super.ngOnDestroy();
|
||||||
if(this.paramsSubscription) {
|
if(this.paramsSubscription) {
|
||||||
this.paramsSubscription.unsubscribe();
|
this.paramsSubscription.unsubscribe();
|
||||||
}
|
}
|
||||||
this.subscriptions.forEach(value => {
|
|
||||||
if (value instanceof Subscriber) {
|
|
||||||
value.unsubscribe();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.userManagementService.clearSubscriptions();
|
this.userManagementService.clearSubscriptions();
|
||||||
this.layoutService.clearSubscriptions();
|
this.layoutService.clearSubscriptions();
|
||||||
this.stakeholderService.clearSubscriptions();
|
this.stakeholderService.clearSubscriptions();
|
||||||
|
@ -274,25 +248,17 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
private navigateToError() {
|
private navigateToError() {
|
||||||
this.router.navigate([this.properties.errorLink], {queryParams: {'page': this.properties.baseLink + this.router.url}});
|
this._router.navigate([this.properties.errorLink], {queryParams: {'page': this.properties.baseLink + this._router.url}});
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeView() {
|
public removeView() {
|
||||||
this.router.navigate([], {relativeTo: this.route});
|
this._router.navigate([], {relativeTo: this._route});
|
||||||
}
|
}
|
||||||
|
|
||||||
public login() {
|
public login() {
|
||||||
this.userManagementService.login();
|
this.userManagementService.login();
|
||||||
}
|
}
|
||||||
|
|
||||||
public get open() {
|
|
||||||
return this.layoutService.open;
|
|
||||||
}
|
|
||||||
|
|
||||||
public get hover() {
|
|
||||||
return this.layoutService.hover;
|
|
||||||
}
|
|
||||||
|
|
||||||
get isHidden() {
|
get isHidden() {
|
||||||
return this.stakeholder && !this.hasPermission(this.view?this.view:this.stakeholder.visibility);
|
return this.stakeholder && !this.hasPermission(this.view?this.view:this.stakeholder.visibility);
|
||||||
}
|
}
|
||||||
|
@ -419,7 +385,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
menuPosition: "center"
|
menuPosition: "center"
|
||||||
};
|
};
|
||||||
this.menuItems.push(
|
this.menuItems.push(
|
||||||
new MenuItem("stakeholders", "Browse " + this.stakeholderEntities.STAKEHOLDERS,
|
new MenuItem("stakeholders", "Browse " + this.stakeholderUtils.entities.stakeholders,
|
||||||
this.monitorLink + '/browse', "", false, [], null, {}, null, null, null, null, "_self")
|
this.monitorLink + '/browse', "", false, [], null, {}, null, null, null, null, "_self")
|
||||||
);
|
);
|
||||||
this.resourcesService.setResources(this.menuItems, '', this.monitorLink);
|
this.resourcesService.setResources(this.menuItems, '', this.monitorLink);
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
<sidebar-mobile-toggle *ngIf="isMobile" [class.uk-margin-bottom]="!activeCategory || countSubCategoriesToShow(activeCategory) <= 1" class="uk-margin-top uk-display-block"></sidebar-mobile-toggle>
|
<sidebar-mobile-toggle *ngIf="isMobile" [class.uk-margin-bottom]="!activeCategory || countSubCategoriesToShow(activeCategory) <= 1" class="uk-margin-top uk-display-block"></sidebar-mobile-toggle>
|
||||||
<div *ngIf="activeCategory && countSubCategoriesToShow(activeCategory) > 1"
|
<div *ngIf="activeCategory && countSubCategoriesToShow(activeCategory) > 1"
|
||||||
[class.uk-margin-bottom]="isMobile" class="uk-margin-medium-top">
|
[class.uk-margin-bottom]="isMobile" class="uk-margin-medium-top">
|
||||||
<slider-tabs *ngIf="stakeholder && status === errorCodes.DONE && activeTopic" [border]="!isMobile"
|
<slider-tabs *ngIf="stakeholder && !loading && activeTopic" [border]="!isMobile"
|
||||||
[tabsClass]="isMobile?'uk-subnav uk-subnav-pill-alt uk-text-small':'uk-tab'" [type]="'dynamic'">
|
[tabsClass]="isMobile?'uk-subnav uk-subnav-pill-alt uk-text-small':'uk-tab'" [type]="'dynamic'">
|
||||||
<ng-template ngFor [ngForOf]="activeCategory.subCategories" let-subCategory>
|
<ng-template ngFor [ngForOf]="activeCategory.subCategories" let-subCategory>
|
||||||
<slider-tab *ngIf="hasPermission(subCategory.visibility)" [tabTitle]="subCategory.name"
|
<slider-tab *ngIf="hasPermission(subCategory.visibility)" [tabTitle]="subCategory.name"
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
<div *ngIf="hasPermission(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)">
|
<div *ngIf="hasPermission(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)">
|
||||||
<div class="uk-card uk-card-default uk-padding-small number-card uk-position-relative"
|
<div class="uk-card uk-card-default uk-padding-small number-card uk-position-relative"
|
||||||
[class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
[class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
||||||
<div *ngIf="!indicator.descriptionOverlay">
|
<div *ngIf="!indicator.overlay">
|
||||||
<div
|
<div
|
||||||
class="uk-text-small uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
class="uk-text-small uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
||||||
<div class="number uk-text-small uk-text-bold">
|
<div class="number uk-text-small uk-text-bold">
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
<div *ngIf="indicator.description || indicator.additionalDescription"
|
<div *ngIf="indicator.description || indicator.additionalDescription"
|
||||||
class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right uk-visible@m">
|
class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right uk-visible@m">
|
||||||
<a class="uk-display-inline-block uk-button uk-button-link" uk-tooltip="Note"
|
<a class="uk-display-inline-block uk-button uk-button-link" uk-tooltip="Note"
|
||||||
(click)="toggleDescriptionOverlay($event, indicator)">
|
(click)="changeOverlay($event, indicator, 'description')">
|
||||||
<span class="uk-flex uk-flex-middle">
|
<span class="uk-flex uk-flex-middle">
|
||||||
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
||||||
</span>
|
</span>
|
||||||
|
@ -122,12 +122,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
*ngIf="indicator.descriptionOverlay && (indicator.description || indicator.additionalDescription)"
|
*ngIf="indicator.overlay && (indicator.description || indicator.additionalDescription)"
|
||||||
click-outside-or-esc class="uk-overflow-auto"
|
click-outside-or-esc class="uk-overflow-auto"
|
||||||
(clickOutside)="closeDescriptionOverlay($event, indicator)">
|
(clickOutside)="closeOverlay($event, indicator)">
|
||||||
<div class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right">
|
<div class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right">
|
||||||
<a class="uk-display-inline-block uk-button uk-button-link"
|
<a class="uk-display-inline-block uk-button uk-button-link"
|
||||||
(click)="toggleDescriptionOverlay($event, indicator)">
|
(click)="changeOverlay($event, indicator, false)">
|
||||||
<span class="uk-flex uk-flex-middle">
|
<span class="uk-flex uk-flex-middle">
|
||||||
<icon name="close" type="outlined" [flex]="true"></icon>
|
<icon name="close" type="outlined" [flex]="true"></icon>
|
||||||
</span>
|
</span>
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
|
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
|
||||||
<div *ngIf="hasPermission(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)">
|
<div *ngIf="hasPermission(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)">
|
||||||
<div [class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
<div [class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
||||||
<div *ngIf="!indicator.descriptionOverlay">
|
<div *ngIf="!indicator.overlay">
|
||||||
<div
|
<div
|
||||||
class="uk-text-xsmall uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
class="uk-text-xsmall uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
||||||
<div class="number uk-text-small uk-text-bold">
|
<div class="number uk-text-small uk-text-bold">
|
||||||
|
@ -184,7 +184,7 @@
|
||||||
[class.semiFiltered]="chartsActiveType.get(i + '-' + j).filtersApplied < countSelectedFilters()">
|
[class.semiFiltered]="chartsActiveType.get(i + '-' + j).filtersApplied < countSelectedFilters()">
|
||||||
<div class="uk-card-body uk-text-center uk-margin-small-bottom">
|
<div class="uk-card-body uk-text-center uk-margin-small-bottom">
|
||||||
<h6 class="uk-margin-bottom chartTitle uk-flex uk-flex-bottom">
|
<h6 class="uk-margin-bottom chartTitle uk-flex uk-flex-bottom">
|
||||||
<div>{{indicator.name + " "}}</div>
|
{{indicator.name + " "}}
|
||||||
</h6>
|
</h6>
|
||||||
<div *ngIf="indicator.indicatorPaths.length > 1" class="uk-button-group">
|
<div *ngIf="indicator.indicatorPaths.length > 1" class="uk-button-group">
|
||||||
<button *ngFor="let indicatorPath of indicator.indicatorPaths;"
|
<button *ngFor="let indicatorPath of indicator.indicatorPaths;"
|
||||||
|
@ -212,23 +212,22 @@
|
||||||
class="uk-width-1-1 uk-blend-multiply"
|
class="uk-width-1-1 uk-blend-multiply"
|
||||||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')">
|
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')">
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="indicator.description || indicator.additionalDescription"
|
<div class="uk-position-bottom-left uk-margin-left uk-margin-small-bottom uk-visible@m">
|
||||||
class="uk-position-bottom-left uk-margin-left uk-margin-small-bottom uk-visible@m">
|
<a *ngIf="indicator.description || indicator.additionalDescription"
|
||||||
<a class="uk-display-inline-block uk-button uk-button-text"
|
class="uk-display-inline-block uk-button uk-button-text"
|
||||||
(click)="toggleDescriptionOverlay($event, indicator)">
|
(click)="changeOverlay($event, indicator, 'description')">
|
||||||
<span class="uk-flex uk-flex-middle">
|
<span class="uk-flex uk-flex-middle">
|
||||||
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
||||||
<span class="uk-margin-small-left">Note</span>
|
<span class="uk-margin-small-left">Note</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="indicator.descriptionOverlay && (indicator.description || indicator.additionalDescription)"
|
<div *ngIf="indicator.overlay" class="indicator-overlay uk-card uk-card-default uk-flex uk-flex-middle uk-flex-center">
|
||||||
class="indicator-overlay uk-card uk-card-default uk-flex uk-flex-middle uk-flex-center">
|
<div *ngIf="indicator.overlay == 'description'" class="inner" click-outside-or-esc
|
||||||
<div class="inner" click-outside-or-esc
|
(clickOutside)="closeOverlay($event, indicator)">
|
||||||
(clickOutside)="closeDescriptionOverlay($event, indicator)">
|
|
||||||
<div class="uk-padding-small">
|
<div class="uk-padding-small">
|
||||||
<div class="uk-flex uk-flex-right">
|
<div class="uk-flex uk-flex-right">
|
||||||
<button class="uk-close uk-icon" (click)="toggleDescriptionOverlay($event, indicator)">
|
<button class="uk-close uk-icon" (click)="changeOverlay($event, indicator, false)">
|
||||||
<icon name="close" ratio="1"></icon>
|
<icon name="close" ratio="1"></icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -302,9 +301,8 @@
|
||||||
<div *ngIf="!user" class="uk-margin-top"><a class="uk-link" (click)="logIn()"> Sign in</a> to apply filters.</div>
|
<div *ngIf="!user" class="uk-margin-top"><a class="uk-link" (click)="logIn()"> Sign in</a> to apply filters.</div>
|
||||||
<ul *ngIf="user" class="uk-list uk-list-xlarge uk-list-divider uk-margin-top">
|
<ul *ngIf="user" class="uk-list uk-list-xlarge uk-list-divider uk-margin-top">
|
||||||
<li>
|
<li>
|
||||||
<range-filter #rangeFilter [filter]="periodFilter" yearMin="2000" [yearMax]="currentYear"
|
<range-filter #rangeFilter [filter]="periodFilter"[yearMin]="minYear" [yearMax]="maxYear"
|
||||||
[mandatoryRange]="true"
|
[mandatoryRange]="true" (onFilterChange)="filter()"></range-filter>
|
||||||
(onFilterChange)="filter()"></range-filter>
|
|
||||||
</li>
|
</li>
|
||||||
<ng-container *ngFor="let filter of filters ">
|
<ng-container *ngFor="let filter of filters ">
|
||||||
<li *ngIf="filter.values.length >0">
|
<li *ngIf="filter.values.length >0">
|
||||||
|
@ -320,7 +318,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <div *ngIf="stakeholder && status === errorCodes.DONE && activeTopic" id="print_toggle"
|
<!-- <div *ngIf="stakeholder && !loading && activeTopic" id="print_toggle"
|
||||||
class="uk-offcanvas-switcher uk-flex uk-flex-center uk-flex-middle" (click)="printReport()">
|
class="uk-offcanvas-switcher uk-flex uk-flex-center uk-flex-middle" (click)="printReport()">
|
||||||
<icon name="print" ratio="1.5" customClass="uk-text-background" visuallyHidden="Print"></icon>
|
<icon name="print" ratio="1.5" customClass="uk-text-background" visuallyHidden="Print"></icon>
|
||||||
</div> -->
|
</div> -->
|
||||||
|
|
|
@ -1,115 +1,47 @@
|
||||||
import {ChangeDetectorRef, Component, HostListener, OnDestroy, OnInit, ViewChild, ViewRef} from '@angular/core';
|
import {ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';
|
||||||
import {ActivatedRoute, Params, Router} from '@angular/router';
|
import {ActivatedRoute, Router} from '@angular/router';
|
||||||
import {DomSanitizer, Meta, Title} from '@angular/platform-browser';
|
import {DomSanitizer, Meta, Title} from '@angular/platform-browser';
|
||||||
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
|
|
||||||
|
|
||||||
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
|
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
|
||||||
import {Dates, StringUtils} from '../openaireLibrary/utils/string-utils.class';
|
import {StringUtils} from '../openaireLibrary/utils/string-utils.class';
|
||||||
import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes';
|
|
||||||
import {ErrorMessagesComponent} from '../openaireLibrary/utils/errorMessages.component';
|
|
||||||
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
|
|
||||||
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||||
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
||||||
import {
|
import {IndicatorPath} from "../openaireLibrary/monitor/entities/stakeholder";
|
||||||
Category,
|
|
||||||
Indicator,
|
|
||||||
IndicatorPath,
|
|
||||||
IndicatorSize,
|
|
||||||
Section,
|
|
||||||
Stakeholder,
|
|
||||||
SubCategory,
|
|
||||||
Topic,
|
|
||||||
Visibility
|
|
||||||
} from "../openaireLibrary/monitor/entities/stakeholder";
|
|
||||||
import {StatisticsService} from "../openaireLibrary/monitor-admin/utils/services/statistics.service";
|
import {StatisticsService} from "../openaireLibrary/monitor-admin/utils/services/statistics.service";
|
||||||
import {IndicatorUtils} from "../openaireLibrary/monitor-admin/utils/indicator-utils";
|
|
||||||
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||||
import {UntypedFormBuilder, UntypedFormControl} from "@angular/forms";
|
import {Subscription} from "rxjs";
|
||||||
import {Subscriber, Subscription} from "rxjs";
|
|
||||||
import {Session, User} from "../openaireLibrary/login/utils/helper.class";
|
|
||||||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||||
import {RangeFilter} from "../openaireLibrary/utils/rangeFilter/rangeFilterHelperClasses.class";
|
|
||||||
import {Filter, Value} from "../openaireLibrary/searchPages/searchUtils/searchHelperClasses.class";
|
|
||||||
import {RouterHelper} from "../openaireLibrary/utils/routerHelper.class";
|
|
||||||
import {properties} from "../../environments/environment";
|
|
||||||
import {IndexInfoService} from "../openaireLibrary/utils/indexInfo.service";
|
import {IndexInfoService} from "../openaireLibrary/utils/indexInfo.service";
|
||||||
import {ConfigurationService} from "../openaireLibrary/utils/configuration/configuration.service";
|
|
||||||
import {ClickEvent} from '../openaireLibrary/utils/click/click-outside-or-esc.directive';
|
|
||||||
import {RangeFilterComponent} from "../openaireLibrary/utils/rangeFilter/rangeFilter.component";
|
import {RangeFilterComponent} from "../openaireLibrary/utils/rangeFilter/rangeFilter.component";
|
||||||
|
import {
|
||||||
|
MonitorIndicatorStakeholderBaseComponent
|
||||||
|
} from "../openaireLibrary/monitor/monitor-indicator-stakeholder-base.component";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'monitor',
|
selector: 'monitor',
|
||||||
templateUrl: 'monitor.component.html',
|
templateUrl: 'monitor.component.html',
|
||||||
styleUrls: ['monitor.component.less']
|
styleUrls: ['monitor.component.less']
|
||||||
})
|
})
|
||||||
export class MonitorComponent implements OnInit, OnDestroy {
|
export class MonitorComponent extends MonitorIndicatorStakeholderBaseComponent implements OnInit {
|
||||||
public user: User;
|
|
||||||
public subscriptions: any[] = [];
|
|
||||||
title;
|
|
||||||
description;
|
|
||||||
public pageContents = null;
|
|
||||||
public divContents = null;
|
|
||||||
public status: number;
|
|
||||||
public loading: boolean = true;
|
|
||||||
public view: Visibility;
|
|
||||||
public indicatorUtils: IndicatorUtils = new IndicatorUtils();
|
|
||||||
public activeTopic: Topic = null;
|
|
||||||
public activeCategory: Category = null;
|
|
||||||
public activeSubCategory: SubCategory = null;
|
|
||||||
public errorCodes: ErrorCodes;
|
|
||||||
public stakeholder: Stakeholder;
|
|
||||||
public numberResults: Map<string, number> = new Map<string, number>();
|
|
||||||
public chartsActiveType: Map<string, IndicatorPath> = new Map<string, IndicatorPath>();
|
|
||||||
private errorMessages: ErrorMessagesComponent;
|
|
||||||
properties: EnvProperties = properties;
|
|
||||||
public routerHelper: RouterHelper = new RouterHelper();
|
|
||||||
filters: Filter[] = [];
|
|
||||||
queryParams = {};
|
|
||||||
public currentYear = new Date().getFullYear();
|
|
||||||
periodFilter: RangeFilter = {
|
|
||||||
title: "Time range",
|
|
||||||
filterId: "year",
|
|
||||||
originalFilterIdFrom: null,
|
|
||||||
originalFilterIdTo: null,
|
|
||||||
selectedFromValue: null,
|
|
||||||
selectedToValue: null,
|
|
||||||
selectedFromAndToValues: ""
|
|
||||||
};
|
|
||||||
@ViewChild('rangeFilter') rangeFilter: RangeFilterComponent;
|
@ViewChild('rangeFilter') rangeFilter: RangeFilterComponent;
|
||||||
privateStakeholder = false;
|
privateStakeholder = false;
|
||||||
public keyword: UntypedFormControl;
|
|
||||||
public statsUpdateDate: Date;
|
public statsUpdateDate: Date;
|
||||||
public isFullscreen: boolean = false;
|
|
||||||
public isMobile: boolean = false;
|
|
||||||
|
|
||||||
|
|
||||||
@HostListener('fullscreenchange', ['$event'])
|
|
||||||
@HostListener('webkitfullscreenchange', ['$event'])
|
|
||||||
@HostListener('mozfullscreenchange', ['$event'])
|
|
||||||
@HostListener('MSFullscreenChange', ['$event'])
|
|
||||||
screenChange(event) {
|
|
||||||
this.isFullscreen = !this.isFullscreen;
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private route: ActivatedRoute,
|
protected _route: ActivatedRoute,
|
||||||
private _router: Router,
|
protected _router: Router,
|
||||||
private _meta: Meta,
|
protected _meta: Meta,
|
||||||
private _title: Title,
|
protected _title: Title,
|
||||||
private _piwikService: PiwikService,
|
protected _piwikService: PiwikService,
|
||||||
private helper: HelperService,
|
protected seoService: SEOService,
|
||||||
|
protected sanitizer: DomSanitizer,
|
||||||
|
protected cdr: ChangeDetectorRef,
|
||||||
|
protected layoutService: LayoutService,
|
||||||
|
protected statisticsService: StatisticsService,
|
||||||
private stakeholderService: StakeholderService,
|
private stakeholderService: StakeholderService,
|
||||||
private userManagementService: UserManagementService,
|
private userManagementService: UserManagementService,
|
||||||
private statisticsService: StatisticsService,
|
private indexInfoService: IndexInfoService) {
|
||||||
private layoutService: LayoutService,
|
super();
|
||||||
private seoService: SEOService,
|
|
||||||
private cdr: ChangeDetectorRef,
|
|
||||||
private indexInfoService: IndexInfoService,
|
|
||||||
private sanitizer: DomSanitizer, private _fb: UntypedFormBuilder, private router: Router,
|
|
||||||
private configurationService: ConfigurationService) {
|
|
||||||
this.errorCodes = new ErrorCodes();
|
|
||||||
this.errorMessages = new ErrorMessagesComponent();
|
|
||||||
this.status = this.errorCodes.LOADING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
|
@ -120,15 +52,11 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
this.keyword = this._fb.control('');
|
|
||||||
let subscription: Subscription;
|
let subscription: Subscription;
|
||||||
this.layoutService.isMobile.subscribe(isMobile => {
|
|
||||||
this.isMobile = isMobile;
|
|
||||||
this.cdr.detectChanges();
|
|
||||||
});
|
|
||||||
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
||||||
this.user = user;
|
this.user = user;
|
||||||
this.subscriptions.push(this.route.params.subscribe(params => {
|
this.subscriptions.push(this._route.params.subscribe(params => {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
this.activeTopic = null;
|
this.activeTopic = null;
|
||||||
this.activeCategory = null;
|
this.activeCategory = null;
|
||||||
|
@ -136,9 +64,7 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
if (subscription) {
|
if (subscription) {
|
||||||
subscription.unsubscribe();
|
subscription.unsubscribe();
|
||||||
}
|
}
|
||||||
var url = properties.domain + properties.baseLink + this._router.url;
|
|
||||||
if (!this.stakeholder || this.stakeholder.alias !== params['stakeholder']) {
|
if (!this.stakeholder || this.stakeholder.alias !== params['stakeholder']) {
|
||||||
this.status = this.errorCodes.LOADING;
|
|
||||||
this.numberResults = new Map<string, number>();
|
this.numberResults = new Map<string, number>();
|
||||||
this.chartsActiveType = new Map<string, IndicatorPath>();
|
this.chartsActiveType = new Map<string, IndicatorPath>();
|
||||||
subscription = this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => {
|
subscription = this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => {
|
||||||
|
@ -174,25 +100,15 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
, filterOperator: "or", valueIsExact: true, filterType: "checkbox", radioValue: ""
|
, filterOperator: "or", valueIsExact: true, filterType: "checkbox", radioValue: ""
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.subscriptions.push(this.route.queryParams.subscribe( queryParams => {
|
this.subscriptions.push(this._route.queryParams.subscribe(queryParams => {
|
||||||
this.handleQueryParams(queryParams, params);
|
this.handleQueryParams(queryParams, params);
|
||||||
this.seoService.createLinkForCanonicalURL(url, false);
|
|
||||||
this._meta.updateTag({content: url}, "property='og:url'");
|
|
||||||
this.description = "Monitor Dashboard | " + this.stakeholder.name;
|
|
||||||
this.title = "Monitor Dashboard | " + this.stakeholder.name;
|
this.title = "Monitor Dashboard | " + this.stakeholder.name;
|
||||||
this._meta.updateTag({content: this.description}, "name='description'");
|
this.description = "Monitor Dashboard | " + this.stakeholder.name;
|
||||||
this._meta.updateTag({content: this.description}, "property='og:description'");
|
this.setMetadata();
|
||||||
this._meta.updateTag({content: this.title}, "property='og:title'");
|
|
||||||
this._title.setTitle(this.title);
|
|
||||||
this.subscriptions.push(this._piwikService.trackView(this.properties, this.title).subscribe());
|
|
||||||
if (this.hasPermission((this.view && this.isManager(this.stakeholder))?this.view:this.stakeholder.visibility)) {
|
if (this.hasPermission((this.view && this.isManager(this.stakeholder))?this.view:this.stakeholder.visibility)) {
|
||||||
//this.getDivContents();
|
|
||||||
// this.getPageContents();
|
|
||||||
this.status = this.errorCodes.DONE;
|
|
||||||
this.setView(params);
|
this.setView(params);
|
||||||
} else {
|
} else {
|
||||||
this.privateStakeholder = true;
|
this.privateStakeholder = true;
|
||||||
// this.navigateToError();
|
|
||||||
if (subscription) {
|
if (subscription) {
|
||||||
subscription.unsubscribe();
|
subscription.unsubscribe();
|
||||||
}
|
}
|
||||||
|
@ -207,8 +123,8 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
});
|
});
|
||||||
this.subscriptions.push(subscription);
|
this.subscriptions.push(subscription);
|
||||||
} else {
|
} else {
|
||||||
this.subscriptions.push(this._piwikService.trackView(this.properties, this.title).subscribe());
|
this.trackView();
|
||||||
this.subscriptions.push(this.route.queryParams.subscribe( queryParams => {
|
this.subscriptions.push(this._route.queryParams.subscribe(queryParams => {
|
||||||
this.handleQueryParams(queryParams, params);
|
this.handleQueryParams(queryParams, params);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -216,207 +132,6 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
get monitorLink() {
|
|
||||||
return "https://" + (this.properties.environment == 'beta' ? 'beta.' : '') + 'monitor.openaire.eu';
|
|
||||||
}
|
|
||||||
|
|
||||||
private handleQueryParams(queryParams, params) {
|
|
||||||
this.queryParams = Object.assign({}, queryParams);
|
|
||||||
this.initializeFilters();
|
|
||||||
this.setView(params);
|
|
||||||
if(!this.user && (this.filters.filter(filter => this.queryParams[filter.filterId]).length > 0 || this.queryParams['year'])) {
|
|
||||||
if(queryParams['view']) {
|
|
||||||
this.router.navigate([], {queryParams: {view: queryParams['view']}});
|
|
||||||
} else {
|
|
||||||
this.router.navigate([], {queryParams: {}});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.view = queryParams['view'];
|
|
||||||
}
|
|
||||||
|
|
||||||
private initializeFilters() {
|
|
||||||
this.periodFilter.selectedFromValue = (this.queryParams['year'] && this.queryParams['year'].indexOf("range") == 0) ? this.queryParams['year'].split("range")[1].split(":")[0] : "";
|
|
||||||
this.periodFilter.selectedToValue = (this.queryParams['year'] && this.queryParams['year'].indexOf("range") == 0) ? this.queryParams['year'].split("range")[1].split(":")[1] : "";
|
|
||||||
this.validateYearRange(false);
|
|
||||||
|
|
||||||
for (let filter of this.filters) {
|
|
||||||
if (this.queryParams[filter.filterId]) {
|
|
||||||
for (let value of filter.values) {
|
|
||||||
if (value.id == StringUtils.URIDecode(StringUtils.unquote(this.queryParams[filter.filterId]))) {
|
|
||||||
value.selected = true;
|
|
||||||
filter.countSelectedValues = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.clearFilter(filter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private validateYearRange(navigateTo: boolean = false) {
|
|
||||||
let validYears = true;
|
|
||||||
|
|
||||||
if (this.periodFilter.selectedToValue && (this.periodFilter.selectedToValue.length == 0 || !Dates.isValidYear(this.periodFilter.selectedToValue, Dates.currentYear - 20, Dates.currentYear))) {
|
|
||||||
this.periodFilter.selectedToValue = Dates.currentYear + "";
|
|
||||||
validYears = false;
|
|
||||||
}
|
|
||||||
if (this.periodFilter.selectedFromValue && (this.periodFilter.selectedFromValue.length == 0 || !Dates.isValidYear(this.periodFilter.selectedFromValue, Dates.currentYear - 20, Dates.currentYear))) {
|
|
||||||
this.periodFilter.selectedFromValue = Dates.currentYear - 20 + "";
|
|
||||||
validYears = false;
|
|
||||||
}
|
|
||||||
if (this.periodFilter.selectedFromValue && this.periodFilter.selectedFromValue.length && this.periodFilter.selectedToValue && this.periodFilter.selectedToValue.length > 0 && parseInt(this.periodFilter.selectedFromValue, 10) > parseInt(this.periodFilter.selectedToValue, 10)) {
|
|
||||||
this.periodFilter.selectedFromValue = this.periodFilter.selectedToValue;
|
|
||||||
validYears = false;
|
|
||||||
}
|
|
||||||
if (!validYears || navigateTo) {
|
|
||||||
if (this.periodFilter.selectedFromValue || this.periodFilter.selectedToValue) {
|
|
||||||
this.queryParams["year"] = 'range' + (this.periodFilter.selectedFromValue ? this.periodFilter.selectedFromValue : '') + ":" + (this.periodFilter.selectedToValue ? this.periodFilter.selectedToValue : "");
|
|
||||||
} else {
|
|
||||||
delete this.queryParams["year"];
|
|
||||||
}
|
|
||||||
// this.location.go(location.pathname, this.routerHelper.createQueryParamsString( Object.keys(this.queryParams), Object.values(this.queryParams)));
|
|
||||||
this.router.navigate([], {queryParams: this.queryParams});
|
|
||||||
this.setIndicators();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
clearAll() {
|
|
||||||
for (let filter of this.filters) {
|
|
||||||
this.clearFilter(filter);
|
|
||||||
}
|
|
||||||
this.periodFilter.selectedFromValue = "";
|
|
||||||
this.periodFilter.selectedToValue = "";
|
|
||||||
this.validateYearRange(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
clearFilter(filter: Filter) {
|
|
||||||
filter.countSelectedValues = 0;
|
|
||||||
filter.radioValue = "";
|
|
||||||
for (let value of filter.values) {
|
|
||||||
if (value.selected) {
|
|
||||||
value.selected = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.queryParams[filter.filterId]) {
|
|
||||||
delete this.queryParams[filter.filterId];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
countSelectedFilters(): number {
|
|
||||||
let count = 0;
|
|
||||||
if (this.periodFilter.selectedFromAndToValues.length > 0) {
|
|
||||||
count += 1;
|
|
||||||
}
|
|
||||||
for (let filter of this.filters) {
|
|
||||||
count += filter.countSelectedValues;
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
public get open() {
|
|
||||||
return this.layoutService.open;
|
|
||||||
}
|
|
||||||
|
|
||||||
private getPageContents() {
|
|
||||||
this.subscriptions.push(this.helper.getPageHelpContents(this.properties, this.properties.adminToolsCommunity, this._router.url).subscribe(contents => {
|
|
||||||
this.pageContents = contents;
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
private getDivContents() {
|
|
||||||
this.subscriptions.push(this.helper.getDivHelpContents(this.properties, this.properties.adminToolsCommunity, this._router.url).subscribe(contents => {
|
|
||||||
this.divContents = contents;
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
private setView(params: Params) {
|
|
||||||
this.loading = false;
|
|
||||||
if (params['topic']) {
|
|
||||||
this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && this.hasPermission(topic.visibility));
|
|
||||||
if (this.activeTopic) {
|
|
||||||
if (params['category']) {
|
|
||||||
this.activeCategory = this.activeTopic.categories.find(category =>
|
|
||||||
(category.alias === params['category']) && this.hasPermission(category.visibility));
|
|
||||||
if (!this.activeCategory) {
|
|
||||||
this.navigateToError();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.activeCategory = this.activeTopic.categories.find(category => this.hasPermission(category.visibility));
|
|
||||||
if (this.activeCategory) {
|
|
||||||
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory =>
|
|
||||||
this.hasPermission(subCategory.visibility));
|
|
||||||
if (this.activeSubCategory) {
|
|
||||||
this.setIndicators();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.activeCategory) {
|
|
||||||
if (params['subCategory']) {
|
|
||||||
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory =>
|
|
||||||
(subCategory.alias === params['subCategory'] && this.hasPermission(subCategory.visibility)));
|
|
||||||
if (!this.activeSubCategory) {
|
|
||||||
this.navigateToError();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory =>
|
|
||||||
this.hasPermission(subCategory.visibility));
|
|
||||||
}
|
|
||||||
if (this.activeSubCategory) {
|
|
||||||
this.setIndicators();
|
|
||||||
} else {
|
|
||||||
this.navigateToError();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
this.activeSubCategory = null;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.navigateToError();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.activeTopic = this.stakeholder.topics.find(topic => this.hasPermission(topic.visibility));
|
|
||||||
if (this.activeTopic) {
|
|
||||||
this.activeCategory = this.activeTopic.categories.find(category => this.hasPermission(category.visibility));
|
|
||||||
if (this.activeCategory) {
|
|
||||||
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => this.hasPermission(subCategory.visibility));
|
|
||||||
if (this.activeSubCategory) {
|
|
||||||
this.setIndicators();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
filter() {
|
|
||||||
this.validateYearRange(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
filterChanged($event, navigate: boolean = true) {
|
|
||||||
let selected = "";
|
|
||||||
for (let value of $event.value.values) {
|
|
||||||
if (value.selected) {
|
|
||||||
selected = value.id;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (selected) {
|
|
||||||
this.queryParams[$event.value.filterId] = StringUtils.quote(StringUtils.URIEncode(selected));
|
|
||||||
} else {
|
|
||||||
delete this.queryParams[$event.value.filterId];
|
|
||||||
}
|
|
||||||
if (navigate) {
|
|
||||||
this.router.navigate([], {queryParams: this.queryParams});
|
|
||||||
this.setIndicators();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private getfl0() {
|
private getfl0() {
|
||||||
if (this.queryParams["relfundinglevel0_id"] && this.filters.length > 0) {
|
if (this.queryParams["relfundinglevel0_id"] && this.filters.length > 0) {
|
||||||
let value = StringUtils.URIDecode(StringUtils.unquote(this.queryParams["relfundinglevel0_id"]));
|
let value = StringUtils.URIDecode(StringUtils.unquote(this.queryParams["relfundinglevel0_id"]));
|
||||||
|
@ -432,181 +147,15 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
clearPeriodFilter() {
|
public getFullUrl(indicatorPath: IndicatorPath) {
|
||||||
if (this.periodFilter.selectedFromValue || this.periodFilter.selectedToValue) {
|
return this.indicatorUtils.getFullUrlWithFilters(this.stakeholder, indicatorPath, this.getfl0(), this.periodFilter.selectedFromValue, this.periodFilter.selectedToValue, this.getCoFunded());
|
||||||
this.periodFilter.selectedFromValue = "";
|
|
||||||
this.periodFilter.selectedToValue = "";
|
|
||||||
if(this.rangeFilter) {
|
|
||||||
this.rangeFilter.clearFilter();
|
|
||||||
}
|
|
||||||
this.filter();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
clearFilterValue(filter: Filter, value: Value) {
|
|
||||||
value.selected = false;
|
|
||||||
filter.radioValue = '';
|
|
||||||
filter.countSelectedValues = filter.countSelectedValues - 1;
|
|
||||||
this.filterChanged({
|
|
||||||
value:filter
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private setIndicators() {
|
|
||||||
this.periodFilter.selectedFromAndToValues = (this.periodFilter.selectedFromValue || this.periodFilter.selectedToValue ? ((this.periodFilter.selectedFromValue && !this.periodFilter.selectedToValue ? "From " : "") + (!this.periodFilter.selectedFromValue && this.periodFilter.selectedToValue ? "Until " : "") + (this.periodFilter.selectedFromValue ? this.periodFilter.selectedFromValue : "") +
|
|
||||||
(this.periodFilter.selectedFromValue && this.periodFilter.selectedToValue ? " - " : "") + (this.periodFilter.selectedToValue ? this.periodFilter.selectedToValue : "")) : "");
|
|
||||||
//clear numbers when filters change
|
|
||||||
this.numberResults.clear();
|
|
||||||
let urls: Map<string, [number, number][]> = new Map<string, [number, number][]>();
|
|
||||||
this.activeSubCategory.numbers.forEach((section, i) => {
|
|
||||||
section.indicators.forEach((number, j) => {
|
|
||||||
if (this.hasPermission(number.visibility)) {
|
|
||||||
let url = this.indicatorUtils.getFullUrlWithFilters(this.stakeholder, number.indicatorPaths[0], this.getfl0(), this.periodFilter.selectedFromValue, this.periodFilter.selectedToValue, this.getCoFunded());
|
|
||||||
const pair = JSON.stringify([number.indicatorPaths[0].source, url]);
|
|
||||||
const indexes = urls.get(pair) ? urls.get(pair) : [];
|
|
||||||
indexes.push([i, j]);
|
|
||||||
urls.set(pair, indexes);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
urls.forEach((indexes, pair) => {
|
|
||||||
pair = JSON.parse(pair);
|
|
||||||
let activeSubcategory = this.activeSubCategory._id;
|
|
||||||
this.subscriptions.push(this.statisticsService.getNumbers(this.indicatorUtils.getSourceType(pair[0]), pair[1]).subscribe(response => {
|
|
||||||
if(activeSubcategory === this.activeSubCategory._id) {
|
|
||||||
indexes.forEach(([i, j]) => {
|
|
||||||
if( this.activeSubCategory?.numbers[i]?.indicators[j]) {
|
|
||||||
let result = JSON.parse(JSON.stringify(response));
|
|
||||||
this.activeSubCategory.numbers[i].indicators[j].indicatorPaths[0].jsonPath.forEach(jsonPath => {
|
|
||||||
if (result) {
|
|
||||||
result = result[jsonPath];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (typeof result === 'string' || typeof result === 'number') {
|
|
||||||
result = Number(result);
|
|
||||||
if (result === Number.NaN) {
|
|
||||||
result = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
result = 0;
|
|
||||||
}
|
|
||||||
this.numberResults.set(i + '-' + j, result);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
this.activeSubCategory.charts.forEach((section, i) => {
|
|
||||||
section.indicators.forEach((indicator, j) => {
|
|
||||||
if (indicator.indicatorPaths.length > 0) {
|
|
||||||
indicator.indicatorPaths[0].safeResourceUrl = this.getUrlByStakeHolder(indicator.indicatorPaths[0]);
|
|
||||||
this.chartsActiveType.set(i + '-' + j, indicator.indicatorPaths[0]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
if (this.cdr && !(this.cdr as ViewRef).destroyed) {
|
|
||||||
this.cdr.detectChanges();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public getUrlByStakeHolder(indicatorPath: IndicatorPath) {
|
|
||||||
return this.sanitizer.bypassSecurityTrustResourceUrl(
|
|
||||||
this.indicatorUtils.getChartUrl(indicatorPath.source, this.indicatorUtils.getFullUrlWithFilters(this.stakeholder, indicatorPath, this.getfl0(), this.periodFilter.selectedFromValue, this.periodFilter.selectedToValue, this.getCoFunded())));
|
|
||||||
}
|
|
||||||
|
|
||||||
public setActiveChart(i: number, j: number, type: string) {
|
|
||||||
let activeChart = this.activeSubCategory.charts[i].indicators[j].indicatorPaths.filter(indicatorPath => indicatorPath.type === type)[0];
|
|
||||||
activeChart.safeResourceUrl = this.getUrlByStakeHolder(activeChart);
|
|
||||||
this.chartsActiveType.set(i + '-' + j, activeChart);
|
|
||||||
}
|
|
||||||
|
|
||||||
private navigateToError() {
|
|
||||||
this._router.navigate([this.properties.errorLink], {queryParams: {'page': this._router.url}});
|
|
||||||
}
|
|
||||||
|
|
||||||
public quote(param: string): string {
|
|
||||||
return StringUtils.quote(param);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ngOnDestroy() {
|
|
||||||
this.subscriptions.forEach(subscription => {
|
|
||||||
if (subscription instanceof Subscriber) {
|
|
||||||
subscription.unsubscribe();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public isMember(stakeholder: Stakeholder) {
|
|
||||||
return this.user && (Session.isPortalAdministrator(this.user) || Session.isCurator(stakeholder.type, this.user)
|
|
||||||
|| Session.isManager(stakeholder.type, stakeholder.alias, this.user) || Session.isMember(stakeholder.type, stakeholder.alias, this.user));
|
|
||||||
}
|
|
||||||
|
|
||||||
public isManager(stakeholder: Stakeholder) {
|
|
||||||
return this.user && (Session.isPortalAdministrator(this.user) || Session.isCurator(stakeholder.type, this.user) || Session.isManager(stakeholder.type, stakeholder.alias, this.user));
|
|
||||||
}
|
|
||||||
|
|
||||||
public hasPermission(visibility: Visibility): boolean {
|
|
||||||
if(visibility === 'PUBLIC') {
|
|
||||||
return true;
|
|
||||||
} else if(visibility === 'RESTRICTED') {
|
|
||||||
return (!this.view || this.view === 'RESTRICTED') && this.isMember(this.stakeholder);
|
|
||||||
} else {
|
|
||||||
return !this.view && this.isManager(this.stakeholder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public countSubCategoriesToShow(category: Category): number {
|
|
||||||
return category.subCategories.filter(subCategory => this.hasPermission(subCategory.visibility)).length;
|
|
||||||
}
|
|
||||||
|
|
||||||
public countSectionsWithIndicatorsToShow(sections: Section[]):number {
|
|
||||||
return sections.map(section => this.countIndicatorsToShow(section.indicators)).reduce((sum, current) => sum + current, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public countIndicatorsToShow(indicators: Indicator[]): number {
|
|
||||||
return indicators.filter(indicator => this.hasPermission(indicator.visibility)).length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public get feedback() {
|
public get feedback() {
|
||||||
return "mailto:" + this.properties.feedbackmail + "?subject=%5BOpenAIRE%20Monitor%5D%20" + (this.stakeholder ? this.stakeholder.name : "") + "%20dashboard%20feedback"
|
return "mailto:" + this.properties.feedbackmail + "?subject=%5BOpenAIRE%20Monitor%5D%20" + (this.stakeholder ? this.stakeholder.name : "") + "%20dashboard%20feedback"
|
||||||
}
|
}
|
||||||
|
|
||||||
public getNumberClassBySize(size: IndicatorSize) {
|
|
||||||
if (size === 'small') {
|
|
||||||
return 'uk-width-medium@m uk-width-1-1';
|
|
||||||
} else if (size === 'medium') {
|
|
||||||
return 'uk-width-1-4@l uk-width-1-2@m uk-width-1-1';
|
|
||||||
} else {
|
|
||||||
return 'uk-width-1-2@l uk-width-1-1@m uk-width-1-1';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public getChartClassBySize(size: IndicatorSize) {
|
|
||||||
if (size === 'small') {
|
|
||||||
return 'uk-width-1-3@xl uk-width-1-2@m uk-width-1-1';
|
|
||||||
} else if (size === 'medium') {
|
|
||||||
return 'uk-width-1-2@l uk-width-1-1';
|
|
||||||
} else {
|
|
||||||
return 'uk-width-1-1';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public printReport() {
|
|
||||||
window.print();
|
|
||||||
}
|
|
||||||
|
|
||||||
logIn() {
|
logIn() {
|
||||||
this.userManagementService.login();
|
this.userManagementService.login();
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleDescriptionOverlay(event, indicator: Indicator) {
|
|
||||||
event.stopPropagation();
|
|
||||||
indicator.descriptionOverlay = !indicator.descriptionOverlay;
|
|
||||||
}
|
|
||||||
|
|
||||||
closeDescriptionOverlay(event: ClickEvent, indicator: Indicator) {
|
|
||||||
if(event.clicked && indicator.descriptionOverlay) {
|
|
||||||
indicator.descriptionOverlay = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 9fc6d0c0a01962ed38c7304e0b731918f040107d
|
Subproject commit c48bb7b09c9221725b81424c33d9095e35e68803
|
|
@ -1 +1 @@
|
||||||
Subproject commit 5812ba80f1174b4b08066a70e2e2da8b4879f6e9
|
Subproject commit 186e4bf732f96459a1e22b44ba172f08f0c11d48
|
|
@ -4,6 +4,7 @@
|
||||||
@import (multiple) "~src/assets/common-assets/less/general";
|
@import (multiple) "~src/assets/common-assets/less/general";
|
||||||
@import (multiple) "~src/assets/common-assets/less/user";
|
@import (multiple) "~src/assets/common-assets/less/user";
|
||||||
@import (multiple) "~src/assets/common-assets/less/dashboard";
|
@import (multiple) "~src/assets/common-assets/less/dashboard";
|
||||||
|
@import (multiple) "~src/assets/common-assets/less/indicators";
|
||||||
@import (multiple) "~src/assets/common-assets/less/landing";
|
@import (multiple) "~src/assets/common-assets/less/landing";
|
||||||
|
|
||||||
@monitor-dashboard-background: #F3F3F3;
|
@monitor-dashboard-background: #F3F3F3;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 8667e43d577f4db8bf5ce8df30ce39190be5ee90
|
Subproject commit e721fef20399f15c9dc9bee28b3d7e9b92db2021
|
|
@ -1,118 +1,20 @@
|
||||||
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",
|
|
||||||
dashboard: 'monitor',
|
dashboard: 'monitor',
|
||||||
isDashboard: true,
|
isDashboard: true,
|
||||||
enablePiwikTrack: true,
|
enablePiwikTrack: true,
|
||||||
useCache: false,
|
|
||||||
useLongCache: true,
|
|
||||||
showContent: true,
|
|
||||||
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
|
|
||||||
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
|
|
||||||
statisticsFrameNewAPIURL: "https://beta.services.openaire.eu/stats-tool/",
|
|
||||||
useNewStatistisTool: true,
|
|
||||||
monitorStatsFrameUrl:"https://beta.services.openaire.eu/stats-tool/",
|
monitorStatsFrameUrl:"https://beta.services.openaire.eu/stats-tool/",
|
||||||
useOldStatisticsSchema: true,
|
useOldStatisticsSchema: 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://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/",
|
|
||||||
swhURL: "https://archive.softwareheritage.org/",
|
|
||||||
fairSharingURL: "https://fairsharing.org/",
|
|
||||||
eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/",
|
|
||||||
sherpaURL: 'http://sherpa.ac.uk/romeo/issn/',
|
|
||||||
sherpaURLSuffix: '/',
|
|
||||||
zenodo: "https://zenodo.org/",
|
|
||||||
zenodoCommunities: "https://zenodo.org/api/communities/",
|
|
||||||
helpdesk: 'https://www.openaire.eu/support/helpdesk',
|
|
||||||
helpdeskEmail: 'helpdesk@openaire.eu',
|
|
||||||
utilsService: "https://demo.openaire.eu/utils-service",
|
|
||||||
|
|
||||||
vocabulariesAPI: "https://beta.services.openaire.eu/provision/mvc/vocabularies/",
|
|
||||||
|
|
||||||
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
|
|
||||||
loginUrl: "https://beta.services.openaire.eu/login-service/openid_connect_login",
|
|
||||||
userInfoUrl: "https://beta.services.openaire.eu/login-service/userInfo",
|
|
||||||
registryUrl: 'https://beta.services.openaire.eu/uoa-user-management/api/registry/',
|
|
||||||
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/",
|
||||||
notificationsAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/notification/",
|
notificationsAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/notification/",
|
||||||
adminToolsCommunity: "monitor",
|
adminToolsCommunity: "monitor",
|
||||||
useHelpTexts:true,
|
useHelpTexts:true,
|
||||||
datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/search/",
|
|
||||||
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: "/dashboard",
|
baseLink: "/dashboard",
|
||||||
domain: "https://beta.monitor.openaire.eu",
|
domain: "https://beta.monitor.openaire.eu"
|
||||||
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=",
|
|
||||||
searchLinkToResults: "/search/find/research-outcomes",
|
|
||||||
searchLinkToCommunities: "/search/find/communities",
|
|
||||||
searchLinkToPublications: '/search/find/research-outcomes?type="publications"',
|
|
||||||
searchLinkToDataProviders: "/search/find/dataproviders",
|
|
||||||
searchLinkToProjects: "/search/find/projects",
|
|
||||||
searchLinkToDatasets: '/search/find/research-outcomes?type="datasets"',
|
|
||||||
searchLinkToSoftware: '/search/find/research-outcomes?type="software"',
|
|
||||||
searchLinkToOrps: '/search/find/research-outcomes?type="other"',
|
|
||||||
searchLinkToOrganizations: "/search/find/organizations",
|
|
||||||
searchLinkToCompatibleDataProviders: "/search/content-providers",
|
|
||||||
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
|
|
||||||
searchLinkToJournals: "/search/journals",
|
|
||||||
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
|
|
||||||
searchLinkToAdvancedPublications: "/search/advanced/publications",
|
|
||||||
searchLinkToAdvancedProjects: "/search/advanced/projects",
|
|
||||||
searchLinkToAdvancedDatasets: "/search/advanced/datasets",
|
|
||||||
searchLinkToAdvancedSoftware: "/search/advanced/software",
|
|
||||||
searchLinkToAdvancedOrps: "/search/advanced/other",
|
|
||||||
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
|
|
||||||
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
|
|
||||||
errorLink: '/error',
|
|
||||||
lastIndexInformationLink: "https://beta.openaire.eu/aggregation-and-content-provision-workflows",
|
|
||||||
showLastIndexInformationLink: true,
|
|
||||||
bipFrameAPIURL: "https://bip.imsi.athenarc.gr/api/impact-chart?id=",
|
|
||||||
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: ["helpdesk@openaire.eu"],
|
|
||||||
lastIndexUpdate: "2019-08-07",
|
|
||||||
indexInfoAPI: "http://beta.services.openaire.eu/openaire/info/",
|
|
||||||
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export let properties: EnvProperties = {
|
||||||
|
...common, ...commonBeta, ...props
|
||||||
|
}
|
||||||
|
|
|
@ -1,115 +1,20 @@
|
||||||
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",
|
|
||||||
dashboard: 'monitor',
|
dashboard: 'monitor',
|
||||||
isDashboard: true,
|
isDashboard: true,
|
||||||
enablePiwikTrack: true,
|
enablePiwikTrack: true,
|
||||||
useCache: false,
|
|
||||||
useLongCache: true,
|
|
||||||
showContent: true,
|
|
||||||
statisticsAPIURL: "https://services.openaire.eu/stats-api/",
|
|
||||||
statisticsFrameAPIURL: "https://www.openaire.eu/stats/",
|
|
||||||
statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/",
|
|
||||||
useNewStatistisTool: true,
|
|
||||||
monitorStatsFrameUrl: "https://services.openaire.eu/stats-tool/",
|
monitorStatsFrameUrl: "https://services.openaire.eu/stats-tool/",
|
||||||
useOldStatisticsSchema: false,
|
useOldStatisticsSchema: 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://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/",
|
|
||||||
swhURL: "https://archive.softwareheritage.org/",
|
|
||||||
fairSharingURL: "https://fairsharing.org/",
|
|
||||||
eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/",
|
|
||||||
sherpaURL: 'http://sherpa.ac.uk/romeo/issn/',
|
|
||||||
sherpaURLSuffix: '/',
|
|
||||||
zenodo: "https://zenodo.org/",
|
|
||||||
zenodoCommunities: "https://zenodo.org/api/communities/",
|
|
||||||
helpdesk: 'https://www.openaire.eu/support/helpdesk',
|
|
||||||
helpdeskEmail: 'helpdesk@openaire.eu',
|
|
||||||
utilsService: "https://explore.openaire.eu/utils-service",
|
|
||||||
|
|
||||||
vocabulariesAPI: "https://services.openaire.eu/provision/mvc/vocabularies/",
|
|
||||||
|
|
||||||
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
|
|
||||||
loginUrl: "https://services.openaire.eu/login-service/openid_connect_login",
|
|
||||||
registryUrl: 'https://services.openaire.eu/uoa-user-management/api/registry/',
|
|
||||||
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=",
|
|
||||||
|
|
||||||
monitorServiceAPIURL: "https://services.openaire.eu/uoa-monitor-service",
|
|
||||||
adminToolsAPIURL: "https://services.openaire.eu/uoa-monitor-service/",
|
adminToolsAPIURL: "https://services.openaire.eu/uoa-monitor-service/",
|
||||||
notificationsAPIURL: "https://services.openaire.eu/uoa-monitor-service/notification/",
|
notificationsAPIURL: "https://services.openaire.eu/uoa-monitor-service/notification/",
|
||||||
adminToolsCommunity: "monitor",
|
adminToolsCommunity: "monitor",
|
||||||
useHelpTexts: true,
|
useHelpTexts: true,
|
||||||
datasourcesAPI: "https://services.openaire.eu/openaire/ds/search/",
|
|
||||||
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: "/dashboard",
|
baseLink: "/dashboard",
|
||||||
domain: "https://monitor.openaire.eu",
|
domain: "https://monitor.openaire.eu"
|
||||||
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=",
|
|
||||||
searchLinkToResults: "/search/find/research-outcomes",
|
|
||||||
searchLinkToPublications: '/search/find/research-outcomes?type="publications"',
|
|
||||||
searchLinkToDataProviders: "/search/find/dataproviders",
|
|
||||||
searchLinkToProjects: "/search/find/projects",
|
|
||||||
searchLinkToDatasets: '/search/find/research-outcomes?type="datasets"',
|
|
||||||
searchLinkToSoftware: '/search/find/research-outcomes?type="software"',
|
|
||||||
searchLinkToOrps: '/search/find/research-outcomes?type="other"',
|
|
||||||
searchLinkToOrganizations: "/search/find/organizations",
|
|
||||||
searchLinkToCompatibleDataProviders: "/search/content-providers",
|
|
||||||
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
|
|
||||||
searchLinkToJournals: "/search/journals",
|
|
||||||
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
|
|
||||||
searchLinkToAdvancedPublications: "/search/advanced/publications",
|
|
||||||
searchLinkToAdvancedProjects: "/search/advanced/projects",
|
|
||||||
searchLinkToAdvancedDatasets: "/search/advanced/datasets",
|
|
||||||
searchLinkToAdvancedSoftware: "/search/advanced/software",
|
|
||||||
searchLinkToAdvancedOrps: "/search/advanced/other",
|
|
||||||
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
|
|
||||||
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
|
|
||||||
errorLink: '/error',
|
|
||||||
lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows",
|
|
||||||
showLastIndexInformationLink: true,
|
|
||||||
bipFrameAPIURL: "https://bip.imsi.athenarc.gr/api/impact-chart?id=",
|
|
||||||
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: ["argirok@di.uoa.gr"],
|
|
||||||
lastIndexUpdate: "2019-07-24",
|
|
||||||
indexInfoAPI: "http://services.openaire.eu/openaire/info/",
|
|
||||||
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export let properties: EnvProperties = {
|
||||||
|
...common, ...commonProd, ...props
|
||||||
|
}
|
||||||
|
|
|
@ -4,107 +4,24 @@
|
||||||
// The list of which env maps to which file can be found in `.angular-cli.json`.
|
// The list of which env maps to which file can be found in `.angular-cli.json`.
|
||||||
|
|
||||||
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",
|
|
||||||
dashboard: 'monitor',
|
dashboard: 'monitor',
|
||||||
adminToolsPortalType: "monitor",
|
adminToolsPortalType: "monitor",
|
||||||
isDashboard: true,
|
isDashboard: true,
|
||||||
enablePiwikTrack: false,
|
enablePiwikTrack: false,
|
||||||
useCache: false,
|
|
||||||
useLongCache: false,
|
|
||||||
showContent: true,
|
|
||||||
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
|
|
||||||
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
|
|
||||||
statisticsFrameNewAPIURL: "https://beta.services.openaire.eu/stats-tool/",
|
|
||||||
useNewStatistisTool: true,
|
|
||||||
monitorStatsFrameUrl:"https://stats.madgik.di.uoa.gr/stats-api/",
|
monitorStatsFrameUrl:"https://stats.madgik.di.uoa.gr/stats-api/",
|
||||||
useOldStatisticsSchema: false,
|
useOldStatisticsSchema: false,
|
||||||
disableFrameLoad: true,
|
disableFrameLoad: true,
|
||||||
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://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/",
|
|
||||||
swhURL: "https://archive.softwareheritage.org/",
|
|
||||||
fairSharingURL: "https://fairsharing.org/",
|
|
||||||
eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/",
|
|
||||||
sherpaURL: 'http://sherpa.ac.uk/romeo/issn/',
|
|
||||||
sherpaURLSuffix: '/',
|
|
||||||
zenodo: "https://zenodo.org/",
|
|
||||||
zenodoCommunities: "https://zenodo.org/api/communities/",
|
|
||||||
helpdesk: 'https://www.openaire.eu/support/helpdesk',
|
|
||||||
helpdeskEmail: 'helpdesk@openaire.eu',
|
|
||||||
utilsService: "http://mpagasas.di.uoa.gr:8000",
|
|
||||||
vocabulariesAPI: "https://dev-openaire.d4science.org/provision/mvc/vocabularies/",
|
|
||||||
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
|
|
||||||
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/",
|
||||||
notificationsAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service/notification/",
|
notificationsAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service/notification/",
|
||||||
adminToolsCommunity: "monitor",
|
adminToolsCommunity: "monitor",
|
||||||
useHelpTexts: true,
|
useHelpTexts: true,
|
||||||
datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/search/",
|
|
||||||
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: "/",
|
baseLink: "/",
|
||||||
domain: "http://mpagasas.di.uoa.gr:4600",
|
domain: "http://mpagasas.di.uoa.gr:4600"
|
||||||
searchLinkToResult: "/search/result?id=",
|
|
||||||
searchLinkToPublication: "/search/publication?articleId=",
|
|
||||||
searchLinkToPublications: '/search/find/research-outcomes?type="publications"',
|
|
||||||
searchLinkToProject: "/search/project?projectId=",
|
|
||||||
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
|
|
||||||
searchLinkToDataset: "/search/dataset?datasetId=",
|
|
||||||
searchLinkToSoftwareLanding: "/search/software?softwareId=",
|
|
||||||
searchLinkToOrganization: "/search/organization?organizationId=",
|
|
||||||
searchLinkToOrp: "/search/other?orpId=",
|
|
||||||
searchLinkToResults: "/search/find/research-outcomes",
|
|
||||||
searchLinkToDataProviders: "/search/find/dataproviders",
|
|
||||||
searchLinkToProjects: "/search/find/projects",
|
|
||||||
searchLinkToOrganizations: "/search/find/organizations",
|
|
||||||
searchLinkToDatasets: '/search/find/research-outcomes?type="datasets"',
|
|
||||||
searchLinkToSoftware: '/search/find/research-outcomes?type="software"',
|
|
||||||
searchLinkToOrps: '/search/find/research-outcomes?type="other"',
|
|
||||||
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,
|
|
||||||
bipFrameAPIURL: "https://bip.imsi.athenarc.gr/api/impact-chart?id=",
|
|
||||||
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", "argirok@di.uoa.gr"],
|
|
||||||
lastIndexUpdate: "2019-05-16",
|
|
||||||
indexInfoAPI: "http://beta.services.openaire.eu/openaire/info/",
|
|
||||||
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export let properties: EnvProperties = {
|
||||||
|
...common, ...commonDev, ...props
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue