Skip to content

Commit 4b6d9d8

Browse files
committed
ui: remove reset sql stats for non-admin
Continuation from #95303 The previous PR missed the reset on the Transactions tab. This PR removes the reset sql stats for non-admin users. Fixes #95213 Release note (ui change): Remove `reset sql stats` from Transactions page for non-admins.
1 parent 0e835dd commit 4b6d9d8

File tree

6 files changed

+37
-11
lines changed

6 files changed

+37
-11
lines changed

pkg/ui/workspaces/cluster-ui/src/store/sqlStats/sqlStats.selector.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ import { adminUISelector } from "../utils/selectors";
1313

1414
export const sqlStatsSelector = createSelector(
1515
adminUISelector,
16-
adminUiState => adminUiState.sqlStats,
16+
adminUiState => adminUiState?.sqlStats,
1717
);

pkg/ui/workspaces/cluster-ui/src/transactionDetails/transactionDetailsConnected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import { txnFingerprintIdAttr, getMatchParamByName } from "../util";
3737
import { TimeScale } from "../timeScaleDropdown";
3838

3939
export const selectTransaction = createSelector(
40-
(state: AppState) => state.adminUI.sqlStats,
40+
(state: AppState) => state.adminUI?.sqlStats,
4141
(_state: AppState, props: RouteComponentProps) => props,
4242
(transactionState, props) => {
4343
const transactions = transactionState.data?.transactions;

pkg/ui/workspaces/cluster-ui/src/transactionsPage/transactionsPage.stories.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,12 @@ storiesOf("Transactions Page", module)
4242
timeScale={timeScale}
4343
filters={filters}
4444
nodeRegions={nodeRegions}
45+
hasAdminRole={true}
4546
onFilterChange={noop}
4647
onSortingChange={noop}
4748
refreshData={noop}
4849
refreshNodes={noop}
50+
refreshUserSQLRoles={noop}
4951
resetSQLStats={noop}
5052
search={""}
5153
sortSetting={sortSetting}
@@ -61,10 +63,12 @@ storiesOf("Transactions Page", module)
6163
timeScale={timeScale}
6264
filters={filters}
6365
nodeRegions={nodeRegions}
66+
hasAdminRole={true}
6467
onFilterChange={noop}
6568
onSortingChange={noop}
6669
refreshData={noop}
6770
refreshNodes={noop}
71+
refreshUserSQLRoles={noop}
6872
resetSQLStats={noop}
6973
search={""}
7074
sortSetting={sortSetting}
@@ -88,10 +92,12 @@ storiesOf("Transactions Page", module)
8892
filters={filters}
8993
history={history}
9094
nodeRegions={nodeRegions}
95+
hasAdminRole={true}
9196
onFilterChange={noop}
9297
onSortingChange={noop}
9398
refreshData={noop}
9499
refreshNodes={noop}
100+
refreshUserSQLRoles={noop}
95101
resetSQLStats={noop}
96102
search={""}
97103
sortSetting={sortSetting}
@@ -108,10 +114,12 @@ storiesOf("Transactions Page", module)
108114
timeScale={timeScale}
109115
filters={filters}
110116
nodeRegions={nodeRegions}
117+
hasAdminRole={true}
111118
onFilterChange={noop}
112119
onSortingChange={noop}
113120
refreshData={noop}
114121
refreshNodes={noop}
122+
refreshUserSQLRoles={noop}
115123
resetSQLStats={noop}
116124
search={""}
117125
sortSetting={sortSetting}
@@ -135,10 +143,12 @@ storiesOf("Transactions Page", module)
135143
}
136144
filters={filters}
137145
nodeRegions={nodeRegions}
146+
hasAdminRole={true}
138147
onFilterChange={noop}
139148
onSortingChange={noop}
140149
refreshData={noop}
141150
refreshNodes={noop}
151+
refreshUserSQLRoles={noop}
142152
resetSQLStats={noop}
143153
search={""}
144154
sortSetting={sortSetting}

pkg/ui/workspaces/cluster-ui/src/transactionsPage/transactionsPage.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,13 @@ export interface TransactionsPageStateProps {
9595
pageSize?: number;
9696
search: string;
9797
sortSetting: SortSetting;
98+
hasAdminRole?: UIConfigState["hasAdminRole"];
9899
}
99100

100101
export interface TransactionsPageDispatchProps {
101102
refreshData: (req: StatementsRequest) => void;
102103
refreshNodes: () => void;
104+
refreshUserSQLRoles: () => void;
103105
resetSQLStats: (req: StatementsRequest) => void;
104106
onTimeScaleChange?: (ts: TimeScale) => void;
105107
onColumnsChange?: (selectedColumns: string[]) => void;
@@ -238,6 +240,7 @@ export class TransactionsPage extends React.Component<
238240
}
239241

240242
this.props.refreshNodes();
243+
this.props.refreshUserSQLRoles();
241244
}
242245

