add file i had forgotten to
Jeromy committed
Oct 14, 2014 at 10:37 UTC
779af0e731a8d9077759a2545ec2648c8923e1f3
1 file changed
+56
diagnostics/vis.go
new
+56
@@ -0,0 +1,56 @@
1
+package diagnostics
2
+
3
+import "encoding/json"
4
+
5
+type node struct {
6
+ Name string `json:"name"`
7
+ Value uint64 `json:"value"`
8
+}
9
+
10
+type link struct {
11
+ Source int `json:"source"`
12
+ Target int `json:"target"`
13
+ Value int `json:"value"`
14
+}
15
+
16
+func GetGraphJson(dinfo []*DiagInfo) []byte {
17
+ out := make(map[string]interface{})
18
+ names := make(map[string]int)
19
+ var nodes []*node
20
+ for _, di := range dinfo {
21
+ names[di.ID] = len(nodes)
22
+ val := di.BwIn + di.BwOut
23
+ nodes = append(nodes, &node{Name: di.ID, Value: val})
24
+ }
25
+
26
+ var links []*link
27
+ linkexists := make([][]bool, len(nodes))
28
+ for i, _ := range linkexists {
29
+ linkexists[i] = make([]bool, len(nodes))
30
+ }
31
+
32
+ for _, di := range dinfo {
33
+ myid := names[di.ID]
34
+ for _, con := range di.Connections {
35
+ thisid := names[con.ID]
36
+ if !linkexists[thisid][myid] {
37
+ links = append(links, &link{
38
+ Source: myid,
39
+ Target: thisid,
40
+ Value: 3,
41
+ })
42
+ linkexists[myid][thisid] = true
43
+ }
44
+ }
45
+ }
46
+
47
+ out["nodes"] = nodes
48
+ out["links"] = links
49
+
50
+ b, err := json.Marshal(out)
51
+ if err != nil {
52
+ panic(err)
53
+ }
54
+
55
+ return b
56
+}