Project

General

Profile

1
import {Component, Inject, Input, PLATFORM_ID} from '@angular/core';
2
import {ActivatedRoute} from "@angular/router";
3
import {HelperFunctions} from '../HelperFunctions.class';
4
import {RouterHelper} from "../routerHelper.class";
5
import {EnvProperties} from '../properties/env-properties';
6
import {isPlatformBrowser} from "@angular/common";
7

    
8
@Component({
9
  selector: 'showAuthors',
10
  template: `
11
    <div *ngIf="authors != undefined" class="uk-height-max-small uk-overflow-auto">
12
      <!--div *ngIf="showAll && numberOfAuthors > authorsLimit">
13
        <a (click)="numberOfAuthors = authorsLimit;">View less authors</a>
14
      </div-->
15

    
16
      <span *ngFor="let author of authors.slice(0,numberOfAuthors) let i=index">
17
          <i *ngIf="!author.orcid || (properties.environment == 'production') || !testBrowser">{{author.fullName}}</i
18
          ><a *ngIf="author.orcid && (properties.environment != 'production') && testBrowser"
19
              class="cursor-default"> <img src="assets/common-assets/common/ORCIDiD_icon16x16.png" alt="">{{" "}}
20
        <i>{{author.fullName}}</i></a
21
      ><div *ngIf="author.orcid && (properties.environment != 'production')"
22
            class=" default-dropdown uk-margin-remove-top uk-padding-medium"
23
            uk-dropdown="pos: bottom-left; mode:click" style="min-width: 70px !important;">
24
            <b class="uk-margin-top">{{author.fullName}}</b>
25

    
26
            <div>
27
              <div class="uk-text-muted uk-margin-small-bottom uk-margin-small-top">ORCID</div>
28
              <span><input #element class="uk-padding-small uk-disabled" name="code"
29
                           [value]="author.orcid"></span>{{" "}}
30
              <span>
31
                <button
32
                    [class]="'uk-icon-clipboard uk-button uk-button-primary uk-button-small orcid_clipboard_btn_auhtor_'+i"
33
                    (click)="copyToClipboard(element)" title="Copy to clipboard">
34
                  Copy
35
                </button>
36
                {{" "}}
37
                <a class="uk-button uk-button-primary uk-button-small" title="Visit author in Orcid"
38
                   [href]="properties.orcidURL+author.orcid" target="_blank">
39
                  Visit
40
                </a>
41
              </span>
42
            </div>
43

    
44
            <hr>
45
            <div class="uk-margin-top">
46
              Search <b>{{author.fullName}}</b> by <b>ORCID</b> in OpenAIRE's
47
            </div>
48
            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
49
              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
50
                 [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])"
51
                 routerLinkActive="router-link-active" routerLink="/search/advanced/publications">
52
                  Publications
53
              </a>
54
            </div>
55
            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
56
              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
57
                 [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])"
58
                 routerLinkActive="router-link-active" routerLink="/search/advanced/datasets">
59
                  Research Data
60
              </a>
61
            </div>
62
            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
63
              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
64
                 [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])"
65
                 routerLinkActive="router-link-active" routerLink="/search/advanced/software">
66
                  Software
67
              </a>
68
            </div>
69
            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
70
              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
71
                 [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])"
72
                 routerLinkActive="router-link-active" routerLink="/search/advanced/other">
73
                  Other Research Products
74
              </a>
75
            </div>
76
          </div
77
          ><span>;{{" "}}</span>
78
        </span>
79
      <span *ngIf="numberOfAuthors == authorsLimit && authors.length > authorsLimit">	... </span>
80
      <span *ngIf="showAll && numberOfAuthors == authorsLimit && authors.length > authorsLimit">
81
          <a (click)="numberOfAuthors = authors.length;">
82
            view all {{authors.length | number}} authors
83
          </a>
84
        </span>
85
      <!--span *ngIf="showAll && numberOfAuthors > authorsLimit">
86
        <a (click)="numberOfAuthors = authorsLimit; scroll()">View less authors</a>
87
      </span-->
88
    </div>
89
    <div *ngIf="authors != undefined && showAll && numberOfAuthors > authorsLimit" class="uk-width-1-1 uk-text-right">
90
      <!--scroll()-->
91
      <a (click)="numberOfAuthors = authorsLimit;">View less authors</a>
92
    </div>
93
  `
94

    
95
})
96

    
97
export class ShowAuthorsComponent {
98
  @Input() authors: {"fullName": string, "orcid": string}[];
99
  @Input() authorsLimit: number = 30;
100
  @Input() showAll: boolean = true;
101

    
102
  public numberOfAuthors: number;
103
  public properties:EnvProperties;
104
  public routerHelper:RouterHelper = new RouterHelper();
105

    
106
  testBrowser: boolean;
107

    
108
  constructor (private route: ActivatedRoute, @Inject(PLATFORM_ID) private platformId: string) {
109
    this.testBrowser = isPlatformBrowser(platformId);
110
  }
111

    
112
  ngOnInit() {
113
    this.route.data.subscribe((data: { envSpecific: EnvProperties }) => {
114
      this.properties = data.envSpecific;
115
    });
116
    this.numberOfAuthors = this.authorsLimit;
117
  }
118
  
119
  copyToClipboard(element: HTMLInputElement){
120
    element.select();
121
    if(typeof document !== 'undefined') {
122
      document.execCommand('copy');
123
    }
124
  }
125

    
126
  public  quote(params: string):string {
127
    return '"'+params+'"';
128
  }
129

    
130
  public scroll() {
131
    HelperFunctions.scroll();
132
  }
133
}
(1-1/2)