improvements suggested by codeclimate
Costa Tsaousis (ktsaou) committed
Jan 7, 2017 at 15:05 UTC
e98a1f05abf52168d5a13dea5234f992f295c815
4 files changed
+258
-188
.codeclimate.yml
+8
@@ -20,6 +20,14 @@ engines:
20
enabled: false
21
complexity:
22
enabled: false
23
+ no-eval:
24
+ enabled: false
25
+ no-extend-native:
26
+ enabled: false
27
+ no-void:
28
+ enabled: false
29
+ no-alert:
30
+ enabled: false
31
fixme:
32
enabled: false
33
phpmd:
node.d/snmp.node.js
+88
-49
@@ -109,7 +109,7 @@ var net_snmp = require('net-snmp');
109
var extend = require('extend');
110
var netdata = require('netdata');
111
112
-if(netdata.options.DEBUG === true) netdata.debug('loaded ' + __filename + ' plugin');
112
+if(netdata.options.DEBUG === true) netdata.debug('loaded', __filename, ' plugin');
113
114
netdata.processors.snmp = {
115
name: 'snmp',
@@ -125,62 +125,72 @@ netdata.processors.snmp = {
125
},
126
127
prepare: function(service) {
128
+ var __DEBUG = netdata.options.DEBUG;
129
+
130
if(typeof service.snmp_oids === 'undefined' || service.snmp_oids === null || service.snmp_oids.length === 0) {
131
// this is the first time we see this service
132
131
- if(netdata.options.DEBUG === true)
133
+ if(__DEBUG === true)
134
netdata.debug(service.module.name + ': ' + service.name + ': preparing ' + this.name + ' OIDs');
135
136
// build an index of all OIDs
137
service.snmp_oids_index = {};
136
- for(var c in service.request.charts) {
138
+ var chart_keys = Object.keys(service.request.charts);
139
+ var chart_keys_len = chart_keys.length;
140
+ while(chart_keys_len--) {
141
+ var c = chart_keys[chart_keys_len];
142
+ var chart = service.request.charts[c];
143
+
144
// for each chart
145
139
- if(netdata.options.DEBUG === true)
146
+ if(__DEBUG === true)
147
netdata.debug(service.module.name + ': ' + service.name + ': indexing ' + this.name + ' chart: ' + c);
148
142
- if(typeof service.request.charts[c].titleoid !== 'undefined') {
143
- service.snmp_oids_index[this.fixoid(service.request.charts[c].titleoid)] = {
149
+ if(typeof chart.titleoid !== 'undefined') {
150
+ service.snmp_oids_index[this.fixoid(chart.titleoid)] = {
151
type: 'title',
145
- link: service.request.charts[c]
152
+ link: chart
153
};
154
}
155
149
- for(var d in service.request.charts[c].dimensions) {
156
+ var dim_keys = Object.keys(chart.dimensions);
157
+ var dim_keys_len = dim_keys.length;
158
+ while(dim_keys_len--) {
159
+ var d = dim_keys[dim_keys_len];
160
+ var dim = chart.dimensions[d];
161
+
162
// for each dimension in the chart
163
152
- var oid = this.fixoid(service.request.charts[c].dimensions[d].oid);
153
- var oidname = this.fixoid(service.request.charts[c].dimensions[d].oidname);
164
+ var oid = this.fixoid(dim.oid);
165
+ var oidname = this.fixoid(dim.oidname);
166
155
- if(netdata.options.DEBUG === true)
167
+ if(__DEBUG === true)
168
netdata.debug(service.module.name + ': ' + service.name + ': indexing ' + this.name + ' chart: ' + c + ', dimension: ' + d + ', OID: ' + oid + ", OID name: " + oidname);
169
170
// link it to the point we need to set the value to
171
service.snmp_oids_index[oid] = {
172
type: 'value',
161
- link: service.request.charts[c].dimensions[d]
173
+ link: dim
174
};
175
176
if(typeof oidname !== 'undefined')
177
service.snmp_oids_index[oidname] = {
178
type: 'name',
167
- link: service.request.charts[c].dimensions[d]
179
+ link: dim
180
};
181
182
// and set the value to null
171
- service.request.charts[c].dimensions[d].value = null;
183
+ dim.value = null;
184
}
185
}
186
175
- if(netdata.options.DEBUG === true)
187
+ if(__DEBUG === true)
188
netdata.debug(service.module.name + ': ' + service.name + ': indexed ' + this.name + ' OIDs: ' + netdata.stringify(service.snmp_oids_index));
189
190
// now create the array of OIDs needed by net-snmp
179
- service.snmp_oids = new Array();
180
- for(var o in service.snmp_oids_index)
181
- service.snmp_oids.push(o);
191
+ service.snmp_oids = Object.keys(service.snmp_oids_index);
192
183
- if(netdata.options.DEBUG === true)
193
+ if(__DEBUG === true)
194
netdata.debug(service.module.name + ': ' + service.name + ': final list of ' + this.name + ' OIDs: ' + netdata.stringify(service.snmp_oids));
195
196
service.snmp_oids_cleaned = 0;
@@ -189,14 +199,19 @@ netdata.processors.snmp = {
199
service.snmp_oids_cleaned = 1;
200
201
// the second time, keep only values
202
+
203
service.snmp_oids = new Array();
193
- for(var o in service.snmp_oids_index)
194
- if(service.snmp_oids_index[o].type === 'value')
195
- service.snmp_oids.push(o);
204
+ var oid_keys = Object.keys(service.snmp_oids_index);
205
+ var oid_keys_len = oid_keys.length;
206
+ while(oid_keys_len--) {
207
+ if (service.snmp_oids_index[oid_keys[oid_keys_len]].type === 'value')
208
+ service.snmp_oids.push(oid_keys[oid_keys_len]);
209
+ }
210
}
211
},
212
213
getdata: function(service, index, ok, failed, callback) {
214
+ var __DEBUG = netdata.options.DEBUG;
215
var that = this;
216
217
if(index >= service.snmp_oids.length) {
@@ -218,7 +233,7 @@ netdata.processors.snmp = {
233
index += service.request.max_request_size;
234
}
235
221
- if(netdata.options.DEBUG === true)
236
+ if(__DEBUG === true)
237
netdata.debug(service.module.name + ': ' + service.name + ': making ' + slice.length + ' entries request, max is: ' + service.request.max_request_size);
238
239
service.snmp_session.get(slice, function(error, varbinds) {
@@ -231,14 +246,15 @@ netdata.processors.snmp = {
246
service.snmp_oids_index[slice[len]].value = null;
247
}
248
else {
234
- if(netdata.options.DEBUG === true)
249
+ if(__DEBUG === true)
250
netdata.debug(service.module.name + ': ' + service.name + ': got valid ' + service.module.name + ' response: ' + netdata.stringify(varbinds));
251
237
- for(var i = 0; i < varbinds.length; i++) {
252
+ var varbinds_len = varbinds.length;
253
+ for(var i = 0; i < varbinds_len ; i++) {
254
var value = null;
255
256
if(net_snmp.isVarbindError(varbinds[i])) {
241
- if(netdata.options.DEBUG === true)
257
+ if(__DEBUG === true)
258
netdata.debug(service.module.name + ': ' + service.name + ': failed ' + service.module.name + ' get for OIDs ' + varbinds[i].oid);
259
260
service.error('OID ' + varbinds[i].oid + ' gave error: ' + snmp.varbindError(varbinds[i]));
@@ -246,7 +262,7 @@ netdata.processors.snmp = {
262
failed++;
263
}
264
else {
249
- if(netdata.options.DEBUG === true)
265
+ if(__DEBUG === true)
266
netdata.debug(service.module.name + ': ' + service.name + ': found ' + service.module.name + ' value of OIDs ' + varbinds[i].oid + " = " + varbinds[i].value);
267
268
if(varbinds[i].type === net_snmp.ObjectType.OctetString)
@@ -266,7 +282,7 @@ netdata.processors.snmp = {
282
}
283
}
284
269
- if(netdata.options.DEBUG === true)
285
+ if(__DEBUG === true)
286
netdata.debug(service.module.name + ': ' + service.name + ': finished ' + service.module.name + ' with ' + ok + ' successful and ' + failed + ' failed values');
287
}
288
that.getdata(service, index, ok, failed, callback);
@@ -274,12 +290,14 @@ netdata.processors.snmp = {
290
},
291
292
process: function(service, callback) {
293
+ var __DEBUG = netdata.options.DEBUG;
294
+
295
this.prepare(service);
296
297
if(service.snmp_oids.length === 0) {
298
// no OIDs found for this service
299
282
- if(netdata.options.DEBUG === true)
300
+ if(__DEBUG === true)
301
service.error('no OIDs to process.');
302
303
callback(null);
@@ -290,13 +308,13 @@ netdata.processors.snmp = {
308
// no SNMP session has been created for this service
309
// the SNMP session is just the initialization of NET-SNMP
310
293
- if(netdata.options.DEBUG === true)
311
+ if(__DEBUG === true)
312
netdata.debug(service.module.name + ': ' + service.name + ': opening ' + this.name + ' session on ' + service.request.hostname + ' community ' + service.request.community + ' options ' + netdata.stringify(service.request.options));
313
314
// create the SNMP session
315
service.snmp_session = net_snmp.createSession (service.request.hostname, service.request.community, service.request.options);
316
299
- if(netdata.options.DEBUG === true)
317
+ if(__DEBUG === true)
318
netdata.debug(service.module.name + ': ' + service.name + ': got ' + this.name + ' session: ' + netdata.stringify(service.snmp_session));
319
320
// if we later need traps, this is how to do it:
@@ -323,19 +341,28 @@ var snmp = {
341
if(service.added !== true)
342
service.commit();
343
326
- for(var c in service.request.charts) {
327
- var chart = snmp.charts[c];
344
+ var chart_keys = Object.keys(service.request.charts);
345
+ var chart_keys_len = chart_keys.length;
346
+ for(var i = 0; i < chart_keys_len; i++) {
347
+ var c = chart_keys[i];
348
349
+ var chart = snmp.charts[c];
350
if(typeof chart === 'undefined') {
351
chart = service.chart(c, service.request.charts[c]);
352
snmp.charts[c] = chart;
353
}
354
355
service.begin(chart);
335
-
336
- for( var d in service.request.charts[c].dimensions )
337
- if(service.request.charts[c].dimensions[d].value !== null)
338
- service.set(d, service.request.charts[c].dimensions[d].value);
356
+
357
+ var dimensions = service.request.charts[c].dimensions;
358
+ var dim_keys = Object.keys(dimensions);
359
+ var dim_keys_len = dim_keys.length;
360
+ for(var j = 0; j < dim_keys_len ; j++) {
361
+ var d = dim_keys[j];
362
+
363
+ if (dimensions[d].value !== null)
364
+ service.set(d, dimensions[d].value);
365
+ }
366
367
service.end();
368
}
@@ -347,7 +374,9 @@ var snmp = {
374
// its purpose is to prepare the request and call
375
// netdata.serviceExecute()
376
serviceExecute: function(conf) {
350
- if(netdata.options.DEBUG === true)
377
+ var __DEBUG = netdata.options.DEBUG;
378
+
379
+ if(__DEBUG === true)
380
netdata.debug(this.name + ': snmp hostname: ' + conf.hostname + ', update_every: ' + conf.update_every);
381
382
var service = netdata.service({
@@ -359,30 +388,40 @@ var snmp = {
388
});
389
390
// multiply the charts, if required
362
- for(var c in service.request.charts) {
363
- if(netdata.options.DEBUG === true)
391
+ var chart_keys = Object.keys(service.request.charts);
392
+ var chart_keys_len = chart_keys.length;
393
+ for( var i = 0; i < chart_keys_len ; i++ ) {
394
+ var c = chart_keys[i];
395
+ var service_request_chart = service.request.charts[c];
396
+
397
+ if(__DEBUG === true)
398
netdata.debug(this.name + ': snmp hostname: ' + conf.hostname + ', examining chart: ' + c);
399
366
- if(typeof service.request.charts[c].update_every === 'undefined')
367
- service.request.charts[c].update_every = service.update_every;
400
+ if(typeof service_request_chart.update_every === 'undefined')
401
+ service_request_chart.update_every = service.update_every;
402
369
- if(typeof service.request.charts[c].multiply_range !== 'undefined') {
370
- var from = service.request.charts[c].multiply_range[0];
371
- var to = service.request.charts[c].multiply_range[1];
372
- var prio = service.request.charts[c].priority || 1;
403
+ if(typeof service_request_chart.multiply_range !== 'undefined') {
404
+ var from = service_request_chart.multiply_range[0];
405
+ var to = service_request_chart.multiply_range[1];
406
+ var prio = service_request_chart.priority || 1;
407
408
if(prio < snmp.base_priority) prio += snmp.base_priority;
409
410
while(from <= to) {
411
var id = c + from.toString();
378
- var chart = extend(true, {}, service.request.charts[c]);
412
+ var chart = extend(true, {}, service_request_chart);
413
chart.title += from.toString();
414
415
if(typeof chart.titleoid !== 'undefined')
416
chart.titleoid += from.toString();
417
418
chart.priority = prio++;
385
- for(var d in chart.dimensions) {
419
+
420
+ var dim_keys = Object.keys(chart.dimensions);
421
+ var dim_keys_len = dim_keys.length;
422
+ for(var j = 0; j < dim_keys_len ; j++) {
423
+ var d = dim_keys[j];
424
+
425
chart.dimensions[d].oid += from.toString();
426
427
if(typeof chart.dimensions[d].oidname !== 'undefined')
@@ -434,7 +473,7 @@ var snmp = {
473
service.module.processResponse(serv, data);
474
callback();
475
});
437
- },
476
+ }
477
};
478
479
module.exports = snmp;
web/dashboard.js
+161
-138
@@ -32,7 +32,7 @@
32
// global namespace
33
var NETDATA = window.NETDATA || {};
34
35
-(function(window, document, undefined) {
35
+(function(window, document) {
36
// ------------------------------------------------------------------------
37
// compatibility fixes
38
@@ -194,10 +194,7 @@ var NETDATA = window.NETDATA || {};
194
195
if(typeof netdataRegistry === 'undefined') {
196
// backward compatibility
197
- if(typeof netdataNoRegistry !== 'undefined' && netdataNoRegistry === false)
198
- netdataRegistry = true;
199
- else
200
- netdataRegistry = false;
197
+ netdataRegistry = (typeof netdataNoRegistry !== 'undefined' && netdataNoRegistry === false);
198
}
199
if(netdataRegistry === false && typeof netdataRegistryCallback === 'function')
200
netdataRegistry = true;
@@ -333,7 +330,7 @@ var NETDATA = window.NETDATA || {};
330
331
retries_on_data_failures: 3, // how many retries to make if we can't fetch chart data from the server
332
336
- setOptionCallback: function() { ; }
333
+ setOptionCallback: function() { }
334
},
335
336
debug: {
@@ -342,7 +339,7 @@ var NETDATA = window.NETDATA || {};
339
focus: false,
340
visibility: false,
341
chart_data_url: false,
345
- chart_errors: false, // FIXME
342
+ chart_errors: false, // FIXME: remember to set it to false before merging
343
chart_timing: false,
344
chart_calls: false,
345
libraries: false,
@@ -431,7 +428,11 @@ var NETDATA = window.NETDATA || {};
428
};
429
430
NETDATA.localStorageGetRecursive = function(obj, prefix, callback) {
434
- for(var i in obj) {
431
+ var keys = Object.keys(obj);
432
+ var len = keys.length;
433
+ while(len--) {
434
+ var i = keys[len];
435
+
436
if(typeof obj[i] === 'object') {
437
//console.log('object ' + prefix + '.' + i.toString());
438
NETDATA.localStorageGetRecursive(obj[i], prefix + '.' + i.toString(), callback);
@@ -478,7 +479,10 @@ var NETDATA = window.NETDATA || {};
479
NETDATA.setOption('stop_updates_when_focus_is_lost', true);
480
481
NETDATA.resetOptions = function() {
481
- for(var i in NETDATA.localStorage.default) {
482
+ var keys = Object.keys(NETDATA.localStorage.default);
483
+ var len = keys.length;
484
+ while(len--) {
485
+ var i = keys[len];
486
var a = i.split('.');
487
488
if(a[0] === 'options') {
@@ -494,7 +498,7 @@ var NETDATA = window.NETDATA || {};
498
}
499
}
500
}
497
- }
501
+ };
502
503
// ----------------------------------------------------------------------------------------------------------------
504
@@ -788,6 +792,13 @@ var NETDATA = window.NETDATA || {};
792
// Every time we download a chart definition, we save it here with .add()
793
// Then we try to get it back with .get(). If that fails, we download it.
794
795
+ NETDATA.fixHost = function(host) {
796
+ while(host.slice(-1) === '/')
797
+ host = host.substring(0, host.length - 1);
798
+
799
+ return host;
800
+ };
801
+
802
NETDATA.chartRegistry = {
803
charts: {},
804
@@ -821,8 +832,7 @@ var NETDATA = window.NETDATA || {};
832
},
833
834
downloadAll: function(host, callback) {
824
- while(host.slice(-1) === '/')
825
- host = host.substring(0, host.length - 1);
835
+ host = NETDATA.fixHost(host);
836
837
var self = this;
838
@@ -840,13 +850,13 @@ var NETDATA = window.NETDATA || {};
850
else NETDATA.error(406, host + '/api/v1/charts');
851
852
if(typeof callback === 'function')
843
- callback(data);
853
+ return callback(data);
854
})
855
.fail(function() {
856
NETDATA.error(405, host + '/api/v1/charts');
857
858
if(typeof callback === 'function')
849
- callback(null);
859
+ return callback(null);
860
});
861
}
862
};
@@ -971,7 +981,7 @@ var NETDATA = window.NETDATA || {};
981
dimensionStatus.prototype.setOptions = function(name_div, value_div, color) {
982
this.color = color;
983
974
- if(this.name_div != name_div) {
984
+ if(this.name_div !== name_div) {
985
this.name_div = name_div;
986
this.name_div.title = this.label;
987
this.name_div.style.color = this.color;
@@ -981,7 +991,7 @@ var NETDATA = window.NETDATA || {};
991
this.name_div.className = 'netdata-legend-name selected';
992
}
993
984
- if(this.value_div != value_div) {
994
+ if(this.value_div !== value_div) {
995
this.value_div = value_div;
996
this.value_div.title = this.label;
997
this.value_div.style.color = this.color;
@@ -1086,26 +1096,34 @@ var NETDATA = window.NETDATA || {};
1096
};
1097
1098
dimensionsVisibility.prototype.invalidateAll = function() {
1089
- for(var d in this.dimensions)
1090
- this.dimensions[d].invalidate();
1099
+ var keys = Object.keys(this.dimensions);
1100
+ var len = keys.length;
1101
+ while(len--)
1102
+ this.dimensions[keys[len]].invalidate();
1103
};
1104
1105
dimensionsVisibility.prototype.selectAll = function() {
1094
- for(var d in this.dimensions)
1095
- this.dimensions[d].select();
1106
+ var keys = Object.keys(this.dimensions);
1107
+ var len = keys.length;
1108
+ while(len--)
1109
+ this.dimensions[keys[len]].select();
1110
};
1111
1112
dimensionsVisibility.prototype.countSelected = function() {
1099
- var i = 0;
1100
- for(var d in this.dimensions)
1101
- if(this.dimensions[d].isSelected()) i++;
1113
+ var selected = 0;
1114
+ var keys = Object.keys(this.dimensions);
1115
+ var len = keys.length;
1116
+ while(len--)
1117
+ if(this.dimensions[keys[len]].isSelected()) selected++;
1118
1103
- return i;
1119
+ return selected;
1120
};
1121
1122
dimensionsVisibility.prototype.selectNone = function() {
1107
- for(var d in this.dimensions)
1108
- this.dimensions[d].unselect();
1123
+ var keys = Object.keys(this.dimensions);
1124
+ var len = keys.length;
1125
+ while(len--)
1126
+ this.dimensions[keys[len]].unselect();
1127
};
1128
1129
dimensionsVisibility.prototype.selected2BooleanArray = function(array) {
@@ -1289,13 +1307,11 @@ var NETDATA = window.NETDATA || {};
1307
this.view_before = 0;
1308
1309
this.value_decimal_detail = -1;
1292
- {
1293
- var d = self.data('decimal-digits');
1294
- if(typeof d === 'number') {
1295
- this.value_decimal_detail = 1;
1296
- while(d-- > 0)
1297
- this.value_decimal_detail *= 10;
1298
- }
1310
+ var d = self.data('decimal-digits');
1311
+ if(typeof d === 'number') {
1312
+ this.value_decimal_detail = 1;
1313
+ while(d-- > 0)
1314
+ this.value_decimal_detail *= 10;
1315
}
1316
1317
this.auto = {
@@ -1729,7 +1745,7 @@ var NETDATA = window.NETDATA || {};
1745
this.event_resize.chart_last_h = this.element.clientHeight;
1746
1747
var now = Date.now();
1732
- if(now - this.event_resize.last <= NETDATA.options.current.double_click_speed && this.element_legend_childs.perfect_scroller != null) {
1748
+ if(now - this.event_resize.last <= NETDATA.options.current.double_click_speed && this.element_legend_childs.perfect_scroller !== null) {
1749
// double click / double tap event
1750
1751
// console.dir(this.element_legend_childs.content);
@@ -1742,21 +1758,21 @@ var NETDATA = window.NETDATA || {};
1758
- this.element_legend_childs.perfect_scroller.clientHeight;
1759
1760
// if we are not optimal, be optimal
1745
- if(this.event_resize.chart_last_h != optimal) {
1761
+ if(this.event_resize.chart_last_h !== optimal) {
1762
// this.log('resize to optimal, current = ' + this.event_resize.chart_last_h.toString() + 'px, original = ' + this.event_resize.chart_original_h.toString() + 'px, optimal = ' + optimal.toString() + 'px, internal = ' + this.height_original.toString());
1763
resizeChartToHeight(optimal.toString() + 'px');
1764
}
1765
1766
// else if the current height is not the original/saved height
1767
// reset to the original/saved height
1752
- else if(this.event_resize.chart_last_h != this.event_resize.chart_original_h) {
1768
+ else if(this.event_resize.chart_last_h !== this.event_resize.chart_original_h) {
1769
// this.log('resize to original, current = ' + this.event_resize.chart_last_h.toString() + 'px, original = ' + this.event_resize.chart_original_h.toString() + 'px, optimal = ' + optimal.toString() + 'px, internal = ' + this.height_original.toString());
1770
resizeChartToHeight(this.event_resize.chart_original_h.toString() + 'px');
1771
}
1772
1773
// else if the current height is not the internal default height
1774
// reset to the internal default height
1759
- else if((this.event_resize.chart_last_h.toString() + 'px') != this.height_original) {
1775
+ else if((this.event_resize.chart_last_h.toString() + 'px') !== this.height_original) {
1776
// this.log('resize to internal default, current = ' + this.event_resize.chart_last_h.toString() + 'px, original = ' + this.event_resize.chart_original_h.toString() + 'px, optimal = ' + optimal.toString() + 'px, internal = ' + this.height_original.toString());
1777
resizeChartToHeight(this.height_original.toString());
1778
}
@@ -1773,7 +1789,7 @@ var NETDATA = window.NETDATA || {};
1789
// console.log(wanted);
1790
1791
// this.log('resize to firstChild, current = ' + this.event_resize.chart_last_h.toString() + 'px, original = ' + this.event_resize.chart_original_h.toString() + 'px, optimal = ' + optimal.toString() + 'px, internal = ' + this.height_original.toString() + 'px, firstChild = ' + wanted.toString() + 'px' );
1776
- if(this.event_resize.chart_last_h != wanted)
1792
+ if(this.event_resize.chart_last_h !== wanted)
1793
resizeChartToHeight(wanted.toString() + 'px');
1794
}
1795
}
@@ -1890,10 +1906,7 @@ var NETDATA = window.NETDATA || {};
1906
};
1907
1908
this.globalSelectionSyncIsMaster = function() {
1893
- if(NETDATA.globalSelectionSync.state === this)
1894
- return true;
1895
- else
1896
- return false;
1909
+ return (NETDATA.globalSelectionSync.state === this);
1910
};
1911
1912
// this chart is the master of the global selection sync
@@ -1962,12 +1975,8 @@ var NETDATA = window.NETDATA || {};
1975
// sync all the visible charts to the given time
1976
// this is to be called from the chart libraries
1977
this.globalSelectionSync = function(t) {
1965
- if(this.globalSelectionSyncAbility() === false) {
1966
- if(this.debug === true)
1967
- this.log('sync: cannot sync (yet?).');
1968
-
1978
+ if(this.globalSelectionSyncAbility() === false)
1979
return;
1970
- }
1980
1981
if(this.globalSelectionSyncIsMaster() === false) {
1982
if(this.debug === true)
@@ -1975,12 +1984,8 @@ var NETDATA = window.NETDATA || {};
1984
1985
this.globalSelectionSyncBeMaster();
1986
1978
- if(this.globalSelectionSyncAbility() === false) {
1979
- if(this.debug === true)
1980
- this.log('sync: cannot sync (yet?).');
1981
-
1987
+ if(this.globalSelectionSyncAbility() === false)
1988
return;
1983
- }
1989
}
1990
1991
NETDATA.globalSelectionSync.last_t = t;
@@ -2429,7 +2434,7 @@ var NETDATA = window.NETDATA || {};
2434
};
2435
2436
this.legendUpdateDOM = function() {
2432
- var needed = false;
2437
+ var needed = false, dim, keys, len, i;
2438
2439
// check that the legend DOM is up to date for the downloaded dimensions
2440
if(typeof this.element_legend_childs.series !== 'object' || this.element_legend_childs.series === null) {
@@ -2473,9 +2478,12 @@ var NETDATA = window.NETDATA || {};
2478
if(this.colors === null) {
2479
// this is the first time we update the chart
2480
// let's assign colors to all dimensions
2476
- if(this.library.track_colors() === true)
2477
- for(var dim in this.chart.dimensions)
2478
- this._chartDimensionColor(this.chart.dimensions[dim].name);
2481
+ if(this.library.track_colors() === true) {
2482
+ keys = Object.keys(this.chart.dimensions);
2483
+ len = keys.length;
2484
+ for(i = 0; i < len ;i++)
2485
+ this._chartDimensionColor(this.chart.dimensions[keys[i]].name);
2486
+ }
2487
}
2488
// we will re-generate the colors for the chart
2489
// based on the selected dimensions
@@ -2554,7 +2562,7 @@ var NETDATA = window.NETDATA || {};
2562
2563
if(this.library.toolboxPanAndZoom !== null) {
2564
2557
- function get_pan_and_zoom_step(event) {
2565
+ var get_pan_and_zoom_step = function(event) {
2566
if (event.ctrlKey)
2567
return NETDATA.options.current.pan_and_zoom_factor * NETDATA.options.current.pan_and_zoom_factor_multiplier_control;
2568
@@ -2566,7 +2574,7 @@ var NETDATA = window.NETDATA || {};
2574
2575
else
2576
return NETDATA.options.current.pan_and_zoom_factor;
2569
- }
2577
+ };
2578
2579
this.element_legend_childs.toolbox.className += ' netdata-legend-toolbox';
2580
this.element.appendChild(this.element_legend_childs.toolbox);
@@ -2786,13 +2794,15 @@ var NETDATA = window.NETDATA || {};
2794
if(this.debug === true)
2795
this.log('labels from data: "' + this.element_legend_childs.series.labels_key + '"');
2796
2789
- for(var i = 0, len = this.data.dimension_names.length; i < len ;i++) {
2797
+ for(i = 0, len = this.data.dimension_names.length; i < len ;i++) {
2798
genLabel(this, content, this.data.dimension_ids[i], this.data.dimension_names[i], i);
2799
}
2800
}
2801
else {
2802
var tmp = new Array();
2795
- for(var dim in this.chart.dimensions) {
2803
+ keys = Object.keys(this.chart.dimensions);
2804
+ for(i = 0, len = keys.length; i < len ;i++) {
2805
+ dim = keys[i];
2806
tmp.push(this.chart.dimensions[dim].name);
2807
genLabel(this, content, dim, this.chart.dimensions[dim].name, i);
2808
}
@@ -3088,8 +3098,10 @@ var NETDATA = window.NETDATA || {};
3098
if(this.debug === true)
3099
this.log('I am already updating...');
3100
3091
- if(typeof callback === 'function') callback();
3092
- return false;
3101
+ if(typeof callback === 'function')
3102
+ return callback();
3103
+
3104
+ return;
3105
}
3106
3107
// due to late initialization of charts and libraries
@@ -3098,29 +3110,37 @@ var NETDATA = window.NETDATA || {};
3110
if(this.debug === true)
3111
this.log('I am not enabled');
3112
3101
- if(typeof callback === 'function') callback();
3102
- return false;
3113
+ if(typeof callback === 'function')
3114
+ return callback();
3115
+
3116
+ return;
3117
}
3118
3119
if(canBeRendered() === false) {
3106
- if(typeof callback === 'function') callback();
3107
- return false;
3108
- }
3120
+ if(typeof callback === 'function')
3121
+ return callback();
3122
3110
- if(this.chart === null) {
3111
- this.getChart(function() { that.updateChart(callback); });
3112
- return false;
3123
+ return;
3124
}
3125
3126
+ if(this.chart === null)
3127
+ return this.getChart(function() {
3128
+ return that.updateChart(callback);
3129
+ });
3130
+
3131
if(this.library.initialized === false) {
3132
if(this.library.enabled === true) {
3117
- this.library.initialize(function() { that.updateChart(callback); });
3118
- return false;
3133
+ return this.library.initialize(function () {
3134
+ return that.updateChart(callback);
3135
+ });
3136
}
3137
else {
3138
error('chart library "' + this.library_name + '" is not available.');
3122
- if(typeof callback === 'function') callback();
3123
- return false;
3139
+
3140
+ if(typeof callback === 'function')
3141
+ return callback();
3142
+
3143
+ return;
3144
}
3145
}
3146
@@ -3178,10 +3198,10 @@ var NETDATA = window.NETDATA || {};
3198
3199
NETDATA.statistics.refreshes_active--;
3200
that._updating = false;
3181
- if(typeof callback === 'function') callback();
3182
- });
3201
3184
- return true;
3202
+ if(typeof callback === 'function')
3203
+ return callback();
3204
+ });
3205
};
3206
3207
this.isVisible = function(nocache) {
@@ -3345,12 +3365,12 @@ var NETDATA = window.NETDATA || {};
3365
state.running = false;
3366
3367
if(typeof callback !== 'undefined')
3348
- callback();
3368
+ return callback();
3369
});
3370
}
3371
else {
3372
if(typeof callback !== 'undefined')
3353
- callback();
3373
+ return callback();
3374
}
3375
};
3376
@@ -3373,7 +3393,9 @@ var NETDATA = window.NETDATA || {};
3393
this.chart = NETDATA.chartRegistry.get(this.host, this.id);
3394
if(this.chart) {
3395
this._defaultsFromDownloadedChart(this.chart);
3376
- if(typeof callback === 'function') callback();
3396
+
3397
+ if(typeof callback === 'function')
3398
+ return callback();
3399
}
3400
else {
3401
this.chart_url = "/api/v1/chart?chart=" + this.id;
@@ -3397,7 +3419,8 @@ var NETDATA = window.NETDATA || {};
3419
error('chart not found on url "' + that.chart_url + '"');
3420
})
3421
.always(function() {
3400
- if(typeof callback === 'function') callback();
3422
+ if(typeof callback === 'function')
3423
+ return callback();
3424
});
3425
}
3426
};
@@ -3458,7 +3481,7 @@ var NETDATA = window.NETDATA || {};
3481
script.src = NETDATA.jQuery;
3482
3483
// script.onabort = onError;
3461
- script.onerror = function(err, t) { NETDATA.error(101, NETDATA.jQuery); };
3484
+ script.onerror = function() { NETDATA.error(101, NETDATA.jQuery); };
3485
if(typeof callback === "function")
3486
script.onload = callback;
3487
@@ -3466,7 +3489,7 @@ var NETDATA = window.NETDATA || {};
3489
s.parentNode.insertBefore(script, s);
3490
}
3491
else if(typeof callback === "function")
3469
- callback();
3492
+ return callback();
3493
};
3494
3495
NETDATA._loadCSS = function(filename) {
@@ -3543,10 +3566,12 @@ var NETDATA = window.NETDATA || {};
3566
};
3567
3568
NETDATA.pause = function(callback) {
3546
- if(NETDATA.options.pause === true)
3547
- callback();
3548
- else
3549
- NETDATA.options.pauseCallback = callback;
3569
+ if(typeof callback === 'function') {
3570
+ if (NETDATA.options.pause === true)
3571
+ return callback();
3572
+ else
3573
+ NETDATA.options.pauseCallback = callback;
3574
+ }
3575
};
3576
3577
NETDATA.unpause = function() {
@@ -3725,7 +3750,8 @@ var NETDATA = window.NETDATA || {};
3750
NETDATA.options.targets.push(NETDATA.chartState(targets[len]));
3751
}
3752
3728
- if(typeof callback === 'function') callback();
3753
+ if(typeof callback === 'function')
3754
+ return callback();
3755
};
3756
3757
// this is the main function - where everything starts
@@ -3801,13 +3827,13 @@ var NETDATA = window.NETDATA || {};
3827
})
3828
.always(function() {
3829
if(typeof callback === "function")
3804
- callback();
3830
+ return callback();
3831
});
3832
}
3833
else {
3834
NETDATA.chartLibraries.peity.enabled = false;
3835
if(typeof callback === "function")
3810
- callback();
3836
+ return callback();
3837
}
3838
};
3839
@@ -3863,13 +3889,13 @@ var NETDATA = window.NETDATA || {};
3889
})
3890
.always(function() {
3891
if(typeof callback === "function")
3866
- callback();
3892
+ return callback();
3893
});
3894
}
3895
else {
3896
NETDATA.chartLibraries.sparkline.enabled = false;
3897
if(typeof callback === "function")
3872
- callback();
3898
+ return callback();
3899
}
3900
};
3901
@@ -4050,7 +4076,7 @@ var NETDATA = window.NETDATA || {};
4076
})
4077
.always(function() {
4078
if(typeof callback === "function")
4053
- callback();
4079
+ return callback();
4080
});
4081
};
4082
@@ -4073,13 +4099,13 @@ var NETDATA = window.NETDATA || {};
4099
if(NETDATA.chartLibraries.dygraph.enabled === true && NETDATA.options.current.smooth_plot === true)
4100
NETDATA.dygraphSmoothInitialize(callback);
4101
else if(typeof callback === "function")
4076
- callback();
4102
+ return callback();
4103
});
4104
}
4105
else {
4106
NETDATA.chartLibraries.dygraph.enabled = false;
4107
if(typeof callback === "function")
4082
- callback();
4108
+ return callback();
4109
}
4110
};
4111
@@ -4527,7 +4553,7 @@ var NETDATA = window.NETDATA || {};
4553
4554
// http://dygraphs.com/gallery/interaction-api.js
4555
var normal_def;
4530
- if(typeof event.wheelDelta === 'number' && event.wheelDelta != NaN)
4556
+ if(typeof event.wheelDelta === 'number' && !isNaN(event.wheelDelta))
4557
// chrome
4558
normal_def = event.wheelDelta / 40;
4559
else
@@ -4688,7 +4714,7 @@ var NETDATA = window.NETDATA || {};
4714
else {
4715
NETDATA.chartLibraries.morris.enabled = false;
4716
if(typeof callback === "function")
4691
- callback();
4717
+ return callback();
4718
}
4719
}
4720
else {
@@ -4709,14 +4735,14 @@ var NETDATA = window.NETDATA || {};
4735
})
4736
.always(function() {
4737
if(typeof callback === "function")
4712
- callback();
4738
+ return callback();
4739
});
4740
}
4741
}
4742
else {
4743
NETDATA.chartLibraries.morris.enabled = false;
4744
if(typeof callback === "function")
4719
- callback();
4745
+ return callback();
4746
}
4747
};
4748
@@ -4775,13 +4801,13 @@ var NETDATA = window.NETDATA || {};
4801
})
4802
.always(function() {
4803
if(typeof callback === "function")
4778
- callback();
4804
+ return callback();
4805
});
4806
}
4807
else {
4808
NETDATA.chartLibraries.raphael.enabled = false;
4809
if(typeof callback === "function")
4784
- callback();
4810
+ return callback();
4811
}
4812
};
4813
@@ -4819,7 +4845,7 @@ var NETDATA = window.NETDATA || {};
4845
else {
4846
NETDATA.chartLibraries.c3.enabled = false;
4847
if(typeof callback === "function")
4822
- callback();
4848
+ return callback();
4849
}
4850
}
4851
else {
@@ -4840,14 +4866,14 @@ var NETDATA = window.NETDATA || {};
4866
})
4867
.always(function() {
4868
if(typeof callback === "function")
4843
- callback();
4869
+ return callback();
4870
});
4871
}
4872
}
4873
else {
4874
NETDATA.chartLibraries.c3.enabled = false;
4875
if(typeof callback === "function")
4850
- callback();
4876
+ return callback();
4877
}
4878
};
4879
@@ -4939,13 +4965,13 @@ var NETDATA = window.NETDATA || {};
4965
})
4966
.always(function() {
4967
if(typeof callback === "function")
4942
- callback();
4968
+ return callback();
4969
});
4970
}
4971
else {
4972
NETDATA.chartLibraries.d3.enabled = false;
4973
if(typeof callback === "function")
4948
- callback();
4974
+ return callback();
4975
}
4976
};
4977
@@ -4979,13 +5005,13 @@ var NETDATA = window.NETDATA || {};
5005
NETDATA.chartLibraries.google.enabled = false;
5006
NETDATA.error(100, NETDATA.google_js);
5007
if(typeof callback === "function")
4982
- callback();
5008
+ return callback();
5009
});
5010
}
5011
else {
5012
NETDATA.chartLibraries.google.enabled = false;
5013
if(typeof callback === "function")
4988
- callback();
5014
+ return callback();
5015
}
5016
};
5017
@@ -5136,13 +5162,13 @@ var NETDATA = window.NETDATA || {};
5162
})
5163
.always(function() {
5164
if(typeof callback === "function")
5139
- callback();
5165
+ return callback();
5166
})
5167
}
5168
else {
5169
NETDATA.chartLibraries.easypiechart.enabled = false;
5170
if(typeof callback === "function")
5145
- callback();
5171
+ return callback();
5172
}
5173
};
5174
@@ -5348,13 +5374,13 @@ var NETDATA = window.NETDATA || {};
5374
})
5375
.always(function() {
5376
if(typeof callback === "function")
5351
- callback();
5377
+ return callback();
5378
})
5379
}
5380
else {
5381
NETDATA.chartLibraries.gauge.enabled = false;
5382
if(typeof callback === "function")
5357
- callback();
5383
+ return callback();
5384
}
5385
};
5386
@@ -5382,7 +5408,7 @@ var NETDATA = window.NETDATA || {};
5408
min = max;
5409
max = t;
5410
}
5385
- else if(min == max)
5411
+ else if(min === max)
5412
max = min + 1;
5413
5414
// gauge.js has an issue if the needle
@@ -5909,7 +5935,7 @@ var NETDATA = window.NETDATA || {};
5935
async: false,
5936
isAlreadyLoaded: function() {
5937
// check if bootstrap is loaded
5912
- if(typeof $().emulateTransitionEnd == 'function')
5938
+ if(typeof $().emulateTransitionEnd === 'function')
5939
return true;
5940
else {
5941
if(typeof netdataNoBootstrap !== 'undefined' && netdataNoBootstrap)
@@ -5949,7 +5975,7 @@ var NETDATA = window.NETDATA || {};
5975
NETDATA.loadRequiredJs = function(index, callback) {
5976
if(index >= NETDATA.requiredJs.length) {
5977
if(typeof callback === 'function')
5952
- callback();
5978
+ return callback();
5979
return;
5980
}
5981
@@ -6041,7 +6067,7 @@ var NETDATA = window.NETDATA || {};
6067
var value = entry.value;
6068
if(NETDATA.alarms.current !== null) {
6069
var t = NETDATA.alarms.current.alarms[entry.chart + '.' + entry.name];
6044
- if(typeof t !== 'undefined' && entry.status == t.status)
6070
+ if(typeof t !== 'undefined' && entry.status === t.status)
6071
value = t.value;
6072
}
6073
@@ -6253,13 +6279,13 @@ var NETDATA = window.NETDATA || {};
6279
NETDATA.alarms.first_notification_id = data.latest_alarm_log_unique_id;
6280
6281
if(typeof callback === 'function')
6256
- callback(data);
6282
+ return callback(data);
6283
})
6284
.fail(function() {
6285
NETDATA.error(415, NETDATA.alarms.server);
6286
6287
if(typeof callback === 'function')
6262
- callback(null);
6288
+ return callback(null);
6289
});
6290
},
6291
@@ -6298,23 +6324,21 @@ var NETDATA = window.NETDATA || {};
6324
})
6325
.done(function(data) {
6326
if(typeof callback === 'function')
6301
- callback(data);
6327
+ return callback(data);
6328
})
6329
.fail(function() {
6330
NETDATA.error(416, NETDATA.alarms.server);
6331
6332
if(typeof callback === 'function')
6307
- callback(null);
6333
+ return callback(null);
6334
});
6335
},
6336
6337
init: function() {
6312
- var host = NETDATA.serverDefault;
6313
- while(host.slice(-1) === '/')
6314
- host = host.substring(0, host.length - 1);
6315
- NETDATA.alarms.server = host;
6338
+ NETDATA.alarms.server = NETDATA.fixHost(NETDATA.serverDefault);
6339
6317
- NETDATA.alarms.last_notification_id = NETDATA.localStorageGet('last_notification_id', NETDATA.alarms.last_notification_id, null);
6340
+ NETDATA.alarms.last_notification_id =
6341
+ NETDATA.localStorageGet('last_notification_id', NETDATA.alarms.last_notification_id, null);
6342
6343
if(NETDATA.alarms.onclick === null)
6344
NETDATA.alarms.onclick = NETDATA.alarms.scrollToAlarm;
@@ -6410,8 +6434,7 @@ var NETDATA = window.NETDATA || {};
6434
},
6435
6436
hello: function(host, callback) {
6413
- while(host.slice(-1) === '/')
6414
- host = host.substring(0, host.length - 1);
6437
+ host = NETDATA.fixHost(host);
6438
6439
// send HELLO to a netdata server:
6440
// 1. verifies the server is reachable
@@ -6433,13 +6456,13 @@ var NETDATA = window.NETDATA || {};
6456
}
6457
6458
if(typeof callback === 'function')
6436
- callback(data);
6459
+ return callback(data);
6460
})
6461
.fail(function() {
6462
NETDATA.error(407, host);
6463
6464
if(typeof callback === 'function')
6442
- callback(null);
6465
+ return callback(null);
6466
});
6467
},
6468
@@ -6476,7 +6499,7 @@ var NETDATA = window.NETDATA || {};
6499
}
6500
else {
6501
if(typeof callback === 'function')
6479
- callback(null);
6502
+ return callback(null);
6503
}
6504
}
6505
else {
@@ -6484,14 +6507,14 @@ var NETDATA = window.NETDATA || {};
6507
NETDATA.registry.person_guid = data.person_guid;
6508
6509
if(typeof callback === 'function')
6487
- callback(data.urls);
6510
+ return callback(data.urls);
6511
}
6512
})
6513
.fail(function() {
6514
NETDATA.error(410, NETDATA.registry.server);
6515
6516
if(typeof callback === 'function')
6494
- callback(null);
6517
+ return callback(null);
6518
});
6519
},
6520
@@ -6514,13 +6537,13 @@ var NETDATA = window.NETDATA || {};
6537
}
6538
6539
if(typeof callback === 'function')
6517
- callback(data);
6540
+ return callback(data);
6541
})
6542
.fail(function() {
6543
NETDATA.error(412, NETDATA.registry.server);
6544
6545
if(typeof callback === 'function')
6523
- callback(null);
6546
+ return callback(null);
6547
});
6548
},
6549
@@ -6543,13 +6566,13 @@ var NETDATA = window.NETDATA || {};
6566
}
6567
6568
if(typeof callback === 'function')
6546
- callback(data);
6569
+ return callback(data);
6570
})
6571
.fail(function() {
6572
NETDATA.error(418, NETDATA.registry.server);
6573
6574
if(typeof callback === 'function')
6552
- callback(null);
6575
+ return callback(null);
6576
});
6577
},
6578
@@ -6572,13 +6595,13 @@ var NETDATA = window.NETDATA || {};
6595
}
6596
6597
if(typeof callback === 'function')
6575
- callback(data);
6598
+ return callback(data);
6599
})
6600
.fail(function() {
6601
NETDATA.error(414, NETDATA.registry.server);
6602
6603
if(typeof callback === 'function')
6581
- callback(null);
6604
+ return callback(null);
6605
});
6606
}
6607
};
web/index.html
+1
-1
@@ -3259,4 +3259,4 @@
3259
</div>
3260
</body>
3261
</html>
3262
-<script type="text/javascript" src="dashboard.js?v20170105-7"></script>
3262
+<script type="text/javascript" src="dashboard.js?v20170107-5"></script>