Graph the max value rather than avg if rrdsingle disabled
[project/luci.git] / applications / luci-app-statistics / luasrc / statistics / rrdtool.lua
index d8317a8..cd2395e 100644 (file)
@@ -171,16 +171,29 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
 
                -- 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
@@ -397,6 +410,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
                                        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,
@@ -469,6 +483,12 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
                        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