add support for splash leases plugin
[project/luci.git] / applications / luci-statistics / luasrc / controller / luci_statistics / luci_statistics.lua
index 869384c..5729bb1 100644 (file)
@@ -2,6 +2,7 @@
 
 Luci statistics - statistics controller module
 (c) 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net>
+(c) 2012 Jo-Philipp Wich <xm@subsignal.org>
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -9,8 +10,6 @@ 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)
@@ -55,23 +54,25 @@ function index()
                ping            = _("Ping"),
                processes       = _("Processes"),
                rrdtool         = _("RRDTool"),
+               splash_leases = _("Splash Leases"),
                tcpconns        = _("TCP Connections"),
-               unixsock        = _("UnixSock")
+               unixsock        = _("UnixSock"),
+               uptime          = _("Uptime")
        }
 
        -- our collectd menu
        local collectd_menu = {
                output  = { "csv", "network", "rrdtool", "unixsock" },
-               system  = { "cpu", "df", "disk", "email", "exec", "irq", "load", "memory", "nut", "processes" },
-               network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "ping", "tcpconns", "iwinfo" }
+               system  = { "cpu", "df", "disk", "email", "exec", "irq", "load", "memory", "nut", "processes", "uptime" },
+               network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "ping", "splash_leases", "tcpconns", "iwinfo" }
        }
 
        -- create toplevel menu nodes
        local st = entry({"admin", "statistics"}, template("admin_statistics/index"), _("Statistics"), 80)
        st.index = true
-       
+
        entry({"admin", "statistics", "collectd"}, cbi("luci_statistics/collectd"), _("Collectd"), 10).subindex = true
-       
+
 
        -- populate collectd plugin menu
        local index = 1
@@ -106,7 +107,8 @@ function index()
        -- get rrd data tree
        local tree = luci.statistics.datatree.Instance(host)
 
-       for i, plugin in luci.util.vspairs( tree:plugins() ) do
+       local _, plugin, idx
+       for _, plugin, idx in luci.util.vspairs( tree:plugins() ) do
 
                -- get plugin instances
                local instances = tree:plugin_instances( plugin )
@@ -114,16 +116,17 @@ function index()
                -- plugin menu entry
                entry(
                        { "admin", "statistics", "graph", plugin },
-                       call("statistics_render"), labels[plugin], i
+                       call("statistics_render"), labels[plugin], idx
                ).query = { timespan = span , host = host }
 
                -- if more then one instance is found then generate submenu
                if #instances > 1 then
-                       for j, inst in luci.util.vspairs(instances) do
+                       local _, inst, idx2
+                       for _, inst, idx2 in luci.util.vspairs(instances) do
                                -- instance menu entry
                                entry(
                                        { "admin", "statistics", "graph", plugin, inst },
-                                       call("statistics_render"), inst, j
+                                       call("statistics_render"), inst, idx2
                                ).query = { timespan = span , host = host }
                        end
                end
@@ -148,6 +151,7 @@ function statistics_render()
        local hosts = graph.tree:host_instances()
 
        local is_index = false
+       local i, p, inst, idx
 
        -- deliver image
        if vars.img then
@@ -186,8 +190,8 @@ function statistics_render()
 
 
        -- render graphs
-       for i, inst in ipairs( instances ) do
-               for i, img in ipairs( graph:render( plugin, inst, is_index ) ) do
+       for i, inst in luci.util.vspairs( instances ) do
+               for i, img in luci.util.vspairs( graph:render( plugin, inst, is_index ) ) do
                        table.insert( images, graph:strippngpath( img ) )
                        images[images[#images]] = inst
                end