SOURCE

console 命令行工具 X clear

                    
>
console
var nodes = null;
var edges = null;
var network = null;

var LENGTH_MAIN = 350,
  LENGTH_SERVER = 150,
  LENGTH_SUB = 50,
  WIDTH_SCALE = 2,
  GREEN = "green",
  RED = "#C5000B",
  ORANGE = "orange",
  //GRAY = '#666666',
  GRAY = "gray",
  BLACK = "#2B1B17";

// Called when the Visualization API is loaded.
function draw() {
  // Create a data table with nodes.
  nodes = [];

  // Create a data table with links.
  edges = [];

  nodes.push({ id: 1, label: "192.168.0.1", group: "switch", value: 10 });
  nodes.push({ id: 2, label: "192.168.0.2", group: "switch", value: 8 });
  nodes.push({ id: 3, label: "192.168.0.3", group: "switch", value: 6 });
  edges.push({
    from: 1,
    to: 2,
    length: LENGTH_MAIN,
    width: WIDTH_SCALE * 6,
    label: "0.71 mbps"
  });
  edges.push({
    from: 1,
    to: 3,
    length: LENGTH_MAIN,
    width: WIDTH_SCALE * 4,
    label: "0.55 mbps"
  });

  // group around 2
  for (var i = 100; i <= 104; i++) {
    var value = 1;
    var width = WIDTH_SCALE * 2;
    var color = GRAY;
    var label = null;

    if (i === 103) {
      value = 5;
      width = 3;
    }
    if (i === 102) {
      color = RED;
      label = "error";
    }

    nodes.push({
      id: i,
      label: "192.168.0." + i,
      group: "desktop",
      value: value
    });
    edges.push({
      from: 2,
      to: i,
      length: LENGTH_SUB,
      color: color,
      fontColor: color,
      width: width,
      label: label
    });
  }
  nodes.push({ id: 201, label: "192.168.0.201", group: "desktop", value: 1 });
  edges.push({
    from: 2,
    to: 201,
    length: LENGTH_SUB,
    color: GRAY,
    width: WIDTH_SCALE
  });

  // group around 3
  nodes.push({ id: 202, label: "192.168.0.202", group: "desktop", value: 4 });
  edges.push({
    from: 3,
    to: 202,
    length: LENGTH_SUB,
    color: GRAY,
    width: WIDTH_SCALE * 2
  });
  for (var i = 230; i <= 231; i++) {
    nodes.push({ id: i, label: "192.168.0." + i, group: "mobile", value: 2 });
    edges.push({
      from: 3,
      to: i,
      length: LENGTH_SUB,
      color: GRAY,
      fontColor: GRAY,
      width: WIDTH_SCALE
    });
  }

  // group around 1
  nodes.push({ id: 10, label: "192.168.0.10", group: "server", value: 10 });
  edges.push({
    from: 1,
    to: 10,
    length: LENGTH_SERVER,
    color: GRAY,
    width: WIDTH_SCALE * 6,
    label: "0.92 mbps"
  });
  nodes.push({ id: 11, label: "192.168.0.11", group: "server", value: 7 });
  edges.push({
    from: 1,
    to: 11,
    length: LENGTH_SERVER,
    color: GRAY,
    width: WIDTH_SCALE * 3,
    label: "0.68 mbps"
  });
  nodes.push({ id: 12, label: "192.168.0.12", group: "server", value: 3 });
  edges.push({
    from: 1,
    to: 12,
    length: LENGTH_SERVER,
    color: GRAY,
    width: WIDTH_SCALE,
    label: "0.3 mbps"
  });

  nodes.push({ id: 204, label: "Internet", group: "internet", value: 10 });
  edges.push({
    from: 1,
    to: 204,
    length: 200,
    width: WIDTH_SCALE * 3,
    label: "0.63 mbps"
  });
  
  nodes.push({ id: 205, label: "Internet", group: "internet", value: 10 });
  edges.push({
    from: 1,
    to: 205,
    length: 200,
    width: WIDTH_SCALE * 3,
    label: "0.63 mbps"
  });
  
  nodes.push({ id: 206, label: "192.168.0.19", group: "server", value: 10 });
  edges.push({
    from: 1,
    to: 206,
    length: 200,
    width: WIDTH_SCALE * 2,
    label: "0.63 mbps"
  });
  
  nodes.push({ id: 207, label: "192.168.0.19", group: "desktop", value: 8 });
  edges.push({
    from: 206,
    to: 207,
    length: 200,
    width: WIDTH_SCALE * 2,
    label: "0.63 mbps"
  });

  // legend
  var mynetwork = document.getElementById("mynetwork");
  var x = -mynetwork.clientWidth / 2 + 50;
  var y = -mynetwork.clientHeight / 2 + 50;
  var step = 70;
  nodes.push({
    id: 1000,
    x: x,
    y: y,
    label: "Internet",
    group: "internet",
    value: 1,
    fixed: true,
    physics: false
  });
  nodes.push({
    id: 1001,
    x: x,
    y: y + step,
    label: "Switch",
    group: "switch",
    value: 1,
    fixed: true,
    physics: false
  });
  nodes.push({
    id: 1002,
    x: x,
    y: y + 2 * step,
    label: "Server",
    group: "server",
    value: 1,
    fixed: true,
    physics: false
  });
  nodes.push({
    id: 1003,
    x: x,
    y: y + 3 * step,
    label: "Computer",
    group: "desktop",
    value: 1,
    fixed: true,
    physics: false
  });
  nodes.push({
    id: 1004,
    x: x,
    y: y + 4 * step,
    label: "Smartphone",
    group: "mobile",
    value: 1,
    fixed: true,
    physics: false
  });

  // create a network
  var container = document.getElementById("mynetwork");
  var data = {
    nodes: nodes,
    edges: edges
  };
  var options = {
    nodes: {
      scaling: {
        min: 16,
        max: 32
      }
    },
    edges: {
      color: GRAY,
      smooth: false
    },
    physics: {
      barnesHut: { gravitationalConstant: -30000 },
      stabilization: { iterations: 2500 }
    },
    groups: {
      switch: {
        shape: "triangle",
        color: "#FF9900" // orange
      },
      desktop: {
        shape: "dot",
        color: "#2B7CE9" // blue
      },
      mobile: {
        shape: "dot",
        color: "#5A1E5C" // purple
      },
      server: {
        shape: "square",
        color: "#C5000B" // red
      },
      internet: {
        shape: "square",
        color: "#109618" // green
      }
    }
  };
  network = new vis.Network(container, data, options);
}

window.addEventListener("load", () => {
  draw();
});
<div id="mynetwork"></div>
html,
body {
  font: 10pt arial;
  padding: 0;
  margin: 0;
  width: 100%;
  height: 100%;
}

#mynetwork {
  width: 100%;
  height: 100%;
}

本项目引用的自定义外部资源