X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Faction_show_graph.c;h=9b9f5da500085b6c33d2061d50642b0e8e614b57;hb=106898de4312399d7d7c28fbbd70537b1979a66f;hp=40ebcd305e55b043db41b2e1ba9527c04ffd8496;hpb=25849a1143a916b31fb9782a6cf10399849f88ef;p=collection4.git diff --git a/src/action_show_graph.c b/src/action_show_graph.c index 40ebcd3..9b9f5da 100644 --- a/src/action_show_graph.c +++ b/src/action_show_graph.c @@ -1,3 +1,26 @@ +/** + * collection4 - action_show_graph.c + * Copyright (C) 2010 Florian octo Forster + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: + * Florian octo Forster + **/ + #include #include #include @@ -8,6 +31,9 @@ #include "action_show_graph.h" #include "common.h" +#include "graph.h" +#include "graph_ident.h" +#include "graph_instance.h" #include "graph_list.h" #include "utils_cgi.h" @@ -20,85 +46,83 @@ return (0); \ } while (0) +#define MAX_SHOW_GRAPHS 10 + struct show_graph_data_s { graph_config_t *cfg; - graph_instance_t *inst; }; typedef struct show_graph_data_s show_graph_data_t; -static int show_instance_list_cb (graph_instance_t *inst, /* {{{ */ - void *user_data) +static int show_time_selector (__attribute__((unused)) void *user_data) /* {{{ */ { - show_graph_data_t *data = user_data; - char descr[128]; - char params[1024]; - - memset (descr, 0, sizeof (descr)); - inst_describe (data->cfg, inst, descr, sizeof (descr)); - html_escape_buffer (descr, sizeof (descr)); + param_list_t *pl; - if (inst == data->inst) - { - printf ("
  • %s
  • \n", descr); - return (0); - } + pl = param_create (/* query string = */ NULL); + param_set (pl, "begin", NULL); + param_set (pl, "end", NULL); + param_set (pl, "button", NULL); - memset (params, 0, sizeof (params)); - inst_get_params (data->cfg, inst, params, sizeof (params)); - html_escape_buffer (params, sizeof (params)); - - printf ("
  • %s
  • \n", - script_name (), params, descr); + printf ("
    \n", script_name ()); - return (0); -} /* }}} int show_instance_list_cb */ + param_print_hidden (pl); -static int show_instance_list (void *user_data) /* {{{ */ -{ - show_graph_data_t *data = user_data; - graph_instance_t *inst; - char title[128]; + printf (" \n" + " \n"); - memset (title, 0, sizeof (title)); - graph_get_title (data->cfg, title, sizeof (title)); - html_escape_buffer (title, sizeof (title)); + printf ("
    \n"); - printf ("
      \n" - "
    • %s\n" - "
        \n", title); + param_destroy (pl); - inst = graph_get_instances (data->cfg); - inst_foreach (inst, show_instance_list_cb, user_data); + return (0); +} /* }}} int show_time_selector */ - printf ("
      \n" - "
    \n"); +static int left_menu (__attribute__((unused)) void *user_data) /* {{{ */ +{ + printf ("\n\n", + script_name ()); return (0); -} /* }}} int show_instance_list */ +} /* }}} int left_menu */ -static int show_graph (void *user_data) /* {{{ */ +static int show_instance_cb (graph_instance_t *inst, /* {{{ */ + void *user_data) { show_graph_data_t *data = user_data; - char title[128]; char descr[128]; char params[1024]; - memset (title, 0, sizeof (title)); - graph_get_title (data->cfg, title, sizeof (title)); - html_escape_buffer (title, sizeof (title)); - memset (descr, 0, sizeof (descr)); - inst_describe (data->cfg, data->inst, descr, sizeof (descr)); + inst_describe (data->cfg, inst, descr, sizeof (descr)); html_escape_buffer (descr, sizeof (descr)); memset (params, 0, sizeof (params)); - inst_get_params (data->cfg, data->inst, params, sizeof (params)); + inst_get_params (data->cfg, inst, params, sizeof (params)); html_escape_buffer (params, sizeof (params)); - printf ("
    \n", - script_name (), params, title, descr); + printf ("
  • " + "%s
  • \n", + script_name (), params, descr); + + return (0); +} /* }}} int show_instance_cb */ + +static int show_graph (void *user_data) /* {{{ */ +{ + show_graph_data_t *data = user_data; + + printf ("

    Available instances

    \n"); + printf ("
      \n"); + graph_inst_foreach (data->cfg, show_instance_cb, data); + printf ("
    \n"); return (0); } /* }}} int show_graph */ @@ -108,35 +132,27 @@ int action_show_graph (void) /* {{{ */ page_callbacks_t pg_callbacks = PAGE_CALLBACKS_INIT; show_graph_data_t pg_data; + char tmp[128]; char title[128]; - char descr[128]; - char html_title[128]; + memset (&pg_data, 0, sizeof (pg_data)); pg_data.cfg = gl_graph_get_selected (); if (pg_data.cfg == NULL) OUTPUT_ERROR ("gl_graph_get_selected () failed.\n"); - pg_data.inst = inst_get_selected (pg_data.cfg); - if (pg_data.inst == NULL) - OUTPUT_ERROR ("inst_get_selected (%p) failed.\n", (void *) pg_data.cfg); - - memset (title, 0, sizeof (title)); - graph_get_title (pg_data.cfg, title, sizeof (title)); - - memset (descr, 0, sizeof (descr)); - inst_describe (pg_data.cfg, pg_data.inst, descr, sizeof (descr)); - - snprintf (html_title, sizeof (html_title), "Graph \"%s / %s\"", - title, descr); - html_title[sizeof (html_title) - 1] = 0; + memset (tmp, 0, sizeof (tmp)); + graph_get_title (pg_data.cfg, tmp, sizeof (tmp)); + snprintf (title, sizeof (title), "Graph \"%s\"", tmp); + title[sizeof (title) - 1] = 0; pg_callbacks.top_right = html_print_search_box; + pg_callbacks.middle_left = left_menu; pg_callbacks.middle_center = show_graph; - pg_callbacks.middle_left = show_instance_list; + pg_callbacks.middle_right = show_time_selector; - html_print_page (html_title, &pg_callbacks, &pg_data); + html_print_page (title, &pg_callbacks, &pg_data); return (0); -} /* }}} int action_graph */ +} /* }}} int action_show_graph */ /* vim: set sw=2 sts=2 et fdm=marker : */