Project

General

Profile

1
import {Component, Input} from '@angular/core';
2
import {SearchResult}     from '../../utils/entities/searchResult';
3
import { ErrorCodes} from '../../utils/properties/openaireProperties';
4
import {RouterHelper} from '../../utils/routerHelper.class';
5

    
6
@Component({
7
    selector: 'search-result',
8
    template: `
9
     <ul class="uk-list uk-list-line  uk-margin">
10
      <div *ngIf="status == errorCodes.NONE" class="uk-alert uk-alert-primary uk-animation-fade" role="alert">No Results found</div>
11
      <div *ngIf="status == errorCodes.ERROR" class="uk-alert uk-alert-warning uk-animation-fade" role="alert">An Error Occured</div>
12
      <div *ngIf="status == errorCodes.NOT_AVAILABLE" class="uk-alert uk-alert-danger uk-animation-fade" role="alert">Service not available</div>
13
      <div *ngIf="status == errorCodes.LOADING && showLoading" class="uk-alert uk-alert-primary uk-animation-fade" role="alert">Loading...</div>
14

    
15
        <li *ngFor="let result of results" class="uk-animation-fade">
16
            <h4 class = "{{result.title.accessMode}} {{result.title.sc39}}" [title] = result.title.accessMode >
17
                <!--a href="{{result['title'].url}}"-->
18
                <!--a [queryParams]="{articleId: 'od_______908::3a5b2885656a91307156325644e73b92'}" routerLinkActive="router-link-active" routerLink="search/publication"-->
19

    
20
                <a *ngIf="lazy=='true'" [queryParams]="routerHelper.createQueryParam(urlParam,result.id)" routerLinkActive="router-link-active" routerLink="/search/{{type}}">
21
                    <p *ngIf="result['title'].name != undefined && result['title'].name != ''"
22
                        [innerHTML]="result['title'].name">
23
                    </p>
24
                    <!--p *ngIf="result['title'].name == undefined || result['title'].name == ''">
25
                        {{result['title'].url}}
26
                    </p-->
27
                    <p *ngIf="result['title'].name == undefined || result['title'].name == ''">
28
                        [no title available]
29
                    </p>
30
                </a>
31

    
32
                <a *ngIf="lazy=='false'" href="/search/{{type}}?{{urlParam}}={{result.id}}">
33
                    <p *ngIf="result['title'].name != undefined && result['title'].name != ''"
34
                        [innerHTML]="result['title'].name">
35
                    </p>
36
                    <p *ngIf="result['title'].name == undefined || result['title'].name == ''">
37
                        [no title available]
38
                    </p>
39
                </a>
40
            </h4>
41

    
42
            <div>
43
                <span *ngIf="result['authors'] != undefined">
44
                    <span *ngFor="let author of result['authors'].slice(0,15)">
45
                        <!--a href="{{author['url']}}"-->
46
                        <a [queryParams]="{personId: author.id}" routerLinkActive="router-link-active" routerLink="/search/person">
47
                            {{author['name']}};
48
                        </a>
49
                    </span>
50
                    <span *ngIf="result['authors'].length > 15">...</span>
51
                </span>
52
                <span *ngIf="result.year != undefined && result.year != ''">
53
                    ({{result.year}})
54
                </span>
55
            </div>
56

    
57
            <div *ngIf="result.publisher != undefined && result.publisher != ''">Publisher: {{result.publisher}}</div>
58

    
59
            <div *ngIf="result.country != undefined && result.country != ''">Country: {{result.country}}</div>
60

    
61
            <div *ngIf="result['projects'] != undefined">
62
                <span> Projects: </span>
63
                <span *ngFor="let project of result['projects'].slice(0,15) let i=index">
64
                    <!--a *ngIf="project.url != undefined" href="{{project.url}}"-->
65
                    <span>
66
                        <a *ngIf="project.id != undefined" [queryParams]="{projectId: project.id}" routerLinkActive="router-link-active" routerLink="/search/project">
67
                            {{project['funderShortname']?project['funderShortname']:project['funderName']}}
68
                            | {{ project['acronym']?project['acronym']:project['title']}} ({{project.code}})</a><p
69

    
70
                            *ngIf="project.id == undefined">
71
                            {{project['funderShortname']?project['funderShortname']:project['funderName']}}
72
                            | {{ project['acronym']?project['acronym']:project['title']}} ({{project.code}})</p></span><span
73

    
74
                    *ngIf="i < result['projects'].length-1">,</span>
75
                </span>
76
                <span *ngIf="result['projects'].length > 15">...</span>
77
            </div>
78

    
79
            <blockquote *ngIf="result.description != undefined && result.description != ''">
80
                <div class="text-justify">
81
                    {{result.description}}
82
                </div>
83
            </blockquote>
84

    
85
            <mark *ngIf="result.embargoEndDate != undefined && result.embargoEndDate != ''">Embargo End Date: {{result.embargoEndDate}}</mark>
86

    
87

    
88
            <div *ngIf="result['funders'] != undefined">
89
              <span> Funders: </span>
90
              <span *ngFor="let funder of result['funders'] let i=index">
91

    
92
                  <span *ngIf="funder.funderShortname">
93
                    {{funder.funderShortname}}</span><span
94

    
95
                    *ngIf="i < result['funders'].length-1">,</span>
96
              </span>
97
            </div>
98
            <span *ngIf="result.startYear && result.endYear"> ({{result.startYear}} - {{result.endYear}})</span>
99
            <div *ngIf="result['organizations'] != undefined && result['organizations'].length > 0">
100
                <span> Organizations: </span>
101
                <span *ngFor="let organization of result['organizations'] let i=index">
102
                    <!--a *ngIf="organization.url != undefined" href="{{organization.url}}"-->
103
                    <a *ngIf="organization.id != undefined" [queryParams]="{organizationId: organization.id}" routerLinkActive="router-link-active" routerLink="/search/organization">
104
                            {{organization.name}}</a><span
105

    
106
                        *ngIf="organization.id == undefined">
107
                            {{organization.name}}</span><span
108

    
109
                        *ngIf="i < result['organizations'].length-1">,</span>
110
                </span>
111
            </div>
112

    
113
            <div *ngIf="result['type'] != undefined && result['type'] != ''">Type: {{result['type']}}</div>
114
            <div *ngIf="result['websiteURL'] != undefined && result['websiteURL'] != ''">
115
                <span>Website URL: </span>
116
                <span>
117
                    <a href="{{result['websiteURL']}}" target="_blank" class="uk-icon-external-link custom-icon">
118
                        {{result['websiteURL']}}
119
                    </a>
120
                </span>
121
            </div>
122
            <div *ngIf="result['OAIPMHURL'] != undefined && result['OAIPMHURL'] != ''">
123
                <span>OAI-PMH URL: </span>
124
                <span>
125
                    <a href="{{result['OAIPMHURL']}}" target="_blank" class="uk-icon-external-link custom-icon">
126
                        {{result['OAIPMHURL']}}
127
                    </a>
128
                </span>
129
            </div>
130

    
131
            <div *ngIf="result['compatibility'] != undefined && result['compatibility'] != ''">
132
                Compatibility: {{result.compatibility}}
133
            </div>
134

    
135
            <div *ngIf="result['countries'] != undefined && result['countries'].length > 0">
136
                Countries: {{result.countries}}
137
            </div>
138

    
139
        </li>
140
    </ul>
141
    `
142
})
143

    
144
export class SearchResultComponent {
145
    @Input() page: number;
146
    @Input() totalResults: number;
147
    @Input() results: SearchResult[];
148
    @Input() status: number;
149
    @Input() type: string;
150
    @Input() urlParam: string;
151
    @Input() showLoading: boolean = false;
152
    @Input() lazy: string = "true";
153

    
154
    public errorCodes:ErrorCodes = new ErrorCodes();
155
    public routerHelper:RouterHelper = new RouterHelper();
156
    public errorMessage: string = "No results found";
157

    
158
    constructor () {
159

    
160
    }
161

    
162
    ngOnInit() {}
163
}
(20-20/22)