fst – Rev 1

Subversion Repositories:
Rev:
(function () {

    var nodes = {}
    var edges = {}
    var network = {}

    $.get('/metrics', (data, error) => {
        var peers = JSON.parse(data)

        // create an array with nodes
        /*var nodes = new vis.DataSet([
            { id: 1, label: 'Node 1' },
            { id: 2, label: 'Node 2' },
            { id: 3, label: 'Node 3' },
            { id: 4, label: 'Node 4' },
            { id: 5, label: 'Node 5' }
        ])*/

        // create an array with edges
        /*var edges = new vis.DataSet([
            { from: 1, to: 3 },
            { from: 1, to: 2 },
            { from: 2, to: 4 },
            { from: 2, to: 5 },
            { from: 3, to: 3 }
        ])*/

        var graphPeers = []
        Object.keys(peers.attacked_peers).map((item) => {
            graphPeers.push({ id: item, label: item, value: peers.attacked_peers[item].count })
        })

        nodes = new vis.DataSet(graphPeers)

        var edgePeers = []
        graphPeers.forEach((a, i) => {
            graphPeers.forEach((b, j) => {
                if (i === j) {
                    return;
                }

                edgePeers.push({ from: a.id, to: b.id })
            })
        })

        edges = new vis.DataSet(edgePeers)

        // create a network
        var container = document.getElementById('mynetwork')
        var data = {
            nodes: nodes,
            edges: edges
        }
        var options = {
            nodes: {
                shape: 'dot',
                size: 30,
                font: {
                    size: 14
                },
                borderWidth: 2,
                shadow: true
            },
            edges: {
                width: 2,
                shadow: true
            }
        }

        network = new vis.Network(container, data, options)

        // Update graph.
        setInterval(() => {
            $.get('/metrics', (data, error) => {
                var peers = Object.keys(JSON.parse(data).attacked_peers)

                nodes.forEach((graphPeer, index) => {
                    if (peers.indexOf(graphPeer.id) !== -1) {
                        return;
                    }

                    edges.forEach((graphEdge, index) => {
                        if (graphEdge.from !== graphPeer.id && graphEdge.to !== graphPeer.id) {
                            return;
                        }

                        edges.remove(graphEdge)
                    })

                    nodes.remove(graphPeer)
                })

                // Add any new nodes and edges.
                peers.map((item) => {
                    if (network.findNode(item).length !== 0) {
                        return
                    }
                    nodes.add({ id: item, label: item, value: peers.attacked_peers[item].count })
                    nodes.slice(0, -1).forEach((graphPeer) => {
                        edges.add({ from: graphPeer.id, to: item })
                        edges.add({ from: item, to: graphPeer.id })
                    })
                })
            })
        }, 1000)
    })

})()

Generated by GNU Enscript 1.6.5.90.