Merge pull request #17 from Little-Ben/globalInfos

statistics: show global statistics image (globalGraph) - v2
This commit is contained in:
Nils Schneider 2015-06-07 19:01:41 +02:00
commit 339d7c7683
4 changed files with 76 additions and 2 deletions

View file

@ -97,6 +97,35 @@ Examples for `nodeInfos`:
In order to have statistics images available, you have to run the backend with parameter `--with-rrd` or generate them in other ways.
## globalInfos (array, optional)
This option allows to show global statistics on statistics page depending on following case-sensitive parameters:
- `name` caption of statistics segment in infobox
- `href` absolute or relative URL to statistics image
- `thumbnail` absolute or relative URL to thumbnail image,
can be the same like `href`
- `caption` is shown, if `thumbnail` is not present (no thumbnail in infobox)
In contrast to `nodeInfos` there is no template substitution in `href`, `thumbnail` or `caption`.
Examples for `globalInfos`:
"globalInfos": [
{ "name": "Wochenstatistik",
"href": "nodes/globalGraph.png",
"thumbnail": "nodes/globalGraph.png",
"caption": "Bild mit Wochenstatistik"
},
{ "name": "Jahresstatistik",
"href": "nodes/globalGraph52.png",
"thumbnail": "nodes/globalGraph52.png",
"caption": "Bild mit Jahresstatistik"
}
]
In order to have global statistics available, you have to run the backend with parameter `--with-rrd` (this only creates globalGraph.png) or generate them in other ways.
# Building
Just run the following command from the meshviewer directory:

View file

@ -74,7 +74,7 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Linklist,
var lostnodeslist = new SimpleNodelist("lost", "lastseen", router, "Verschwundene Knoten")
var nodelist = new Nodelist(router)
var linklist = new Linklist(linkScale, router)
var statistics = new Proportions()
var statistics = new Proportions(config)
var about = new About()
dataTargets.push(meshstats)

View file

@ -1,11 +1,44 @@
define(["chroma-js", "virtual-dom", "numeral-intl"],
function (Chroma, V, numeral) {
return function () {
return function (config) {
var self = this
var fwTable, hwTable, autoTable, gwTable
var scale = Chroma.scale("YlGnBu").mode("lab")
function showStatGlobal(o) {
var content, caption
if (o.thumbnail) {
content = document.createElement("img")
content.src = o.thumbnail
}
if (o.caption) {
caption = o.caption
if (!content)
content = document.createTextNode(caption)
}
var p = document.createElement("p")
if (o.href) {
var link = document.createElement("a")
link.target = "_blank"
link.href = o.href
link.appendChild(content)
if (caption && o.thumbnail)
link.title = caption
p.appendChild(link)
} else
p.appendChild(content)
return p
}
function count(nodes, key, f) {
var dict = {}
@ -123,6 +156,15 @@ define(["chroma-js", "virtual-dom", "numeral-intl"],
gwTable = document.createElement("table")
gwTable.classList.add("proportion")
el.appendChild(gwTable)
if (config.globalInfos)
config.globalInfos.forEach( function (globalInfo) {
h2 = document.createElement("h2")
h2.textContent = globalInfo.name
el.appendChild(h2)
el.appendChild(showStatGlobal(globalInfo))
})
}
return self

View file

@ -221,6 +221,9 @@ button.close {
table {
padding: 0 $buttondistance;
}
img {
max-width: 100%;
}
}
table {