diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/rrdFlot.js | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/lib/rrdFlot.js b/src/lib/rrdFlot.js index c9dbf9c..5046e10 100644 --- a/src/lib/rrdFlot.js +++ b/src/lib/rrdFlot.js @@ -40,6 +40,7 @@ * color: ds_index
* lines: { show:true }
* yaxis: 1
+ * stack: 'none' // other options are 'positive' and 'negative'
* }
*/
@@ -227,26 +228,44 @@ rrdFlot.prototype.drawFlotGraph = function() { var rra_idx=Number(oSelect.options[oSelect.selectedIndex].value);
// now get the list of selected DSs
- var ds_idxs=[];
+ var ds_positive_stack_list=[];
+ var ds_negative_stack_list=[];
+ var ds_single_list=[];
var ds_colors=[];
var oCB=document.getElementById(this.ds_cb_id);
var nrDSs=oCB.ds.length;
if (oCB.ds.length>0) {
for (var i=0; i<oCB.ds.length; i++) {
if (oCB.ds[i].checked==true) {
- ds_idxs.push(oCB.ds[i].value);
+ var ds_name=oCB.ds[i].value;
+ var ds_stack_type='none';
+ if (this.ds_graph_options[ds_name]!=null) {
+ var dgo=this.ds_graph_options[ds_name];
+ if (dgo['stack']!=null) {
+ var ds_stack_type=dgo['stack'];
+ }
+ }
+ if (ds_stack_type=='positive') {
+ ds_positive_stack_list.push(ds_name);
+ } else if (ds_stack_type=='negative') {
+ ds_negative_stack_list.push(ds_name);
+ } else {
+ ds_single_list.push(ds_name);
+ }
ds_colors.push(i);
}
}
} else { // single element is not treated as an array
if (oCB.ds.checked==true) {
- ds_idxs.push(oCB.ds.value);
+ // no sense trying to stack a single element
+ ds_single_list.push(oCB.ds.value);
ds_colors.push(0);
}
}
// then extract RRA data about those DSs
- var flot_obj=rrdRRA2FlotObj(this.rrd_file,rra_idx,ds_idxs);
+ var flot_obj=rrdRRAStackFlotObj(this.rrd_file,rra_idx,
+ ds_positive_stack_list,ds_negative_stack_list,ds_single_list);
// fix the colors, based on the position in the RRD
for (var i=0; i<flot_obj.data.length; i++) {
|