From 60baffe0a8af5603dddfcc97a5586017fcac820b Mon Sep 17 00:00:00 2001 From: stevenyh3 <89871868+stevenyh3@users.noreply.github.com> Date: Tue, 9 May 2023 09:32:22 -0400 Subject: [PATCH] fix: set model for metrickeys using deep copy (#764) * fix: set model for metrickeys using deep copy * remove console log --- frontend/src/api/slice.ts | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/frontend/src/api/slice.ts b/frontend/src/api/slice.ts index bab64f6a5..1354b7882 100644 --- a/frontend/src/api/slice.ts +++ b/frontend/src/api/slice.ts @@ -19,12 +19,19 @@ function setModelForMetricKey( pred.column.columnType === ZenoColumnType.POSTDISTILL || pred.column.columnType === ZenoColumnType.OUTPUT ) { - pred.column.model = model; + pred = { + ...pred, + column: { + ...pred.column, + model: model, + }, + }; } } else { - pred.predicates = pred.predicates.map((p) => - setModelForMetricKey(p, model) - ); + return { + ...pred, + predicates: pred.predicates.map((p) => setModelForMetricKey(p, model)), + }; } return pred; } @@ -35,11 +42,20 @@ function setModelForMetricKeys(metricKeys: MetricKey[]) { key.sli.filterPredicates && key.sli.filterPredicates.predicates.length > 0 ) { - key.sli.filterPredicates.predicates.map((pred) => - setModelForMetricKey(pred, key.model) - ); + return { + ...key, + sli: { + ...key.sli, + filterPredicates: { + ...key.sli.filterPredicates, + predicates: key.sli.filterPredicates.predicates.map((pred) => { + return { ...pred, ...setModelForMetricKey(pred, key.model) }; + }), + }, + }, + }; } - return key; + return { ...key }; }); } @@ -71,8 +87,7 @@ export async function getMetricsForSlices( metricKeys = metricKeys.map((k) => ({ ...k, model: "" })); } // Update model in predicates if slices are dependent on postdistill or output columns. - metricKeys = setModelForMetricKeys(metricKeys); - + metricKeys = setModelForMetricKeys(metricKeys); if (metricKeys.length > 0) { return await ZenoService.getMetricsForSlices({ metricKeys, @@ -97,7 +112,7 @@ export async function getMetricsForSlicesAndTags( metricKeys = metricKeys.map((k) => ({ ...k, model: "" })); } // Update model in predicates if slices are dependent on postdistill columns. - metricKeys = setModelForMetricKeys(metricKeys); + metricKeys = setModelForMetricKeys(metricKeys); if (metricKeys.length > 0) { return await ZenoService.getMetricsForSlicesAndTags({ metricKeys,