zoukankan      html  css  js  c++  java
  • vis.js 的使用

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style type="text/css">
            #mynetwork {
                 100%;
                height: 100vh;
                border: 1px solid lightgray;
                background-color: black;
            }
        </style>
    </head>
    
    <body>
        <div id="mynetwork"></div>
    </body>
    
    <script src="./js/vis-network.min.js"></script>
    <script>
    
        const data = {
            "mac": "28:D1:27:72:D2:CA",
            "agents": [{
                "mac": "8C:DE:F9:92:80:E0",
                "agents": [{
                    "mac": "A4:39:B6:09:1E:00",
                    "agents": {},
                    "bridgeif": {
                        "1": "WLAN2G",
                        "0": "WLAN2G",
                        "3": "WLAN5G",
                        "2": "WLAN2G",
                        "5": "ETHER",
                        "4": "WLAN5G",
                        "6": "ETHER"
                    },
                    "medium": "WLAN2G",
                    "stas": {
                        "A0:D3:C1:25:45:F71": {
                            "medium": "ETHER"
                        },
                    },
                    "ip": "192.168.199.218"
                }],
                "bridgeif": {
                    "1": "WLAN5G",
                    "0": "WLAN5G",
                    "3": "WLAN2G",
                    "2": "WLAN2G",
                    "5": "ETHER",
                    "4": "ETHER",
                    "7": "ETHER",
                    "6": "ETHER"
                },
                "medium": "ETHER",
                "stas": {},
                "ip": "192.168.199.236"
            }],
            "bridgeif": {
                "eth2": "ETHER",
                "eth4": "ETHER",
                "ath0": "WLAN5G",
                "ath1": "WLAN2G",
                "ath18": "WLAN2G",
                "ath08": "WLAN5G"
            },
            "ip": "192.168.199.1",
            "stas": {
                "A0:D3:C1:25:45:F7": {
                    "medium": "ETHER"
                }
            },
            "agentr": {}
        }
    
        var id = 0;
        var echarts_nodes = [{
            id: id += 1,
            label: `主路由\nAL_MAC:${data.mac}\n`,
            mac: data.mac,
            color: {
                border: "#70C0C9",
                background: '#33424a',
                highlight: {
                    border: '#70C0C9',
                    background: '#33424a'
                },
                hover: {
                    border: '#70C0C9',
                    background: '#33424a'
                }
            },
            font: { color: '#70C0C9' },
        }]
        var echarts_edges = [{ from: 1, color: { color: "#8bf7ff" } },]
    
        function Recursion(data, parent_id) {
            // 路由器
            if (data.agents && JSON.stringify(data.agents) !== "{}") {
                data.agents.map((item, index) => {
                    echarts_nodes.push({
                        id: id += 1,
                        label: `从路由器\nAL_MAC:${item.mac}\n接入方式:${item.medium}\n`,
                        mac: item.mac,
                        color: { border: "#5CB682", background: '#2b343a', },
                        font: { color: '#5CB682' },
                    })
                    echarts_edges.push({ from: id, to: parent_id, color: { color: "#5CB682" } })
                    if (item.agents) {
                        Recursion(item, id)
                    }
                })
            }
            // 手机
            if (data.stas && JSON.stringify(data.stas) !== "{}") {
                for (const key in data.stas) {
                    if (Object.hasOwnProperty.call(data.stas, key)) {
                        echarts_nodes.push({
                            id: id += 1,
                            label: `客户端\nMAC:${key}\n接入方式:${data.stas[key].medium}\n`,
                            mac: key,
                            color: { border: "#FFFFFF", background: '#3c3e47', },
                            font: { color: '#FFFFFF' },
                        })
                        echarts_edges.push({ from: id, to: parent_id })
                    }
                }
            }
        }
    
        Recursion(data, id)
    
        // create a network
        var container = document.getElementById("mynetwork");
        var data1 = {
            nodes: new vis.DataSet(echarts_nodes),
            edges: new vis.DataSet(echarts_edges),
        };
        var options = {
            height: '100%',
             '100%',
            layout: {
                hierarchical: {
                    direction: "DU",
                    sortMethod: "directed",
                    levelSeparation: 150
                },
            },
            edges: {
                // dashes: true,
                arrows: "to",
                chosen: false
            },
            nodes: {
                margin: 10,
                shape: "box",
                font: { align: "left" },
                chosen: false
            },
            physics: {
                hierarchicalRepulsion: {
                    avoidOverlap: 1,
                }
            },
        };
    
        var network = new vis.Network(container, data1, options);
    
    </script>
    
    </html>
    

    https://ame.cool/core/frontend-tools/
    https://visjs.github.io/vis-network/examples/

  • 相关阅读:
    LINUX重启MYSQL的命令
    如何在linux下实现mysql数据库每天自动备份
    mysql 2013错误解决
    mysql按年度、季度、月度、周、日统计查询的sql语句
    MySQL 时间戳(Timestamp)函数
    jQuery 选择器大全总结
    使用Git的Push出现rejected
    js实现分页的几个源码,看完基本就懂了
    Get,Post请求中文乱码问题有效解决方法
    web应用中文乱码问题的原因分析
  • 原文地址:https://www.cnblogs.com/lbx6935/p/15711406.html
Copyright © 2011-2022 走看看