Project

General

Profile

1
import {Component, OnDestroy, OnInit} from '@angular/core';
2
import {Breadcrumb} from '../openaireLibrary/utils/breadcrumbs/breadcrumbs.component';
3
import {member, team} from './team';
4
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
5
import {Meta, Title} from '@angular/platform-browser';
6
import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
7
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
8
import {properties} from '../../environments/environment';
9
import {Subscription} from 'rxjs';
10
import {Router} from '@angular/router';
11

    
12
@Component({
13
  selector: 'team',
14
  template: `
15
    <schema2jsonld [URL]="properties.domain + '/about/team'"
16
                   [logoURL]="properties.domain + '/assets/common-assets/logo-small-graph.png'"
17
                   [description]="description"  type="other" [name]="title">
18
    </schema2jsonld>
19
    <div>
20
      <div class="uk-section">
21
        <div class="uk-margin-large-left uk-margin-medium-bottom">
22
          <breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
23
        </div>
24
        <div class="uk-container">
25
          <h2 class="uk-text-center">Meet The Team</h2>
26
          <div class="uk-padding-small">
27
            <div class="uk-grid uk-child-width-1-3@m uk-child-width-1-2@s uk-child-width-1-1 uk-margin-large-top" uk-grid>
28
              <div *ngFor="let member of team;" class="uk-card uk-card-flip" [class.uk-active]="member.active === true">
29
                <div class="uk-card-flip-inner">
30
                  <div class="front">
31
                    <div class="uk-padding">
32
                      <div class="uk-text-center">
33
                        <img [src]="'assets/graph-assets/about/team/' + member.photo">
34
                        <div class="uk-margin-medium-top role">
35
                          <h6 class="portal-color">{{member.name}}</h6>
36
                          <div class="uk-text-muted">
37
                            {{member.role}}
38
                          </div>
39
                        </div>
40
                      </div>
41
                    </div>
42
                    <div class="uk-position-bottom-center uk-margin-bottom">
43
                      <a class="portal-link" (click)="member.active = true">Learn more</a>
44
                    </div>
45
                  </div>
46
                  <div class="back">
47
                    <div class="uk-padding">
48
                      <div class="uk-text-center">
49
                        <img [src]="'assets/graph-assets/about/team/' + member.photo">
50
                        <div class="uk-margin-medium-top">
51
                          <h6 class="uk-text-center portal-color">{{member.name}}</h6>
52
                        </div>
53
                      </div>
54
                      <div class="uk-margin-small-bottom">
55
                        <span class="uk-text-bold">Role: </span> {{member.role}}
56
                      </div>
57
                      <div class="uk-margin-small-bottom">
58
                        <span class="uk-text-bold">Affiliation: </span> {{member.affiliation}}
59
                      </div>
60
                      <div>
61
                        <span class="uk-text-bold">Country: </span> {{member.country}}
62
                      </div>
63
                      <!-- <div>
64
                         <span class="uk-text-bold">Responsibilities: </span> {{member.responsibilities}}
65
                       </div>-->
66
                    </div>
67
                    <div class="uk-position-bottom-center uk-margin-bottom">
68
                      <a class="portal-link" (click)="member.active = false">Back</a>
69
                    </div>
70
                  </div>
71
                </div>
72
              </div>
73
            </div>
74
          </div>
75
        </div>
76
      </div>
77
    </div>
78
  `,
79
  styleUrls: ['team.component.css']
80
})
81
export class TeamComponent implements OnInit, OnDestroy  {
82
  public team: member[] = team;
83
  properties: EnvProperties = properties;
84
  description = "The OpenAIRE Research Graph Team";
85
  title = "OpenAIRE - Research Graph | Team";
86
  subs: Subscription[] = [];
87
  public breadcrumbs: Breadcrumb[] = [
88
    {
89
      name: 'home',
90
      route: '/'
91
    },
92
    {
93
      name: 'about',
94
      route: '/about'
95
    },
96
    {
97
      name: 'Team'
98
    }
99
  ];
100
  
101
  constructor(private _title: Title, private _piwikService:PiwikService,
102
              private _router: Router, private _meta: Meta,
103
              private seoService: SEOService) {
104
  }
105
  
106
  ngOnInit() {
107
    this._title.setTitle(this.title);
108
    this._meta.updateTag({content:this.description},"name='description'");
109
    this._meta.updateTag({content:this.description},"property='og:description'");
110
    this._meta.updateTag({content:this.title},"property='og:title'");
111
    var url = this.properties.domain + this.properties.baseLink+this._router.url;
112
    this.seoService.createLinkForCanonicalURL(url, false);
113
    this._meta.updateTag({content:url},"property='og:url'");
114
    if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
115
      this.subs.push(this._piwikService.trackView(this.properties, this.title).subscribe());
116
    }
117
  }
118
  
119
  public ngOnDestroy() {
120
    this.subs.forEach(sub => {
121
      if(sub instanceof Subscription) {
122
        sub.unsubscribe();
123
      }
124
    });
125
  }
126
}
(7-7/8)