diff --git a/static/app/components/modals/addDashboardWidgetModal.tsx b/static/app/components/modals/addDashboardWidgetModal.tsx index 607c4438a36e19..d75a9f3a4b8425 100644 --- a/static/app/components/modals/addDashboardWidgetModal.tsx +++ b/static/app/components/modals/addDashboardWidgetModal.tsx @@ -62,6 +62,7 @@ export type DashboardWidgetModalOptions = { defaultWidgetQuery?: WidgetQuery; defaultTableColumns?: readonly string[]; defaultTitle?: string; + displayType?: DisplayType; fromDiscover?: boolean; start?: DateString; end?: DateString; @@ -102,12 +103,11 @@ class AddDashboardWidgetModal extends React.Component { constructor(props: Props) { super(props); - const {widget, defaultWidgetQuery, defaultTitle, fromDiscover} = props; - + const {widget, defaultWidgetQuery, defaultTitle, displayType, fromDiscover} = props; if (!widget) { this.state = { title: defaultTitle ?? '', - displayType: DisplayType.LINE, + displayType: displayType ?? DisplayType.LINE, interval: '5m', queries: [defaultWidgetQuery ? {...defaultWidgetQuery} : {...newQuery}], errors: undefined, diff --git a/static/app/views/eventsV2/queryList.tsx b/static/app/views/eventsV2/queryList.tsx index dbeabd53e7cf99..c951b4f513b741 100644 --- a/static/app/views/eventsV2/queryList.tsx +++ b/static/app/views/eventsV2/queryList.tsx @@ -23,12 +23,17 @@ import {Organization, SavedQuery} from 'app/types'; import {trackAnalyticsEvent} from 'app/utils/analytics'; import trackAdvancedAnalyticsEvent from 'app/utils/analytics/trackAdvancedAnalyticsEvent'; import EventView from 'app/utils/discover/eventView'; +import {DisplayModes} from 'app/utils/discover/types'; import parseLinkHeader from 'app/utils/parseLinkHeader'; import {decodeList} from 'app/utils/queryString'; import withApi from 'app/utils/withApi'; import {WidgetQuery} from 'app/views/dashboardsV2/types'; -import {handleCreateQuery, handleDeleteQuery} from './savedQuery/utils'; +import { + displayModeToDisplayType, + handleCreateQuery, + handleDeleteQuery, +} from './savedQuery/utils'; import MiniGraph from './miniGraph'; import QueryCard from './querycard'; import {getPrebuiltQueries} from './utils'; @@ -124,6 +129,7 @@ class QueryList extends React.Component { defaultTitle: savedQuery?.name ?? (eventView.name !== 'All Events' ? eventView.name : undefined), + displayType: displayModeToDisplayType(eventView.display as DisplayModes), }); }; diff --git a/static/app/views/eventsV2/savedQuery/index.tsx b/static/app/views/eventsV2/savedQuery/index.tsx index 3a06bced434f1a..3d23e68b4e8a8c 100644 --- a/static/app/views/eventsV2/savedQuery/index.tsx +++ b/static/app/views/eventsV2/savedQuery/index.tsx @@ -25,13 +25,19 @@ import {trackAnalyticsEvent} from 'app/utils/analytics'; import trackAdvancedAnalyticsEvent from 'app/utils/analytics/trackAdvancedAnalyticsEvent'; import EventView from 'app/utils/discover/eventView'; import {getEquation, isEquation} from 'app/utils/discover/fields'; +import {DisplayModes} from 'app/utils/discover/types'; import {getDiscoverLandingUrl} from 'app/utils/discover/urls'; import withApi from 'app/utils/withApi'; import withProjects from 'app/utils/withProjects'; import {WidgetQuery} from 'app/views/dashboardsV2/types'; import InputControl from 'app/views/settings/components/forms/controls/input'; -import {handleCreateQuery, handleDeleteQuery, handleUpdateQuery} from './utils'; +import { + displayModeToDisplayType, + handleCreateQuery, + handleDeleteQuery, + handleUpdateQuery, +} from './utils'; type DefaultProps = { disabled: boolean; @@ -262,6 +268,7 @@ class SavedQueryButtonGroup extends React.PureComponent { defaultTitle: savedQuery?.name ?? (eventView.name !== 'All Events' ? eventView.name : undefined), + displayType: displayModeToDisplayType(eventView.display as DisplayModes), }); }; diff --git a/static/app/views/eventsV2/savedQuery/utils.tsx b/static/app/views/eventsV2/savedQuery/utils.tsx index 89b9cd4c28ab63..d91e226a11a1f6 100644 --- a/static/app/views/eventsV2/savedQuery/utils.tsx +++ b/static/app/views/eventsV2/savedQuery/utils.tsx @@ -9,6 +9,8 @@ import {t} from 'app/locale'; import {NewQuery, Organization, SavedQuery} from 'app/types'; import {trackAnalyticsEvent} from 'app/utils/analytics'; import EventView from 'app/utils/discover/eventView'; +import {DisplayModes} from 'app/utils/discover/types'; +import {DisplayType} from 'app/views/dashboardsV2/types'; export function handleCreateQuery( api: Client, @@ -239,3 +241,14 @@ export function extractAnalyticsQueryFields(payload: NewQuery): Partial void 0} fromDiscover={fromDiscover} defaultWidgetQuery={defaultWidgetQuery} + displayType={displayType} />, initialData.routerContext ); @@ -928,4 +930,17 @@ describe('Modals -> AddDashboardWidgetModal', function () { expect(queryFields.at(2).props().fieldValue.function[0]).toEqual('count_unique'); wrapper.unmount(); }); + + it('uses displayType if given a displayType', async function () { + const wrapper = mountModal({ + initialData, + onAddWidget: () => undefined, + onUpdateWidget: () => undefined, + fromDiscover: true, + displayType: types.DisplayType.BAR, + }); + + expect(wrapper.find('SelectPicker').at(1).props().value.value).toEqual('bar'); + wrapper.unmount(); + }); });