"list graphs" action: Support searching for exact host, plugin and type names.
[collection4.git] / src / action_list_graphs.c
index e32b999..1f7e091 100644 (file)
@@ -111,7 +111,20 @@ static int print_search_result (void *user_data) /* {{{ */
   else
   {
     char *term_lc = strtolower_copy (pg_data->search_term);
-    gl_search (term_lc, print_graph_inst_html, /* user_data = */ &cb_data);
+
+    if (strncmp ("host:", term_lc, strlen ("host:")) == 0)
+      gl_search_field (GIF_HOST, term_lc + strlen ("host:"),
+          print_graph_inst_html, /* user_data = */ &cb_data);
+    else if (strncmp ("plugin:", term_lc, strlen ("plugin:")) == 0)
+      gl_search_field (GIF_PLUGIN, term_lc + strlen ("plugin:"),
+          print_graph_inst_html, /* user_data = */ &cb_data);
+    else if (strncmp ("type:", term_lc, strlen ("type:")) == 0)
+      gl_search_field (GIF_TYPE, term_lc + strlen ("type:"),
+          print_graph_inst_html, /* user_data = */ &cb_data);
+    else
+      gl_search (term_lc,
+          print_graph_inst_html, /* user_data = */ &cb_data);
+
     free (term_lc);
   }
 
@@ -201,7 +214,8 @@ static int print_host_list (__attribute__((unused)) void *user_data) /* {{{ */
     return (0);
   }
 
-  printf ("<ul id=\"host-list\">\n");
+  printf ("<div><h3>List of hosts</h3>\n"
+      "<ul id=\"host-list\">\n");
   for (i = 0; i < hosts_argc; i++)
   {
     char *host = hosts_argv[i];
@@ -213,12 +227,12 @@ static int print_host_list (__attribute__((unused)) void *user_data) /* {{{ */
 
     host_html = html_escape (host);
 
-    printf ("  <li><a href=\"%s?action=list_graphs&search=%s\">%s</a></li>\n",
+    printf ("  <li><a href=\"%s?action=list_graphs&q=%s\">%s</a></li>\n",
         script_name (), host_html, host_html);
 
     free (host_html);
   }
-  printf ("</ul>\n");
+  printf ("</ul></div>\n");
 
   array_destroy (data.array);
 
@@ -256,10 +270,8 @@ int action_list_graphs (void) /* {{{ */
 
   gl_update ();
 
-  search = strtolower_copy (param ("search"));
-
+  search = strtolower_copy (param ("q"));
   status = list_graphs_html (search);
-
   free (search);
 
   return (status);