Skip to content

Commit 6c0f32b

Browse files
authored
Data Table: Add delete column button on data table (#6410)
Add ability to remove column directly from data table rather than navigating to settings panel to remove.
1 parent ddd0f84 commit 6c0f32b

19 files changed

+602
-223
lines changed

tensorboard/webapp/metrics/actions/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ export const dataTableColumnEdited = createAction(
240240
);
241241

242242
export const dataTableColumnToggled = createAction(
243-
'[Metrics] Data table column toggled in edit menu',
243+
'[Metrics] Data table column toggled in edit menu or delete button clicked',
244244
props<HeaderToggleInfo>()
245245
);
246246

tensorboard/webapp/metrics/internal_types.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,9 @@ export interface HeaderEditInfo {
100100
}
101101

102102
export interface HeaderToggleInfo {
103-
dataTableMode: DataTableMode;
104103
headerType: ColumnHeaderType;
104+
cardId?: CardId;
105+
dataTableMode?: DataTableMode;
105106
}
106107

107108
export const SCALARS_SMOOTHING_MIN = 0;

tensorboard/webapp/metrics/store/metrics_reducers.ts

+43-30
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import {
5555
buildOrReturnStateWithPinnedCopy,
5656
buildOrReturnStateWithUnresolvedImportedPins,
5757
canCreateNewPins,
58+
cardRangeSelectionEnabled,
5859
createPluginDataWithLoadable,
5960
createRunToLoadState,
6061
generateNextCardStepIndex,
@@ -1372,46 +1373,58 @@ const reducer = createReducer(
13721373
singleSelectionHeaders: enabledNewHeaders.concat(disabledNewHeaders),
13731374
};
13741375
}),
1375-
on(actions.dataTableColumnToggled, (state, {dataTableMode, headerType}) => {
1376-
const targetedHeaders =
1377-
dataTableMode === DataTableMode.RANGE
1376+
on(
1377+
actions.dataTableColumnToggled,
1378+
(state, {dataTableMode, headerType, cardId}) => {
1379+
const {cardStateMap, rangeSelectionEnabled, linkedTimeEnabled} = state;
1380+
const rangeEnabled = cardId
1381+
? cardRangeSelectionEnabled(
1382+
cardStateMap,
1383+
rangeSelectionEnabled,
1384+
linkedTimeEnabled,
1385+
cardId
1386+
)
1387+
: dataTableMode === DataTableMode.RANGE;
1388+
1389+
const targetedHeaders = rangeEnabled
13781390
? state.rangeSelectionHeaders
13791391
: state.singleSelectionHeaders;
13801392

1381-
const currentToggledHeaderIndex = targetedHeaders.findIndex(
1382-
(element) => element.type === headerType
1383-
);
1393+
const currentToggledHeaderIndex = targetedHeaders.findIndex(
1394+
(element) => element.type === headerType
1395+
);
13841396

1385-
// If the header is being enabled it goes at the bottom of the currently
1386-
// enabled headers. If it is being disabled it goes to the top of the
1387-
// currently disabled headers.
1388-
let newToggledHeaderIndex = getEnabledCount(targetedHeaders);
1389-
if (targetedHeaders[currentToggledHeaderIndex].enabled) {
1390-
newToggledHeaderIndex--;
1391-
}
1392-
const newHeaders = moveHeader(
1393-
currentToggledHeaderIndex,
1394-
newToggledHeaderIndex,
1395-
targetedHeaders
1396-
);
1397+
// If the header is being enabled it goes at the bottom of the currently
1398+
// enabled headers. If it is being disabled it goes to the top of the
1399+
// currently disabled headers.
1400+
let newToggledHeaderIndex = getEnabledCount(targetedHeaders);
1401+
if (targetedHeaders[currentToggledHeaderIndex].enabled) {
1402+
newToggledHeaderIndex--;
1403+
}
1404+
const newHeaders = moveHeader(
1405+
currentToggledHeaderIndex,
1406+
newToggledHeaderIndex,
1407+
targetedHeaders
1408+
);
13971409

1398-
newHeaders[newToggledHeaderIndex] = {
1399-
...newHeaders[newToggledHeaderIndex],
1400-
enabled: !newHeaders[newToggledHeaderIndex].enabled,
1401-
};
1410+
newHeaders[newToggledHeaderIndex] = {
1411+
...newHeaders[newToggledHeaderIndex],
1412+
enabled: !newHeaders[newToggledHeaderIndex].enabled,
1413+
};
1414+
1415+
if (rangeEnabled) {
1416+
return {
1417+
...state,
1418+
rangeSelectionHeaders: newHeaders,
1419+
};
1420+
}
14021421

1403-
if (dataTableMode === DataTableMode.RANGE) {
14041422
return {
14051423
...state,
1406-
rangeSelectionHeaders: newHeaders,
1424+
singleSelectionHeaders: newHeaders,
14071425
};
14081426
}
1409-
1410-
return {
1411-
...state,
1412-
singleSelectionHeaders: newHeaders,
1413-
};
1414-
}),
1427+
),
14151428
on(actions.metricsToggleVisiblePlugin, (state, {plugin}) => {
14161429
let nextFilteredPluginTypes = new Set(state.filteredPluginTypes);
14171430
if (nextFilteredPluginTypes.has(plugin)) {

0 commit comments

Comments
 (0)