router.html: Fix long loading times
The mysql queries had been executed in a for loop, this is moved to a single query now. Side effect may be a little more JavaScript execution time. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
b89468d655
commit
bf1d1b8b2a
|
@ -98,21 +98,21 @@ def router_info(dbid):
|
|||
|
||||
router["stats"] = mysql.fetchall("""SELECT * FROM router_stats WHERE router = %s""",(dbid,))
|
||||
for s in router["stats"]:
|
||||
s["netifs"] = mysql.fetchdict("""
|
||||
SELECT netif, rx, tx FROM router_stats_netif WHERE router = %s AND time = %s
|
||||
""",(dbid,s["time"],),"netif")
|
||||
s["neighbours"] = mysql.fetchdict("""
|
||||
SELECT quality, mac FROM router_stats_neighbor WHERE router = %s AND time = %s
|
||||
""",(dbid,s["time"],),"mac","quality")
|
||||
#s["neighbours"] = mysql.fetchdict("""
|
||||
# SELECT nb.mac, nb.quality, r.hostname, r.id
|
||||
# FROM router_stats_neighbor AS nb
|
||||
# INNER JOIN (
|
||||
# SELECT router, mac FROM router_netif GROUP BY mac, router
|
||||
# ) AS net ON nb.mac = net.mac
|
||||
# INNER JOIN router as r ON net.router = r.id
|
||||
# WHERE nb.router = %s AND time = %s""",(dbid,s["time"],),"mac")
|
||||
mysql.utcaware(s["time"])
|
||||
|
||||
netiffetch = mysql.fetchall("""
|
||||
SELECT netif, rx, tx, time FROM router_stats_netif WHERE router = %s
|
||||
""",(dbid,))
|
||||
|
||||
for ns in netiffetch:
|
||||
mysql.utcaware(ns["time"])
|
||||
|
||||
neighfetch = mysql.fetchall("""
|
||||
SELECT quality, mac, time FROM router_stats_neighbor WHERE router = %s
|
||||
""",(dbid,))
|
||||
|
||||
for ns in neighfetch:
|
||||
mysql.utcaware(ns["time"])
|
||||
|
||||
if request.method == 'POST':
|
||||
if request.form.get("act") == "delete":
|
||||
|
@ -138,7 +138,7 @@ def router_info(dbid):
|
|||
#FIXME: Only as admin
|
||||
return Response(bson2json(router, sort_keys=True, indent=4), mimetype='application/json')
|
||||
else:
|
||||
return render_template("router.html", router=router, tileurls=tileurls)
|
||||
return render_template("router.html", router=router, tileurls=tileurls, netifstats=netiffetch, neighstats=neighfetch)
|
||||
except Exception as e: # most generic exception you can catch
|
||||
logf = open("/data/fff/fail3.txt", "a")
|
||||
logf.write("{}\n".format(str(e)))
|
||||
|
|
|
@ -70,11 +70,12 @@ function network_graph(netif) {
|
|||
var netstat = $("#netstat");
|
||||
var tx = [], rx = [];
|
||||
var len, i;
|
||||
for (len=router_stats.length, i=0; i<len; i++) {
|
||||
for (len=netif_stats.length, i=0; i<len; i++) {
|
||||
if (netif_stats[i].netif != netif) { continue; }
|
||||
try {
|
||||
var tx_value = router_stats[i].netifs[netif].tx;
|
||||
var rx_value = router_stats[i].netifs[netif].rx;
|
||||
var date_value = router_stats[i].time.$date;
|
||||
var tx_value = netif_stats[i].tx;
|
||||
var rx_value = netif_stats[i].rx;
|
||||
var date_value = netif_stats[i].time.$date;
|
||||
if(tx_value != null && rx_value != null) {
|
||||
tx.push([date_value, tx_value]);
|
||||
rx.push([date_value, rx_value]);
|
||||
|
@ -115,10 +116,11 @@ function neighbour_graph(neighbours) {
|
|||
var mac = neighbours[j].mac;
|
||||
var data = [];
|
||||
var len, i;
|
||||
for (len=router_stats.length, i=0; i<len; i++) {
|
||||
for (len=neigh_stats.length, i=0; i<len; i++) {
|
||||
if (neigh_stats[i].mac != mac) { continue; }
|
||||
try {
|
||||
var quality = router_stats[i].neighbours[mac];
|
||||
var date_value = router_stats[i].time.$date;
|
||||
var quality = neigh_stats[i].quality;
|
||||
var date_value = neigh_stats[i].time.$date;
|
||||
if(quality == null) {
|
||||
quality = 0;
|
||||
}
|
||||
|
|
|
@ -310,6 +310,8 @@
|
|||
</div>
|
||||
<script type="text/javascript">
|
||||
var router_stats = {{ router.stats|statbson2json|safe }};
|
||||
var netif_stats = {{ netifstats|statbson2json|safe }};
|
||||
var neigh_stats = {{ neighstats|statbson2json|safe }};
|
||||
var neighbours = [
|
||||
{%- for neighbour in router.neighbours %}
|
||||
{"name": "{{ neighbour.hostname or neighbour.mac }}", "mac": "{{ neighbour.mac }}", "net_if": "{{ neighbour.net_if }}"},
|
||||
|
|
Loading…
Reference in New Issue