Project

General

Profile

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

    
3
import { FetchResearchResults } from '../../utils/fetchEntitiesClasses/fetchResearchResults.class';
4

    
5
import { ErrorCodes} from '../../utils/properties/errorCodes';
6
import { RouterHelper } from '../../utils/routerHelper.class';
7
import { EnvProperties } from '../../utils/properties/env-properties';
8
import {AlertModal} from "../../utils/modal/alert";
9

    
10
@Component({
11
  selector: 'relatedDatasourcesTab',
12
  template: `
13
<!--      <errorMessages  [status]="[fetchPublications.searchUtils.status, fetchDatasets.searchUtils.status, fetchSoftware.searchUtils.status, fetchOrps.searchUtils.status]"-->
14
<!--                        [type]="'related content providers'" tab_error_class=true>-->
15
<!--      </errorMessages>-->
16

    
17
<!--      <div *ngIf="(fetchPublications.searchUtils.status == errorCodes.DONE || fetchDatasets.searchUtils.status == errorCodes.DONE-->
18
<!--                   || fetchSoftware.searchUtils.status == errorCodes.DONE || fetchOrps.searchUtils.status == errorCodes.DONE)-->
19
<!--                   && !loading">-->
20
<!--&lt;!&ndash;            <div *ngIf="results && results.size > pageSize" class="uk-margin">&ndash;&gt;-->
21
<!--&lt;!&ndash;              <span class="uk-text-bold">{{results.size | number}} related content providers, page {{page | number}} of {{totalPages(results.size) | number}}</span>&ndash;&gt;-->
22
<!--&lt;!&ndash;              <paging-no-load class="uk-float-right" [currentPage]="page" [totalResults]="results.size" [size]="pageSize" (pageChange)="updatePage($event)"></paging-no-load>&ndash;&gt;-->
23
<!--&lt;!&ndash;            </div>&ndash;&gt;-->
24
<!--        <no-load-paging *ngIf="results.size >pageSize"-->
25
<!--                        [type]="'content providers'"-->
26
<!--                        (pageChange)="updatePage($event)"-->
27
<!--                        [page]="page" [pageSize]="pageSize"-->
28
<!--                        [totalResults]="results.size">-->
29
<!--        </no-load-paging>-->
30
<!--          -->
31
<!--            <table class="uk-table uk-table-striped">-->
32
<!--                <thead>-->
33
<!--                    <tr>-->
34
<!--                        <th class="uk-text-center">Content Provider Name</th>-->
35
<!--                        <th *ngIf="fetchPublications.results.length > 0 || fetchPublications.searchUtils.status == errorCodes.ERROR"-->
36
<!--                            class="uk-text-center">-->
37
<!--                          Number of Publications-->
38
<!--                        </th>-->
39
<!--                        <th *ngIf="fetchDatasets.results.length > 0 || fetchDatasets.searchUtils.status == errorCodes.ERROR"-->
40
<!--                            class="uk-text-center">-->
41
<!--                          Number of Research Data-->
42
<!--                        </th>-->
43
<!--                        <th *ngIf="fetchSoftware.results.length > 0 || fetchSoftware.searchUtils.status == errorCodes.ERROR"-->
44
<!--                            class="uk-text-center">-->
45
<!--                          Number of Software-->
46
<!--                        </th>-->
47
<!--                        <th *ngIf="fetchOrps.results.length > 0 || fetchOrps.searchUtils.status == errorCodes.ERROR"-->
48
<!--                            class="uk-text-center">-->
49
<!--                          Number of Other Research Products-->
50
<!--                        </th>-->
51
<!--                    </tr>-->
52
<!--                </thead>-->
53
<!--                <tbody>-->
54
<!--                  <ng-container *ngIf="results">-->
55
<!--                      <ng-container *ngFor="let id of getKeys(results); let i=index">-->
56
<!--                        <tr *ngIf="i>=(page-1)*pageSize && i<page*pageSize">-->
57
<!--                          <td class="uk-text-center">-->
58
<!--                              <a [queryParams]="{datasourceId: id}" routerLinkActive="router-link-active" routerLink="/search/dataprovider" (click)="onLinkClick()">-->
59
<!--                                  {{results.get(id).name}}-->
60
<!--                              </a>-->
61
<!--                          </td>-->
62
<!--                          <td *ngIf="fetchPublications.results.length > 0" class="uk-text-center">-->
63
<!--&lt;!&ndash;                            *ngIf="results.get(id).countPublications > 0"&ndash;&gt;-->
64
<!--                            <a -->
65
<!--                                [queryParams]="routerHelper.createQueryParams(['f0', 'fv0', 'f1', 'fv1', 'type', 'qf'], ['resulthostingdatasourceid', id, 'collectedfromdatasourceid', dataproviderId, 'publications', 'false'])"-->
66
<!--                                routerLinkActive="router-link-active" [routerLink]="properties.searchLinkToAdvancedResults" (click)="onLinkClick()">-->
67
<!--                                  {{results.get(id).countPublications | number}}-->
68
<!--                            </a>-->
69
<!--&lt;!&ndash;                            <span *ngIf="results.get(id).countPublications <= 0">-</span>&ndash;&gt;-->
70
<!--                          </td>-->
71
<!--                          <td *ngIf="fetchPublications.searchUtils.status == errorCodes.ERROR" class="uk-text-center">-</td>-->
72

    
73
<!--                          <td *ngIf="fetchDatasets.results.length > 0" class="uk-text-center">-->
74
<!--&lt;!&ndash;                            *ngIf="results.get(id).countDatasets > 0"&ndash;&gt;-->
75
<!--                            <a  -->
76
<!--                                [queryParams]="routerHelper.createQueryParams(['f0', 'fv0', 'f1', 'fv1', 'type', 'qf'], ['resulthostingdatasourceid', id, 'collectedfromdatasourceid', dataproviderId, 'datasets', 'false'])"-->
77
<!--                                routerLinkActive="router-link-active" [routerLink]="properties.searchLinkToAdvancedResults" (click)="onLinkClick()">-->
78
<!--                                  {{results.get(id).countDatasets | number}}-->
79
<!--                            </a>-->
80
<!--&lt;!&ndash;                            <span *ngIf="results.get(id).countDatasets <= 0">-</span>&ndash;&gt;-->
81
<!--                          </td>-->
82
<!--                          <td *ngIf="fetchDatasets.searchUtils.status == errorCodes.ERROR" class="uk-text-center">-</td>-->
83

    
84
<!--                          <td *ngIf="fetchSoftware.results.length > 0" class="uk-text-center">-->
85
<!--&lt;!&ndash;                            *ngIf="results.get(id).countSoftware > 0"&ndash;&gt;-->
86
<!--                            <a  -->
87
<!--                                [queryParams]="routerHelper.createQueryParams(['f0', 'fv0', 'f1', 'fv1', 'type', 'qf'], ['resulthostingdatasourceid', id, 'collectedfromdatasourceid', dataproviderId, 'software', 'false'])"-->
88
<!--                                routerLinkActive="router-link-active" [routerLink]="properties.searchLinkToAdvancedResults" (click)="onLinkClick()">-->
89
<!--                                  {{results.get(id).countSoftware | number}}-->
90
<!--                            </a>-->
91
<!--&lt;!&ndash;                            <span *ngIf="results.get(id).countSoftware <= 0">-</span>&ndash;&gt;-->
92
<!--                          </td>-->
93
<!--                          <td *ngIf="fetchSoftware.searchUtils.status == errorCodes.ERROR" class="uk-text-center">-</td>-->
94

    
95
<!--                          <td *ngIf="fetchOrps.results.length > 0" class="uk-text-center">-->
96
<!--&lt;!&ndash;                            *ngIf="results.get(id).countOrps > 0"&ndash;&gt;-->
97
<!--                            <a -->
98
<!--                                [queryParams]="routerHelper.createQueryParams(['f0', 'fv0', 'f1', 'fv1', 'type', 'qf'], ['resulthostingdatasourceid', id, 'collectedfromdatasourceid', dataproviderId, 'other', 'false'])"-->
99
<!--                                routerLinkActive="router-link-active" [routerLink]="properties.searchLinkToAdvancedResults" (click)="onLinkClick()">-->
100
<!--                                  {{results.get(id).countOrps | number}}-->
101
<!--                            </a>-->
102
<!--&lt;!&ndash;                            <span *ngIf="results.get(id).countOrps <= 0">-</span>&ndash;&gt;-->
103
<!--                          </td>-->
104
<!--                          <td *ngIf="fetchOrps.searchUtils.status == errorCodes.ERROR" class="uk-text-center">-</td>-->
105
<!--                        </tr>-->
106
<!--                      </ng-container>-->
107
<!--                    </ng-container>-->
108
<!--                </tbody>-->
109
<!--            </table>-->
110
<!--        </div>-->
111

    
112

    
113
    <errorMessages  [status]="[fetchResults.searchUtils.status]"
114
                    [type]="'related content providers'" tab_error_class=true>
115
    </errorMessages>
116
    
117
    <div *ngIf="fetchResults.searchUtils.status == errorCodes.DONE && !loading">
118
      <div class="uk-text-muted uk-text-small uk-margin-bottom">
119
        *Only top 100 content providers that host research outcomes and are aggregated by {{collectedFromName}} are shown.
120
      </div>
121
      <no-load-paging *ngIf="results.length >pageSize"
122
                      [type]="'content providers'"
123
                      (pageChange)="updatePage($event)"
124
                      [page]="page" [pageSize]="pageSize"
125
                      [totalResults]="results.length">
126
      </no-load-paging>
127
    
128
      <table class="uk-table uk-table-striped">
129
        <thead>
130
        <tr>
131
          <th class="uk-text-center">Content Provider Name</th>
132
          <th *ngIf="fetchResults.results.length > 0 || fetchResults.searchUtils.status == errorCodes.ERROR"
133
              class="uk-text-center">
134
            Number of Research Outcomes
135
          </th>
136
        </tr>
137
        </thead>
138
        <tbody>
139
          <ng-container *ngIf="results">
140
            <ng-container *ngFor="let result of results; let i=index">
141
              <tr *ngIf="i>=(page-1)*pageSize && i<page*pageSize">
142
                <td class="uk-text-center">
143
                  <a [queryParams]="{datasourceId: result.id}" routerLinkActive="router-link-active" routerLink="/search/dataprovider"
144
                     (click)="onLinkClick()">
145
                    {{result.name}}
146
                  </a>
147
                </td>
148
                <td *ngIf="fetchResults.results.length > 0" class="uk-text-center">
149
                  <a
150
                    [queryParams]="routerHelper.createQueryParams(['f0', 'fv0', 'f1', 'fv1', 'f2', 'fv2', 'qf'], ['collectedfromdatasourceid', dataproviderId, 'resulthostingdatasourceid,or', dataproviderId, 'resulthostingdatasourceid', result.id, 'false'])"
151
                    routerLinkActive="router-link-active" [routerLink]="properties.searchLinkToAdvancedResults"
152
                    (click)="onLinkClick()">
153
                    {{result.count | number}}
154
                  </a>
155
                </td>
156
              </tr>
157
            </ng-container>
158
          </ng-container>
159
        </tbody>
160
      </table>
161
      <no-load-paging *ngIf="results.length >pageSize"
162
                      [type]="'content providers'"
163
                      (pageChange)="updatePage($event)"
164
                      [page]="page" [pageSize]="pageSize"
165
                      [totalResults]="results.length">
166
      </no-load-paging>
167
    </div>
168
  `
169
})
170

    
171
export class RelatedDatasourcesTabComponent {
172
    @Input() dataproviderId: string;
173
    // @Input() fetchPublications : FetchResearchResults;
174
    // @Input() fetchDatasets : FetchResearchResults;
175
    // @Input() fetchSoftware : FetchResearchResults;
176
    // @Input() fetchOrps: FetchResearchResults;
177
    @Input() fetchResults: FetchResearchResults;
178

    
179
    // true: preprocessing is not over
180
    @Input() loading: boolean = true;
181
    // Εvery content provider's id is a single key of a map
182
    //@Input() results: Map<string, {"name": string, "countPublications": string, "countDatasets": string, "countSoftware": string, "countOrps": string}>;
183
    @Input() results: {"id": string, "name": string, "count": number}[];
184
    @Input() properties:EnvProperties ;
185
    @Input() collectedFromName: string ="[no title available]";
186
    @Input() modal: AlertModal;
187

    
188
    public routerHelper:RouterHelper = new RouterHelper();
189
    public errorCodes:ErrorCodes = new ErrorCodes();
190

    
191
    public page: number = 1;
192
    public pageSize: number = 10;
193

    
194
    constructor () {}
195

    
196
    ngOnInit() {}
197

    
198
    ngOnDestroy() {}
199

    
200
    totalPages(totalResults: number): number {
201
      let totalPages:any = totalResults/this.pageSize;
202
      if(!(Number.isInteger(totalPages))) {
203
          totalPages = (parseInt(totalPages, this.pageSize) + 1);
204
      }
205
      return totalPages;
206
    }
207

    
208
    updatePage($event) {
209
      this.page = $event.value;
210
    }
211

    
212
    public getKeys( map) {
213
      return Array.from(map.keys());
214
    }
215

    
216
    public onLinkClick() {
217
      if(this.modal) {
218
        this.modal.cancel();
219
      }
220
    }
221
}
(11-11/13)