X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=share%2Fcollection.js;h=e1a6a2255be5b5114a775118627f094f1151e864;hp=e1764acb12b828c74d36f8f121f3fd218542164e;hb=d1c8e07134a95b6d02a27f187f769a207c28d618;hpb=334145367a589792b49db6d0b84cc0e5bcaf2b1a diff --git a/share/collection.js b/share/collection.js index e1764ac..e1a6a22 100644 --- a/share/collection.js +++ b/share/collection.js @@ -274,116 +274,102 @@ function def_draw (def, data_list, series_array) /* {{{ */ } } /* }}} function def_draw */ -function inst_get_chart_opts (inst, def) /* {{{ */ +/* + * Given one metric definition, returns the appropriate data from the data + * list. */ +function def_get_data (def, data_list) { - var chart_opts = new Object (); + var i; - chart_opts.chart = - { - renderTo: inst.container, - zoomType: 'x' - }; - chart_opts.xAxis = - { - type: 'datetime', - maxZoom: 300, // five minutes - title: { text: null }, - events: - { - setExtremes: function (event) - { - var begin = null; - var end = null; - - if ((event.min) && (event.max)) - { - begin = event.min / 1000.0; - end = event.max / 1000.0; - } - inst_fetch_data (inst, begin, end); - } - } - }; - chart_opts.yAxis = + for (i = 0; i < data_list.length; i++) { - labels: - { - formatter: function () { return (value_to_string (this.value)); } - }, - startOnTick: false, - endOnTick: false + if ((def.ds_name) && (def.ds_name != data_list[i].data_source)) + continue; + if (!ident_matches (def.select, data_list[i].file)) + continue; + + return (data_list[i]); + } + return; +} + +function def_to_rickshaw_one (def, data) +{ + var series = { + data: [] }; - chart_opts.legend = - { - labelFormatter: function () - { - var series = this; - var min = Number.MAX_VALUE; - var max = Number.NEGATIVE_INFINITY; - var num = 0; - var sum = 0; - var avg; - var i; + var i; - for (i = 0; i < this.data.length; i++) - { - var v; + if (def.legend) + series.name = def.legend; - v = this.data[i].y; - if (v == null) - continue; + if (def.color) + series.color = def.color; - if (min > v) - min = v; - if (max < v) - max = v; + for (i = 0; i < data.data.length; i++) + { + var x = data.first_value_time + (i * data.interval); + var y = data.data[i]; - sum += v; - num++; - } + series.data.push ({'x': x, 'y': y}); + } - if (num == 0) - { - min = null; - max = null; - avg = null; - } - else - { - avg = sum / num; - } + return (series); +} - return (this.name + " (" + value_to_string (min) + " min, " - + value_to_string (avg) + " avg, " - + value_to_string (max) + " max)"); - } +function def_to_rickshaw (graph_def, data_list) +{ + var graph_config = { + renderer: 'line', + series: [] }; - chart_opts.series = new Array (); + var graph; + var i; - if (def.title) - chart_opts.title = { text: def.title }; + for (i = 0; i < graph_def.defs.length; i++) + { + var def = graph_def.defs[i]; + var data = def_get_data (def, data_list); + var series; - if (def.vertical_label) - chart_opts.yAxis.title = { text: def.vertical_label }; + if (!data) + continue; - return (chart_opts); -} /* }}} function chart_opts_get */ + series = def_to_rickshaw_one (def, data); + if (series) + graph_config.series.push (series); -function inst_draw (inst, def, data_list) /* {{{ */ + //if (def.area) + // graph_config.renderer = 'area'; + } + + return (graph_config); +} + +function inst_draw_rickshaw (inst, def, data_list) { - var chart_opts; - var i; + var graph_config = def_to_rickshaw (def, data_list); - if (!inst || !def || !data_list) - return; + graph_config.element = document.getElementById (inst.container); - chart_opts = inst_get_chart_opts (inst, def); + inst.chart = new Rickshaw.Graph (graph_config); + inst.chart.render (); - for (i = def.defs.length - 1; i >= 0; i--) - def_draw (def.defs[i], data_list, chart_opts.series); + var x_axis = new Rickshaw.Graph.Axis.Time({ + graph: inst.chart + }); + x_axis.render (); + + var y_axis = new Rickshaw.Graph.Axis.Y({ + graph: inst.chart + }); + y_axis.render (); +} - inst.chart = new Highcharts.Chart (chart_opts); -} /* }}} function inst_draw */ +function inst_draw (inst, def, data_list) +{ + inst_draw_rickshaw (inst, def, data_list); +} function inst_redraw (inst, def, data_list) /* {{{ */ {