Project

General

Profile

1
import {Component, Input, ElementRef} from '@angular/core';
2

    
3
@Component({
4
    selector: 'availableOn',
5
    template: `
6
    <dl class="uk-description-list-line">
7
        <dt class="title">Available on</dt>
8
        <dd class="line" *ngFor="let available of availableOn.slice(0, showNum) let i=index" >
9
            <div>
10
              <!--div class="{{available['bestAccessMode']}}"-->
11
              <div [class]="available['bestAccessMode'] ? available['bestAccessMode'] : 'UNKNOWN ACCESSMODE'">
12
                <span *ngIf="available.downloadUrl.length > 1"
13
                      class="custom-external custom-icon">
14
                      {{available.downloadName}}
15
                  <span *ngFor="let url of available.downloadUrl; let i=index;">
16
                      <a  href="{{url}}" target="_blank"
17

    
18
                          attr.uk-tooltip="pos:right; delay:10"
19
                          [title]="available.accessMode[i] ? available.accessMode[i] : 'UNKNOWN ACCESSMODE'">
20
                          [{{(i+1) | number}}]
21
                      </a>
22
                  </span>
23
                </span>
24
                <a  class="custom-external custom-icon"
25
                    *ngIf="available['downloadUrl'].length == 1"
26
                    href="{{available['downloadUrl']}}"
27
                    target="_blank"
28

    
29
                    attr.uk-tooltip="pos:right; delay:10"
30
                    [title]="available.bestAccessMode ? available.bestAccessMode : 'UNKNOWN ACCESSMODE'">
31
                    {{available.downloadName}}
32
                </a>
33
                <span *ngIf="available.collectedName" class="uk-text-bold">via</span>
34
                <a *ngIf="available.collectedName"
35
                    [queryParams]="{datasourceId: available.collectedId}" routerLinkActive="router-link-active" routerLink="/search/dataprovider">
36
                  {{available.collectedName}}
37
                </a>
38
                <span *ngIf="available.type || available.year">(<span *ngIf="available.type">{{available.type}}<span *ngIf="available.year">, </span></span><span *ngIf="available.year">{{available.year}}</span>)</span>
39
              </div>
40
            </div>
41
        </dd>
42
    </dl>
43

    
44
    <div *ngIf="showNum > threshold" class="uk-text-right">
45
      <a (click)="showNum = threshold; scroll()">
46
        View less
47
      </a>
48
    </div>
49
    <div *ngIf="showNum == threshold && availableOn && availableOn.length > 5">...</div>
50
    <div *ngIf="showNum == threshold && availableOn && availableOn.length > 5" class="uk-text-right">
51
      <a (click)="showNum = availableOn.length;">
52
        View more
53
      </a>
54
    </div>
55
    `
56
    })
57

    
58
export class AvailableOnComponent {
59
    @Input() availableOn: { "downloadName": string, "downloadUrl": string[],
60
                            "collectedName": string, "collectedId": string,
61
                            "accessMode": string[], "bestAccessMode": string,
62
                            "type": string, "year":string }[];
63

    
64
    public threshold: number = 5;
65
    public showNum: number = 5;
66

    
67
    constructor (private element: ElementRef) {}
68

    
69
    ngOnInit() {}
70

    
71
    public scroll() {
72
      console.info("scroll into view");
73
      if (typeof document !== 'undefined') {
74
         this.element.nativeElement.scrollIntoView();
75
      }
76
    }
77
}
(2-2/17)