Project

General

Profile

1
import {Component} from '@angular/core';
2
import {ActivatedRoute, NavigationStart, Router} from '@angular/router';
3

    
4
import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
5
import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu';
6
import {EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service';
7

    
8
import {Session, User} from './openaireLibrary/login/utils/helper.class';
9
import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class";
10
import {UserManagementService} from "./openaireLibrary/services/user-management.service";
11

    
12
@Component({
13
  //changeDetection: ChangeDetectionStrategy.Default,
14
  //encapsulation: ViewEncapsulation.Emulated,
15
  selector: 'app-root',
16
  styles: [`
17
  `],
18
  template: `
19

    
20
    <navbar *ngIf="properties && loginCheck" [portal]="properties.dashboard" [properties]=properties [onlyTop]=false [user]="user"
21
            [communityId]="properties.adminToolsCommunity" [userMenuItems]=userMenuItems [menuItems]=menuItems></navbar>
22
    <div class="custom-main-content">
23
      <main>
24
        <router-outlet></router-outlet>
25
      </main>
26
    </div>
27
    <feedback *ngIf="isClient && properties && properties.environment === 'production'" portalName="Explore" [feedbackmail]=feedbackmail></feedback>
28
    <cookie-law *ngIf="isClient" position="bottom">
29
      OpenAIRE uses cookies in order to function properly.<br>
30
      Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing
31
      experience possible.
32
      By using the OpenAIRE portal you accept our use of cookies. <a
33
      href="//ec.europa.eu/ipg/basics/legal/cookies/index_en.htm" target="_blank"> Read more <span class="uk-icon">
34
              <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="chevron-right"
35
                   ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03" points="7 4 13 10 7 16"></polyline></svg>
36
              </span></a>
37
    </cookie-law>
38
    <bottom *ngIf="isClient && properties" [properties]="properties"></bottom>
39

    
40
  `
41

    
42
})
43
export class AppComponent {
44
  isClient: boolean = false;
45
  clientLoad = 0;
46

    
47
  userMenuItems: MenuItem[] = [new MenuItem("", "My profile", "", "", false, [], [], {}),
48
    new MenuItem("", "My links", "", "/myclaims", false, [], ["/myclaims"], {})]
49

    
50

    
51
  menuItems: RootMenuItem [] = [];
52

    
53
  feedbackmail: string;
54
  properties: EnvProperties;
55
  user: User;
56
  loginCheck: boolean = false;
57

    
58
  constructor(private  route: ActivatedRoute, private propertiesService: EnvironmentSpecificService,
59
              private router: Router, private userManagementService: UserManagementService) {
60
    router.events.forEach((event) => {
61
      if (event instanceof NavigationStart) {
62
        HelperFunctions.scroll();
63
      }
64
    });
65
  }
66

    
67
  ngOnInit() {
68

    
69
    if (typeof document !== 'undefined') {
70
      try {
71
        this.isClient = true;
72

    
73
      } catch (e) {
74
      }
75

    
76
    }
77
    this.propertiesService.loadEnvironment()
78
      .then(es => {
79
        this.propertiesService.setEnvProperties(es);
80
        this.properties = this.propertiesService.envSpecific;
81
        this.feedbackmail = this.properties.feedbackmail;
82
        this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe(user => {
83
          this.user = user;
84
          this.loginCheck = true;
85
          this.buildMenu();
86
        });
87
        //console.log(this.properties.loginUrl);
88
      }, error => {
89
        console.log("App couldn't fetch properties");
90
        console.log(error);
91

    
92
      });
93
  }
94

    
95
  buildMenu() {
96
    this.menuItems = [
97
      {
98
        rootItem: new MenuItem("search", "Search", "", "/search/find", false, [], ["/search/find"], {}),
99
        items: [new MenuItem("", "Publications", "", "/search/find/publications", false, ["publication"], ["/search/find/publications"], {}),
100
          new MenuItem("", "Research Data", "", "/search/find/datasets", false, ["dataset"], ["/search/find/datasets"], {}),
101
          new MenuItem("", "Software", "", "/search/find/software", false, ["software"], ["/search/find/software"], {}),
102
          new MenuItem("", "Other Research Products", "", "/search/find/other", false, ["orp"], ["/search/find/other"], {}),
103
          new MenuItem("", "Projects", "", "/search/find/projects/", false, ["project"], ["/search/find/projects"], {}),
104
          new MenuItem("", "Content Providers", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], {}),
105
          new MenuItem("", "Organizations", "", "/search/find/organizations/", false, ["organization"], ["/search/find/organizations"], {})
106
        ]
107
      },
108
      {
109
        rootItem: new MenuItem("deposit", "Deposit", "", "/participate/deposit-datasets", false, [], ["/participate/deposit/learn-how"], {}),
110
        //rootItem: new MenuItem("deposit", "Deposit", "", "/participate/deposit/learn-how", false, [], ["/participate/deposit/learn-how"], {}),
111
        items: []
112
        //rootItem: new MenuItem("share", "Share", "", "", false, [], ["/participate/deposit-publications", "/participate/deposit-datasets"], {}),
113
        //items: [new MenuItem("", "Publications", "", "/participate/deposit-publications", false, ["publication"], ["/participate/deposit-publications"], {}),
114
        //  new MenuItem("", "Research Data", "", "/participate/deposit-datasets", false, ["dataset"], ["/participate/deposit-datasets"], {})]
115
      },
116
      {
117
        rootItem: new MenuItem("link", "Link", "", "/participate/claim", false, [], ["/participate/claim"], {}),
118
        items: [new MenuItem("", "Start linking", "", "/participate/claim", false, [], ["/participate/claim"], {}),
119
          new MenuItem("", "Learn more", this.properties.claimsInformationLink, "", false, [], [], {})]
120
      },
121
      {
122
        rootItem: new MenuItem("datasources", "Content Providers", "", "", false, ["datasource"], [], {}),
123
        items: [new MenuItem("", "Data Policies", "https://beta.openaire.eu/oa-policies-mandates", "", false, ["datasource"], [""], {}),
124
          new MenuItem("", "Repositories", "", "/search/content-providers", false, ["datasource"], ["/search/content-providers"], {}),
125
          new MenuItem("", "Journals", "", "/search/journals", false, ["datasource"], ["/search/journals"], {}),
126
          new MenuItem("", "Registries", "", "/search/entity-registries", false, ["datasource"], ["/search/entity-registries"], {}),
127
          new MenuItem("", "Browse all", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], {})]
128
      }
129
    ];
130
    if (Session.isPortalAdministrator(this.user)) {
131
      this.userMenuItems.push(new MenuItem("", "Manage all links", "", "/claims", false, [], ["/claims"], {}));
132
      this.userMenuItems.push(new MenuItem("", "Manage helptexts",
133
        ((this.properties.environment == "beta") ? "https://beta.admin.connect.openaire.eu" : "https://admin.explore.openaire.eu") + "/dashboard?communityId=openaire", "", true, [], [], {}))
134

    
135
    } else if (Session.isClaimsCurator(this.user)) {
136
      this.userMenuItems.push(new MenuItem("", "Manage all links", "", "/claims", false, [], ["/claims"], {}));
137

    
138
    }
139
    this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {}));
140
  }
141
}
142

    
(2-2/4)