Changeset f4aecc3c50da684ce7159902b90eb4e85b72ca4a

Show
Ignore:
Timestamp:
10/31/08 02:38:26 (10 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1225420706 +0000
git-parent:

[acedf0766a1818b7aa4f7114740b07f707bc86f8]

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

refactor the ajax search, refs #22

Files:

Legend:

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

    r5f3334e rf4aecc3  
    136136})(jQuery); 
    137137 
    138 function perform_graph_search(domid, wsmode, string, offset, limit) { 
    139   $.getJSON('json/graph/search', 
    140             { 'q' : string, 'o' : offset, 'l' : limit }, 
     138function perform_graph_search_add(params) { 
     139  perform_generic_search('json/graph/search', params, 
     140                         perform_graph_search_add, 
     141                         graphs_for_worksheet, graph_search_summary); 
     142
     143function perform_graph_search_edit(params) { 
     144  perform_generic_search('json/graph/search', params, 
     145                         perform_graph_search_edit, 
     146                         graphs_for_edit, graph_search_summary); 
     147
     148function perform_datapoint_search_add(params) { 
     149  perform_generic_search('json/datapoint/search', params, 
     150                         perform_datapoint_search_add, 
     151                         datapoints_for_graph, datapoint_search_summary); 
     152
     153function graph_search_summary(r) { 
     154  return r.count + ' graph' + (r.count == 1 ? '' : 's' ) + ' found for \'' + htmlentities(r.query) + '\''; 
     155
     156function datapoint_search_summary(r) { 
     157  return 'Found ' + r.count + ' data point' + (r.count == 1 ? '' : 's' ) + ' found for \'' + htmlentities(r.query) + '\''; 
     158
     159function perform_generic_search(url, params, search_func, create_item, summary_func) { 
     160  $.getJSON(url, 
     161            { 'q' : params.search, 'o' : params.offset, 'l' : params.limit }, 
    141162            function(r) { 
    142               var summary = r.count + ' graph' + (r.count == 1 ? '' : 's' ) + ' found for \'' + htmlentities(r.query) + '\''
     163              var summary = summary_func(r)
    143164              if(r.error) summary = 'Error: ' + htmlentities(r.error); 
    144               $(domid + " > p.graph-search-summary").html(summary).fadeIn('fast'); 
     165              $(params.domid + " > p.search-summary").html(summary).fadeIn('fast'); 
    145166              var c = new Number(r.count); 
    146167              var l = new Number(r.limit); 
    147168              var o = new Number(r.offset); 
    148               var page = $(domid + " > p.paginate"); 
     169              var page = $(params.domid + " > p.paginate"); 
    149170              page.html(''); 
    150171              if(c > l) { 
     
    153174                  $('<a/>').html( (po+1) + ' - ' + (po+l) ) 
    154175                           .click(function() { 
    155                              perform_datapoint_search(domid,wsmode,string,po,r.limit); 
     176                             search_func({ 'domid': params.domid, 
     177                                           'search': params.search, 
     178                                           'offset': po, 
     179                                           'limit': r.limit }); 
    156180                             return false; 
    157181                           }).appendTo(page); 
     
    159183                page.append($('<span/>').html((o+1) + '-' + (o+l)).addClass('searchselect')); 
    160184                if(o + l < c) { 
    161                   var po = o + l; 
    162                   $('<a/>').html( (po + 1) + '-' + (po+l) ) 
     185                  var pop = o + l; 
     186                  $('<a/>').html( (pop + 1) + '-' + (pop+l) ) 
    163187                           .click(function() { 
    164                              perform_datapoint_search(domid,wsmode,string,po,r.limit); 
     188                             search_func({ 'domid': params.domid, 
     189                                           'search': params.search, 
     190                                           'offset': pop, 
     191                                           'limit': r.limit }); 
    165192                             return false; 
    166193                           }).appendTo(page); 
     
    169196              } 
    170197              else page.slideUp('fast'); 
    171               $(domid + " > ul.graph-searchresults > li").remove(); 
     198              $(params.domid + " > ul.searchresults > li").remove(); 
    172199              for(var i=0; r.results && i<r.results.length; i++) { 
    173200                var g = r.results[i]; 
    174                 var add = $('<a href="#"/>'); 
    175                 add.html('Add').addClass('addtows'); 
    176                 add.click( 
    177                   (function(graphid) { 
    178                       return function() { 
    179                         add_graph_to_worksheet(graphid); 
    180                         return false; 
    181                       } 
    182                    })(g.graphid) 
    183                 ); 
    184                 var edit = $('<a href="#"/>'); 
    185                 edit.html('Edit').addClass('editgraph'); 
    186                 edit.click( 
    187                   (function(graphid) { 
    188                       return function() { 
    189                         set_current_graph_id(graphid); 
    190                         return false; 
    191                       } 
    192                    })(g.graphid) 
    193                 ); 
    194201                var li = $('<li/>'); 
    195                 var del = $('<a href="#"/>'); 
    196                 del.html('Forget').addClass('deletegraph'); 
    197                 del.click( 
    198                   (function(graphid, li) { 
    199                       return function() { 
    200                         $.getJSON('json/graph/forget/' + graphid, 
    201                           function (r) { 
    202                             if(r.error) { alert(r.error); } 
    203                             else { 
    204                               perform_graph_search(domid,wsmode,string,o,l); 
    205                             } 
    206                           }); 
    207                         return false; 
    208                       } 
    209                    })(g.graphid, li) 
    210                 ); 
    211                 var ul = $('<ul/>'); 
    212                 ul.append($('<li/>').html(g.last_update)); 
    213                 if(wsmode) { 
    214                   ul.append($('<li/>').append(add)); 
    215                 } 
    216                 else { 
    217                   ul.append($('<li/>').append(edit)); 
    218                   ul.append($('<li/>').append(del)); 
    219                 } 
    220                 li.append($('<a/>').html(g.title)).append(ul); 
    221                 $(domid + " > ul.graph-searchresults").append(li); 
     202                create_item(li, g, { 'domid': params.domid, 
     203                                     'search': params.search, 
     204                                     'offset': o, 
     205                                     'limit': l }); 
     206                $(params.domid + " > ul.searchresults").append(li); 
    222207              } 
    223208            }); 
    224209} 
     210 
     211function graphs_for_edit(li, g, params) { 
     212  var edit = $('<a href="#"/>'); 
     213  edit.html('Edit').addClass('editgraph'); 
     214  edit.click( 
     215    (function(graphid) { 
     216        return function() { 
     217          set_current_graph_id(graphid); 
     218          return false; 
     219        } 
     220     })(g.graphid) 
     221  ); 
     222  var del = $('<a href="#"/>'); 
     223  del.html('Forget').addClass('deletegraph'); 
     224  del.click( 
     225    (function(graphid, li) { 
     226        return function() { 
     227          $.getJSON('json/graph/forget/' + graphid, 
     228            function (r) { 
     229              if(r.error) { alert(r.error); } 
     230              else { 
     231                perform_graph_search(params); 
     232              } 
     233            }); 
     234          return false; 
     235        } 
     236     })(g.graphid, li) 
     237  ); 
     238  var ul = $('<ul/>'); 
     239  ul.append($('<li/>').html(g.last_update)); 
     240  ul.append($('<li/>').append(edit)); 
     241  ul.append($('<li/>').append(del)); 
     242  li.append($('<a/>').html(g.title)).append(ul); 
     243} 
     244function graphs_for_worksheet(li, g, params) { 
     245  var add = $('<a href="#"/>'); 
     246  add.html('Add').addClass('addtows'); 
     247  add.click( 
     248    (function(graphid) { 
     249        return function() { 
     250          add_graph_to_worksheet(graphid); 
     251          return false; 
     252        } 
     253     })(g.graphid) 
     254  ); 
     255  var ul = $('<ul/>'); 
     256  ul.append($('<li/>').html(g.last_update)); 
     257  ul.append($('<li/>').append(add)); 
     258  li.append($('<a/>').html(g.title)).append(ul); 
     259} 
     260function datapoints_for_graph(li, ds, params) { 
     261  var a = $('<a href="#"/>'); 
     262  a.html(ds.target + '`' + ds.name + '`' + ds.metric_name); 
     263  a.click( 
     264    (function(ds_c) { 
     265        return function() { 
     266          graph_add_datapoint({'sid':ds_c.sid, 
     267                               'name':ds_c.target + '`' + ds_c.metric_name, 
     268                               'metric_name':ds_c.metric_name, 
     269                               'metric_type':ds_c.metric_type 
     270                              }); 
     271          return false; 
     272        } 
     273     })(ds) 
     274  ); 
     275  if(ds.metric_type == 'text') li.addClass('txt'); 
     276  li.append(a); 
     277} 
  • ui/web/htdocs/search_saved_graphs.inc

    r15ab3e1 rf4aecc3  
    33$(document).ready(function(){ 
    44        $("#graph-searchform").submit(function() { 
    5                 perform_graph_search("#graphlist", false, $("#graph-searchinput").val(), 0, 25); 
     5                perform_graph_search_edit({ 'domid': '#graphlist', 
     6                                            'search': $("#graph-searchinput").val(), 
     7                                            'offset': 0, 
     8                                            'limit': 25 }); 
    69                return false; 
    710        }); 
     
    1922</div> 
    2023<div id="graphlist" class="graphlist"> 
    21   <p class="graph-search-summary"></p> 
    22   <ul class="graph-searchresults"> 
     24  <p class="search-summary"></p> 
     25  <ul class="searchresults"> 
    2326  </ul> 
    2427</div> 
  • ui/web/htdocs/search_simple.inc

    rf517e1b rf4aecc3  
    11<script type="text/javascript"> 
    22<!-- 
    3 function perform_datapoint_search(string, offset, limit) { 
    4   $.getJSON('json/datapoint/search', 
    5             { 'q' : string, 'o' : offset, 'l' : limit }, 
    6             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               var c = new Number(r.count); 
    11               var l = new Number(r.limit); 
    12               var o = new Number(r.offset); 
    13               var page = $("#searchlist > p.paginate"); 
    14               page.html(''); 
    15               if(c > l) { 
    16                 if(o > 0) { 
    17                   var pop = Math.max(o-l, 0); 
    18                   $('<a/>').html( (pop+1) + ' - ' + (pop+l) ) 
    19                            .click(function() { 
    20                              perform_datapoint_search(string,pop,r.limit); 
    21                              return false; 
    22                            }).appendTo(page); 
    23                 } 
    24                 page.append($('<span/>').html((o+1) + '-' + (o+l)).addClass('searchselect')); 
    25                 if(o + l < c) { 
    26                   var po = o + l; 
    27                   $('<a/>').html( (po + 1) + '-' + (po+l) ) 
    28                            .click(function() { 
    29                              perform_datapoint_search(string,po,r.limit); 
    30                              return false; 
    31                            }).appendTo(page); 
    32                 } 
    33                 page.slideDown('fast'); 
    34               } 
    35               else page.slideUp('fast'); 
    36               $("#searchresults > li").remove(); 
    37               for(var i=0; r.results && i<r.results.length; i++) { 
    38                 var ds = r.results[i]; 
    39                 var a = $('<a href="#"/>'); 
    40                 var li = $('<li/>'); 
    41                 a.html(ds.target + '`' + ds.name + '`' + ds.metric_name); 
    42                 a.click( 
    43                   (function(ds_c) { 
    44                       return function() { 
    45                         graph_add_datapoint({'sid':ds_c.sid, 
    46                                              'name':ds_c.target + '`' + ds_c.metric_name, 
    47                                              'metric_name':ds_c.metric_name, 
    48                                              'metric_type':ds_c.metric_type 
    49                                             }); 
    50                         return false; 
    51                       } 
    52                    })(ds) 
    53                 ); 
    54                 if(ds.metric_type == 'text') li.addClass('txt'); 
    55                 $("#searchresults").append(li.append(a)); 
    56               } 
    57             }); 
    58 } 
    593$(document).ready(function(){ 
    604        $("#datapoint-searchform").submit(function() { 
    61                 perform_datapoint_search($("#searchinput").val(), 0, 25); 
     5                perform_datapoint_search_add({ domid: '#searchlist', 
     6                                               search: $("#searchinput").val(), 
     7                                               offset: 0, 
     8                                               limit: 25 }); 
    629                return false; 
    6310        }); 
  • ui/web/htdocs/ws_search_graphs.inc

    r15ab3e1 rf4aecc3  
    33$(document).ready(function(){ 
    44        $("#ws-graph-searchform").submit(function() { 
    5                 perform_graph_search("#ws-graphlist", true, $("#ws-graph-searchinput").val(), 0, 25); 
     5                perform_graph_search_add({ 'domid': '#ws-graphlist', 
     6                                           'search': $("#ws-graph-searchinput").val(), 
     7                                           'offset': 0, 
     8                                           'limit': 25 }); 
    69                return false; 
    710        }); 
     
    1922</div> 
    2023<div id="ws-graphlist" class="graphlist"> 
    21   <p class="graph-search-summary"></p> 
    22   <ul class="graph-searchresults"> 
     24  <p class="search-summary"></p> 
     25  <ul class="searchresults"> 
    2326  </ul> 
    2427</div>