X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Faction_show_instance.c;h=92bbf1cb10991ca2d4db6f36d4d6241f00292ca3;hb=202f278d38aaa14f73c7975706a67a19465ea3e9;hp=bb807a62af026b2a1af4a7bc8bf298a3ae5e34c8;hpb=cff7e32b38767764bf182c7e55505e01b928ea9d;p=collection4.git diff --git a/src/action_show_instance.c b/src/action_show_instance.c index bb807a6..92bbf1c 100644 --- a/src/action_show_instance.c +++ b/src/action_show_instance.c @@ -184,6 +184,88 @@ static int left_menu (void *user_data) /* {{{ */ return (0); } /* }}} int left_menu */ +static int show_instance_json (graph_config_t *cfg, /* {{{ */ + graph_instance_t *inst, + time_t begin, time_t end, int index) +{ + yajl_gen_config handler_config; + yajl_gen handler; + const unsigned char *json_buffer; + unsigned int json_buffer_length; + + graph_ident_t *graph_selector; + graph_ident_t *inst_selector; + + graph_selector = graph_get_selector (cfg); + if (graph_selector == NULL) + return (ENOMEM); + + inst_selector = inst_get_selector (inst); + if (inst_selector == NULL) + { + ident_destroy (inst_selector); + return (ENOMEM); + } + + memset (&handler_config, 0, sizeof (handler_config)); + handler_config.beautify = 1; + handler_config.indentString = " "; + + handler = yajl_gen_alloc2 (/* callback = */ NULL, + &handler_config, + /* alloc functions = */ NULL, + /* context = */ NULL); + if (handler == NULL) + { + ident_destroy (inst_selector); + ident_destroy (graph_selector); + return (-1); + } + + yajl_gen_map_open (handler); + + yajl_gen_string (handler, + (unsigned char *) "graph_selector", + (unsigned int) strlen ("graph_selector")); + ident_to_json (graph_selector, handler); + ident_destroy (graph_selector); + + yajl_gen_string (handler, + (unsigned char *) "instance_selector", + (unsigned int) strlen ("instance_selector")); + ident_to_json (inst_selector, handler); + ident_destroy (inst_selector); + + yajl_gen_string (handler, + (unsigned char *) "begin", + (unsigned int) strlen ("begin")); + yajl_gen_integer (handler, (long int) begin); + + yajl_gen_string (handler, + (unsigned char *) "end", + (unsigned int) strlen ("end")); + yajl_gen_integer (handler, (long int) end); + + yajl_gen_map_close (handler); + + json_buffer = NULL; + json_buffer_length = 0; + yajl_gen_get_buf (handler, &json_buffer, &json_buffer_length); + + if (json_buffer == NULL) + { + yajl_gen_free (handler); + return (EINVAL); + } + + printf ("
\n", index); + printf ("\n", + index, (const char *) json_buffer); + + yajl_gen_free (handler); + return (0); +} /* }}} int show_instance_json */ + static int show_instance_cb (graph_config_t *cfg, /* {{{ */ graph_instance_t *inst, void *user_data) @@ -235,6 +317,12 @@ static int show_instance_cb (graph_config_t *cfg, /* {{{ */ ""%s / %s"\n", script_name (), params, title, descr); + show_instance_json (cfg, inst, begin, end, data->graph_count); + + printf ("
" + "Get graph data as JSON
\n", + script_name (), params, time_params); + data->graph_count++; return (0); @@ -243,6 +331,7 @@ static int show_instance_cb (graph_config_t *cfg, /* {{{ */ static int show_instance (void *user_data) /* {{{ */ { show_graph_data_t *data = user_data; + char params[1024]; int status; status = inst_get_all_selected (data->cfg, @@ -251,6 +340,14 @@ static int show_instance (void *user_data) /* {{{ */ fprintf (stderr, "show_instance: inst_get_all_selected failed " "with status %i\n", status); + memset (params, 0, sizeof (params)); + graph_get_params (data->cfg, params, sizeof (params)); + html_escape_buffer (params, sizeof (params)); + + printf ("
" + "Get graph definition as JSON
\n", + script_name (), params); + return (0); } /* }}} int show_instance */