X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=src%2Faction_show_instance.c;h=bb807a62af026b2a1af4a7bc8bf298a3ae5e34c8;hp=a45fb4983ccbfb73dc2b0c897a0b79d23cd74cbc;hb=cff7e32b38767764bf182c7e55505e01b928ea9d;hpb=15279357255dbcccab890a29c7ceecc144ba3e63 diff --git a/src/action_show_instance.c b/src/action_show_instance.c index a45fb49..bb807a6 100644 --- a/src/action_show_instance.c +++ b/src/action_show_instance.c @@ -1,3 +1,26 @@ +/** + * collection4 - action_show_instance.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 @@ -23,10 +46,13 @@ return (0); \ } while (0) +#define MAX_SHOW_GRAPHS 10 + struct show_graph_data_s { graph_config_t *cfg; graph_instance_t *inst; + int graph_count; }; typedef struct show_graph_data_s show_graph_data_t; @@ -44,30 +70,31 @@ static void show_breadcrump_field (const char *str, /* {{{ */ char *str_html = html_escape (str); if (field_name != NULL) - printf ("%s", + printf ("%s", script_name (), field_name, str_html, str_html); else - printf ("%s", + printf ("%s", script_name (), str_html, str_html); free (str_html); } } /* }}} void show_breadcrump_field */ -static int show_breadcrump (show_graph_data_t *data) /* {{{ */ +static int show_breadcrump (graph_config_t *cfg, /* {{{ */ + graph_instance_t *inst) { graph_ident_t *ident; char *prefix; - if (data->inst != NULL) + if (inst != NULL) { prefix = "Instance"; - ident = inst_get_selector (data->inst); + ident = inst_get_selector (inst); } else { prefix = "Graph"; - ident = graph_get_selector (data->cfg); + ident = graph_get_selector (cfg); } printf ("
%s: "", prefix); @@ -82,6 +109,7 @@ static int show_breadcrump (show_graph_data_t *data) /* {{{ */ show_breadcrump_field (ident_get_type_instance (ident), "type_instance"); printf (""
\n"); + ident_destroy (ident); return (0); } /* }}} int show_breadcrump */ @@ -114,69 +142,62 @@ static int show_time_selector (__attribute__((unused)) void *user_data) /* {{{ * return (0); } /* }}} int show_time_selector */ -static int show_instance_list_cb (graph_instance_t *inst, /* {{{ */ - void *user_data) +static int left_menu (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)); - - if (inst == data->inst) - { - printf ("
  • %s
  • \n", descr); - return (0); - } - - 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); - - return (0); -} /* }}} int show_instance_list_cb */ - -static int show_instance_list (void *user_data) /* {{{ */ -{ - show_graph_data_t *data = user_data; - char title[128]; - char params[1024]; - - memset (title, 0, sizeof (title)); - graph_get_title (data->cfg, title, sizeof (title)); - html_escape_buffer (title, sizeof (title)); + graph_instance_t *inst; + graph_ident_t *ident; + const char *host; memset (params, 0, sizeof (params)); graph_get_params (data->cfg, params, sizeof (params)); html_escape_buffer (params, sizeof (params)); - printf ("
      \n" - "
    • %s\n" - "
        \n", - script_name (), params, title); + inst = inst_get_selected (data->cfg); + ident = inst_get_selector (inst); + host = ident_get_host (ident); + if (IS_ANY (host)) + host = NULL; + + printf ("\n
          \n" + "
        • All instances
        • \n" + "
        • All graphs
        • \n", + script_name (), params, + script_name ()); + if (host != NULL) + { + char host_html[1024]; + char host_uri[1024]; + + html_escape_copy (host_html, host, sizeof (host_html)); + uri_escape_copy (host_uri, host, sizeof (host_uri)); - graph_inst_foreach (data->cfg, show_instance_list_cb, user_data); + printf ("
        • Host "%s"
        • \n", + script_name (), host_uri, host_html); + } + printf ("
        \n"); - printf ("
      \n" - "
    \n"); + host = NULL; + ident_destroy (ident); return (0); -} /* }}} int show_instance_list */ +} /* }}} int left_menu */ static int show_instance_cb (graph_config_t *cfg, /* {{{ */ graph_instance_t *inst, - __attribute__((unused)) void *user_data) + void *user_data) { + show_graph_data_t *data = user_data; char title[128]; char descr[128]; char params[1024]; + long begin; + long end; + char time_params[128]; + int status; + memset (title, 0, sizeof (title)); graph_get_title (cfg, title, sizeof (title)); html_escape_buffer (title, sizeof (title)); @@ -189,10 +210,32 @@ static int show_instance_cb (graph_config_t *cfg, /* {{{ */ inst_get_params (cfg, inst, params, sizeof (params)); html_escape_buffer (params, sizeof (params)); - printf ("

    Instance "%s"

    \n", descr); - printf ("
    \n", - script_name (), params, title, descr); + time_params[0] = 0; + begin = 0; + end = 0; + + status = get_time_args (&begin, &end, /* now = */ NULL); + if (status == 0) + { + snprintf (time_params, sizeof (time_params), ";begin=%li;end=%li", + begin, end); + time_params[sizeof (time_params) - 1] = 0; + } + + printf ("

    Instance "%s"

    \n", descr); + + show_breadcrump (cfg, inst); + + if (data->graph_count < MAX_SHOW_GRAPHS) + printf ("
    \n", + script_name (), params, time_params, title, descr); + else + printf ("Show graph " + ""%s / %s"\n", + script_name (), params, title, descr); + + data->graph_count++; return (0); } /* }}} int show_instance_cb */ @@ -202,9 +245,8 @@ static int show_instance (void *user_data) /* {{{ */ show_graph_data_t *data = user_data; int status; - fprintf (stderr, "show_instance: Calling inst_get_all_selected()\n"); status = inst_get_all_selected (data->cfg, - /* callback = */ show_instance_cb, /* user data = */ NULL); + /* callback = */ show_instance_cb, /* user data = */ data); if (status != 0) fprintf (stderr, "show_instance: inst_get_all_selected failed " "with status %i\n", status); @@ -212,14 +254,6 @@ static int show_instance (void *user_data) /* {{{ */ return (0); } /* }}} int show_instance */ -static int show_graph (void *user_data) /* {{{ */ -{ - show_graph_data_t *data = user_data; - - show_breadcrump (data); - return (show_instance_list (user_data)); -} /* }}} int show_graph */ - int action_show_instance (void) /* {{{ */ { page_callbacks_t pg_callbacks = PAGE_CALLBACKS_INIT; @@ -228,6 +262,7 @@ int action_show_instance (void) /* {{{ */ char tmp[128]; char 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"); @@ -239,7 +274,7 @@ int action_show_instance (void) /* {{{ */ pg_callbacks.top_right = html_print_search_box; pg_callbacks.middle_center = show_instance; - pg_callbacks.middle_left = show_instance_list; + pg_callbacks.middle_left = left_menu; pg_callbacks.middle_right = show_time_selector; html_print_page (title, &pg_callbacks, &pg_data);