Skip to content

Commit 157fe3c

Browse files
lzhao-sentryandrewshie-sentry
authored andcommitted
feat(dashboards): add basic cell actions to dashboard table widgets (#97601)
### Changes Adds cell actions to dashboard table widgets only. Cell actions are disabled for any preview widgets (add to dashboard modal and widget builder). Also disabled in widget viewer modal for now, as a z-indexing bug needs to be resolved. The change is only visible if `discover-cell-actions-v2` is enabled. ### Video https://github.com/user-attachments/assets/9b759e93-80f5-44a7-9d34-6f1413b3a8b9
1 parent de5bc95 commit 157fe3c

File tree

6 files changed

+19
-2
lines changed

6 files changed

+19
-2
lines changed

static/app/components/modals/widgetBuilder/addToDashboardModal.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ function AddToDashboardModal({
381381
disableFullscreen
382382
onWidgetTableResizeColumn={handleWidgetTableColumnResize}
383383
onWidgetTableSort={handleWidgetTableSort}
384+
disableTableActions
384385
/>
385386
</WidgetCardWrapper>
386387
<IndexedEventsSelectionAlert widget={widget} />

static/app/views/dashboards/widgetBuilder/components/widgetPreview.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ function WidgetPreview({
137137
showLoadingText
138138
onWidgetTableSort={handleWidgetTableSort}
139139
onWidgetTableResizeColumn={handleWidgetTableResizeColumn}
140+
disableTableActions
140141
/>
141142
);
142143
}

static/app/views/dashboards/widgetCard/chart.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ type WidgetCardChartProps = Pick<
9696
widgetLegendState: WidgetLegendSelectionState;
9797
chartGroup?: string;
9898
confidence?: Confidence;
99+
disableTableActions?: boolean;
99100
disableZoom?: boolean;
100101
expandNumbers?: boolean;
101102
isMobile?: boolean;
@@ -160,6 +161,7 @@ class WidgetCardChart extends Component<WidgetCardChartProps> {
160161
theme,
161162
onWidgetTableSort,
162163
onWidgetTableResizeColumn,
164+
disableTableActions,
163165
} = this.props;
164166
if (loading || !tableResults?.[0]) {
165167
// Align height to other charts.
@@ -205,6 +207,7 @@ class WidgetCardChart extends Component<WidgetCardChartProps> {
205207
}
206208
}
207209

210+
const useCellActionsV2 = organization.features.includes('discover-cell-actions-v2');
208211
return (
209212
<TableWrapper key={`table:${result.title}`}>
210213
{organization.features.includes('dashboards-use-widget-table-visualization') ? (
@@ -239,7 +242,9 @@ class WidgetCardChart extends Component<WidgetCardChartProps> {
239242
} satisfies RenderFunctionBaggage;
240243
}}
241244
onResizeColumn={onWidgetTableResizeColumn}
242-
allowedCellActions={[]}
245+
allowedCellActions={
246+
disableTableActions || !useCellActionsV2 ? [] : undefined
247+
}
243248
/>
244249
) : (
245250
<StyledSimpleTableChart

static/app/views/dashboards/widgetCard/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ type Props = WithRouterProps & {
7272
borderless?: boolean;
7373
dashboardFilters?: DashboardFilters;
7474
disableFullscreen?: boolean;
75+
disableTableActions?: boolean;
7576
disableZoom?: boolean;
7677
forceDescriptionTooltip?: boolean;
7778
hasEditAccess?: boolean;
@@ -161,6 +162,7 @@ function WidgetCard(props: Props) {
161162
router,
162163
onWidgetTableSort,
163164
onWidgetTableResizeColumn,
165+
disableTableActions,
164166
} = props;
165167

166168
if (widget.displayType === DisplayType.TOP_N) {
@@ -337,6 +339,7 @@ function WidgetCard(props: Props) {
337339
showLoadingText={showLoadingText && isLoadingTextVisible}
338340
onWidgetTableSort={onWidgetTableSort}
339341
onWidgetTableResizeColumn={onWidgetTableResizeColumn}
342+
disableTableActions={disableTableActions}
340343
/>
341344
</WidgetFrame>
342345
</VisuallyCompleteWithData>

static/app/views/dashboards/widgetCard/issueWidgetCard.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ type Props = {
3131
selection: PageFilters;
3232
theme: Theme;
3333
widget: Widget;
34+
disableTableActions?: boolean;
3435
errorMessage?: string;
3536
onWidgetTableResizeColumn?: (columns: TabularColumn[]) => void;
3637
tableResults?: TableData[];
@@ -46,6 +47,7 @@ export function IssueWidgetCard({
4647
location,
4748
theme,
4849
onWidgetTableResizeColumn,
50+
disableTableActions,
4951
}: Props) {
5052
const datasetConfig = getDatasetConfig(WidgetType.ISSUE);
5153

@@ -83,6 +85,7 @@ export function IssueWidgetCard({
8385
return datasetConfig.getCustomFieldRenderer?.(field, meta, widget, org) || null;
8486
};
8587

88+
const useCellActionsV2 = organization.features.includes('discover-cell-actions-v2');
8689
return organization.features.includes('dashboards-use-widget-table-visualization') ? (
8790
<TableContainer>
8891
<TableWidgetVisualization
@@ -113,7 +116,7 @@ export function IssueWidgetCard({
113116
} satisfies RenderFunctionBaggage;
114117
}}
115118
onResizeColumn={onWidgetTableResizeColumn}
116-
allowedCellActions={[]}
119+
allowedCellActions={disableTableActions || !useCellActionsV2 ? [] : undefined}
117120
/>
118121
</TableContainer>
119122
) : (

static/app/views/dashboards/widgetCard/widgetCardChartContainer.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type Props = {
3838
widgetLegendState: WidgetLegendSelectionState;
3939
chartGroup?: string;
4040
dashboardFilters?: DashboardFilters;
41+
disableTableActions?: boolean;
4142
disableZoom?: boolean;
4243
expandNumbers?: boolean;
4344
isMobile?: boolean;
@@ -95,6 +96,7 @@ export function WidgetCardChartContainer({
9596
showLoadingText,
9697
onWidgetTableSort,
9798
onWidgetTableResizeColumn,
99+
disableTableActions,
98100
}: Props) {
99101
const location = useLocation();
100102
const theme = useTheme();
@@ -177,6 +179,7 @@ export function WidgetCardChartContainer({
177179
theme={theme}
178180
organization={organization}
179181
onWidgetTableResizeColumn={onWidgetTableResizeColumn}
182+
disableTableActions={disableTableActions}
180183
/>
181184
</Fragment>
182185
);
@@ -223,6 +226,7 @@ export function WidgetCardChartContainer({
223226
theme={theme}
224227
onWidgetTableSort={onWidgetTableSort}
225228
onWidgetTableResizeColumn={onWidgetTableResizeColumn}
229+
disableTableActions={disableTableActions}
226230
/>
227231
</Fragment>
228232
);

0 commit comments

Comments
 (0)