Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions static/app/views/explore/metrics/useSaveAsMetricItems.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,24 +111,37 @@ export function useSaveAsMetricItems(_options: UseSaveAsMetricItemsOptions) {
label: t('All Metrics'),
textValue: t('All Metrics'),
onAction: () => {
addToDashboard(metricQueries);
addToDashboard(
metricQueries.filter(
metricQuery =>
!isVisualizeEquation(metricQuery.queryParams.visualizes[0]!)
)
);
Comment thread
narsaynorath marked this conversation as resolved.
},
},
]
: []),
...metricQueries.map((metricQuery, index) => {
const visualize = metricQuery.queryParams.visualizes[0]!;
return {
key: `add-to-dashboard-${index}`,
label: `${metricQuery.label ?? getVisualizeLabel(index, isVisualizeEquation(metricQuery.queryParams.visualizes[0]!))}: ${
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"All Metrics" silently no-ops when all queries are equations

Medium Severity

The "All Metrics" submenu option appears whenever metricQueries.length > 1, but the onAction handler filters out all equations before calling addToDashboard. If every query is an equation, the filter produces an empty array, and addToDashboard silently returns with no user feedback. The option remains visible and enabled despite being a no-op, which is inconsistent with the individual equation items being properly disabled with tooltips.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 542cd44. Configure here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an issue. You can't remove the last metric.

label: `${metricQuery.label ?? getVisualizeLabel(index, isVisualizeEquation(visualize))}: ${
formatTraceMetricsFunction(
metricQuery.queryParams.aggregateFields
.filter(isVisualize)
.map(v => v.yAxis)
) as string
}`,
onAction: () => {
if (isVisualizeEquation(visualize)) {
return;
}
addToDashboard(metricQuery);
},
disabled: isVisualizeEquation(visualize),
tooltip: isVisualizeEquation(visualize)
? t('Equations cannot currently be added to a dashboard')
: undefined,
};
}),
],
Expand Down
Loading