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
|
}]);
|