X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=applications%2Fluci-statistics%2Fluasrc%2Fcontroller%2Fluci_statistics%2Fluci_statistics.lua;h=2f68071532381ccbd1c950ccc53832196bf7f725;hb=dd9606825da5d73883b8313f5af905ea1b2a4d7d;hp=c621ee063351b0f5e1a6ef621e2793014e051268;hpb=71449d76e71db089dfb158710057aecba7de8a59;p=project%2Fluci.git diff --git a/applications/luci-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-statistics/luasrc/controller/luci_statistics/luci_statistics.lua index c621ee063..2f6807153 100644 --- a/applications/luci-statistics/luasrc/controller/luci_statistics/luci_statistics.lua +++ b/applications/luci-statistics/luasrc/controller/luci_statistics/luci_statistics.lua @@ -1,3 +1,18 @@ +--[[ + +Luci statistics - statistics controller module +(c) 2008 Freifunk Leipzig / Jo-Philipp Wich + +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() @@ -20,11 +35,6 @@ 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_ or fall back to function _i18n( str ) return luci.i18n.translate( "stat_" .. str, str ) @@ -59,8 +69,11 @@ function index() _entry({"admin", "statistics", "network", "wireless"}, cbi("luci_statistics/wireless"), _i18n("wireless"), 70) - -- public views - entry({"freifunk", "statistics"}, call("statistics_index"), "Statistiken", 80).i18n = "statistics" + -- output views + 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 @@ -72,7 +85,7 @@ function index() -- plugin menu entry entry( - { "freifunk", "statistics", plugin }, + { "admin", "statistics", "graph", plugin }, call("statistics_render"), _i18n( plugin ), i ).query = { timespan = span } @@ -81,7 +94,7 @@ function index() for j, inst in ipairs(instances) do -- instance menu entry entry( - { "freifunk", "statistics", plugin, inst }, + { "admin", "statistics", "graph", plugin, inst }, call("statistics_render"), inst, j ).query = { timespan = span } end @@ -124,7 +137,7 @@ function statistics_networkplugins() end -function statistics_render( tree ) +function statistics_render() require("luci.statistics.rrdtool") require("luci.template") @@ -132,34 +145,26 @@ function statistics_render( tree ) 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 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[3] - local instances = { req[4] } - 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], i - ) ) - - return - end + instances = { graph.tree:plugin_instances( plugin )[1] } -- index instance requested elseif instances[1] == "-" then