243246
componentWillUnmount(): void {
@@ -399,6 +402,7 @@ export class TransactionsPage extends React.Component<
399402
columns: userSelectedColumnsToShow,
400403
sortSetting,
401404
search,
405+
hasAdminRole,
402406
} = this.props;
403407
const internal_app_name_prefix = data?.internal_app_name_prefix || "";
404408
const statements = data?.statements || [];
@@ -471,12 +475,14 @@ export class TransactionsPage extends React.Component<
471475
setTimeScale={this.changeTimeScale}
472476
/>
473477
</PageConfigItem>
474-
<PageConfigItem className={commonStyles("separator")}>
475-
<ClearStats
476-
resetSQLStats={this.resetSQLStats}
477-
tooltipType="transaction"
478-
/>
479-
</PageConfigItem>
478+
{hasAdminRole && (
479+
<PageConfigItem className={commonStyles("separator")}>
480+
<ClearStats
481+
resetSQLStats={this.resetSQLStats}
482+
tooltipType="transaction"
483+
/>
484+
</PageConfigItem>
485+
)}
480486
</PageConfig>
481487
<div className={cx("table-area")}>
482488
<Loading

pkg/ui/workspaces/cluster-ui/src/transactionsPage/transactionsPageConnected.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { connect } from "react-redux";
1212
import { RouteComponentProps, withRouter } from "react-router-dom";
1313
import { Dispatch } from "redux";
1414

15-
import { AppState } from "src/store";
15+
import { AppState, uiConfigActions } from "src/store";
1616
import { actions as nodesActions } from "src/store/nodes";
1717
import { actions as sqlStatsActions } from "src/store/sqlStats";
1818
import {
@@ -27,7 +27,7 @@ import {
2727
selectFilters,
2828
selectSearch,
2929
} from "./transactionsPage.selectors";
30-
import { selectIsTenant } from "../store/uiConfig";
30+
import { selectHasAdminRole, selectIsTenant } from "../store/uiConfig";
3131
import { nodeRegionsByIDSelector } from "../store/nodes";
3232
import { selectStatementsLastUpdated } from "src/statementsPage/statementsPage.selectors";
3333
import { selectTimeScale } from "../store/utils/selectors";
@@ -79,6 +79,7 @@ export const TransactionsPageConnected = withRouter(
7979
nodeRegions: nodeRegionsByIDSelector(state),
8080
search: selectSearch(state),
8181
sortSetting: selectSortSetting(state),
82+
hasAdminRole: selectHasAdminRole(state),
8283
},
8384
activePageProps: mapStateToRecentTransactionsPageProps(state),
8485
}),
@@ -87,6 +88,8 @@ export const TransactionsPageConnected = withRouter(
8788
refreshData: (req: StatementsRequest) =>
8889
dispatch(sqlStatsActions.refresh(req)),
8990
refreshNodes: () => dispatch(nodesActions.refresh()),
91+
refreshUserSQLRoles: () =>
92+
dispatch(uiConfigActions.refreshUserSQLRoles()),
9093
resetSQLStats: (req: StatementsRequest) =>
9194
dispatch(sqlStatsActions.reset(req)),
9295
onTimeScaleChange: (ts: TimeScale) => {

pkg/ui/workspaces/db-console/src/views/transactions/transactionsPage.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@
1111
import { connect } from "react-redux";
1212
import { createSelector } from "reselect";
1313
import { RouteComponentProps, withRouter } from "react-router-dom";
14-
import { refreshNodes, refreshStatements } from "src/redux/apiReducers";
14+
import {
15+
refreshNodes,
16+
refreshStatements,
17+
refreshUserSQLRoles,
18+
} from "src/redux/apiReducers";
1519
import { resetSQLStatsAction } from "src/redux/sqlStats";
1620
import { CachedDataReducerState } from "src/redux/cachedDataReducer";
1721
import { AdminUIState } from "src/redux/state";
22+
import { selectHasAdminRole } from "src/redux/user";
1823
import { StatementsResponseMessage } from "src/util/api";
1924

2025
import { PrintTime } from "src/views/reports/containers/range/print";
@@ -96,6 +101,7 @@ export const transactionColumnsLocalSetting = new LocalSetting(
96101
const fingerprintsPageActions = {
97102
refreshData: refreshStatements,
98103
refreshNodes,
104+
refreshUserSQLRoles,
99105
resetSQLStats: resetSQLStatsAction,
100106
onTimeScaleChange: setGlobalTimeScaleAction,
101107
// We use `null` when the value was never set and it will show all columns.
@@ -150,6 +156,7 @@ const TransactionsPageConnected = withRouter(
150156
search: searchLocalSetting.selector(state),
151157
sortSetting: sortSettingLocalSetting.selector(state),
152158
statementsError: state.cachedData.statements.lastError,
159+
hasAdminRole: selectHasAdminRole(state),
153160
},
154161
activePageProps: mapStateToRecentTransactionsPageProps(state),
155162
}),

0 commit comments

Comments
 (0)