From afc2dbea08b855cfa9bf449d1a2e14e8bd1a9d29 Mon Sep 17 00:00:00 2001 From: BroodjeAap Date: Mon, 29 Aug 2022 17:49:22 +0000 Subject: [PATCH] fixed depth --- main.go | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index 3d33523..c013852 100644 --- a/main.go +++ b/main.go @@ -86,29 +86,35 @@ func (web Web) viewWatch(c *gin.Context) { filterMap[filters[i].ID] = &filters[i] } - queuedFilters := []*Filter{} + currentLayerFilters := []*Filter{} for i := range filters { filter := &filters[i] if filter.ParentID != nil { parent := filterMap[*filter.ParentID] parent.Filters = append(parent.Filters, *filter) } else { - queuedFilters = append(queuedFilters, filter) + currentLayerFilters = append(currentLayerFilters, filter) } } bftFilters := []FilterDepth{} + nextLayerFilters := []*Filter{} depth := 0 - for len(queuedFilters) > 0 { - filter := queuedFilters[0] - bftFilters = append(bftFilters, FilterDepth{ - Filter: filter, - Depth: depth, - }) - for _, filter := range filter.Filters { - queuedFilters = append(queuedFilters, &filter) + for len(nextLayerFilters) > 0 || len(currentLayerFilters) > 0 { + for len(currentLayerFilters) > 0 { + filter := currentLayerFilters[0] + bftFilters = append(bftFilters, FilterDepth{ + Filter: filter, + Depth: depth, + }) + for _, filter := range filter.Filters { + nextLayerFilters = append(nextLayerFilters, &filter) + } + currentLayerFilters = currentLayerFilters[1:] } - queuedFilters = queuedFilters[1:] + depth += 1 + currentLayerFilters = nextLayerFilters + nextLayerFilters = []*Filter{} } /* nextFilters := []*Filter{}