define(function () { return function (config) { var self = this var stats, timestamp self.setData = function (d) { var totalNodes = sum(d.nodes.all.map(one)) var totalOnlineNodes = sum(d.nodes.all.filter(online).map(one)) var totalOfflineNodes = sum(d.nodes.all.filter(function (node) {return !node.flags.online}).map(one)) var totalNewNodes = sum(d.nodes.new.map(one)) var totalLostNodes = sum(d.nodes.lost.map(one)) var totalClients = sum(d.nodes.all.filter(online).map( function (d) { return d.statistics.clients ? d.statistics.clients : 0 })) var totalGateways = sum(Array.from(new Set(d.nodes.all.filter(online).map( function(d) { return ("gateway" in d.statistics && d.statistics.gateway.id) ? d.statistics.gateway.id : d.statistics.gateway }).concat(d.nodes.all.filter( function (d) { return d.flags.gateway })))).map(function(d) { return (typeof d === "string") ? 1 : 0 })) var nodetext = [{ count: totalOnlineNodes, label: "online" }, { count: totalOfflineNodes, label: "offline" }, { count: totalNewNodes, label: "neu" }, { count: totalLostNodes, label: "verschwunden" } ].filter( function (d) { return d.count > 0 } ) .map( function (d) { return [d.count, d.label].join(" ") } ) .join(", ") stats.textContent = totalNodes + " Knoten " + "(" + nodetext + "), " + totalClients + " Client" + ( totalClients === 1 ? ", " : "s, " ) + totalGateways + " Gateways" timestamp.textContent = "Diese Daten sind von " + d.timestamp.format("LLLL") + "." } self.render = function (el) { var h2 = document.createElement("h2") h2.textContent = config.siteName el.appendChild(h2) var p = document.createElement("p") el.appendChild(p) stats = document.createTextNode("") p.appendChild(stats) p.appendChild(document.createElement("br")) timestamp = document.createTextNode("") p.appendChild(timestamp) } return self } })