fix tier loop

This commit is contained in:
Yavolte 2025-06-25 11:15:08 +08:00
parent 206932038e
commit 368a9e868c
2 changed files with 11 additions and 1 deletions

View File

@ -129,6 +129,7 @@ type (
Label string `json:"label"`
Value T `json:"value"`
Parent T `json:"-"`
Used bool `json:"-"`
Children []*TierValue[T] `json:"children"`
}

View File

@ -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
}