--- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net>
+-- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org>
-- Licensed to the public under the Apache License 2.0.
module("luci.statistics.rrdtool", package.seeall)
-- is first source in stack or overlay source: source_stk = source_nnl
if not prev or source.overlay then
+ if self.opts.rrasingle then
-- create cdef statement for cumulative stack (no NaNs) and also
-- for display (preserving NaN where no points should be displayed)
_tif( _args, "CDEF:%s_stk=%s_nnl", source.sname, source.sname )
_tif( _args, "CDEF:%s_plot=%s_avg", source.sname, source.sname )
+ else
+ -- create cdef statement for cumulative stack (no NaNs) and also
+ -- for display (preserving NaN where no points should be displayed)
+ _tif( _args, "CDEF:%s_stk=%s_nnl", source.sname, source.sname )
+ _tif( _args, "CDEF:%s_plot=%s_max", source.sname, source.sname )
+ end
-- is subsequent source without overlay: source_stk = source_nnl + previous_stk
else
+ if self.opts.rrasingle then
-- create cdef statement
_tif( _args, "CDEF:%s_stk=%s_nnl,%s_stk,+", source.sname, source.sname, prev )
_tif( _args, "CDEF:%s_plot=%s_avg,%s_stk,+", source.sname, source.sname, prev )
+ else
+ -- create cdef statement
+ _tif( _args, "CDEF:%s_stk=%s_nnl,%s_stk,+", source.sname, source.sname, prev )
+ _tif( _args, "CDEF:%s_plot=%s_max,%s_stk,+", source.sname, source.sname, prev )
+ end
end
-- create multiply by minus one cdef if flip is enabled
transform_rpn = dopts.transform_rpn or "0,+",
noarea = dopts.noarea or false,
title = dopts.title or nil,
+ weight = dopts.weight or nil,
ds = dsource,
type = dtype,
instance = dinst,
_ti ( _args, "-X" )
_ti ( _args, opts.units_exponent )
end
+ if opts.alt_autoscale then
+ _ti ( _args, "-A" )
+ end
+ if opts.alt_autoscale_max then
+ _ti ( _args, "-M" )
+ end
-- store additional rrd options
if opts.rrdopts then
for i, o in ipairs(opts.rrdopts) do _ti( _args, o ) end
end
+ -- sort sources
+ table.sort(_sources, function(a, b)
+ local x = a.weight or a.index or 0
+ local y = b.weight or b.index or 0
+ return x < y
+ end)
-- create DEF statements for each instance
for i, source in ipairs(_sources) do