diff --git a/etcd-dump/etcd_dump.go b/etcd-dump/etcd_dump.go index 17d1b7f..bfc4801 100644 --- a/etcd-dump/etcd_dump.go +++ b/etcd-dump/etcd_dump.go @@ -9,7 +9,6 @@ import ( "github.com/golang/protobuf/proto" "github.com/pkg/browser" "go.etcd.io/etcd/clientv3" - "html" "io/ioutil" "strings" "time" @@ -37,7 +36,7 @@ var ( "Tablet":&topodata.Tablet{}, "VSchema":&vschema.Keyspace{}, } - + divIndex = 0 ) var css = ` @@ -81,6 +80,13 @@ ul, #root { .active { display: block; } +.jsonview { + display:inline-block; + font-size:12px; + background:#fafafa; + padding-left:1px;padding-right:1px; +} + ` var js = ` @@ -130,7 +136,6 @@ func store(tree *Tree, key string, value string ) { typeString := paths[len(paths)-1] if unicode.IsUpper(rune(typeString[0])) { value = decodeProtoBuf(typeString, []byte(value)) - value = html.EscapeString(value) } paths = append(paths, value) @@ -188,21 +193,32 @@ func flatten(tree *Tree) ([]Item, int) { if level > maxLevel { maxLevel = level } + } tree.root.traverse(0, callback) for idx, item := range list { if idx != len(list) -1 { list[idx].next = list[idx+1].level - item.level - if list[idx].next < -1 { - list[idx].next = -1 - } } } return list, maxLevel } +func fixupJson (val string) string { + val = strings.TrimSpace(val) + divIndex++ + if strings.Index(val, "{") == 0 { + return fmt.Sprintf("
", divIndex, divIndex, val) + } + return val +} + func toHtml(list []Item) string { - html := "

etcd: dump of all keys

\n" + html := "\n\n" + html += "\n" + html += "\n" + html += "\n" + html += "

Vitess Topology

\n" html += css html += "Expand All    " html += "Collapse All\n" @@ -218,25 +234,29 @@ func toHtml(list []Item) string { } push("") for _, item := range list { + val := fixupJson(item.name) switch item.next { case 1: - html += "
  • " + item.name + "\n" - html += "