even better graphviz
diff --git a/Gopkg.lock b/Gopkg.lock
index f478101..977c48a 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -346,6 +346,14 @@
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
version = "v2.2.1"
+[[projects]]
+ branch = "master"
+ digest = "1:9132eacc44d9bd1e03145ea2e9d4888800da7773d6edebb401f8cd34c9fb8380"
+ name = "vbom.ml/util"
+ packages = ["sortorder"]
+ pruneopts = "UT"
+ revision = "efcd4e0f97874370259c7d93e12aad57911dea81"
+
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
@@ -360,6 +368,7 @@
"github.com/q3k/statusz",
"golang.org/x/net/context",
"google.golang.org/grpc",
+ "vbom.ml/util/sortorder",
]
solver-name = "gps-cdcl"
solver-version = 1
diff --git a/service.go b/service.go
index 05964fa..ccfd0bc 100644
--- a/service.go
+++ b/service.go
@@ -4,12 +4,14 @@
"context"
"fmt"
"net/http"
+ "sort"
"strings"
"code.hackerspace.pl/q3k/topo/graph"
"github.com/gobuffalo/packr"
"github.com/golang/glog"
"github.com/q3k/statusz"
+ "vbom.ml/util/sortorder"
)
type ServiceConfig struct {
@@ -42,7 +44,7 @@
var dot = this.responseText;
viz.renderSVGElement(dot)
.then(function(element) {
- document.body.appendChild(element);
+ document.getElementById("graph").appendChild(element);
});
}
};
@@ -50,6 +52,7 @@
xmlhttp.send();
</script>
+ <div id="graph" style="text-align: center;"></div>
`
func (s *Service) Run() {
@@ -62,6 +65,8 @@
http.HandleFunc("/debug/graphviz", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "graph G {\n")
+ fmt.Fprintf(w, " ranksep = 2\n")
+ fmt.Fprintf(w, " splines = polyline\n")
fmt.Fprintf(w, " rankdir = LR\n")
for _, machine := range s.gr.Machines {
portNames := []string{}
@@ -74,7 +79,14 @@
}
for _, sw := range s.gr.Switches {
portNames := []string{}
+ portsOrdered := []*graph.SwitchPort{}
for _, port := range sw.Ports {
+ portsOrdered = append(portsOrdered, port)
+ }
+ sort.Slice(portsOrdered, func(i, j int) bool {
+ return sortorder.NaturalLess(portsOrdered[i].Name, portsOrdered[j].Name)
+ })
+ for _, port := range portsOrdered {
name := fmt.Sprintf("<%s> %s", port.Name, port.Name)
portNames = append(portNames, name)
}
@@ -86,7 +98,7 @@
if port.OtherEnd == nil {
continue
}
- fmt.Fprintf(w, " %s:%q -- %s:%q\n", machine.Name, port.Name, port.OtherEnd.Switch.Name, port.OtherEnd.Name)
+ fmt.Fprintf(w, " %s:%q:e -- %s:%q:w\n", machine.Name, port.Name, port.OtherEnd.Switch.Name, port.OtherEnd.Name)
}
}
fmt.Fprintf(w, "}\n")