Changeset 4b269cd5ec5afe986462728c72d16ad3daf0018e

Show
Ignore:
Timestamp:
12/23/08 23:19:27 (5 years ago)
Author:
Umar Farooq <umar@omniti.com>
git-committer:
Umar Farooq <umar@omniti.com> 1230074367 +0000
git-parent:

[7e3375144157488a94517863dfea42a3c2e495e1]

git-author:
Umar Farooq <umar@omniti.com> 1230074367 +0000
Message:

added stream data functionality, currently with hardcoded simulated data pipeline

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ui/web/htdocs/css/style.css

    r1de7d92 r4b269cd  
    782782margin-left:4px; 
    783783padding:0 4px; 
     784} 
     785span.streamData { 
     786border:1px solid #DDDDDD; 
     787float:right; 
     788margin-left:4px; 
     789padding:0 4px; 
     790font-weight: bold; 
     791color:#660000; 
    784792} 
    785793span.editGraph { 
  • ui/web/htdocs/graph_panel.inc

    r2d97bdc r4b269cd  
    1313var color_sel = 0; 
    1414var locked = true; 
     15var streaming = false; 
    1516                 
    1617function lock_forms() { 
     
    4344           update_current_graph(true); 
    4445           return(value); 
    45         }, { }); 
    46 }  
    47  
     46        }, { });  
     47
     48 
     49 
     50function stream_data() { 
     51        maingraph.ReconGraphClear(); 
     52//    while(streaming){ 
     53        var starty = 124688.366;  
     54        var startx = 1228737600000; 
     55        for(var i=0; i<10; i++){ 
     56           startx+=10000000; 
     57           starty += 10000*i; 
     58           maingraph.ReconGraphPlotPoint('412', 'average', startx, starty); 
     59           maingraph.ReconGraphPlotPoint('313', 'average', startx, starty); 
     60           maingraph.ReconGraphPlotPoint('1179', 'allocator_requests', startx, starty); 
     61        } 
     62  //  } 
     63
    4864function set_current_graph_id(id) { 
    4965  $(".rememberGraph").fadeOut('fast'); 
     
    5167    graphinfo.saved = true; 
    5268    locked = true; 
     69    streaming = false; 
    5370    lock_forms(); 
    5471    $(".editGraph").html('Edit Graph').fadeIn('slow');     
     72    $(".streamData").html('Stream Data').fadeIn('slow'); 
    5573  } 
    5674  else {         
     
    6583function update_current_graph(redraw, f) { 
    6684  if(recurse > 0) return; 
     85 
     86  streaming = false; 
     87  $(".streamData").html('Stream Data').fadeIn('slow'); 
     88 
    6789  var str = JSON.stringify(graphinfo); 
    6890  if(debug_graph_edit) $("#payload").html(str); 
     
    259281<span class="blankGraph">New Blank</span> 
    260282<span class="editGraph">Edit Graph</span> 
     283<span class="streamData">Stream Data</span> 
    261284<h2 id="graphTitle"></h2> 
    262285<!-- date range box --> 
     
    287310        }); 
    288311 
     312 
     313        $(".streamData").click(function() { 
     314               if(!locked) {             
     315                    if(!streaming) { 
     316                        streaming = true; 
     317                        stream_data(); 
     318                        $(".streamData").html('Streaming!').fadeIn('slow'); 
     319                    } 
     320                    else if(streaming) { 
     321                        streaming = false; 
     322                        $(".streamData").html('Stream Data').fadeIn('slow'); 
     323                        update_current_graph(true); 
     324                    } 
     325                } 
     326        }); 
    289327        $("#graph_datetool .btn-slide").click(function(){ 
    290328                $("#graph_widgetCalendar").stop().animate({ 
  • ui/web/htdocs/js/recon.js

    r2d97bdc r4b269cd  
    2525} 
    2626 
     27function rpn_eval(value, expr) { 
     28  s = []; 
     29  ops = expr.split(","); 
     30  s.unshift(value) 
     31 
     32  for (i = 0; i < ops.length; i++) { 
     33        op = ops[i]; 
     34 
     35    switch(op) { 
     36      case 'ln': 
     37        s.unshift(Math.log(s.shift())); break; 
     38      case 'round': 
     39        r = s.shift(); 
     40        l = s.shift(); 
     41        s.unshift(Math.round(l, r)); 
     42        break; 
     43      case 'floor': 
     44        s.unshift(Math.floor(s.shift())); break; 
     45      case 'ceil': 
     46        s.unshift(Math.ceil(s.shift())); break; 
     47      case 'log': 
     48        r = s.shift(); 
     49        l = s.shift(); 
     50        s.unshift(Math.log(l, r)); 
     51        break; 
     52      case 'e': 
     53        s.unshift(Math.exp(1)); break; 
     54      case 'pi': 
     55        s.unshift(Math.pi()); break; 
     56      case '^': 
     57        r = s.shift(); 
     58        l = s.shift(); 
     59        s.unshift(Math.pow(l, r)); 
     60        break; 
     61      case '-': 
     62        r = s.shift(); 
     63        l = s.shift(); 
     64        s.unshift(l - r); 
     65        break; 
     66      case '/': 
     67        r = s.shift(); 
     68        l = s.shift(); 
     69        s.unshift(l / r); 
     70        break; 
     71      case '.': 
     72        s.unshift(s[s.shift()]); break; 
     73      case '+': 
     74        s.unshift(s.shift() + s.shift()); break; 
     75      case '*': 
     76        s.unshift(s.shift() * s.shift()); break; 
     77      // Not implemented 
     78      // case 'auto': 
     79      //   s.unshift( $this->autounits(s.shift())); break; 
     80      case 'min': 
     81        s.unshift(min(s.shift(),s.shift())); break; 
     82      case 'max': 
     83        s.unshift(max(s.shift(),s.shift())); break; 
     84      default: 
     85        if(op.match(/^-?\d+$/)) { 
     86          s.unshift(op); 
     87        } 
     88    } 
     89  } 
     90  value = s.shift(); 
     91  return value; 
     92} 
     93 
    2794(function ($) { 
    2895  var ReconGraph = function() { 
    2996    var displayinfo = { start : 14*86400, end: '', width: 380, height: 180 }; 
     97    var doptions, dplaceholder, ddata; 
    3098    return { 
    3199      init: 
     
    60128          return this; 
    61129        }, 
    62       refresh: 
     130      clear: 
     131        function () { 
     132            for(var i=0; i<ddata.length;i++) {              
     133                    ddata[i].data = []; 
     134            } 
     135           this.flot_plot.setData({});        
     136           this.flot_plot.setupGrid(); 
     137           this.flot_plot.draw();                          
     138           return this; 
     139        }, 
     140     plotPoint: 
     141        function (uuid, metric_name, xdata, ydata) { 
     142            tdata = [xdata, ydata.toString()]; 
     143 
     144            for(var i=0; i<ddata.length;i++) { 
     145                if( !ddata[i].hidden && (ddata[i].uuid_name ==  (uuid+"-"+metric_name)) ) { 
     146 
     147                    if(ddata[i].data.length>0) ddata[i].lastval = ddata[i].data[0]; 
     148                    if(ddata[i].lastval) { 
     149                        slope = (tdata[0] - ddata[i].lastval[0]) / (tdata[1] - ddata[i].lastval[1]);                  
     150                        if(ddata[i].derive_val == 'derive') { 
     151                            tdata[1] = slope; 
     152                        } 
     153                        else if(ddata[i].derive_val == 'counter') { 
     154                            if(slope>=0) tdata[1] = tdata[1] - ddata[i].lastval[1]; 
     155                            else tdata[1] = ''; 
     156                        } 
     157                    } //end if there was a previous value available 
     158                     
     159                    if(tdata[1]!=''){ 
     160                        if(ddata[i].reconnoiter_source_expression) { 
     161                            tdata[1] = rpn_eval(tdata[1], ddata[i].reconnoiter_source_expression); 
     162                        } 
     163                        if(ddata[i].reconnoiter_display_expression) { 
     164                            tdata[1] = rpn_eval(tdata[1], ddata[i].reconnoiter_display_expression); 
     165                        } 
     166                        if(ddata[i].data.unshift(tdata) >70) { 
     167                            ddata[i].data.pop(); 
     168                        } 
     169                    } //end if ydata was a number 
     170                } //end if the uuid and metric_name match 
     171            } //end for each dataset 
     172            this.flot_plot = $.plot(dplaceholder, ddata, doptions); 
     173            return this; 
     174        }, 
     175    refresh: 
    63176        function(options) { 
    64177          if(this.length > 1) { 
     
    103216              return val.toFixed(axis.tickDecimals) + r.options.yaxis.suffix; 
    104217            }; 
    105  
     218          doptions = r.options; 
     219          dplaceholder = placeholder; 
     220          ddata = r.data; 
    106221          var plot = this.flot_plot = $.plot(placeholder, r.data, r.options); 
    107222 
     
    171286                ReconGraphPlot: ReconGraph.plot, 
    172287                ReconGraphReset: ReconGraph.reset, 
    173                 ReconGraphMacro: ReconGraph.macro 
     288              ReconGraphMacro: ReconGraph.macro, 
     289              ReconGraphClear: ReconGraph.clear, 
     290              ReconGraphPlotPoint: ReconGraph.plotPoint 
    174291              }); 
    175292})(jQuery); 
  • ui/web/lib/Reconnoiter_DataSet.php

    rdfed3eb r4b269cd  
    88  protected $default_attr; 
    99  protected $groupname; 
     10  protected $derive; 
    1011  function __construct($uuid, $name, $derive, $expr, $start, $end, $cnt = 400) { 
    1112    $db = Reconnoiter_DB::getDB(); 
    1213    $pgd = 'false'; 
    1314    $this->default_attr = 'avg_value'; 
     15 
     16    $this->derive = $derive; 
     17 
    1418    if($derive == 'derive' || $derive == 'true') { 
    1519      $pgd = 'true'; 
     
    3438    return $this->expr; 
    3539  } 
     40  function derive_val() { 
     41    return $this->derive; 
     42  } 
    3643  function data($ts, $attr = NULL) { 
    3744    if(!isset($attr)) $attr = $this->default_attr; 
  • ui/web/lib/Reconnoiter_flot_Driver.php

    re13f962 r4b269cd  
    3333        'data' => $this->graphdataset($set, $this->sets_config[$name]), 
    3434        'yaxis' => ($this->sets_config[$name]['axis'] == 'right') ? 2 : 1, 
     35        'derive_val' => $set->derive_val(), 
     36        'uuid_name' => $name, 
    3537      ); 
    36        
    3738      $show_set = ($this->sets_config[$name]['hidden'] != "true") ? 1: 0; 
    3839      if($show_set) {