Skip to content
Snippets Groups Projects
Select Git revision
  • 7bee4d9640560f5cb2e175f220f1ef924b34dca2
  • develop default protected
2 results

main.js

Blame
  • main.js 6.28 KiB
    define(["moment", "router", "leaflet", "gui", "numeral", "moment.de"],
      function (moment, Router, L, GUI, numeral) {
        return function (config) {
          function handleData(data) {
            var dataNodes = {};
            dataNodes.nodes = [];
            var dataGraph = {};
            dataGraph.batadv = {};
            dataGraph.batadv.nodes = [];
            dataGraph.batadv.links = [];
    
            function rearrangeLinks(d) {
              d.source += dataGraph.batadv.nodes.length;
              d.target += dataGraph.batadv.nodes.length;
            }
    
            for (var i = 0; i < data.length; ++i) {
              var vererr;
              if (i % 2) {
                if (data[i].version !== 1) {
                  vererr = "Unsupported graph version: " + data[i].version;
                  console.log(vererr); //silent fail
                } else {
                  data[i].batadv.links.forEach(rearrangeLinks);
                  dataGraph.batadv.nodes = dataGraph.batadv.nodes.concat(data[i].batadv.nodes);
                  dataGraph.batadv.links = dataGraph.batadv.links.concat(data[i].batadv.links);
                  dataGraph.timestamp = data[i].timestamp;
                }
              } else if (data[i].version !== 2) {
                vererr = "Unsupported nodes version: " + data[i].version;
                console.log(vererr); //silent fail
              } else {
                dataNodes.nodes = dataNodes.nodes.concat(data[i].nodes);
                dataNodes.timestamp = data[i].timestamp;
              }
            }
    
            var nodes = dataNodes.nodes.filter(function (d) {
              return "firstseen" in d && "lastseen" in d;
            });
    
            nodes.forEach(function (node) {
              node.firstseen = moment.utc(node.firstseen).local();
              node.lastseen = moment.utc(node.lastseen).local();
            });
    
            var now = moment();
            var age = moment(now).subtract(config.maxAge, "days");
    
            var newnodes = limit("firstseen", age, sortByKey("firstseen", nodes).filter(online));
            var lostnodes = limit("lastseen", age, sortByKey("lastseen", nodes).filter(offline));
    
            var graphnodes = {};
    
            dataNodes.nodes.forEach(function (d) {
              graphnodes[d.nodeinfo.node_id] = d;
            });
    
            var graph = dataGraph.batadv;
    
            graph.nodes.forEach(function (d) {
              if (d.node_id in graphnodes) {
                d.node = graphnodes[d.node_id];
                if (d.unseen) {
                  d.node.flags.online = true;
                  d.node.flags.unseen = true;
                }
              }
            });