function value_to_string (value) /* {{{ */
{
- var abs_value = Math.abs (value);
+ var abs_value;
+ var v2s = function (value)
+ {
+ var tmp = Math.round (100.0 * value) / 100.0;
+ return ("" + tmp);
+ }
+
+ if (value == null)
+ return ('NaN');
+ else if (value == 0)
+ return ('0');
+
+ abs_value = Math.abs (value);
if ((abs_value < 10000) && (abs_value >= 0.1))
- return ("" + value);
+ return (v2s (value));
else if (abs_value > 1)
{
if (abs_value < 10000000)
- return ("" + (value / 1000) + "k");
+ return (v2s (value / 1000) + "k");
else if (abs_value < 10000000000)
- return ("" + (value / 1000000) + "M");
+ return (v2s (value / 1000000) + "M");
else if (abs_value < 10000000000000)
- return ("" + (value / 1000000000) + "G");
+ return (v2s (value / 1000000000) + "G");
else
- return ("" + (value / 1000000000000) + "T");
+ return (v2s (value / 1000000000000) + "T");
}
else
{
if (abs_value >= 0.001)
- return ("" + (value * 1000) + "m");
+ return (v2s (value * 1000) + "m");
else if (abs_value >= 0.000001)
- return ("" + (value * 1000000) + "u");
+ return (v2s (value * 1000000) + "u");
else
- return ("" + (value * 1000000000) + "n");
+ return (v2s (value * 1000000000) + "n");
}
} /* }}} function value_to_string */
var chart_series = new Object ();
chart_series.type = 'line';
- chart_series.name = def.legend || def.data_source;
chart_series.pointInterval = data.interval * 1000;
chart_series.pointStart = data.first_value_time * 1000;
chart_series.data = data.data;
chart_series.shadow = false;
chart_series.marker = { enabled: false };
+ if (def.legend)
+ chart_series.name = def.legend;
+ else if (def.ds_name)
+ chart_series.name = def.ds_name;
+
if (def.area)
chart_series.type = 'area';
},
endOnTick: false
};
+ 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;
+
+ for (i = 0; i < this.data.length; i++)
+ {
+ var v;
+
+ v = this.data[i].y;
+ if (v == null)
+ continue;
+
+ if (min > v)
+ min = v;
+ if (max < v)
+ max = v;
+
+ sum += v;
+ num++;
+ }
+
+ if (num == 0)
+ {
+ min = null;
+ max = null;
+ avg = null;
+ }
+ else
+ {
+ avg = sum / num;
+ }
+
+ return (this.name + " (" + value_to_string (min) + " min, "
+ + value_to_string (avg) + " avg, "
+ + value_to_string (max) + " max)");
+ }
+ };
chart_opts.series = new Array ();
if (def.title)