Code

share/collection.js: Improve the search suggestion behavior.
[collection4.git] / share / collection.js
index 026d434cc46cf08b08091b879738bca9101f7b4d..99684524192ad31a08f0e67a9be5326134b9eef1 100644 (file)
@@ -1,6 +1,8 @@
 function format_instance(inst)
 {
-  return ("<li class=\"instance\"><a href=\"" + location.pathname + "?action=graph;" + inst.params + "\">" + inst.description + "</a></li>");
+  return ("<li class=\"instance\"><a href=\"" + location.pathname
+      + "?action=show_graph;" + inst.params + "\">" + inst.description
+      + "</a></li>");
 }
 
 function format_instance_list(instances)
@@ -24,22 +26,57 @@ function format_graph(graph)
   return ("<li class=\"graph\">" + graph.title + format_instance_list (graph.instances) + "</li>");
 }
 
+function update_search_suggestions ()
+{
+  var term = $("#search-input").val ();
+  if (term.length < 2)
+  {
+    $("#search-suggest").hide ();
+    return (true);
+  }
+
+  $("#search-suggest").show ();
+  $.getJSON ("collection.fcgi",
+    { "action": "search_json", "q": term},
+    function(data)
+    {
+      var i;
+      $("#search-suggest").html ("");
+      for (i = 0; i < data.length; i++)
+      {
+        var graph = data[i];
+        $("#search-suggest").append (format_graph (graph));
+      }
+    }
+  );
+} /* update_search_suggestions */
+
 $(document).ready(function() {
-    $("#search-input").keyup (function()
+    /* $("#layout-middle-right").html ("<ul id=\"search-suggest\" class=\"graph_list\"></ul>"); */
+    $("#search-form").append ("<ul id=\"search-suggest\" class=\"graph_list\"></ul>");
+    $("#search-suggest").hide ();
+
+    $("#search-input").blur (function()
+    {
+      $("#search-suggest").hide ();
+    });
+
+    $("#search-input").focus (function()
     {
       var term = $("#search-input").val ();
-      $.getJSON ("collection.fcgi",
-        { "action": "search_json", "q": term},
-        function(data)
-        {
-          var i;
-          $("#search-output").html ("");
-          for (i = 0; i < data.length; i++)
-          {
-            var graph = data[i];
-            $("#search-output").append (format_graph (graph));
-          }
-        });
+      if (term.length < 2)
+      {
+        $("#search-suggest").hide ();
+      }
+      else
+      {
+        $("#search-suggest").show ();
+      }
+    });
+
+    $("#search-input").keyup (function()
+    {
+      update_search_suggestions ();
     });
 });