diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2008-10-18 21:51:44 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2008-10-18 21:51:44 +0000 |
commit | e39b2bff3f01f299201d6c394cbeb7e28e852758 (patch) | |
tree | 7df1567cb16ca486a442bd6df408dae913ad3e4a /applications/luci-livestats/luasrc | |
parent | 758c06df583f439f625d5a62688d291654234e5b (diff) |
* luci/applications: add experimental realtime statistics
Diffstat (limited to 'applications/luci-livestats/luasrc')
4 files changed, 153 insertions, 0 deletions
diff --git a/applications/luci-livestats/luasrc/controller/livestats.lua b/applications/luci-livestats/luasrc/controller/livestats.lua new file mode 100644 index 000000000..4494bbd4b --- /dev/null +++ b/applications/luci-livestats/luasrc/controller/livestats.lua @@ -0,0 +1,25 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2008 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: openvpn.lua 3549 2008-10-09 22:24:21Z jow $ +]]-- + +module("luci.controller.livestats", package.seeall) + +function index() + require("luci.i18n") + luci.i18n.loadc("livestats") + + entry( {"admin", "status", "wifistat"}, template("livestats/wireless"), luci.i18n.translate("livestat_wireless", "Live Wireless Statistics") ).i18n = "livestat" + entry( {"admin", "status", "trafstat"}, template("livestats/traffic"), luci.i18n.translate("livestat_traffic", "Live Traffic Statistics") ).i18n = "livestat" + entry( {"admin", "status", "loadavg"}, template("livestats/loadavg"), luci.i18n.translate("livestat_loadavg", "Live Load Statistics") ).i18n = "livestat" +end diff --git a/applications/luci-livestats/luasrc/view/livestats/loadavg.htm b/applications/luci-livestats/luasrc/view/livestats/loadavg.htm new file mode 100644 index 000000000..a4e8fae00 --- /dev/null +++ b/applications/luci-livestats/luasrc/view/livestats/loadavg.htm @@ -0,0 +1,44 @@ +<%+header%> + +<!--[if IE]><script type="text/javascript" src="<%=resource%>/livestats/ExCanvas.js"></script><![endif]--> +<script type="text/javascript" src="<%=resource%>/livestats/MochiKit.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/JsonRpc.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/PlotKit.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/GraphRPC.js"></script> + +<script type="text/javascript"> + PlotKit.Base.baseColors = function () { + var hexColor = MochiKit.Color.Color.fromHexString; + return [hexColor("#ff0000"), + hexColor("#ff6000"), + hexColor("#fff000"), + hexColor("#00ff00"), + hexColor("#00ff77"), + hexColor("#0090ff"), + hexColor("#000000")]; + }; + + function initGraphs() { + var rpc = new GraphRPC( + document.getElementById('live_graphs'), + '<%=luci.dispatcher.build_url('rpc', 'sys')%>', 'loadavg', + 2000, + + // Data sources + [ "1", "1 Minute Load", "2", "5 Minutes Load", "3", "15 Minutes Load" ], + + // Graph layout options + { shouldFill: false, strokeColor: null, + strokeColorTransform: "asFillColor", + title: 'Average Load', strokeWidth: 1, + padding: { left: 70, right: 10, top: 10, bottom: 20 }, + instances: [ false ] } + ); + } + + MochiKit.DOM.addLoadEvent(initGraphs); +</script> + +<div id="live_graphs"></div> + +<%+footer%> diff --git a/applications/luci-livestats/luasrc/view/livestats/traffic.htm b/applications/luci-livestats/luasrc/view/livestats/traffic.htm new file mode 100644 index 000000000..d914fddc4 --- /dev/null +++ b/applications/luci-livestats/luasrc/view/livestats/traffic.htm @@ -0,0 +1,54 @@ +<%+header%> + +<!--[if IE]><script type="text/javascript" src="<%=resource%>/livestats/ExCanvas.js"></script><![endif]--> +<script type="text/javascript" src="<%=resource%>/livestats/MochiKit.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/JsonRpc.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/PlotKit.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/GraphRPC.js"></script> + +<% + local interfaces = { } + local uci = luci.model.uci.cursor_state() + + uci:foreach("network", "interface", + function(s) + if s.ifname ~= "lo" then + table.insert( interfaces, + "'" .. ( s.ifname or s['.name'] ) .. "'" + ) + end + end + ) +-%> + +<script type="text/javascript"> + function initGraphs() { + var rpc = new GraphRPC( + document.getElementById('live_graphs'), + '<%=luci.dispatcher.build_url('rpc', 'sys')%>', 'net.deviceinfo', + 2000, + + // Data sources + [ "1", "received Bytes/s", "9", "transmitted Bytes/s" ], + + // Graph layout options + { shouldFill: false, strokeColor: null, + strokeColorTransform: "asFillColor", + title: 'Traffic on interface "%s"', + separateDS: true, strokeWidth: 0.5, height: 140, + padding: { left: 70, right: 10, top: 10, bottom: 20 }, + instances: [ <%=table.concat(interfaces, ", ") %> ] }, + + // transform function + function(thisval, lastval) { + return ( ( thisval - lastval ) / 2 ); + } + ); + } + + MochiKit.DOM.addLoadEvent(initGraphs); +</script> + +<div id="live_graphs"></div> + +<%+footer%> diff --git a/applications/luci-livestats/luasrc/view/livestats/wireless.htm b/applications/luci-livestats/luasrc/view/livestats/wireless.htm new file mode 100644 index 000000000..2ee60139e --- /dev/null +++ b/applications/luci-livestats/luasrc/view/livestats/wireless.htm @@ -0,0 +1,30 @@ +<%+header%> + +<!--[if IE]><script type="text/javascript" src="<%=resource%>/livestats/ExCanvas.js"></script><![endif]--> +<script type="text/javascript" src="<%=resource%>/livestats/MochiKit.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/JsonRpc.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/PlotKit.js"></script> +<script type="text/javascript" src="<%=resource%>/livestats/GraphRPC.js"></script> + +<script type="text/javascript"> + function initGraphs() { + var rpc = new GraphRPC( + document.getElementById('live_graphs'), + '<%=luci.dispatcher.build_url('rpc', 'sys')%>', 'wifi.getiwconfig', + 1500, + + // Data sources + [ "Noise level", null, "Signal level", null ], + + // Graph layout options + { yAxis: [ 0, 150 ], title: 'Wifi Interface "%s": Signal and Noise', + padding: { left: 40, right: 10, top: 10, bottom: 20 } } + ); + } + + MochiKit.DOM.addLoadEvent(initGraphs); +</script> + +<div id="live_graphs"></div> + +<%+footer%> |