diff options
author | Tobi Oetiker <tobi@oetiker.ch> | 2008-11-06 15:40:55 +0100 |
---|---|---|
committer | Tobi Oetiker <tobi@oetiker.ch> | 2008-11-06 15:40:55 +0100 |
commit | d8b465e26599268b8eded0732e8f29062556997e (patch) | |
tree | f9ffd0443aa616eb4df1b461684f4aeeb53fb7b2 /qx08/source/class/tr/ui/TraceTable.js | |
parent | 996d9e92e597bc462d874b335865ff7844e2d332 (diff) | |
download | smokeping-d8b465e26599268b8eded0732e8f29062556997e.tar.gz smokeping-d8b465e26599268b8eded0732e8f29062556997e.tar.xz |
initial commit
Diffstat (limited to 'qx08/source/class/tr/ui/TraceTable.js')
-rw-r--r-- | qx08/source/class/tr/ui/TraceTable.js | 321 |
1 files changed, 198 insertions, 123 deletions
diff --git a/qx08/source/class/tr/ui/TraceTable.js b/qx08/source/class/tr/ui/TraceTable.js index 446cbad..2291c2c 100644 --- a/qx08/source/class/tr/ui/TraceTable.js +++ b/qx08/source/class/tr/ui/TraceTable.js @@ -5,210 +5,285 @@ /** * a widget showing the Tr target tree */ +qx.Class.define('tr.ui.TraceTable', { + extend : qx.ui.table.Table, + + -qx.Class.define('Tr.ui.TraceTable', -{ - extend: qx.ui.table.Table, /* - ***************************************************************************** + ***************************************************************************** CONSTRUCTOR - ***************************************************************************** - */ + ***************************************************************************** + */ - - construct: function () { - + construct : function() { var tableModel = new qx.ui.table.model.Simple(); this.__tableModel = tableModel; - tableModel.setColumns([ this.tr("Hop"), this.tr("Host"),this.tr("Ip"), - this.tr("Loss [%]"), this.tr("Sent"), this.tr("Last [ms]"), //"; help syntax highliter - this.tr("Avg [ms]"), this.tr("Best [ms]"), this.tr("Worst [ms]"), this.tr("StDev [ms]") ]); + + tableModel.setColumns([ this.tr("Hop"), this.tr("Host"), this.tr("Ip"), this.tr("Loss [%]"), this.tr("Sent"), this.tr("Last [ms]"), * // "; help syntax highliter + this.tr("Avg [ms]"), this.tr("Best [ms]"), this.tr("Worst [ms]"), this.tr("StDev [ms]") ]); + var custom = { - tableColumnModel: function(obj) { + tableColumnModel : function(obj) { return new qx.ui.table.columnmodel.Resize(obj); } }; - with(this){ - base(arguments,tableModel,custom); - set({ - width: '100%', - height: '1*', - border: 'dark-shadow', - showCellFocusIndicator: false, - statusBarVisible: false - }); - }; - var tcm = this.getTableColumnModel(); + + this.base(arguments, tableModel, custom); + + this.set({ + decorator : 'main', + showCellFocusIndicator : false, + statusBarVisible : false + }); + + var tcm = this.getTableColumnModel(); this.__tcm = tcm; - tcm.setDataCellRenderer(0, new Tr.ui.Cellrenderer(1)); - tcm.setDataCellRenderer(3, new Tr.ui.Cellrenderer(0,' %')); - tcm.setDataCellRenderer(4, new Tr.ui.Cellrenderer(0)); - - var render_ms = new Tr.ui.Cellrenderer(1); + tcm.setDataCellRenderer(0, new tr.ui.Cellrenderer(1)); + tcm.setDataCellRenderer(3, new tr.ui.Cellrenderer(0, ' %')); + tcm.setDataCellRenderer(4, new tr.ui.Cellrenderer(0)); + + var render_ms = new tr.ui.Cellrenderer(1); - for (var i=5;i<10;i++){ + for (var i=5; i<10; i++) { tcm.setDataCellRenderer(i, render_ms); } - // Obtain the behavior object to manipulate var resizeBehavior = tcm.getBehavior(); + // This uses the set() method to set all attriutes at once; uses flex - resizeBehavior.set(0, { width:"2*"}); - resizeBehavior.set(1, { width:"9*"}); - resizeBehavior.set(2, { width:"5*"}); + resizeBehavior.set(0, { width : '2*' }); + resizeBehavior.set(1, { width : '9*' }); + resizeBehavior.set(2, { width : '5*' }); - for (var i=3;i<10;i++){ - resizeBehavior.set(i, { width:"3*"}); + for (var i=3; i<10; i++) { + resizeBehavior.set(i, { width : '3*' }); } - qx.event.message.Bus.subscribe('tr.cmd',this.__handle_tr,this); + + qx.event.message.Bus.subscribe('tr.cmd', this.__handle_tr, this); }, + + + /* - ***************************************************************************** - Statics - ***************************************************************************** - */ - members: { - __make_empty_row: function (){ - return ([undefined,undefined,undefined,0,0,undefined,undefined,undefined,undefined,undefined,0,0,0]); + ***************************************************************************** + Statics + ***************************************************************************** + */ + + members : { + __handle : null, + __data : null, + __delay : null, + __tableModel : null, + __tcm : null, + + + /** + * TODOC + * + * @type member + * @return {var} TODOC + */ + __make_empty_row : function() { + return ([ undefined, undefined, undefined, 0, 0, undefined, undefined, undefined, undefined, undefined, 0, 0, 0 ]); }, - __stop_table: function (){ + + + /** + * TODOC + * + * @type member + * @return {void} + */ + __stop_table : function() { var tableModel = this.__tableModel; - for (var i=0;i<10;i++){ - tableModel.setColumnSortable(i,true); + + for (var i=0; i<10; i++) { + tableModel.setColumnSortable(i, true); } - qx.event.message.Bus.dispatch('tr.status','stopped'); + + qx.event.message.Bus.dispatch('tr.status', 'stopped'); this.__handle = undefined; }, - __handle_tr: function(m){ + + + /** + * TODOC + * + * @type member + * @param m {var} TODOC + * @return {void} + */ + __handle_tr : function(m) { var self = this; - var f_hop = 0,f_host=1,f_ip=2,f_loss=3,f_snt=4,f_last=5,f_avg=6,f_best=7,f_worst=8,f_stdev=9,f_cnt=10,f_sum=11,f_sqsum=12; + var f_host = 1, f_ip = 2, f_loss = 3, f_snt = 4, f_last = 5, f_avg = 6, f_best = 7, f_worst = 8, f_stdev = 9, f_cnt = 10, f_sum = 11, f_sqsum = 12; var fill_table; - fill_table = function(retval,exc,id){ - if (exc == null){ - if ( self.__handle == undefined ) { - qx.event.message.Bus.dispatch('tr.status','started'); + + fill_table = function(retval, exc, id) { + if (exc == null) { + if (self.__handle == undefined) { + qx.event.message.Bus.dispatch('tr.status', 'started'); } + self.__handle = retval['handle']; var tableModel = self.__tableModel; var lines = retval['output'].length; var data = self.__data; var sleep = 0; - for(var i=0;i<lines;i++){ + + for (var i=0; i<lines; i++) { sleep = 0; var hop = retval['output'][i][0]; - if (hop == 'SLEEP'){ + + if (hop == 'SLEEP') { sleep = retval['output'][i][1]; - continue; - } - else if (hop == 'INFO'){ - qx.event.message.Bus.dispatch('tr.info',retval['output'][i][1]); continue; - } + } + else if (hop == 'INFO') { + qx.event.message.Bus.dispatch('tr.info', retval['output'][i][1]); + continue; + } + var host = retval['output'][i][1]; var ip = retval['output'][i][2]; var value = retval['output'][i][3]; var ii = 0; var max = data.length; - while (true){ - if ( ii == max ) break; - if ( Math.floor(data[ii][0]) > hop) break; - if ( Math.floor(data[ii][0]) == hop ){ - if ( ip == undefined ) break; - if ( ip == data[ii][2] ) break; + + while (true) { + if (ii == max) { + break; + } + + if (Math.floor(data[ii][0]) > hop) { + break; } + + if (Math.floor(data[ii][0]) == hop) { + if (ip == undefined) { + break; + } + + if (ip == data[ii][2]) { + break; + } + } + ii++; } - if (ii == max || Math.floor(data[ii][0]) > hop ){ - if (ii > 0 && Math.floor(data[ii-1][0]) == hop ){ - hop = data[ii-1][0] + 0.1; + + if (ii == max || Math.floor(data[ii][0]) > hop) { + if (ii > 0 && Math.floor(data[ii - 1][0]) == hop) { + hop = data[ii - 1][0] + 0.1; } - data.splice(ii,0,self.__make_empty_row()); + + data.splice(ii, 0, self.__make_empty_row()); data[ii][0] = hop; } var drow = data[ii]; - if (drow[f_host] == undefined && host != undefined){ + + if (drow[f_host] == undefined && host != undefined) { drow[f_host] = host; } - if (drow[f_ip] == undefined && ip != undefined){ + + if (drow[f_ip] == undefined && ip != undefined) { drow[f_ip] = ip; } + drow[f_snt]++; drow[f_last] = value; - - if (value != undefined){ + if (value != undefined) { var best = drow[f_best]; - if (best == undefined || best > value){ - drow[f_best] = value; - } - var worst = drow[f_worst]; - if (worst == undefined || worst < value){ - drow[f_worst] = value; + + if (best == undefined || best > value) { + drow[f_best] = value; } - drow[f_sum] += value; + + var worst = drow[f_worst]; + + if (worst == undefined || worst < value) { + drow[f_worst] = value; + } + + drow[f_sum] += value; var sum = drow[f_sum]; - drow[f_cnt] ++; + drow[f_cnt]++; var cnt = drow[f_cnt]; - var sqsum = drow[f_sqsum]+value*value; - drow[f_sqsum] = sqsum; - drow[f_avg] = drow[f_sum]/drow[f_cnt]; - drow[f_stdev] = Math.sqrt((cnt*sqsum-sum*sum)/(cnt*(cnt-1))) + var sqsum = drow[f_sqsum] + value * value; + drow[f_sqsum] = sqsum; + drow[f_avg] = drow[f_sum] / drow[f_cnt]; + drow[f_stdev] = Math.sqrt((cnt * sqsum - sum * sum) / (cnt * (cnt - 1))); } - drow[f_loss] = ((drow[f_snt]-drow[f_cnt])/drow[f_snt])*100; - } + + drow[f_loss] = ((drow[f_snt] - drow[f_cnt]) / drow[f_snt]) * 100; + } tableModel.setData(data); - if (retval['again']){ - var next_round = function (){Tr.Server.getInstance().callAsync( - fill_table,'run_tr',{ handle: retval['handle'], - point: retval['point']})}; - qx.client.Timer.once(next_round,self,sleep*1000); + + if (retval['again']) { + var next_round = function() { + tr.Server.getInstance().callAsync(fill_table, 'run_tr', { + handle : retval['handle'], + point : retval['point'] + }); + }; + + qx.event.Timer.once(next_round, self, sleep * 1000); } else { self.__stop_table(); } } else { - alert(exc); self.__stop_table(); - } + } }; - var stop_handler = function (data,exc,id){ - if (exc == null){ - qx.event.message.Bus.dispatch('tr.status','stopped'); + var stop_handler = function(data, exc, id) { + if (exc == null) { + qx.event.message.Bus.dispatch('tr.status', 'stopped'); + } else { + this.error(exc); } - else { - alert(exc); - } }; var cmd = m.getData(); - switch(cmd['action']){ - case 'stop': - qx.event.message.Bus.dispatch('tr.status','stopping'); - Tr.Server.getInstance().callAsync(stop_handler,'stop_tr',this.__handle); - break; - case 'go': - this.__data = []; - this.__tableModel.setData(this.__data); - this.__delay = cmd['delay']; - for (var i=0;i<10;i++){ - this.__tableModel.setColumnSortable(i,false); - } - qx.event.message.Bus.dispatch('tr.status','starting'); - Tr.Server.getInstance().callAsync(fill_table,'run_tr',{host: cmd['host'], rounds: cmd['rounds'], delay: cmd['delay']}); - break; - default: - alert('Unknown Command '+cmd['action']); + + switch(cmd['action']) + { + case 'stop': + qx.event.message.Bus.dispatch('tr.status', 'stopping'); + tr.Server.getInstance().callAsync(stop_handler, 'stop_tr', this.__handle); + break; + + case 'go': + this.__data = []; + this.__tableModel.setData(this.__data); + this.__delay = cmd['delay']; + + for (var i=0; i<10; i++) { + this.__tableModel.setColumnSortable(i, false); + } + + qx.event.message.Bus.dispatch('tr.status', 'starting'); + tr.Server.getInstance().callAsync(fill_table, 'run_tr', { + host : cmd['host'], + rounds : cmd['rounds'], + delay : cmd['delay'] + }); + + break; + + default: + this.error('Unknown Command ' + cmd['action']); } } - } -}); - - + } +});
\ No newline at end of file |