Changeset 52dcc3a33357c5548101f702bf4eef254a2dfafb

Show
Ignore:
Timestamp:
09/24/08 04:05:05 (6 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1222229105 +0000
git-parent:

[32c816152e633534bdc3186a89f3ea92fd0b1da4]

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

graph lookup and cleanup, refs #22

Files:

Legend:

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

    r32c8161 r52dcc3a  
    55RewriteRule ^json/graph/info/([^/]*)$ graph_info.php?id=$1 [PT,QSA] 
    66RewriteRule ^json/graph/store$ graph_store.php [PT,QSA] 
     7RewriteRule ^json/graph/search$ graph_search_json.php [PT,QSA] 
     8RewriteRule ^json/datapoint/search$ datapoint_search_json.php [PT,QSA] 
    79RewriteRule ^amcharts/graph/settings/([^/]+) graph_settings.php?id=$1 [PT,QSA] 
    8 RewriteRule ^json/datapoint/search$ datapoint_search_json.php [PT,QSA] 
  • ui/web/htdocs/css/style.css

    r4f81059 r52dcc3a  
    199199 
    200200/* search list */ 
    201 #searchlist {overflow:auto; white-space:nowrap;} 
     201#searchlist {overflow:hidden; white-space:nowrap;} 
    202202#searchlist ul a {list-style:none;} 
    203203#searchlist ul li {display:block;padding:0;margin-bottom:0px;} 
     
    207207/* browse list */ 
    208208#browselist span {display:block; white-space: nowrap;} 
    209 #browselist {overflow:auto;} 
     209#browselist {overflow:hidden;} 
    210210#browselist ul {list-style:none;} 
    211211#browselist ul li {display:block;padding:0;} 
  • ui/web/htdocs/datapoint_search_json.php

    r362040a r52dcc3a  
    44 
    55$db = Reconnoiter_DB::GetDB(); 
    6 $rows = $db->get_datapoints($_GET['q'], $_GET['o'], $_GET['l']); 
    7 print json_encode(array( 
    8   'query' => $_GET['q'], 
    9   'offset' => $_GET['o'], 
    10   'limit' => $_GET['l'], 
    11   'results' => $rows 
    12 )); 
     6 
     7try { 
     8  print json_encode($db->get_datapoints($_GET['q'], $_GET['o'], $_GET['l'])); 
     9
     10catch(Exception $e) { 
     11  print json_encode(array( 
     12    'count' => 0, 
     13    'query' => $_GET['q'], 
     14    'offset' => $_GET['o'], 
     15    'limit' => $_GET['l'], 
     16    'error' => $e->getMessage() 
     17  )); 
     18
  • ui/web/htdocs/graph_info.php

    r9478c46 r52dcc3a  
    55if($_GET['id']) { 
    66  $row = $db->getGraphByID($_GET['id']); 
    7   $graph = json_decode($row['json']); 
     7  $graph = json_decode($row['json'], true); 
    88  $graph['id'] = $row['graphid']; 
    99  print json_encode($graph); 
  • ui/web/htdocs/graph_settings.php

    r4f81059 r52dcc3a  
    1212  $start = strftime("%Y-%m-%d %H:%M:%S", time() - $start); 
    1313$end = $_GET['end']?$_GET['end']:strftime("%Y-%m-%d %H:%M:%S", time()); 
    14 $cnt = $_GET['cnt']?$_GET['cnt']:200; 
     14$cnt = $_GET['cnt']?$_GET['cnt']:100; 
    1515 
    1616$driver = new Reconnoiter_amLine_Driver($start, $end, $cnt); 
  • ui/web/htdocs/main.php

    r362040a r52dcc3a  
    55<title>Reconnoiter</title> 
    66<link href="css/style.css" rel="stylesheet" type="text/css" /> 
     7<script src="js/htmlentities.js"></script> 
    78<script src="js/json2.js"></script> 
    89<script src="js/jquery.min.js"></script> 
  • ui/web/htdocs/search_saved_graphs.inc

    r2a9ba1d r52dcc3a  
    1                                         <h4>640 graphs found</h4> 
    2                                         <div class="accordion2"> 
    3                                                 <h4>Narrow results by user</h4> 
    4                                                 <div> 
    5                                                         <form name="form" id="form"> 
    6                                                                 <label for="jumpMenu">User:</label> 
    7                                                                 <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)"> 
    8                                                                         <option>All users</option> 
    9                                                                         <option>theo@omniti.com</option> 
    10                                                                         <option>loremipsum@mail.freelotto.com</option> 
    11                                                                 </select> 
    12                                                         </form> 
    13                                                 </div> 
    14                                                 <h4>Narrow results by keyword</h4> 
    15                                                 <div> 
    16                                                          <form name="form3" id="form3"> 
    17                                                                 <fieldset> 
    18                                                                 <label for="keyword2" style="display:none;">Keyword</label> <input type="text" id="keyword2" value="keyword" style="width:200px;" /> <input type="submit" value="Submit" /> <input type="submit" value="Clear" /> 
    19                                                                 </fieldset> 
    20                                                         </form> 
    21                                                 </div> 
    22                                         </div> 
    23                                         <div style="margin:1em 0;padding:1em 0;border-top:1px solid #e6e4e5;border-bottom:2px none #e6e4e5;"> 
    24                                         <form name="form" id="form"> 
    25                                                 <label for="jumpMenu">Sort by:</label> 
    26                                                 <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)"> 
    27                                                         <option>Date New to Old</option> 
    28                                                         <option>Date Old to New</option> 
    29                                                         <option>User A to Z</option> 
    30                                                         <option>User Z to A</option> 
    31                                                 </select> 
    32                                         </form> 
    33                                         </div> 
    34                                          
    35                                         <div id="graphlist"> 
    36                                                 <ul> 
    37                                                         <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
    38                                                         <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
    39                                                         <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
    40                                                         <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
    41                                                         <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
    42                                                         <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
    43                                                         <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
    44                                                 </ul> 
    45                                         </div> 
     1<script type="text/javascript"> 
     2<!-- 
     3function perform_graph_search(string, offset, limit) { 
     4  $.getJSON('json/graph/search', 
     5            { 'q' : string, 'o' : offset, 'l' : limit }, 
     6            function(r) { 
     7              var summary = r.count + ' graph' + (r.count == 1 ? '' : 's' ) + ' found for \'' + htmlentities(r.query) + '\''; 
     8              if(r.error) summary = 'Error: ' + htmlentities(r.error); 
     9              $("#graphlist > p.graph-search-summary").html(summary).fadeIn('fast'); 
     10              if(r.count > (r.limit + r.offset)) { 
     11                $("#graphlist > span.paginate").slideDown('fast'); 
     12              } 
     13              else $("#graphlist > span.paginate").slideUp('fast'); 
     14              $("#graph-searchresults > li").remove(); 
     15              for(var i=0; r.results && i<r.results.length; i++) { 
     16                var g = r.results[i]; 
     17                var a = $('<a href="#"/>'); 
     18                a.html('Edit').addClass('addtows'); 
     19                a.click( 
     20                  (function(graphid) { 
     21                      return function() { 
     22                        set_current_graph_id(graphid); 
     23                        return false; 
     24                      } 
     25                   })(g.graphid) 
     26                ); 
     27                var li = $('<li/>').append($('<a/>').html(g.title)) 
     28                                   .append($('<ul/>').append($('<li/>').html(g.last_update)) 
     29                                                     .append($('<li/>').append(a))); 
     30                $("#graph-searchresults").append(li); 
     31              } 
     32            }); 
     33
     34$(document).ready(function(){ 
     35        $("#graph-searchform").submit(function() { 
     36                perform_graph_search($("#graph-searchinput").val(), 0, 25); 
     37                return false; 
     38        }); 
     39}); 
     40--> 
     41</script> 
     42 
     43</script> 
     44<h4 id="graph-searchterms"></h4> 
     45<div id="graph-searchform-container" style="margin:.5em 0 2em 0;padding-bottom:1em;border-bottom: solid 1px #e6e4e5;"> 
     46<form id="graph-searchform"> 
     47  <fieldset> 
     48  <legend style="display:none;">Search</legend> 
     49  <label for="keyword" style="display:none;">Keyword</label> <input type="text" id="graph-searchinput" style="width:220px;" /> <input type="submit" value="Search" /> 
     50  </fieldset> 
     51</form> 
     52</div> 
     53<div id="graphlist"> 
     54  <p class="graph-search-summary"></p> 
     55  <ul id="graph-searchresults"> 
     56    <li><a href="#">sed do eiusmod tempor incididunt ut labore</a><ul><li class="xx">theo@omniti.com</li><li>YY/MM/DD</li><li><a href="#" class="addtows" title="Add to Worksheet"><em>Add</em></a></li></ul></li> 
     57  </ul> 
     58</div> 
  • ui/web/htdocs/search_simple.inc

    rbe3d05c r52dcc3a  
    55            { 'q' : string, 'o' : offset, 'l' : limit }, 
    66            function(r) { 
     7              var summary = 'Found ' + r.count + ' data point' + (r.count == 1 ? '' : 's' ) + ' found for \'' + htmlentities(r.query) + '\''; 
     8              if(r.error) summary = 'Error: ' + htmlentities(r.error); 
     9              $("#searchlist > p.search-summary").html(summary).fadeIn('fast'); 
     10              if(r.count > (r.limit + r.offset)) { 
     11                $("#searchlist > span.paginate").slideDown('fast'); 
     12              } 
     13              else $("#searchlist > span.paginate").slideUp('fast'); 
    714              $("#searchresults > li").remove(); 
    8               for(var i=0; i<r.results.length; i++) { 
     15              for(var i=0; r.results && i<r.results.length; i++) { 
    916                var ds = r.results[i]; 
    1017                var a = $('<a href="#"/>'); 
     
    4754</div> 
    4855<div id="searchlist"> 
     56  <p class="search-summary"></p> 
    4957  <ul id="searchresults"> 
    5058  </ul> 
  • ui/web/lib/Reconnoiter_DB.php

    r362040a r52dcc3a  
    6262    return $rv; 
    6363  } 
    64   function valid_source_variables() { 
     64  private function valid_source_variables() { 
    6565    return array('module', 'remote_address', 'target', 'name', 'metric_name'); 
    6666  } 
    67   function get_datapoints($searchstring, $offset, $limit) { 
    68     $sth = $this->db->prepare(" 
    69       select * 
    70         from stratcon.mv_loading_dock_check_s c 
    71         join stratcon.metric_name_summary m using (sid) 
    72        where active = true 
    73     order by target, module, name, remote_address 
    74        limit ? 
    75       offset ?"); 
    76     $sth->execute(array($limit, $offset)); 
     67  private function tsearchize($searchstring) { 
     68    $searchstring = trim($searchstring); 
     69    $searchstring = preg_replace('/\s+/', ' ', $searchstring); 
     70    $searchstring = preg_replace('/\b(\'[^\']+\'|[^\s\|\'&]\S*)\s+(?![\|\)&])/', 
     71                                 '$1 & ', $searchstring); 
     72    return $searchstring; 
     73  } 
     74  protected function run_tsearch($searchstring, $countsql, $datasql, $offset, $limit) { 
     75    $searchstring = $this->tsearchize($searchstring); 
     76    $searchwhere = $searchstring ? 'ts_search_all @@ to_tsquery(?)' : 'true'; 
     77 
     78    $binds = array(); 
     79    if($searchstring) array_unshift($binds, $searchstring); 
     80    $sth = $this->db->prepare(sprintf($countsql,$searchwhere)); 
     81    $sth->execute($binds); 
     82    $r = $sth->fetch(); 
     83 
     84    array_push($binds, $limit); 
     85    array_push($binds, $offset); 
     86    $sth = $this->db->prepare(sprintf("$datasql limit ? offset ?", 
     87                              $searchwhere)); 
     88    $sth->execute($binds); 
    7789    $a = array(); 
    7890    while($row = $sth->fetch()) $a[] = $row; 
    79     return $a; 
     91 
     92    return array('query' => $searchstring, 'limit' => $limit, 
     93                 'offset' => $offset, count => $r['count'], 'results' => $a); 
     94  } 
     95  function get_graphs($searchstring, $offset, $limit) { 
     96    return $this->run_tsearch($searchstring, 
     97      "select count(*) as count 
     98         from prism.saved_graphs 
     99        where saved = true and %s", 
     100      "select graphid, title, 
     101              to_char(last_update, 'YYYY/mm/dd') as last_update 
     102         from prism.saved_graphs 
     103        where saved = true and %s 
     104     order by last_update desc", 
     105      $offset, $limit); 
     106  } 
     107  function get_datapoints($searchstring, $offset, $limit) { 
     108    return $this->run_tsearch($searchstring, 
     109      "select count(*) as count 
     110         from stratcon.mv_loading_dock_check_s c 
     111         join stratcon.metric_name_summary m using (sid) 
     112        where active = true and %s", 
     113      "select c.id, c.sid, c.remote_address, 
     114              c.target, c.whence, c.module, c.name, 
     115              m.metric_name, m.metric_type 
     116         from stratcon.mv_loading_dock_check_s c 
     117         join stratcon.metric_name_summary m using (sid) 
     118        where active = true and %s 
     119     order by target, module, name, remote_address", 
     120      $offset, $limit); 
    80121  } 
    81122  function get_sources($want, $fixate, $active = true) { 
     
    231272      if($id) { 
    232273        $sth = $this->db->prepare("update prism.saved_graphs 
    233                                       set json=?, title=?, 
     274                                      set json=?, title=?, saved=(saved or ?), 
    234275                                          last_update=current_timestamp 
    235276                                    where graphid=?"); 
    236         $sth->execute(array($json,$graph['title'],$id)); 
     277        $sth->execute(array($json,$graph['title'], 
     278                            $graph['saved']?'true':'false',$id)); 
    237279        if($sth->rowCount() != 1) throw(new Exception('No such graph: '.$id)); 
    238280        $sth = $this->db->prepare("delete from prism.saved_graphs_dep