statistics.html: Add gateway overview
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
d567dfd56d
commit
34a7c4c58e
|
@ -116,6 +116,59 @@ def hoods_sum(mysql):
|
||||||
result[rs["hood"]] = {"routers": rs["count"], "clients": rs["clients"]}
|
result[rs["hood"]] = {"routers": rs["count"], "clients": rs["clients"]}
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def gws(mysql,selecthood=None):
|
||||||
|
if selecthood:
|
||||||
|
where = " AND hood=%s"
|
||||||
|
tup = (selecthood,)
|
||||||
|
else:
|
||||||
|
where = ""
|
||||||
|
tup = ()
|
||||||
|
|
||||||
|
selected = mysql.fetchall("""
|
||||||
|
SELECT router_gw.mac, router.status, COUNT(router_gw.router) AS count
|
||||||
|
FROM router
|
||||||
|
INNER JOIN router_gw ON router.id = router_gw.router
|
||||||
|
WHERE router_gw.selected = TRUE {}
|
||||||
|
GROUP BY router_gw.mac, router.status
|
||||||
|
""".format(where),tup)
|
||||||
|
others = mysql.fetchall("""
|
||||||
|
SELECT router_gw.mac, router.status, COUNT(router_gw.router) AS count
|
||||||
|
FROM router
|
||||||
|
INNER JOIN router_gw ON router.id = router_gw.router
|
||||||
|
WHERE router_gw.selected = FALSE {}
|
||||||
|
GROUP BY router_gw.mac, router.status
|
||||||
|
""".format(where),tup)
|
||||||
|
result = {}
|
||||||
|
for rs in selected:
|
||||||
|
if not rs["mac"] in result:
|
||||||
|
result[rs["mac"]] = {"selected":{},"others":{}}
|
||||||
|
result[rs["mac"]]["selected"][rs["status"]] = rs["count"]
|
||||||
|
for rs in others:
|
||||||
|
if not rs["mac"] in result:
|
||||||
|
result[rs["mac"]] = {"selected":{},"others":{}}
|
||||||
|
result[rs["mac"]]["others"][rs["status"]] = rs["count"]
|
||||||
|
return result
|
||||||
|
|
||||||
|
def gws_sum(mysql,selecthood=None):
|
||||||
|
if selecthood:
|
||||||
|
where = " AND hood=%s"
|
||||||
|
tup = (selecthood,)
|
||||||
|
else:
|
||||||
|
where = ""
|
||||||
|
tup = ()
|
||||||
|
|
||||||
|
data = mysql.fetchall("""
|
||||||
|
SELECT router_gw.mac, COUNT(router_gw.router) AS count, SUM(router.clients) AS clients
|
||||||
|
FROM router
|
||||||
|
INNER JOIN router_gw ON router.id = router_gw.router
|
||||||
|
WHERE router_gw.selected = TRUE {}
|
||||||
|
GROUP BY router_gw.mac
|
||||||
|
""".format(where),tup)
|
||||||
|
result = {}
|
||||||
|
for rs in data:
|
||||||
|
result[rs["mac"]] = {"routers": rs["count"], "clients": rs["clients"]}
|
||||||
|
return result
|
||||||
|
|
||||||
def record_global_stats(mysql):
|
def record_global_stats(mysql):
|
||||||
threshold=(utcnow() - datetime.timedelta(days=CONFIG["global_stat_days"])).timestamp()
|
threshold=(utcnow() - datetime.timedelta(days=CONFIG["global_stat_days"])).timestamp()
|
||||||
time = mysql.utctimestamp()
|
time = mysql.utctimestamp()
|
||||||
|
|
|
@ -364,6 +364,8 @@ def helper_statistics(mysql,stats,selecthood):
|
||||||
router_models = stattools.router_models(mysql,selecthood)
|
router_models = stattools.router_models(mysql,selecthood)
|
||||||
router_firmwares = stattools.router_firmwares(mysql,selecthood)
|
router_firmwares = stattools.router_firmwares(mysql,selecthood)
|
||||||
hoods_sum = stattools.hoods_sum(mysql)
|
hoods_sum = stattools.hoods_sum(mysql)
|
||||||
|
gws = stattools.gws(mysql,selecthood)
|
||||||
|
gws_sum = stattools.gws_sum(mysql,selecthood)
|
||||||
mysql.close()
|
mysql.close()
|
||||||
|
|
||||||
return render_template("statistics.html",
|
return render_template("statistics.html",
|
||||||
|
@ -375,7 +377,9 @@ def helper_statistics(mysql,stats,selecthood):
|
||||||
router_firmwares = router_firmwares,
|
router_firmwares = router_firmwares,
|
||||||
hoods = hoods,
|
hoods = hoods,
|
||||||
hoods_sum = hoods_sum,
|
hoods_sum = hoods_sum,
|
||||||
newest_routers = newest_routers
|
newest_routers = newest_routers,
|
||||||
|
gws = gws,
|
||||||
|
gws_sum = gws_sum
|
||||||
)
|
)
|
||||||
|
|
||||||
@app.route('/register', methods=['GET', 'POST'])
|
@app.route('/register', methods=['GET', 'POST'])
|
||||||
|
|
|
@ -34,6 +34,10 @@ def neighbour_color(quality):
|
||||||
color = "#79ff7c"
|
color = "#79ff7c"
|
||||||
return color
|
return color
|
||||||
|
|
||||||
|
@filters.app_template_filter('sumdict')
|
||||||
|
def sumdict(d):
|
||||||
|
return sum(d.values())
|
||||||
|
|
||||||
@filters.app_template_filter('utc2local')
|
@filters.app_template_filter('utc2local')
|
||||||
def utc2local(dt):
|
def utc2local(dt):
|
||||||
return dt.astimezone(tz.tzlocal())
|
return dt.astimezone(tz.tzlocal())
|
||||||
|
|
|
@ -122,6 +122,33 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="col-xs-12 col-md-6">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">Gateways (selected / others)</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table table-condensed table-hoods">
|
||||||
|
<tr>
|
||||||
|
<th class="firstrow">Gateway</th>
|
||||||
|
<th class="success" title="Online Routers">Online</th>
|
||||||
|
<th class="danger" title="Offline Routers">Offline</th>
|
||||||
|
<th class="warning" title="Unknown Routers">Unknown</th>
|
||||||
|
<th class="active" title="Total Routers">Total</th>
|
||||||
|
<th class="info">Clients</th>
|
||||||
|
</tr>
|
||||||
|
{%- for mac, value in gws|dictsort %}
|
||||||
|
<tr>
|
||||||
|
<td class="firstrow"><a href="{{ url_for('router_list', q='selected:^%s$' % mac) }}">{{ mac }}</a></td>
|
||||||
|
<td class="success"><span style="font-weight:bold">{{ value["selected"]["online"] or 0 }}</span> / {{ value["others"]["online"] or 0 }}</td>
|
||||||
|
<td class="danger"><span style="font-weight:bold">{{ value["selected"]["offline"] or 0 }}</span> / {{ value["others"]["offline"] or 0 }}</td>
|
||||||
|
<td class="warning"><span style="font-weight:bold">{{ value["selected"]["unknown"] or 0 }}</span> / {{ value["others"]["unknown"] or 0 }}</td>
|
||||||
|
<td class="active"><span style="font-weight:bold">{{ gws_sum[mac]["routers"] if gws_sum[mac] else 0 }}</span> / {{ value["others"]|sumdict if value["others"] else 0 }}</td>
|
||||||
|
<td class="info">{{ gws_sum[mac]["clients"] if gws_sum[mac] }}</td>
|
||||||
|
</tr>
|
||||||
|
{%- endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="col-xs-12 col-md-6">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">Router Firmwares{%- if selecthood %} @ {{ selecthood }}{%- endif -%}</div>
|
<div class="panel-heading">Router Firmwares{%- if selecthood %} @ {{ selecthood }}{%- endif -%}</div>
|
||||||
|
@ -129,8 +156,6 @@
|
||||||
<div id="globrouterfwstat" class="graph-pie"></div>
|
<div id="globrouterfwstat" class="graph-pie"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="col-xs-12 col-md-6">
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">Router Models{%- if selecthood %} @ {{ selecthood }}{%- endif -%}</div>
|
<div class="panel-heading">Router Models{%- if selecthood %} @ {{ selecthood }}{%- endif -%}</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
|
Loading…
Reference in New Issue