Changeset 06931918adf7389a94684c1dec761f8f6928fba5

Show
Ignore:
Timestamp:
03/18/09 15:08:41 (5 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1237388921 +0000
git-parent:

[4b3147df2added647239fec9b82e62855afa487b]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1237388921 +0000
Message:

add on-the-fly data post-processing to flot, hook up the rpn stuff

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ui/web/htdocs/js/jquery.flot.js

    r4b3147d r0693191  
    315315                     
    316316                    var x = data[j][0], y = data[j][1]; 
     317                    if(series[i].dataManip) y = series[i].dataManip(y); 
    317318 
    318319                    // convert to number 
     
    10751076         
    10761077        function drawSeriesLines(series) { 
    1077             function plotLine(data, offset, axisx, axisy) { 
     1078            function plotLine(data, offset, axisx, axisy, dataManip) { 
    10781079                var prev, cur = null, drawx = null, drawy = null; 
    10791080                 
     
    10811082                for (var i = 0; i < data.length; ++i) { 
    10821083                    prev = cur; 
    1083                     cur = data[i]; 
     1084                    cur = [data[i][0], data[i][1]]; 
     1085                    if(dataManip) cur[1] = dataManip(cur[1]); 
    10841086 
    10851087                    if (prev == null || cur == null) 
     
    11561158            } 
    11571159 
    1158             function plotLineArea(data, axisx, axisy) { 
     1160            function plotLineArea(data, axisx, axisy, dataManip) { 
    11591161                var prev, cur = null; 
    11601162                 
     
    11661168                for (var i = 0; i < data.length; ++i) { 
    11671169                    prev = cur; 
    1168                     cur = data[i]; 
     1170                    cur = [data[i][0], data[i][1]]; 
     1171                    if(dataManip) cur[1] = dataManip(cur[1]); 
    11691172 
    11701173                    if (areaOpen && prev != null && cur == null) { 
     
    13061309                ctx.lineWidth = sw / 2; 
    13071310                ctx.strokeStyle = "rgba(0,0,0,0.1)"; 
    1308                 plotLine(series.data, lw/2 + sw/2 + ctx.lineWidth/2, series.xaxis, series.yaxis); 
     1311                plotLine(series.data, lw/2 + sw/2 + ctx.lineWidth/2, series.xaxis, series.yaxis, series.dataManip); 
    13091312 
    13101313                ctx.lineWidth = sw / 2; 
    13111314                ctx.strokeStyle = "rgba(0,0,0,0.2)"; 
    1312                 plotLine(series.data, lw/2 + ctx.lineWidth/2, series.xaxis, series.yaxis); 
     1315                plotLine(series.data, lw/2 + ctx.lineWidth/2, series.xaxis, series.yaxis, series.dataManip); 
    13131316            } 
    13141317 
     
    13171320            setFillStyle(series.lines, series.color); 
    13181321            if (series.lines.fill) 
    1319                 plotLineArea(series.data, series.xaxis, series.yaxis); 
    1320             plotLine(series.data, 0, series.xaxis, series.yaxis); 
     1322                plotLineArea(series.data, series.xaxis, series.yaxis, series.dataManip); 
     1323            plotLine(series.data, 0, series.xaxis, series.yaxis, series.dataManip); 
    13211324            ctx.restore(); 
    13221325        } 
    13231326 
    13241327        function drawSeriesPoints(series) { 
    1325             function plotPoints(data, radius, fill, axisx, axisy) { 
     1328            function plotPoints(data, radius, fill, axisx, axisy, dataManip) { 
    13261329                for (var i = 0; i < data.length; ++i) { 
    13271330                    if (data[i] == null) 
     
    13291332                     
    13301333                    var x = data[i][0], y = data[i][1]; 
     1334                    if(dataManip) y = dataManip(y); 
    13311335                    if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) 
    13321336                        continue; 
     
    13401344            } 
    13411345 
    1342             function plotPointShadows(data, offset, radius, axisx, axisy) { 
     1346            function plotPointShadows(data, offset, radius, axisx, axisy, dataManip) { 
    13431347                for (var i = 0; i < data.length; ++i) { 
    13441348                    if (data[i] == null) 
     
    13461350                     
    13471351                    var x = data[i][0], y = data[i][1]; 
     1352                    if(dataManip) y = dataManip(y); 
    13481353                    if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) 
    13491354                        continue; 
     
    13641369                ctx.strokeStyle = "rgba(0,0,0,0.1)"; 
    13651370                plotPointShadows(series.data, sw/2 + ctx.lineWidth/2, 
    1366                                  series.points.radius, series.xaxis, series.yaxis); 
     1371                                 series.points.radius, series.xaxis, series.yaxis, 
     1372                                 series.dataManip); 
    13671373 
    13681374                ctx.lineWidth = sw / 2; 
    13691375                ctx.strokeStyle = "rgba(0,0,0,0.2)"; 
    13701376                plotPointShadows(series.data, ctx.lineWidth/2, 
    1371                                  series.points.radius, series.xaxis, series.yaxis); 
     1377                                 series.points.radius, series.xaxis, series.yaxis, 
     1378                                 series.dataManip); 
    13721379            } 
    13731380 
     
    13761383            setFillStyle(series.points, series.color); 
    13771384            plotPoints(series.data, series.points.radius, series.points.fill, 
    1378                        series.xaxis, series.yaxis); 
     1385                       series.xaxis, series.yaxis, series.dataManip); 
    13791386            ctx.restore(); 
    13801387        } 
     
    14591466         
    14601467        function drawSeriesBars(series) { 
    1461             function plotBars(data, barLeft, barRight, offset, fill, axisx, axisy) { 
     1468            function plotBars(data, barLeft, barRight, offset, fill, axisx, axisy, dataManip) { 
    14621469                for (var i = 0; i < data.length; i++) { 
    14631470                    if (data[i] == null) 
    14641471                        continue; 
    1465                     drawBar(data[i][0], data[i][1], barLeft, barRight, offset, fill, axisx, axisy, ctx); 
     1472                    var y = data[i][1]; 
     1473                    if(dataManip) y = dataManip(y); 
     1474                    drawBar(data[i][0], y, barLeft, barRight, offset, fill, axisx, axisy, ctx); 
    14661475                } 
    14671476            } 
     
    14911500            setFillStyle(series.bars, series.color); 
    14921501            var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; 
    1493             plotBars(series.data, barLeft, barLeft + series.bars.barWidth, 0, series.bars.fill, series.xaxis, series.yaxis); 
     1502            plotBars(series.data, barLeft, barLeft + series.bars.barWidth, 0, series.bars.fill, series.xaxis, series.yaxis, series.dataManip); 
    14941503            ctx.restore(); 
    14951504        } 
     
    16331642 
    16341643                    var x = data[j][0], y = data[j][1]; 
     1644                    if(series[i].dataManip) y = series[i].dataManip(y); 
    16351645   
    16361646                    if (checkbar) { 
  • ui/web/htdocs/js/recon.js

    rd63f273 r0693191  
    3939} 
    4040 
    41 function rpn_eval(value, expr) { 
     41function rpn_magic(expr) { 
     42  return function(value) { 
     43    return rpn_eval(value, expr, {}); 
     44  }; 
     45
     46function rpn_eval(value, expr, meta) { 
    4247  s = []; 
    4348  ops = expr.split(","); 
     
    8994      case '*': 
    9095        s.unshift(s.shift() * s.shift()); break; 
    91       // Not implemented 
    92       // case 'auto': 
    93       //   s.unshift( $this->autounits(s.shift())); break; 
     96      case 'auto': 
     97        var units = 1; 
     98        if(meta && meta.max) { 
     99          units = Math.pow(1000,Math.floor(Math.log(meta.max)/Math.log(1000))) 
     100          if(units == 0) units = 1; 
     101        } 
     102        switch(units) { 
     103          case 0.000000001: meta.suffix = 'n'; break; 
     104          case 0.000001: meta.suffix = 'u'; break; 
     105          case 0.001: meta.suffix = 'm'; break; 
     106          case 1000: meta.suffix = 'k'; break; 
     107          case 1000000: meta.suffix = 'M'; break; 
     108          case 1000000000: meta.suffix = 'G'; break; 
     109          case 1000000000000: meta.suffix = 'T'; break; 
     110          default: meta.suffic = null; break; 
     111        } 
     112        s.unshift( s.shift() / units ); 
     113        break; 
    94114      case 'min': 
    95115        s.unshift(min(s.shift(),s.shift())); break; 
     
    102122    } 
    103123  } 
    104   value = s.shift(); 
    105   return value; 
     124  var newvalue = s.shift(); 
     125  return newvalue; 
    106126} 
    107127 
     
    194214                        if(tdata[1]!=''){ 
    195215                            if(ddata[i].reconnoiter_source_expression) { 
    196                                 tdata[1] = rpn_eval(tdata[1], ddata[i].reconnoiter_source_expression); 
     216                                tdata[1] = rpn_eval(tdata[1], ddata[i].reconnoiter_source_expression, {}); 
    197217                        } 
    198218                            if(ddata[i].reconnoiter_display_expression) { 
    199                                 tdata[1] = rpn_eval(tdata[1], ddata[i].reconnoiter_display_expression); 
     219                                tdata[1] = rpn_eval(tdata[1], ddata[i].reconnoiter_display_expression, {}); 
    200220                            } 
    201221                        } //end if ydata was a number 
     
    297317            }; 
    298318          })(this)); 
     319 
    299320          if(!r.options.grid) r.options.grid = {}; 
    300321          r.options.grid.hoverable = true; 
     
    305326          r.options.grid.hoverXOnly = true; 
    306327          if(!r.options.yaxis) r.options.yaxis = {}; 
    307           if(r.options.yaxis.suffix) 
    308             r.options.yaxis.tickFormatter = function (val, axis) { 
    309               return val.toFixed(axis.tickDecimals) + r.options.yaxis.suffix; 
    310             }; 
     328          r.options.yaxis.tickFormatter = function (val, axis) { 
     329            for(var i=0; i<ddata.length; i++) { 
     330              if(ddata[i].yaxis == 1 && 
     331                 ddata[i].reconnoiter_display_expression) { 
     332                var meta = { max: Math.max(Math.abs(axis.datamax), 
     333                                           Math.abs(axis.datamin)) 
     334                           }, 
     335                    pval = rpn_eval(val, ddata[i].reconnoiter_display_expression, meta); 
     336                return pval.toFixed(axis.tickDecimals) + 
     337                       ((meta.suffix != null) ? meta.suffix : ''); 
     338              } 
     339            }  
     340            return val.toFixed(axis.tickDecimals); 
     341          }; 
    311342          r.options.xaxis.localtime = true; 
     343 
    312344          doptions = r.options; 
    313345          dplaceholder = placeholder; 
    314346          ddata = r.data;           
     347          for(var i=0; i<r.data.length; i++) { 
     348            if(r.data[i].reconnoiter_display_expression) 
     349              r.data[i].dataManip = rpn_magic(r.data[i].reconnoiter_display_expression); 
     350          } 
    315351 
    316352          var plot = this.flot_plot = $.plot(placeholder, r.data, r.options);