fix tier loop
This commit is contained in:
parent
206932038e
commit
368a9e868c
|
@ -129,6 +129,7 @@ type (
|
|||
Label string `json:"label"`
|
||||
Value T `json:"value"`
|
||||
Parent T `json:"-"`
|
||||
Used bool `json:"-"`
|
||||
Children []*TierValue[T] `json:"children"`
|
||||
}
|
||||
|
||||
|
|
11
utils.go
11
utils.go
|
@ -48,11 +48,20 @@ func isEmpty(val any) bool {
|
|||
|
||||
func recursiveTier[T any](parent T, values []*types.TierValue[T]) []*types.TierValue[T] {
|
||||
items := make([]*types.TierValue[T], 0, len(values)/2)
|
||||
for _, row := range values {
|
||||
for idx, row := range values {
|
||||
if row.Used {
|
||||
continue
|
||||
}
|
||||
if reflect.DeepEqual(row.Parent, parent) {
|
||||
values[idx].Used = true
|
||||
row.Children = recursiveTier(row.Value, values)
|
||||
items = append(items, row)
|
||||
}
|
||||
}
|
||||
for _, row := range values {
|
||||
if !row.Used {
|
||||
items = append(items, row)
|
||||
}
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue