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
69 changes: 19 additions & 50 deletions static/app/views/explore/metrics/metricToolbar/metricSaveAs.tsx
Original file line number Diff line number Diff line change
@@ -1,27 +1,13 @@
import {Button} from '@sentry/scraps/button';
import {Tooltip} from '@sentry/scraps/tooltip';

import {DropdownMenu} from 'sentry/components/dropdownMenu';
import {t} from 'sentry/locale';
import {useChartInterval} from 'sentry/utils/useChartInterval';
import {useOrganization} from 'sentry/utils/useOrganization';
import {canUseMetricsMultiAggregateUI} from 'sentry/views/explore/metrics/metricsFlags';
import {useMultiMetricsQueryParams} from 'sentry/views/explore/metrics/multiMetricsQueryParams';
import {useSaveAsMetricItems} from 'sentry/views/explore/metrics/useSaveAsMetricItems';

export function MetricSaveAs() {
const [interval] = useChartInterval();
const items = useSaveAsMetricItems({interval});
const metricQueries = useMultiMetricsQueryParams();

const organization = useOrganization();
const hasMultiVisualize = canUseMetricsMultiAggregateUI(organization);

const hasMultiAggregate = metricQueries.some(
query => query.queryParams.visualizes.length > 1
);

const isMultiVisDisabled = hasMultiVisualize && hasMultiAggregate;

if (items.length === 0) {
return null;
Expand All @@ -30,46 +16,29 @@ export function MetricSaveAs() {
if (items.length === 1 && 'onAction' in items[0]! && !('children' in items[0])) {
const item = items[0];
return (
<Tooltip
disabled={!isMultiVisDisabled}
title={t('Saving multi-aggregate metrics is not supported during early access.')}
>
<Button size="sm" onClick={item.onAction} aria-label={item.textValue}>
{t('Save as')}…
</Button>
);
}

return (
<DropdownMenu
items={items}
trigger={triggerProps => (
<Button
{...triggerProps}
size="sm"
onClick={item.onAction}
aria-label={item.textValue}
disabled={isMultiVisDisabled}
aria-label={t('Save as')}
onClick={e => {
e.stopPropagation();
e.preventDefault();
triggerProps.onClick?.(e);
}}
>
{t('Save as')}…
</Button>
</Tooltip>
);
}

return (
<Tooltip
disabled={!isMultiVisDisabled}
title={t('Saving multi-aggregate metrics is not supported during early access.')}
>
<DropdownMenu
isDisabled={isMultiVisDisabled}
items={items}
trigger={triggerProps => (
<Button
{...triggerProps}
disabled={isMultiVisDisabled}
size="sm"
aria-label={t('Save as')}
onClick={e => {
e.stopPropagation();
e.preventDefault();
triggerProps.onClick?.(e);
}}
>
{t('Save as')}…
</Button>
)}
/>
</Tooltip>
)}
/>
);
}
Loading