+--[[
+
+Luci statistics - statistics controller module
+(c) 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+
+]]--
+
module("luci.controller.luci_statistics.luci_statistics", package.seeall)
function index()
end
end
- -- override call(): call requested action function with supplied parameters
- function _call( func, tree, plugin )
- return function() getfenv()[func]( tree, plugin ) end
- end
-
-- override i18n(): try to translate stat_<str> or fall back to <str>
function _i18n( str )
return luci.i18n.translate( "stat_" .. str, str )
_entry({"admin", "statistics", "network", "dns"}, cbi("luci_statistics/dns"), _i18n("dns"), 60)
_entry({"admin", "statistics", "network", "wireless"}, cbi("luci_statistics/wireless"), _i18n("wireless"), 70)
-
+
-- output views
- entry( { "admin", "statistics", "graph" }, call("statistics_index"), _i18n("graphs"), 80).i18n = "statistics"
+ local page = entry( { "admin", "statistics", "graph" }, call("statistics_index"), _i18n("graphs"), 80)
+ page.i18n = "statistics"
+ page.setuser = "nobody"
+ page.setgroup = "nogroup"
local vars = luci.http.formvalues()
local span = vars.timespan or nil
end
-function statistics_render( tree )
+function statistics_render()
require("luci.statistics.rrdtool")
require("luci.template")
require("luci.model.uci")
local vars = luci.http.formvalues()
- local req = luci.dispatcher.request
- local uci = luci.model.uci.Session()
- local spans = luci.util.split( uci:get( "luci_statistics", "collectd_rrdtool", "RRATimespans" ), "%s+", nil, true )
- local span = vars.timespan or uci:get( "luci_statistics", "rrdtool", "default_timespan" ) or spans[1]
+ local req = luci.dispatcher.request
+ local path = luci.dispatcher.dispatched.path
+ local uci = luci.model.uci
+ local spans = luci.util.split( uci.get( "luci_statistics", "collectd_rrdtool", "RRATimespans" ), "%s+", nil, true )
+ local span = vars.timespan or uci.get( "luci_statistics", "rrdtool", "default_timespan" ) or spans[1]
local graph = luci.statistics.rrdtool.Graph( luci.util.parse_units( span ) )
- local plugin = req[4]
- local instances = { req[5] }
- local images = { }
+ local plugin, instances
+ local images = { }
+
+ -- find requested plugin and instance
+ for i, p in ipairs( luci.dispatcher.dispatched.path ) do
+ if luci.dispatcher.dispatched.path[i] == "graph" then
+ plugin = luci.dispatcher.dispatched.path[i+1]
+ instances = { luci.dispatcher.dispatched.path[i+2] }
+ end
+ end
-- no instance requested, find all instances
if #instances == 0 then
-
- instances = graph.tree:plugin_instances( plugin )
-
- -- more than one available instance
- if #instances > 1 then
-
- -- redirect to first instance and return
- local r = luci.dispatcher.request
- local i = instances[1]
- if i:len() == 0 then i = "-" end
-
- luci.http.redirect( luci.dispatcher.build_url(
- req[1], req[2], req[3], req[4], i
- ) )
-
- return
- end
+ instances = { graph.tree:plugin_instances( plugin )[1] }
-- index instance requested
elseif instances[1] == "-" then