Project

General

Profile

1 43785 argiro.kok
import {Component, Input} from '@angular/core';
2 44072 konstantin
import {ActivatedRoute, Params} from '@angular/router';
3 43785 argiro.kok
4 44619 argiro.kok
import { SearchPublicationsComponent } from '../../searchPages/simple/searchPublications.component';
5 44072 konstantin
import { SearchPublicationsService } from '../../services/searchPublications.service';
6 44619 argiro.kok
import { SearchDatasetsComponent } from '../../searchPages/simple/searchDatasets.component';
7 44072 konstantin
import { SearchDatasetsService } from '../../services/searchDatasets.service';
8 44796 konstantin
import { SearchProjectsComponent } from '../../searchPages/simple/searchProjects.component';
9
import { SearchProjectsService } from '../../services/searchProjects.service';
10
import { SearchDataprovidersComponent } from '../../searchPages/simple/searchDataproviders.component';
11
import { SearchDataprovidersService } from '../../services/searchDataproviders.service';
12 44072 konstantin
13 43785 argiro.kok
@Component({
14
    selector: 'tabs',
15
    template: `
16 44732 konstantin
        <ul *ngIf="tabs != undefined" class="nav nav-tabs">
17 43785 argiro.kok
            <li *ngIf="tabs.length>0" class="active">
18 44796 konstantin
                <a data-toggle="tab" href="#{{tabs[0].content}}">
19 43785 argiro.kok
                    {{tabs[0].name}}
20 44072 konstantin
                    <span class="badge" *ngIf="tabs[0].content=='publicationsTab'">
21 44726 argiro.kok
                        {{searchPublicationsComponent.searchUtils.totalResults}}
22 44072 konstantin
                    </span>
23
                    <span class="badge" *ngIf="tabs[0].content=='datasetsTab'">
24 44726 argiro.kok
                        {{searchDatasetsComponent.searchUtils.totalResults}}
25 44072 konstantin
                    </span>
26 44796 konstantin
                    <span class="badge" *ngIf="tabs[0].content=='projectsTab'">
27
                        {{searchProjectsComponent.searchUtils.totalResults}}
28
                    </span>
29
                    <span class="badge" *ngIf="tabs[0].content=='datasourcesTab'">
30
                        {{searchDataprovidersComponent.searchUtils.totalResults}}
31
                    </span>
32
                    <span class="badge" *ngIf="tabs[0].content=='organizationsTab'">
33
                        {{organizations.length}}
34
                    </span>
35 43785 argiro.kok
                </a>
36
            </li>
37
38
            <li *ngFor="let tab of tabs; let i=index" role="presentation">
39 44796 konstantin
                <a *ngIf="i>0"
40
                    (click)="search(tab.content, 1, 10)" data-toggle="tab" href="#{{tab.content}}">
41
                        {{tab.name}}
42
                        <span class="badge" *ngIf="tab.content=='publicationsTab'">
43
                            {{searchPublicationsComponent.searchUtils.totalResults}}
44
                        </span>
45
                        <span class="badge" *ngIf="tab.content=='datasetsTab'">
46
                            {{searchDatasetsComponent.searchUtils.totalResults}}
47
                        </span>
48
                        <span class="badge" *ngIf="tab.content=='projectsTab'">
49
                            {{searchProjectsComponent.searchUtils.totalResults}}
50
                        </span>
51
                        <span class="badge" *ngIf="tab.content=='datasourcesTab'">
52
                            {{searchDataprovidersComponent.searchUtils.totalResults}}
53
                        </span>
54
                        <span class="badge" *ngIf="tab.content=='organizationsTab'">
55
                            {{organizations.length}}
56
                        </span>
57 43785 argiro.kok
                </a>
58
            </li>
59
        </ul>
60
61 44732 konstantin
        <div *ngIf="tabs != undefined" class="tab-content">
62 43785 argiro.kok
            <div *ngIf="tabs.length>0" id="{{tabs[0].content}}" class="tab-pane fade in active panel-body">
63
                <publicationsTab *ngIf="tabs[0].content=='publicationsTab'"
64 44406 konstantin
                                 [paramsForSearchLink]="paramsForSearchLink"
65 44072 konstantin
                                 [searchPublicationsComponent]="searchPublicationsComponent">
66 43785 argiro.kok
                </publicationsTab>
67
                <datasetsTab *ngIf="tabs[0].content=='datasetsTab'"
68 44406 konstantin
                             [paramsForSearchLink]="paramsForSearchLink"
69 44072 konstantin
                             [searchDatasetsComponent]="searchDatasetsComponent">
70 43785 argiro.kok
                </datasetsTab>
71
                <statisticsTab *ngIf="tabs[0].content=='statisticsTab'"
72 44796 konstantin
                               [statistics]="statistics">
73 43785 argiro.kok
                </statisticsTab>
74
                <projectsTab *ngIf="tabs[0].content=='projectsTab'"
75 44796 konstantin
                             [paramsForSearchLink]="paramsForSearchLink"
76
                             [searchProjectsComponent]="searchProjectsComponent">
77 43785 argiro.kok
                </projectsTab>
78
                <datasourcesTab *ngIf="tabs[0].content=='datasourcesTab'"
79 44796 konstantin
                                [paramsForSearchLink]="paramsForSearchLink"
80
                                [searchDataprovidersComponent]="searchDataprovidersComponent">
81 43785 argiro.kok
                </datasourcesTab>
82 44796 konstantin
                <organizationsTab *ngIf="tabs[0].content=='organizationsTab'">
83
                                  [organizations]="organizations"
84
                </organizationsTab>
85 43785 argiro.kok
            </div>
86
87
            <div *ngFor="let tab of tabs; let i=index" id="{{tab.content}}" class="tab-pane fade panel-body">
88 44072 konstantin
                <publicationsTab *ngIf="i>0 && tab.content=='publicationsTab'"
89 44406 konstantin
                                 [paramsForSearchLink]="paramsForSearchLink"
90 44072 konstantin
                                 [searchPublicationsComponent] = "searchPublicationsComponent">
91
                </publicationsTab>
92 44406 konstantin
                <datasetsTab *ngIf="i>0 && tab.content=='datasetsTab'"
93
                             [paramsForSearchLink]="paramsForSearchLink"
94
                             [searchDatasetsComponent]="searchDatasetsComponent">
95
                </datasetsTab>
96 44382 konstantin
                <statisticsTab *ngIf="i>0 && tab.content=='statisticsTab'"></statisticsTab>
97 44796 konstantin
                <projectsTab *ngIf="i>0 && tab.content=='projectsTab'"
98
                             [paramsForSearchLink]="paramsForSearchLink"
99
                             [searchProjectsComponent]="searchProjectsComponent">
100
                </projectsTab>
101
                <datasourcesTab *ngIf="i>0 && tab.content=='datasourcesTab'"
102
                                [paramsForSearchLink]="paramsForSearchLink"
103
                                [searchDataprovidersComponent]="searchDataprovidersComponent">
104
                </datasourcesTab>
105
                <organizationsTab *ngIf="i>0 && tab.content=='organizationsTab'"
106
                                  [organizations]="organizations">
107
                </organizationsTab>
108 43785 argiro.kok
            </div>
109
        </div>
110
    `
111
})
112
113
export class TabsComponent {
114
115 44072 konstantin
    @Input() id: string;
116 44382 konstantin
    @Input() resultsBy: string;
117 43785 argiro.kok
    @Input() tabs: {"name": string, "content": string}[];
118 44072 konstantin
    //@Input() publications;
119
    //@Input() datasets;
120 43785 argiro.kok
    @Input() statistics;
121 44796 konstantin
    //@Input() projects;
122
    //@Input() datasources;
123
    @Input() organizations: {"name": string, "url": string}[];
124 43785 argiro.kok
125 44826 argiro.kok
    public paramsForSearchLink: string = "";
126 44406 konstantin
127 44826 argiro.kok
    public reloadPublications: boolean = true;
128
    public reloadDatasets: boolean = true;
129
    public reloadProjects: boolean = true;
130
    public reloadDataproviders: boolean = true;
131 44382 konstantin
132 44826 argiro.kok
    public searchPublicationsComponent : SearchPublicationsComponent;
133
    public searchDatasetsComponent: SearchDatasetsComponent;
134
    public searchProjectsComponent: SearchProjectsComponent;
135
    public searchDataprovidersComponent: SearchDataprovidersComponent;
136 43785 argiro.kok
137 44072 konstantin
    constructor (private  route: ActivatedRoute,
138
        private _searchPublicationsService: SearchPublicationsService,
139 44796 konstantin
        private _searchDatasetsService: SearchDatasetsService,
140
        private _searchProjectsService: SearchProjectsService,
141
        private _searchDataprovidersService: SearchDataprovidersService) {
142 44072 konstantin
            this.searchPublicationsComponent = new SearchPublicationsComponent(this.route, this._searchPublicationsService);
143 44383 argiro.kok
            this.searchDatasetsComponent = new SearchDatasetsComponent(this.route, this._searchDatasetsService);
144 44796 konstantin
            this.searchProjectsComponent = new SearchProjectsComponent(this.route, this._searchProjectsService);
145
            this.searchDataprovidersComponent = new SearchDataprovidersComponent(this.route, this._searchDataprovidersService);
146 44072 konstantin
    }
147
148
    ngOnInit() {
149 44732 konstantin
        if(this.tabs != undefined && this.tabs.length > 0) {
150 44796 konstantin
            this.search(this.tabs[0].content, 1, 10);
151
            this.count(1, 0);
152 44382 konstantin
        }
153 44406 konstantin
154
        if(this.resultsBy == "collectedFrom") {
155
            this.paramsForSearchLink = "?collectedfromdatasourceid="+this.id;
156
        } else if (this.resultsBy == "hostedBy") {
157
            this.paramsForSearchLink = "?resulthostingdatasourceid="+this.id;
158
        }
159 44072 konstantin
    }
160
161 44796 konstantin
    private count(page: number, size: number) {
162
        console.info("number of tabs: "+this.tabs.length);
163
164
        for(let i=1; i<this.tabs.length; i++) {
165
            let content: string = this.tabs[i].content;
166
            if(content=='publicationsTab') {
167
                this.countPublications(page, size);
168
            } else if(content=='datasetsTab') {
169
                this.countDatasets(page, size);
170
            } else if(content=='projectsTab') {
171
                this.countProjects(page, size);
172
            } else if(content=='datasourcesTab') {
173
                this.countDataproviders(page, size);
174
            }
175 44382 konstantin
        }
176 44072 konstantin
    }
177
178 44796 konstantin
    private search(content: string, page: number, size: number) {
179 44382 konstantin
        if(content=='publicationsTab') {
180 44796 konstantin
            this.searchPublications(page, size);
181 44382 konstantin
        } else if(content=='datasetsTab') {
182 44796 konstantin
            this.searchDatasets(page, size);
183
        } else if(content=='projectsTab') {
184
            this.searchProjects(page, size);
185
        } else if(content=='datasourcesTab') {
186
            this.searchDataproviders(page, size);
187 44382 konstantin
        }
188
    }
189
190 44796 konstantin
    private searchPublications(page: number, size: number) {
191 44382 konstantin
        if(this.reloadPublications) {
192 44796 konstantin
            this.searchPublicationsComponent.getResultsForDataproviders(this.id, this.resultsBy, page, size);
193 44382 konstantin
        }
194
        this.reloadPublications = false;
195 44072 konstantin
     }
196
197 44796 konstantin
     private countPublications(page: number, size: number) {
198
         this.searchPublicationsComponent.getResultsForDataproviders(this.id, this.resultsBy, page, size);
199
     }
200
201
     private searchDatasets(page: number, size: number) {
202 44382 konstantin
         if(this.reloadDatasets) {
203 44796 konstantin
             this.searchDatasetsComponent.getResultsForDataproviders(this.id, this.resultsBy, page, size);
204 44382 konstantin
         }
205
         this.reloadDatasets = false;
206 44072 konstantin
     }
207 44796 konstantin
208
     private countDatasets(page: number, size: number) {
209
         this.searchDatasetsComponent.getResultsForDataproviders(this.id, this.resultsBy, page, size);
210
     }
211
212
     private searchProjects(page: number, size: number) {
213
         if(this.reloadProjects) {
214
             this.searchProjectsComponent.getResultsForDataproviders(this.id, page, size);
215
         }
216
         this.reloadProjects = false;
217
     }
218
219
     private countProjects(page: number, size: number) {
220
         this.searchProjectsComponent.getResultsForDataproviders(this.id, page, size);
221
     }
222
223
     private searchDataproviders(page: number, size: number) {
224
         if(this.reloadDataproviders) {
225
             this.searchDataprovidersComponent.getResultsForDataproviders(this.id, page, size);
226
         }
227
         this.reloadDataproviders = false;
228
     }
229
230
     private countDataproviders(page: number, size: number) {
231
         this.searchDataprovidersComponent.getResultsForDataproviders(this.id, page, size);
232
     }
233 43785 argiro.kok
}