improve make tree

develop
skanehira 5 years ago
parent d4d485ab98
commit 471326bec5

@ -2,6 +2,7 @@ package gui
import ( import (
"fmt" "fmt"
"reflect"
"github.com/gdamore/tcell" "github.com/gdamore/tcell"
"github.com/rivo/tview" "github.com/rivo/tview"
@ -47,15 +48,14 @@ func (t *Tree) AddNode(node interface{}) []*tview.TreeNode {
} }
case []interface{}: case []interface{}:
for i, v := range node { for i, v := range node {
if list, isList := v.([]interface{}); isList && len(list) > 0 { switch n := v.(type) {
numberNode := tview.NewTreeNode(fmt.Sprintf("[%d]", i+1)) case map[string]interface{}, []interface{}:
t.AddNodes(numberNode, t.AddNode(v)) if reflect.ValueOf(n).Len() > 0 {
nodes = append(nodes, numberNode) numberNode := tview.NewTreeNode(fmt.Sprintf("[%d]", i+1))
} else if m, isMap := v.(map[string]interface{}); isMap && len(m) > 0 { t.AddNodes(numberNode, t.AddNode(v))
numberNode := tview.NewTreeNode(fmt.Sprintf("[%d]", i+1)) nodes = append(nodes, numberNode)
t.AddNodes(numberNode, t.AddNode(v)) }
nodes = append(nodes, numberNode) default:
} else {
nodes = append(nodes, t.AddNode(v)...) nodes = append(nodes, t.AddNode(v)...)
} }
} }

Loading…
Cancel
Save