@@ -264,7 +264,7 @@ func disableNode(node *model.NodeData[any]) {
264264func DigIntoObject [T any ](parent * model.NodeData [any ], field reflect.Value , nodes * []* model.NodeData [any ],
265265 label string , edges * []* model.EdgeData [any ]) {
266266
267- if ! field .IsZero () {
267+ if ! field .IsZero () && field . Elem (). IsValid () && ! field . Elem (). IsZero () {
268268 lowerLabel := strings .ToLower (label )
269269 n := buildNode (lowerLabel , calcWidth (lowerLabel ), DefaultHeight , nil )
270270 if parent != nil {
@@ -289,20 +289,22 @@ func BuildSliceGraphNode[T any](parent *model.NodeData[any], field reflect.Value
289289 if ! field .IsZero () {
290290 for k := 0 ; k < field .Len (); k ++ {
291291 f := field .Index (k )
292- lowerLabel := strings .ToLower (label )
293- n := buildNode (lowerLabel , calcWidth (lowerLabel ), DefaultHeight , nil )
294- if parent != nil {
295- e := & model.EdgeData [any ]{
296- Id : fmt .Sprintf ("%s-to-%s" , parent .Id , n .Id ),
297- From : parent .Id ,
298- To : n .Id ,
292+ if f .Elem ().IsValid () && ! f .Elem ().IsZero () {
293+ lowerLabel := strings .ToLower (label )
294+ n := buildNode (lowerLabel , calcWidth (lowerLabel ), DefaultHeight , nil )
295+ if parent != nil {
296+ e := & model.EdgeData [any ]{
297+ Id : fmt .Sprintf ("%s-to-%s" , parent .Id , n .Id ),
298+ From : parent .Id ,
299+ To : n .Id ,
300+ }
301+ * edges = append (* edges , e )
299302 }
300- * edges = append (* edges , e )
303+ disableNode (n )
304+ * nodes = append (* nodes , n )
305+ obj := f .Elem ().Interface ().(T )
306+ exploreGraphObject (n , & obj , nodes , edges )
301307 }
302- disableNode (n )
303- * nodes = append (* nodes , n )
304- obj := f .Elem ().Interface ().(T )
305- exploreGraphObject (n , & obj , nodes , edges )
306308 }
307309 }
308310}
0 commit comments