Project

General

Profile

1
/**
2
 * Created by sandro on 6/18/15.
3
 */
4

    
5

    
6
dliApp.controller('statsController', ['$scope', "$location", 'queryService', function ($scope, $location, queryService) {
7

    
8
    $scope.stats_objects = [];
9
    $scope.stat_datasets = [];
10
    $scope.stat_publications = [];
11
    $scope.stat_links = [];
12

    
13
    queryService.getStatsDetail().success(function (data) {
14
        $scope.stats = data['stats'];
15

    
16
        for (var i = 0; i < $scope.stats.length; i++) {
17
            var item = $scope.stats[i];
18
            $scope.stat_datasets.push([item['datasource'], item['numberOfDatasets']]);
19
            $scope.stat_publications.push([item['datasource'], item['numberOfPublication']]);
20
            $scope.stat_links.push([item['datasource'], item['numberOfRelations']]);
21
            $scope.stats_objects.push([item['datasource'], item['numberOfObjects']]);
22
        }
23

    
24
        var chart = c3.generate({
25
            bindto: '#chart_dataset',
26
            data: {
27
                columns: $scope.stat_datasets,
28
                type: 'bar'
29
            },
30
            bar: {
31
                width: {
32
                    ratio: 1
33
                }
34
            }
35
        });
36

    
37

    
38
        var chart2 = c3.generate({
39
            bindto: '#chart_publication',
40
            data: {
41
                columns: $scope.stat_publications,
42
                type: 'bar'
43
            },
44
            bar: {
45
                width: {
46
                    ratio: 1
47
                }
48
            }
49
        });
50

    
51

    
52
        var chart3 = c3.generate({
53
            bindto: '#chart_links',
54
            data: {
55
                columns: $scope.stat_links,
56
                type: 'bar'
57
            },
58
            bar: {
59
                width: {
60
                    ratio: 1
61
                }
62
            }
63
        });
64

    
65

    
66
        var chart4 = c3.generate({
67
            bindto: '#chart_objects',
68
            data: {
69
                columns: $scope.stats_objects,
70
                type: 'bar'
71
            },
72
            bar: {
73
                width: {
74
                    ratio: 1
75
                }
76
            }
77
        });
78
        // $('ul.tabs').tabs();
79
    });
80

    
81
    queryService.getStats().success(function (data) {
82
        var stats = data['stats'];
83

    
84
        var timeStats = ['x'];
85
        var links = {}
86
        var objects = {}
87
        for (var key in stats) {
88
            timeStats.push(key.substr(0, 10));
89
            var currentStats = stats[key];
90
            for (var i = 0; i < currentStats.length; i++) {
91
                var datasource = currentStats[i]['datasource'];
92
                if (!links.hasOwnProperty(datasource)) {
93
                    links[datasource] = [datasource];
94
                }
95
                links[datasource].push(currentStats[i]['numberOfRelations']);
96

    
97
                if (!objects.hasOwnProperty(datasource)) {
98
                    objects[datasource] = [datasource];
99
                }
100
                objects[datasource].push(currentStats[i]['numberOfObjects']);
101

    
102

    
103
            }
104
        }
105

    
106
        $scope.historyLinks = [timeStats];
107
        for (var k  in links) {
108
            $scope.historyLinks.push(links[k])
109
        }
110

    
111
        $scope.historyObjects = [timeStats];
112
        for (var k  in objects) {
113
            $scope.historyObjects.push(objects[k])
114
        }
115

    
116

    
117
        var chart = c3.generate({
118
            bindto: '#chart_history_links',
119
            data: {
120
                x: 'x',
121
//        xFormat: '%Y%m%d', // 'xFormat' can be used as custom format of 'x'
122
                columns: $scope.historyLinks
123
            },
124
            axis: {
125
                x: {
126
                    type: 'timeseries',
127
                    height: 60,
128

    
129
                    tick: {
130
                        format: '%Y-%m-%d',
131
                        rotate: -45
132

    
133

    
134
                    }
135
                }
136
            }
137
        });
138

    
139

    
140
        var chart2 = c3.generate({
141
            bindto: '#chart_history_objects',
142
            data: {
143
                x: 'x',
144
//        xFormat: '%Y%m%d', // 'xFormat' can be used as custom format of 'x'
145
                columns: $scope.historyObjects
146
            },
147
            axis: {
148
                x: {
149
                    type: 'timeseries',
150
                    height: 60,
151

    
152
                    tick: {
153
                        format: '%Y-%m-%d',
154
                        rotate: -45
155

    
156
                    }
157
                }
158
            }
159
        });
160

    
161

    
162
        setInterval(function () {
163
            $('ul.tabs').tabs()
164
        }, 1000);
165
    });
166

    
167

    
168
}]);
169

    
170
dliApp.controller('mainController', ['$scope', "$location", 'queryService', function ($scope, $location, queryService) {
171

    
172

    
173
    $scope.stats_objects = [];
174
    $scope.stat_links = [];
175

    
176
    queryService.getStatsDetail().success(function (data) {
177
        $scope.stats = data['stats'];
178

    
179
        for (var i = 0; i < $scope.stats.length; i++) {
180
            var item = $scope.stats[i];
181
            $scope.stat_links.push([item['datasource'], item['numberOfRelations']]);
182
            $scope.stats_objects.push([item['datasource'], item['numberOfObjects']]);
183
        }
184

    
185
        var chart3 = c3.generate({
186
            bindto: '#chart_links',
187
            data: {
188
                columns: $scope.stat_links,
189
                type: 'bar'
190
            },
191
            bar: {
192
                width: {
193
                    ratio: 1
194
                }
195
            }
196
        });
197

    
198

    
199
        var chart4 = c3.generate({
200
            bindto: '#chart_objects',
201
            data: {
202
                columns: $scope.stats_objects,
203
                type: 'bar'
204
            },
205
            bar: {
206
                width: {
207
                    ratio: 1
208
                }
209
            }
210
        });
211

    
212

    
213
        $('ul.tabs').tabs();
214

    
215

    
216
    });
217

    
218

    
219
    $scope.doSomething = function () {
220
        $location.path("/query/q=" + $scope.query)
221
    }
222
}]);
223

    
224
dliApp.controller('detailController', ['$scope', '$routeParams', '$location', 'queryService', function ($scope, $routeParams, $location, queryService) {
225
    initSpinner();
226

    
227
    $scope.identifier = $routeParams['id']
228
    $scope.showSpinner = function () {
229
        showSpinner();
230
    }
231
    $scope.hideSpinner = function () {
232
        hideSpinner();
233
    }
234

    
235

    
236
    $scope.showSpinner();
237
    queryService.getItem($scope.identifier).success(function (data) {
238
        if ('result' in data) {
239
            if ('objects' in data.result) {
240
                $scope.item = data.result.objects[0];
241
            }
242
        }
243
        $scope.hideSpinner();
244
    }).error(function (data) {
245
        $scope.hideSpinner();
246
    });
247
}]);
248

    
249
dliApp.controller('queryController', ['$scope', '$routeParams', '$location', 'queryService', function ($scope, $routeParams, $location, queryService) {
250

    
251
    //TO DO Titolo non più lungo di 240 caratteri in caso aggiungere puntini
252
    // Oltre il quarto autore aggiungere puntini
253

    
254
    $scope.query = $routeParams['q'];
255
    if ($scope.query == null || $scope.query.length == 0) {
256
        $location.path("/")
257
    }
258
    $scope.page = $routeParams['page'];
259
    $scope.filter = $routeParams['filter'];
260
    $scope.total = 0;
261
    $scope.pageFrom = 1;
262
    $scope.pageto = 6;
263

    
264
    if ($scope.page != null) {
265
        $scope.page = parseInt($scope.page);
266
        $scope.pageFrom = Math.max(1, $scope.page - 4);
267
        $scope.pageto = $scope.page + 4;
268
    }
269
    $scope.pageRange = [];
270
    $scope.activePage = function (n) {
271
        if (n == $scope.page)
272
            return "active";
273
        return ""
274
    };
275
    $scope.doSomething = function () {
276
        $location.path("/query/q=" + $scope.query);
277
    };
278

    
279
    $scope.countRelatedDatasets = function (obj) {
280
        try {
281
            count = 0;
282

    
283
            for (i = 0; i < obj['relations'].length; i++) {
284
                if (obj['relations'][i]['relatedEntityType'] === "dataset")
285
                    count++;
286
            }
287
            return count;
288
        } catch (e) {
289
            return 0;
290
        }
291
    };
292

    
293
    $scope.countOtherRelations = function (obj) {
294
        try {
295
            count = 0;
296

    
297
            for (i = 0; i < obj['relations'].length; i++) {
298
                if (obj['relations'][i]['relatedEntityType'] != "dataset" && obj['relations'][i]['relatedEntityType'] != "publication")
299
                    count++;
300
            }
301
            return count;
302
        } catch (e) {
303
            return 0;
304
        }
305
    };
306

    
307

    
308
    $scope.countRelatedPublication = function (obj) {
309
        try {
310
            count = 0;
311

    
312
            for (i = 0; i < obj['relations'].length; i++) {
313
                if (obj['relations'][i]['relatedEntityType'] === "publication")
314
                    count++;
315
            }
316
            return count;
317
        } catch (e) {
318
            return 0;
319
        }
320
    };
321

    
322

    
323
    queryService.query($scope.query, $scope.page).success(function (data) {
324

    
325
        $scope.result_query = data['result']['objects'];
326
        $scope.facet = data['result']['facet'];
327
        $scope.total = data['result']['total'];
328

    
329
        var totalPages = Math.round($scope.total / 10);
330

    
331
        if ($scope.total > 10 && $scope.total % 10)
332
            totalPages += 1;
333

    
334
        $scope.totalPages = totalPages - 1;
335

    
336
        $scope.lastPage = Math.min($scope.pageto, totalPages - 1);
337

    
338

    
339
        if ($scope.page != null)
340
            $scope.pageto = Math.max(Math.min($scope.pageFrom + 4, $scope.lastPage), $scope.page);
341
        else {
342
            $scope.page = 1;
343
            $scope.pageto = Math.max(Math.min($scope.pageFrom + 4, $scope.lastPage), 1);
344
        }
345
        $scope.pageRange = [];
346
        for (var i = $scope.pageFrom; i <= $scope.pageto; i++) {
347
            $scope.pageRange.push(i)
348
        }
349
    }).error(function (data) {
350

    
351
    })
352
}]);
(2-2/3)