collection.conf: Configure the "memory" graph.
[collection4.git] / action_list_graphs.c
index 9fc8f45..29e3d8b 100644 (file)
@@ -3,61 +3,51 @@
 #include <string.h>
 #include <errno.h>
 
-#include <fcgiapp.h>
-#include <fcgi_stdio.h>
-
+#include "action_list_graphs.h"
+#include "graph.h"
 #include "graph_list.h"
 #include "utils_params.h"
 
-static int print_graph_json (const graph_list_t *gl, void *user_data) /* {{{ */
+#include <fcgiapp.h>
+#include <fcgi_stdio.h>
+
+static int print_graph_inst_json (__attribute__((unused)) graph_config_t *cfg, /* {{{ */
+    graph_instance_t *inst,
+    void *user_data)
 {
   _Bool *first;
+  graph_ident_t *ident;
+  char *json;
 
-  if ((gl == NULL) || (user_data == NULL))
-    return (EINVAL);
-
-  first = (_Bool *) user_data;
-  if (!*first)
-    printf (",\n");
-  *first = 0;
+  first = user_data;
 
-  printf (" {");
+  ident = inst_get_selector (inst);
+  if (ident == NULL)
+    return (-1);
 
-  printf ("\"host\":\"%s\"", gl->host);
-      
-  printf (",\"plugin\":\"%s\"", gl->plugin);
-  if (gl->plugin_instance != NULL)
-    printf (",\"plugin_instance\":\"%s\"", gl->plugin_instance);
-  else
-    printf (",\"plugin_instance\":null");
+  json = ident_to_json (ident);
+  if (json == NULL)
+  {
+    ident_destroy (ident);
+    return (ENOMEM);
+  }
 
-  printf (",\"type\":\"%s\"", gl->type);
-  if (gl->type_instance != NULL)
-    printf (",\"type_instance\":\"%s\"", gl->type_instance);
+  if (*first)
+    printf ("%s", json);
   else
-    printf (",\"type_instance\":null");
+    printf (",\n%s", json);
 
-  printf ("}");
+  *first = 0;
 
+  ident_destroy (ident);
   return (0);
-} /* }}} int print_graph_json */
+} /* }}} int print_graph_inst_json */
 
-static int print_graph_html (const graph_list_t *gl,
-    void __attribute__((unused)) *user_data)
+static int print_graph_json (graph_config_t *cfg, /* {{{ */
+    void *user_data)
 {
-  if (gl == NULL)
-    return (EINVAL);
-
-  printf ("<li>%s/%s", gl->host, gl->plugin);
-  if (gl->plugin_instance != NULL)
-    printf ("-%s", gl->plugin_instance);
-  printf ("/%s", gl->type);
-  if (gl->type_instance != NULL)
-    printf ("-%s", gl->type_instance);
-  printf ("</li>\n");
-
-  return (0);
-}
+  return (gl_graph_instance_get_all (cfg, print_graph_inst_json, user_data));
+} /* }}} int print_graph_json */
 
 static int list_graphs_json (void) /* {{{ */
 {
@@ -66,18 +56,52 @@ static int list_graphs_json (void) /* {{{ */
   printf ("Content-Type: application/json\n\n");
 
   printf ("[\n");
-  gl_foreach (print_graph_json, /* user_data = */ &first);
+  gl_graph_get_all (print_graph_json, /* user_data = */ &first);
   printf ("\n]");
 
   return (0);
 } /* }}} int list_graphs_json */
 
+static int print_graph_inst_html (graph_config_t *cfg, /* {{{ */
+    graph_instance_t *inst,
+    __attribute__((unused)) void *user_data)
+{
+  char params[1024];
+  char desc[1024];
+
+  memset (params, 0, sizeof (params));
+  inst_get_params (cfg, inst, params, sizeof (params));
+
+  memset (desc, 0, sizeof (desc));
+  inst_describe (cfg, inst, desc, sizeof (desc));
+
+  printf ("    <li><a href=\"test.fcgi?action=graph;%s\">%s</a></li>\n",
+      params, desc);
+
+  return (0);
+} /* }}} int print_graph_inst_html */
+
+static int print_graph_html (graph_config_t *cfg, /* {{{ */
+    __attribute__((unused)) void *user_data)
+{
+  char buffer[1024];
+
+  memset (buffer, 0, sizeof (buffer));
+  graph_get_title (cfg, buffer, sizeof (buffer));
+
+  printf ("  <li>%s\n  <ul>\n", buffer);
+  gl_graph_instance_get_all (cfg, print_graph_inst_html, /* user_data = */ NULL);
+  printf ("  </ul></li>\n");
+
+  return (0);
+} /* }}} int print_graph_html */
+
 static int list_graphs_html (void) /* {{{ */
 {
   printf ("Content-Type: text/html\n\n");
 
   printf ("<ul>\n");
-  gl_foreach (print_graph_html, /* user_data = */ NULL);
+  gl_graph_get_all (print_graph_html, /* user_data = */ NULL);
   printf ("</ul>\n");
 
   return (0);