|
1 | 1 | import {useMemo} from 'react'; |
| 2 | +import {useTheme} from '@emotion/react'; |
2 | 3 | import * as Sentry from '@sentry/react'; |
3 | 4 |
|
4 | 5 | import { |
@@ -32,6 +33,7 @@ interface UseSaveAsMetricItemsOptions { |
32 | 33 | } |
33 | 34 |
|
34 | 35 | export function useSaveAsMetricItems(_options: UseSaveAsMetricItemsOptions) { |
| 36 | + const theme = useTheme(); |
35 | 37 | const location = useLocation(); |
36 | 38 | const organization = useOrganization(); |
37 | 39 | const {saveQuery, updateQuery} = useSaveMetricsMultiQuery(); |
@@ -111,30 +113,46 @@ export function useSaveAsMetricItems(_options: UseSaveAsMetricItemsOptions) { |
111 | 113 | label: t('All Metrics'), |
112 | 114 | textValue: t('All Metrics'), |
113 | 115 | onAction: () => { |
114 | | - addToDashboard(metricQueries); |
| 116 | + addToDashboard( |
| 117 | + metricQueries.filter( |
| 118 | + metricQuery => |
| 119 | + !isVisualizeEquation(metricQuery.queryParams.visualizes[0]!) |
| 120 | + ) |
| 121 | + ); |
115 | 122 | }, |
116 | 123 | }, |
117 | 124 | ] |
118 | 125 | : []), |
119 | 126 | ...metricQueries.map((metricQuery, index) => { |
| 127 | + const visualize = metricQuery.queryParams.visualizes[0]!; |
120 | 128 | return { |
121 | 129 | key: `add-to-dashboard-${index}`, |
122 | | - label: `${metricQuery.label ?? getVisualizeLabel(index, isVisualizeEquation(metricQuery.queryParams.visualizes[0]!))}: ${ |
| 130 | + label: `${metricQuery.label ?? getVisualizeLabel(index, isVisualizeEquation(visualize))}: ${ |
123 | 131 | formatTraceMetricsFunction( |
124 | 132 | metricQuery.queryParams.aggregateFields |
125 | 133 | .filter(isVisualize) |
126 | 134 | .map(v => v.yAxis) |
127 | 135 | ) as string |
128 | 136 | }`, |
129 | 137 | onAction: () => { |
| 138 | + if (isVisualizeEquation(visualize)) { |
| 139 | + return; |
| 140 | + } |
130 | 141 | addToDashboard(metricQuery); |
131 | 142 | }, |
| 143 | + disabled: isVisualizeEquation(visualize), |
| 144 | + tooltip: isVisualizeEquation(visualize) |
| 145 | + ? t('Equations cannot currently be added to a dashboard') |
| 146 | + : undefined, |
| 147 | + style: isVisualizeEquation(visualize) |
| 148 | + ? {color: theme.tokens.content.disabled} |
| 149 | + : undefined, |
132 | 150 | }; |
133 | 151 | }), |
134 | 152 | ], |
135 | 153 | }, |
136 | 154 | ]; |
137 | | - }, [addToDashboard, metricQueries]); |
| 155 | + }, [addToDashboard, metricQueries, theme.tokens.content.disabled]); |
138 | 156 |
|
139 | 157 | return useMemo(() => { |
140 | 158 | return [...saveAsItems, ...addToDashboardItems]; |
|
0 commit comments