Show
Ignore:
Timestamp:
09/21/08 19:55:50 (6 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1222026950 +0000
git-parent:

[644a39f2b16d4123980672227c37632008c01012]

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

graph editing... (a.k.a. Theo learn jQuery), refs #22

Files:

Legend:

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

    rc2b3734 r9478c46  
    33RewriteRule ^json/ds/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ds_json.php?l1=$1&l2=$2&l3=$3&l4=$4 [PT,QSA] 
    44RewriteRule ^json/ds/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ds_json.php?l1=$1&l2=$2&l3=$3&l4=$4&l5=$5 [PT,QSA] 
     5RewriteRule ^json/graph/info/([^/]+)$ graph_info.php?id=$1 [PT,QSA] 
     6RewriteRule ^json/graph/store$ graph_store.php [PT,QSA] 
     7RewriteRule ^amcharts/graph/settings/([^/]+) graph_settings.php?id=$1 [PT,QSA] 
    58 
  • ui/web/htdocs/bw_settings.php

    r6c1e4ca r9478c46  
    77 
    88$uuid = $_GET['id']; //'cfe2aad7-71e5-400b-8418-a6d5834a0386'; 
    9 $math = '$this->bw($value)'; 
    109$start = $_GET['start']; 
    1110$view = $_GET['view']; 
     
    2120                                        isset($_GET['cnt']) ? $_GET['cnt'] : 400); 
    2221$i = 0; 
    23 $settings = $graph_settings[$i++]; 
    24 $settings['expression'] = "0 - $math"; 
    25 $settings['hidden'] = ($view != "packets") ? "false" : "true"; 
    26 $driver->addDataSet($uuid, 'inoctets', true, '$value * 8', $settings); 
    27 $settings = $graph_settings[$i++]; 
    28 $settings['expression'] = "$math"; 
    29 $settings['hidden'] = ($view != "packets") ? "false" : "true"; 
    30 $driver->addDataSet($uuid, 'outoctets', true, '$value * 8', $settings); 
    31 $settings = $graph_settings[$i++]; 
    32 $settings['expression'] = '0 - $value'; 
    33 $settings['axis'] = "right"; 
    34 $settings['hidden'] = ($view == "packets") ? "false" : "true"; 
    35 $driver->addDataSet($uuid, 'inucastpkts', true, '$value', $settings); 
    36 $settings = $graph_settings[$i++]; 
    37 $settings['expression'] = '$value'; 
    38 $settings['axis'] = "right"; 
    39 $settings['hidden'] = ($view == "packets") ? "false" : "true"; 
    40 $driver->addDataSet($uuid, 'outucastpkts', true, '$value', $settings); 
    41 $driver->addChangeSet($uuid, 'alias'); 
    42 $driver->calcPercentile(95); 
     22$math = '$this->bw($value)'; 
     23if($view == "packets") { 
     24  $settings = $graph_settings[$i++]; 
     25  $settings['expression'] = "0 - $math"; 
     26  $driver->addDataSet($uuid, 'inucastpkts', true, '$value', $settings); 
     27  $settings = $graph_settings[$i++]; 
     28  $settings['expression'] = "$math"; 
     29  $driver->addDataSet($uuid, 'outucastpkts', true, '$value', $settings); 
     30} else { 
     31  $settings = $graph_settings[$i++]; 
     32  $settings['expression'] = "0 - $math"; 
     33  $driver->addDataSet($uuid, 'inoctets', true, '$value * 8', $settings); 
     34  $settings = $graph_settings[$i++]; 
     35  $settings['expression'] = "$math"; 
     36  $driver->addDataSet($uuid, 'outoctets', true, '$value * 8', $settings); 
     37  $driver->addChangeSet($uuid, 'alias'); 
     38  $driver->calcPercentile(95); 
     39  $driver->addPercentileGuide('95th', 95, array('expression' => "$math")); 
     40
    4341$driver->addPercentileGuide('min', 0, array('expression' => "$math")); 
    44 $driver->addPercentileGuide('95th', 95, array('expression' => "$math")); 
    4542$driver->addPercentileGuide('max', 100, array('expression' => "$math")); 
    4643 
  • ui/web/htdocs/css/style.css

    r2a9ba1d r9478c46  
    249249/******* GRAPH CONTROLS *******/ 
    250250 
     251div.error { width:100%; text-align:center; } 
     252p.error { width:auto; display:none; padding:4px; text-align:left; color: #600; border: 1px dashed #600; } 
    251253table#gtool { 
    252254        width:100%; 
     
    282284table#gtool td.math {background:#ebeef3 url(../images/icon-math.png) top left repeat-x;text-indent:-5000em;width:14px;border-bottom: 1px solid #ebeef3;padding: 3px 0px;} 
    283285 
    284  
    285 span.axison a{margin:0;padding:0;border:1px solid #9baac1;font:10px arial;display:block;float:left;width:13px;height:13px;text-align:center;vertical-align:middle;} 
    286 span.axisoff a{margin:0;padding:0;border:1px solid #FFF;font:10px arial;display:block;float:left;width:13px;height:13px;text-align:center;vertical-align:middle;} 
    287  
    288 #delete {background:url(../images/icon-delete.png) 0 2px no-repeat;display:block;width:15px;height:15px;} 
    289 #delete span {display:none;} 
     286input.graphAxis {display:none;} 
     287 
     288span.axis {margin:0;padding:0;font:10px arial;display:block;float:left;width:13px;height:13px;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid #FFF;} 
     289span.axison {border:1px solid #9baac1;} 
     290 
     291.deletedatapoint {background:url(../images/icon-delete.png) 0 2px no-repeat;display:block;width:15px;height:15px;} 
     292.deletedatapoint span {display:none;} 
    290293 
    291294/******* date zoom and range *******/ 
  • ui/web/htdocs/ds_json.php

    r2a9ba1d r9478c46  
    4949                   ); 
    5050    if($item['unique']) { 
     51      $jitem['text'] = '<a href="javascript:graph_add_datapoint({\'sid\' : ' . $item['sid'] . ', \'metric_name\' : \'' . $item['metric_name'] . '\', \'metric_type\' : \'' . $item['metric_type'] . '\'})">' . $item[$want] . '</a>'; 
    5152      if($item['metric_type'] == "numeric") { 
    52         $jitem['text'] = '<a href="javascript:mainGraphData(\'generic_settings.php?metric=nl-' . $item['sid'] . '-' . $item['metric_name'] . '&cnt=1400\')">' . $item[$want] . '</a>'; 
    5353        $jitem['classes'] = 'metric numeric'; 
    5454      } 
  • ui/web/htdocs/generic_settings.php

    rd8ec8a6 r9478c46  
    1515} 
    1616 
    17 $driver = new Reconnoiter_amLine_Driver($start, $end, isset($_GET['cnt']) ? $_GET['cnt'] : 400); 
     17$driver = new Reconnoiter_amLine_Driver($start, $end, isset($_GET['cnt']) ? $_GET['cnt'] : 200); 
    1818 
    1919$i = 0; 
  • ui/web/htdocs/graph_controls.inc

    r2a9ba1d r9478c46  
    1                         <p><a href="">username</a> / <a href="#">worksheet</a></p> 
    2                         <h2>NGM - My shot disk usage</h2> 
     1<script> 
     2<!-- 
     3var current_graph_id = ''; 
     4var graphinfo; 
     5var displayinfo = { start : 14*86400, cnt: '', end: '' }; 
     6function set_current_graph_id(id) { 
     7  current_graph_id = id; 
     8  fetch_graph_info(current_graph_id); 
     9
     10var recurse = 0; 
     11function redraw_current_graph() { 
     12  if(graphinfo.datapoints.length > 0) { 
     13    $("#flashcontent").slideDown("normal"); 
     14    var url = "amcharts/graph/settings/" + graphinfo.id + 
     15              "?cnt=" + displayinfo.cnt + 
     16              "&start=" + displayinfo.start + 
     17              "&end=" + displayinfo.end; 
     18    document.getElementById("maingraph").reloadSettings(url); 
     19  } 
     20  else { 
     21    $("#flashcontent").slideUp("normal"); 
     22  } 
     23
     24function update_current_graph() { 
     25  if(recurse > 0) return; 
     26  var str = JSON.stringify(graphinfo); 
     27  //$("#payload").html(str); 
     28  $.post("json/graph/store", 
     29         {'json':str}, 
     30         function(d) { 
     31           recurse++; 
     32           graphinfo.id = d.id; 
     33           if(d.error) { 
     34             $("#gtool-error").html(d.error); 
     35             $("#gtool-error").fadeIn('fast'); 
     36           } 
     37           recurse--; 
     38           //$("#payload").html(JSON.stringify(graphinfo)); 
     39           redraw_current_graph(); 
     40         }, 'json'); 
     41
     42function graph_add_datapoint(d) { 
     43  if(d.axis == undefined) { d.axis = 'l'; } 
     44  if(d.name == undefined) { d.name = d.metric_name; } 
     45  graphinfo.datapoints.push(d); 
     46  gtool_add_datapoint(d); 
     47  update_current_graph(); 
     48
     49function gtool_add_datapoint(d) { 
     50  var o = $("#datapointeditor").clone(); 
     51  recurse++; 
     52 
     53  o.find(d.axis == "l" ? ".axisl" : ".axisr").addClass("axison"); 
     54  o.find("span.axis").click(function(){ 
     55    $(this).siblings().removeClass("axison"); 
     56    $(this).addClass("axison"); 
     57    d.axis = $(this).hasClass("axisl") ? "l" : "r"; 
     58    update_current_graph(); 
     59  }); 
     60  if(!d.hidden){o.find('input[@name="view"]').attr("checked","checked");} 
     61  o.find('input[@name="view"]').change(function(){ 
     62    d.hidden = !($(this).attr("checked")); 
     63    update_current_graph(); 
     64  }).change(); 
     65 
     66  o.find('.deletedatapoint').click(function(){ 
     67    for(var i=0; i<graphinfo.datapoints.length; i++) { 
     68      if(graphinfo.datapoints[i] == d) { 
     69        graphinfo.datapoints.splice(i,1); 
     70        break; 
     71      } 
     72    } 
     73    update_current_graph(); 
     74    refresh_graph_from_json(graphinfo); 
     75    return false; 
     76  }); 
     77 
     78  if(d.metric_type == 'text') { 
     79    o.find('tr.mathbox').remove(); 
     80    o.find('input[@name="derive"]').attr('disabled','disabled'); 
     81  } 
     82  else { 
     83    if(d.derive){o.find('input[@name="derive"]').attr("checked","checked");} 
     84    o.find('input[@name="derive"]').change(function(){ 
     85      d.derive = ($(this).attr("checked")); 
     86      update_current_graph(); 
     87    }).change(); 
     88 
     89    o.find('input[@name="math1"]').val(d.math1); 
     90    o.find('input[@name="math1"]').change(function(){ 
     91      d.math1 = $(this).val(); 
     92      update_current_graph(); 
     93    }); 
     94    o.find('input[@name="math2"]').val(d.math2); 
     95    o.find('input[@name="math2"]').change(function(){ 
     96      d.math2 = $(this).val(); 
     97      update_current_graph(); 
     98    }); 
     99  } 
     100 
     101  o.find(".datatitle").html("[" + d.sid + "-" + d.metric_name + "] " + d.name); 
     102  recurse--; 
     103  $("#gtool #dataPoints").append(o.children()); 
     104
     105function refresh_graph_from_json(j) { 
     106   graphinfo = j; 
     107   if(graphinfo.datapoints == undefined) graphinfo.datapoints = Array(); 
     108   $("h2#graphTitle").html(graphinfo.title); 
     109   $("input[@name='graphtype']:checked").removeAttr("checked"); 
     110   $("input[@name='graphtype']") 
     111     .filter(function(i){return $(this).val() == graphinfo.type;}) 
     112     .attr("checked","checked"); 
     113   $("#dataPoints").empty(); 
     114   for(var i=0; i<graphinfo.datapoints.length; i++) { 
     115     gtool_add_datapoint(graphinfo.datapoints[i]); 
     116   } 
     117   redraw_current_graph(); 
     118
     119function fetch_graph_info(id) { 
     120 $.getJSON("graph_info.php",{id: id}, refresh_graph_from_json); 
     121
     122--> 
     123</script> 
     124<!--<p><a href="">username</a> / <a href="#">worksheet</a></p>--> 
     125<h2 id="graphTitle"></h2> 
     126 
     127<!-- date range box --> 
     128<script type="text/javascript"> 
     129$(document).ready(function(){ 
     130        var time_windows = { '2d' : 86400*2, 
     131                              '1w' : 86400*7, 
     132                              '2w' : 86400*14, 
     133                              '4w' : 86400*28, 
     134                              '1y' : 86400*365, 
     135                            }; 
     136        $(".btn-slide").click(function(){ 
     137                $("#panel").slideToggle("fast"); 
     138                $(this).toggleClass("active"); 
     139                return false; 
     140        }); 
     141        $(".datechoice").click(function(){ 
     142                $("#dateRange").html("YYYY/MM/DD - YYYY/MM/DD"); 
     143                $("#panel").slideUp("slow"); 
     144                $(".datechoice").removeClass("selected"); 
     145                displayinfo.start = time_windows[$(this).html()]; 
     146                displayinfo.end = ''; 
     147                $(this).addClass("selected"); 
     148                redraw_current_graph(); 
     149                return false; 
     150        });     
     151        $(".graphType").change(function(){ 
     152                graphinfo.type = $(this).val(); 
     153                update_current_graph(); 
     154        }); 
     155        $("#gtool-error").click(function(){ 
     156          $("#gtool-error").fadeOut("slow"); 
     157        }); 
     158        set_current_graph_id(''); 
     159}); 
     160</script> 
     161 
     162<div id="datetool"> 
     163        <div id="zoom"> 
     164                <dl> 
     165                        <dt>Zoom:</dt> 
     166                        <dd><a href="#" class="first datechoice">2d</a></dd> 
     167                        <dd><a href="#" class="datechoice">1w</a></dd> 
     168                        <dd><a href="#" class="selected datechoice">2w</a></dd> 
     169                        <dd><a href="#" class="datechoice">4w</a></dd> 
     170                        <dd><a href="#" class="datechoice">1y</a></dd> 
     171                </dl> 
     172        </div> 
     173        <div id="range"> 
     174                <dl> 
     175                        <dt>Date Range:</dt> 
     176                        <dd><a href="" class="btn-slide" id="dateRange">YYYY/MM/DD - YYYY/MM/DD</a></dd> 
     177                </dl> 
     178        </div> 
     179        <div id="panel">calendar here</div> 
     180</div> 
    3181                         
    4                         <div id="datetool"> 
    5                                 <div id="zoom"> 
    6                                         <dl> 
    7                                                 <dt>Zoom:</dt> 
    8                                                 <dd><a href="" class="first" onclick="disp_alert()">2d</a></dd> 
    9                                                 <dd><a href="" onclick="disp_alert()">1w</a></dd> 
    10                                                 <dd><a href="" class="selected" onclick="disp_alert()">2w</a></dd> 
    11                                                 <dd><a href="" onclick="disp_alert()">1m</a></dd> 
    12                                                 <dd><a href="" onclick="disp_alert()">1y</a></dd> 
    13                                         </dl> 
    14                                 </div> 
    15                                 <div id="range"> 
    16                                         <dl> 
    17                                                 <dt>Date Range:</dt> 
    18                                                 <dd><a href="" class="btn-slide">YYYY/MM/DD - YYYY/MM/DD</a></dd> 
    19                                         </dl> 
    20                                 </div> 
    21                                 <div id="panel">calendar here</div> 
    22                         </div> 
    23                          
    24                         <!-- confirm box --> 
    25                         <div id="confirm" style="display:none"> 
    26                                 <a href="#" title="Close" class="modalCloseX modalClose">x</a> 
    27                                 <div class="header"><span>Confirm</span></div> 
    28                                 <p class="message"></p> 
    29                                 <div class="buttons"> 
    30                                         <div class="no modalClose">No</div><div class="yes">Yes</div> 
    31                                 </div> 
    32                         </div> 
    33                          
    34                         <div> 
    35                                 <script type="text/javascript" src="http://postgres83dev.office.omniti.com/reconnoiter/js/swfobject.js"></script> 
    36                                 <script type="text/javascript"> 
    37                                         function mainGraphData(settings) { 
    38                                                 var mg = document.getElementById("maingraph"); 
    39                                                 mg.reloadSettings(settings); 
    40                                         } 
    41                                 </script> 
    42                                 <div id="flashcontent"> 
    43                                         <strong>You need to upgrade your Flash Player</strong> 
    44                                 </div> 
    45                                 <script type="text/javascript"> 
    46                                         // <![CDATA[             
    47                                         var so = new SWFObject("amcharts/amline/amline.swf", "maingraph", "697", "400", "8", "#FFFFFF"); 
    48                                         so.addVariable("path", "amcharts/amline/"); 
    49                                         so.addVariable("settings_file", escape("/reconnoiter/blank.xml")); 
    50                                         so.addVariable("preloader_color", "#999999"); 
    51                                         so.addVariable("chart_id", "maingraph"); 
    52                                         so.addParam('wmode','transparent');//added for confirm box 
    53                                         so.write("flashcontent"); 
    54                                         // ]]> 
    55                                 </script> 
    56                                 <form action="#" name="form4" id="form4" style="margin:1em 0;text-align:center;"> 
    57                                 <fieldset> 
    58                                 <legend style="display:none;">View</legend> 
    59                                 <label for="std_view"><input type="radio" name="std_view" id="std_view" value="Standard View" checked="checked" /> Standard View</label> &nbsp;&nbsp;&nbsp; 
    60                                 <label for="stacked_view"><input type="radio" name="stacked_vieww" id="stacked_view" value="Stacked View" /> Stacked View</label> 
    61                                 </fieldset> 
    62                                 </form> 
    63                                  
    64                         </div> 
    65                          
    66                         <table id="gtool"> 
    67                                 <tr> 
    68                                         <th></th> 
    69                                          
    70                                         <th class="data">Data Points</th> 
    71                                         <th>Color</th> 
    72                                         <th>Derivative</th> 
    73                                         <th>Axis</th> 
    74                                         <th></th> 
    75                                         <th></th> 
    76                                 </tr> 
    77                                 <tbody> 
    78                                 <tr> 
    79                                         <td><input name="" type="checkbox" value="view" checked /></td> 
    80                                         <td class="data">sample data point 1</td> 
    81                                         <td><script type="text/javascript">drawCP('cp1');</script></td> 
    82                                         <td><input name="" type="checkbox" value="view" checked /></td> 
    83                                         <td><span class="axisoff"><a href="">L</a></span> <span class="axison"><a href="">R</a></span></td> 
    84                                         <td><a href="#" id="delete"><span>delete</span></a></td> 
    85                                         <td class="math">math</td> 
    86                                 </tr> 
    87                                 <tr class="mathbox"> 
    88                                         <td colspan="7"> 
    89                                         <div> 
    90                                                 <label for="math">Math 1 (Units conversion)</label> <input type="text" id="keyword2" value="no math" style="width:320px;" /> <input type="submit" value="Apply" /> <input type="submit" value="Edit Math" disabled="disabled" /><br /> 
    91                                         </div> 
    92                                         <div>    
    93                                                 <label for="math">Math 2</label> <input type="text" id="keyword2" value="no math" style="width:320px;" /> <input type="submit" value="Apply" /> <input type="submit" value="Edit Math" disabled="disabled" /> 
    94                                         </div> 
    95                                         </td> 
    96                                 </tr> 
    97                                 <tr> 
    98                                         <td><input name="" type="checkbox" value="view" checked /></td> 
    99                                         <td class="data">sample data point 2</td> 
    100                                         <td><script type="text/javascript">drawCP('cp2');</script></td> 
    101                                         <td><input name="" type="checkbox" value="view" checked /></td> 
    102                                         <td><span class="axison"><a href="">L</a></span> <span class="axisoff"><a href="">R</a></span></td> 
    103                                         <td><a href="#" id="delete"><span>delete</span></a></td> 
    104                                         <td class="math">math</td> 
    105                                 </tr> 
    106                                 <tr class="mathbox"> 
    107                                         <td colspan="7"> 
    108                                         <div> 
    109                                                 <label for="math">Math 1 (Units conversion)</label> <input type="text" id="keyword2" value="no math" style="width:320px;" /> <input type="submit" value="Apply" /> <input type="submit" value="Edit Math" disabled="disabled" /><br /> 
    110                                         </div> 
    111                                         <div>    
    112                                                 <label for="math">Math 2</label> <input type="text" id="keyword2" value="no math" style="width:320px;" /> <input type="submit" value="Apply" /> <input type="submit" value="Edit Math" disabled="disabled" /> 
    113                                         </div> 
    114                                         </td> 
    115                                 </tr> 
    116                                 <tr> 
    117                                         <td><input name="" type="checkbox" value="view" checked /></td> 
    118                                         <td class="data">sample data point 3</td> 
    119                                         <td><script type="text/javascript">drawCP('cp3');</script></td> 
    120                                         <td><input name="" type="checkbox" value="view" checked /></td> 
    121                                         <td><span class="axison"><a href="">L</a></span> <span class="axisoff"><a href="">R</a></span></td> 
    122                                         <td><a href="#" id="delete"><span>delete</span></a></td> 
    123                                         <td class="math">math</td> 
    124                                 </tr> 
    125                                 <tr class="mathbox"> 
    126                                         <td colspan="7"> 
    127                                         <div> 
    128                                                 <label for="math">Math 1 (Units conversion)</label> <input type="text" id="keyword2" value="no math" style="width:320px;" /> <input type="submit" value="Apply" /> <input type="submit" value="Edit Math" disabled="disabled" /><br /> 
    129                                         </div> 
    130                                         <div>    
    131                                                 <label for="math">Math 2</label> <input type="text" id="keyword2" value="no math" style="width:320px;" /> <input type="submit" value="Apply" /> <input type="submit" value="Edit Math" disabled="disabled" /> 
    132                                         </div> 
    133                                         </td> 
    134                                 </tr> 
    135                                 </tbody> 
    136                         </table> 
    137                          
    138                          
     182<!-- confirm box --> 
     183<div id="confirm" style="display:none"> 
     184        <a href="#" title="Close" class="modalCloseX modalClose">x</a> 
     185        <div class="header"><span>Confirm</span></div> 
     186        <p class="message"></p> 
     187        <div class="buttons"> 
     188                <div class="no modalClose">No</div><div class="yes">Yes</div> 
     189        </div> 
     190</div> 
     191 
     192<div> 
     193        <script type="text/javascript" src="http://postgres83dev.office.omniti.com/reconnoiter/js/swfobject.js"></script> 
     194        <script type="text/javascript"> 
     195                function mainGraphData(settings) { 
     196                        var mg = document.getElementById("maingraph"); 
     197                        mg.reloadSettings(settings); 
     198                } 
     199        </script> 
     200        <div id="flashcontent"> 
     201                <strong>You need to upgrade your Flash Player</strong> 
     202        </div> 
     203        <script type="text/javascript"> 
     204                // <![CDATA[             
     205                var so = new SWFObject("amcharts/amline/amline.swf", "maingraph", "697", "400", "8", "#FFFFFF"); 
     206                so.addVariable("path", "amcharts/amline/"); 
     207                so.addVariable("settings_file", escape("blank.xml")); 
     208                so.addVariable("preloader_color", "#999999"); 
     209                so.addVariable("chart_id", "maingraph"); 
     210                so.addParam('wmode','transparent');//added for confirm box 
     211                so.write("flashcontent"); 
     212                // ]]> 
     213        </script> 
     214        <form action="#" name="form4" id="form4" style="margin:1em 0;text-align:center;"> 
     215        <fieldset> 
     216        <legend style="display:none;">View</legend> 
     217        <label for="std_view"><input class="graphType" type="radio" name="graphtype" id="std_view" value="standard"/> Standard View</label> &nbsp;&nbsp;&nbsp; 
     218        <label for="stacked_view"><input class="graphType" type="radio" name="graphtype" id="stacked_view" value="stacked" /> Stacked View</label> 
     219        </fieldset> 
     220        </form> 
     221         
     222</div> 
     223<div class="error"><p class="error" id="gtool-error"></p></div> 
     224<table id="gtool"> 
     225        <tr> 
     226                <th></th> 
     227                 
     228                <th class="data">Data Points</th> 
     229                <th>Color</th> 
     230                <th>Derivative</th> 
     231                <th>Axis</th> 
     232                <th></th> 
     233                <th></th> 
     234        </tr> 
     235        <tbody id="dataPoints"> 
     236        </tbody> 
     237</table> 
     238 
     239<div style="display:none"> 
     240<form id="hiddeneditor"> 
     241        <table> 
     242        <tbody id="datapointeditor"> 
     243        <tr> 
     244                <td><input name="view" type="checkbox" value="1"/></td> 
     245                <td class="data datatitle"></td> 
     246                <td></td> 
     247                <td><input name="derive" type="checkbox" value="1"/></td> 
     248                <td><span class="axis axisl"> L</span> <span class="axis axisr"> R</span></td> 
     249                <td><a href="#" class="deletedatapoint"><span>delete</span></a></td> 
     250                <td class="math">math</td> 
     251        </tr> 
     252        <tr class="mathbox"> 
     253                <td colspan="7"> 
     254                <div> 
     255                        <label for="math">Units conversion</label> <input name="math1" type="text" value="" style="width:380px;" /> 
     256                </div> 
     257                <div>    
     258                        <label for="math">Math</label> <input name="math2" type="text" value="" style="width:380px;" /> 
     259                </div> 
     260                </td> 
     261        </tr> 
     262        </tbody> 
     263        </table> 
     264</form> 
     265</div> 
     266 
     267<div id="payload"> 
     268</div> 
  • ui/web/htdocs/main.php

    r2a9ba1d r9478c46  
    55<title>Reconnoiter</title> 
    66<link href="css/style.css" rel="stylesheet" type="text/css" /> 
     7<script src="js/json2.js"></script> 
    78<script src="js/jquery.min.js"></script> 
    89<script src="js/jquery.cookie.js" type="text/javascript"></script> 
     
    8788</script> 
    8889 
    89 <!-- date range box --> 
    90 <script type="text/javascript"> 
    91 $(document).ready(function(){ 
    92  
    93         $(".btn-slide").click(function(){ 
    94                 $("#panel").slideToggle("fast"); 
    95                 $(this).toggleClass("active"); return false; 
    96         });      
    97           
    98 }); 
    99 </script> 
    100  
    10190<!-- math box --> 
    10291 
  • ui/web/lib/Reconnoiter_DB.php

    re45ae44 r9478c46  
    11<?php 
     2 
     3require_once('Reconnoiter_UUID.php'); 
    24 
    35class Reconnoiter_DB { 
     
    1719  function connect() { 
    1820    $this->db = new PDO("pgsql:host=localhost;dbname=reconnoiter", 
    19                         "stratcon", "stratcon"); 
     21                        "prism", "prism"); 
    2022    $this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 
    2123  } 
     
    196198    return $rv; 
    197199  } 
     200  function getGraphByID($id) { 
     201    $sth = $this->db->prepare("select * 
     202                                 from prism.saved_graphs 
     203                                where graphid=?"); 
     204    $sth->execute(array($id)); 
     205    $row = $sth->fetch(); 
     206    return $row; 
     207  } 
     208  function saveGraph($graph) { 
     209    $id = ''; 
     210    if($graph['id']) { 
     211      $id = $graph['id']; 
     212      unset($graph['id']); 
     213    } 
     214    $json = json_encode($graph); 
     215    $this->db->beginTransaction(); 
     216    try { 
     217      if($id) { 
     218        $sth = $this->db->prepare("update prism.saved_graphs 
     219                                      set json=?, title=? where graphid=?"); 
     220        $sth->execute(array($json,$graph['title'],$id)); 
     221        if($sth->rowCount() != 1) throw(new Exception('No such graph: '.$id)); 
     222        $sth = $this->db->prepare("delete from prism.saved_graphs_dep 
     223                                         where graphid = ?"); 
     224        $sth->execute(array($id)); 
     225      } 
     226      else { 
     227        $id = Reconnoiter_UUID::generate(); 
     228        $sth = $this->db->prepare("insert into prism.saved_graphs 
     229                                               (graphid, json, title) 
     230                                        values (?, ?, ?)"); 
     231        $sth->execute(array($id, $json, $graph['title'])); 
     232      } 
     233      $sth = $this->db->prepare("insert into prism.saved_graphs_dep 
     234                                             (graphid, sid, 
     235                                              metric_name, metric_type) 
     236                                      values (?,?,?,?)"); 
     237      foreach($graph['datapoints'] as $datapoint) { 
     238        $sth->execute(array($id, $datapoint['sid'], 
     239                            $datapoint['metric_name'], 
     240                            $datapoint['metric_type'])); 
     241      } 
     242      $this->db->commit(); 
     243    } 
     244    catch(PDOException $e) { 
     245      $this->db->rollback(); 
     246      throw(new Exception('DB: ' . $e->getMessage())); 
     247    } 
     248    return $id; 
     249  } 
    198250} 
    199251 
  • ui/web/lib/Reconnoiter_DataContainer.php

    r773b1aa r9478c46  
    8787  } 
    8888  function autounit() { 
    89     $this->__calc(); 
     89    //$this->__calc(); 
    9090    switch($this->units) { 
    9191      case 0.000000001: return 'n';