From 3697e3506475a876576430e9721228df860a0412 Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Fri, 3 Jul 2026 21:35:14 +0300 Subject: [PATCH] Fix product performance grouped JSON build --- svc/routes/product_performance.go | 17 +- .../pages/ProductPerformanceProfitability.vue | 214 ++++++++++++------ 2 files changed, 160 insertions(+), 71 deletions(-) diff --git a/svc/routes/product_performance.go b/svc/routes/product_performance.go index e319237..824768e 100644 --- a/svc/routes/product_performance.go +++ b/svc/routes/product_performance.go @@ -273,6 +273,13 @@ func GetProductPerformanceGroupedHandler(pg *sql.DB) http.HandlerFunc { groupLevels := splitCSVQuery(r.URL.Query().Get("group_levels")) limit := intQuery(r, "limit", 50000) expanded := map[string]bool{} + const maxExpandedGroupKeys = 200 + addExpandedKey := func(key string) { + key = strings.TrimSpace(key) + if key != "" && len(expanded) < maxExpandedGroupKeys { + expanded[key] = true + } + } if r.Method == http.MethodPost { var body struct { Mode string `json:"mode"` @@ -298,17 +305,11 @@ func GetProductPerformanceGroupedHandler(pg *sql.DB) http.HandlerFunc { limit = body.Limit } for _, key := range body.ExpandedKeys { - key = strings.TrimSpace(key) - if key != "" { - expanded[key] = true - } + addExpandedKey(key) } } else { for _, key := range strings.Split(r.URL.Query().Get("expanded_keys"), ",") { - key = strings.TrimSpace(key) - if key != "" { - expanded[key] = true - } + addExpandedKey(key) } } diff --git a/ui/src/pages/ProductPerformanceProfitability.vue b/ui/src/pages/ProductPerformanceProfitability.vue index bb9dbcf..eb6369a 100644 --- a/ui/src/pages/ProductPerformanceProfitability.vue +++ b/ui/src/pages/ProductPerformanceProfitability.vue @@ -112,6 +112,7 @@ :pagination="{ rowsPerPage: 0, sortBy: 'performance_score_total', descending: true }" virtual-scroll :virtual-scroll-item-size="64" + :virtual-scroll-slice-size="tableVirtualSliceSize" >