irish-monitor/src/app/app.component.ts

148 lines
6.7 KiB
TypeScript
Raw Normal View History

import {ChangeDetectorRef, Component, OnInit} from '@angular/core';
import {ActivatedRoute, Router} from "@angular/router";
import {MenuItem} from "./openaireLibrary/sharedComponents/menu";
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
import {ConfigurationService} from "./openaireLibrary/utils/configuration/configuration.service";
2023-11-02 15:39:57 +01:00
import {Irish} from "./shared/irish";
import {CustomFilterService} from "./shared/customFilter.service";
2023-11-09 13:34:34 +01:00
import {UserManagementService} from "./openaireLibrary/services/user-management.service";
import {Session, User} from "./openaireLibrary/login/utils/helper.class";
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
import {StakeholderBaseComponent} from "./openaireLibrary/monitor-admin/utils/stakeholder-base.component";
import {LayoutService} from "./openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
import {StakeholderUtils} from "./openaireLibrary/monitor-admin/utils/indicator-utils";
import {ResearcherBaseComponent} from "./shared/researcher-base.component";
import {SearchOrcidService} from "./openaireLibrary/claims/claim-utils/service/searchOrcid.service";
import {SearchResearchResultsService} from "./openaireLibrary/services/searchResearchResults.service";
import {properties} from "../environments/environment";
2023-10-23 14:26:21 +02:00
@Component({
selector: 'app-root',
template: `
<div *ngIf="loading">
<loading [full]="true"></loading>
</div>
<div *ngIf="!loading" class="uk-background-default">
<navbar *ngIf="hasHeader" portal="irish_monitor" [menuItems]="menuItems" [showMenu]="true"
[header]="header" [user]="user" [userMenuItems]="userMenuItems"></navbar>
<div [ngClass]="rootClass">
<div id="modal-container"></div>
<main>
<router-outlet></router-outlet>
</main>
</div>
</div>
<cookie-law *ngIf="isClient" position="bottom" cookieName="cookieLawSeen-NOAMIreland">
National Open Access Monitor - Ireland, uses cookies in order to function properly.<br>
Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing
experience possible.
By using the National Open Access Monitor - Ireland portal you accept our use of cookies. <!--<a
href="https://www.openaire.eu/privacy-policy#cookies" target="_blank"> Read more <span class="uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="chevron-right"
ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03"
points="7 4 13 10 7 16"></polyline></svg>
</span></a>-->
</cookie-law>
`
2023-10-23 14:26:21 +02:00
})
export class AppComponent extends ResearcherBaseComponent implements OnInit {
loading: boolean = false;
hasHeader: boolean = true;
rootClass: string;
header: Header = {
route: "/",
title: "Noami",
2023-12-11 11:16:29 +01:00
logoUrl: 'assets/logo/main.svg',
logoSmallUrl: null,
position: 'left',
badge: true,
};
menuItems: MenuItem[] = [];
userMenuItems: MenuItem[] = [];
2023-11-02 15:39:57 +01:00
irish: Irish = new Irish();
2023-11-09 13:34:34 +01:00
user: User;
isClient: boolean = false;
stakeholderUtils: StakeholderUtils = new StakeholderUtils();
2023-11-09 13:34:34 +01:00
constructor(protected _route: ActivatedRoute,
protected _router: Router,
protected cdr: ChangeDetectorRef,
protected _searchOrcidService: SearchOrcidService,
protected _searchResearchResultsService: SearchResearchResultsService,
private layoutService: LayoutService,
private smoothScroll: SmoothScroll,
private configurationService: ConfigurationService,
private customFilterService: CustomFilterService,
private userManagementService: UserManagementService,
) {
super();
2023-11-09 13:34:34 +01:00
this.configurationService.initStaticPortal(this.irish.portal);
}
2023-11-09 13:34:34 +01:00
ngOnDestroy() {
super.ngOnDestroy();
this.customFilterService.clearSubscriptions();
this.configurationService.clearSubscriptions();
this.smoothScroll.clearSubscriptions();
}
ngOnInit() {
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
2023-11-09 13:34:34 +01:00
this.user = user;
this.initialize();
}));
this.subscriptions.push(this.layoutService.rootClass.subscribe(rootClass => {
this.rootClass = rootClass;
this.cdr.detectChanges();
}));
if (typeof document !== 'undefined') {
this.isClient = true;
}
}
initialize() {
this.menuItems = [
new MenuItem("national", this.stakeholderUtils.entities.country + ' ' + this.stakeholderUtils.entities.stakeholder, "", "/", false, [], null, {}, null, null, null),
new MenuItem("rpo", this.stakeholderUtils.entities.organization + ' ' + this.stakeholderUtils.entities.stakeholders, "", "/rpo", false, [], null, {}, null, null, null, "/rpo"),
new MenuItem("rfo", this.stakeholderUtils.entities.funder + ' ' + this.stakeholderUtils.entities.stakeholders, "", "/rfo", false, [], null, {}, null, null, null, "/rfo"),
new MenuItem("researcher", "Researcher Monitors", "", "/researcher", false, [], null, {}, null, null, null, "/researcher"),
new MenuItem("repository", "Repository Monitors", "", "/repository", false, [], null, {}, null, null, null, "/repository"),
];
if (this.user) {
this.userMenuItems = [];
this.user.orcid = '0000-0003-4768-182X';
if(this.user.orcid) {
this.authorId = this.user.orcid;
this.results = {
success: (res: string | number) => {
if(+res > 0) {
this.userMenuItems.push(new MenuItem("my-researcher", "My Researcher Monitor", "", "/researcher/" + this.authorId, false, [], null, {}, null, null, null, null));
this.staticUserItems();
}
}
}
this.search();
} else {
this.staticUserItems();
}
}
}
staticUserItems() {
this.userMenuItems.push(
new MenuItem("myorcidlinks", "My Orcid links", "", "/my-orcid-links", false, [], null, {}, null, null, null, null),
new MenuItem("myclaims", "My claims", "", "/participate/myclaims", false, [], null, {}, null, null, null, null),
new MenuItem("claims", "Link", "", "/participate/claim", false, [], null, {}, null, null, null, null),
new MenuItem("upload-dois", "Upload DOIs", "", "/upload-dois", false, [], null, {}, null, null, null, null)
);
if (this.isAdmin) {
this.userMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, {name: 'settings'}));
}
}
public get isAdmin() {
return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user);
}
2023-10-23 14:26:21 +02:00
}