Skip to content

Commit ccdd394

Browse files
committed
fix: Groups
1 parent 4588b22 commit ccdd394

File tree

9 files changed

+59
-10
lines changed

9 files changed

+59
-10
lines changed

src/containers/Nodes/Nodes.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ export function Nodes({
5858

5959
const columnsWithPile = React.useMemo(() => {
6060
if (!bridgeModeEnabled) {
61-
return columns;
61+
// Ensure PileName is not present when bridge mode is off
62+
return columns.filter((c) => c.name !== NODES_COLUMNS_IDS.PileName);
6263
}
6364

6465
const hasPile = columns.some((c) => c.name === NODES_COLUMNS_IDS.PileName);

src/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {Select, TableColumnSetup, Text} from '@gravity-ui/uikit';
66
import {EntitiesCount} from '../../../components/EntitiesCount/EntitiesCount';
77
import {usePaginatedTableState} from '../../../components/PaginatedTable/PaginatedTableContext';
88
import {Search} from '../../../components/Search/Search';
9+
import {useBridgeModeEnabled} from '../../../store/reducers/capabilities/hooks';
910
import {useIsUserAllowedToMakeChanges} from '../../../utils/hooks/useIsUserAllowedToMakeChanges';
1011
import {STORAGE_GROUPS_GROUP_BY_OPTIONS} from '../PaginatedStorageGroupsTable/columns/constants';
1112
import {StorageTypeFilter} from '../StorageTypeFilter/StorageTypeFilter';
@@ -49,6 +50,13 @@ export function StorageGroupsControls({
4950
} = useStorageQueryParams();
5051

5152
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
53+
const bridgeModeEnabled = useBridgeModeEnabled();
54+
const groupByOptions = React.useMemo(() => {
55+
if (bridgeModeEnabled) {
56+
return STORAGE_GROUPS_GROUP_BY_OPTIONS;
57+
}
58+
return STORAGE_GROUPS_GROUP_BY_OPTIONS.filter((opt) => opt.value !== 'PileName');
59+
}, [bridgeModeEnabled]);
5260

5361
const handleGroupBySelectUpdate = (value: string[]) => {
5462
handleStorageGroupsGroupByParamChange(value[0]);
@@ -91,7 +99,7 @@ export function StorageGroupsControls({
9199
storageGroupsGroupByParam ? [storageGroupsGroupByParam] : undefined
92100
}
93101
onUpdate={handleGroupBySelectUpdate}
94-
options={STORAGE_GROUPS_GROUP_BY_OPTIONS}
102+
options={groupByOptions}
95103
/>
96104
</React.Fragment>
97105
) : null}

src/containers/Storage/PaginatedStorageGroupsTable/columns/columns.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ const poolNameColumn: StorageGroupsColumn = {
5252
align: DataTable.LEFT,
5353
};
5454

55+
const pileNameColumn: StorageGroupsColumn = {
56+
name: STORAGE_GROUPS_COLUMNS_IDS.PileName,
57+
header: STORAGE_GROUPS_COLUMNS_TITLES.PileName,
58+
width: 120,
59+
render: ({row}) => row.PileName || EMPTY_DATA_PLACEHOLDER,
60+
align: DataTable.LEFT,
61+
};
62+
5563
const typeColumn: StorageGroupsColumn = {
5664
name: STORAGE_GROUPS_COLUMNS_IDS.MediaType,
5765
header: STORAGE_GROUPS_COLUMNS_TITLES.MediaType,
@@ -267,6 +275,7 @@ export const getStorageGroupsColumns: StorageColumnsGetter = (data) => {
267275
const columns = [
268276
groupIdColumn,
269277
poolNameColumn,
278+
pileNameColumn,
270279
typeColumn,
271280
erasureColumn,
272281
degradedColumn,

src/containers/Storage/PaginatedStorageGroupsTable/columns/constants.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const STORAGE_GROUPS_SELECTED_COLUMNS_LS_KEY = 'storageGroupsSelectedColu
1616
export const STORAGE_GROUPS_COLUMNS_IDS = {
1717
GroupId: 'GroupId',
1818
PoolName: 'PoolName',
19+
PileName: 'PileName',
1920
MediaType: 'MediaType',
2021
Erasure: 'Erasure',
2122
Used: 'Used',
@@ -72,6 +73,9 @@ export const STORAGE_GROUPS_COLUMNS_TITLES = {
7273
get MediaType() {
7374
return i18n('type');
7475
},
76+
get PileName() {
77+
return i18n('pile-name');
78+
},
7579
get Erasure() {
7680
return i18n('erasure');
7781
},
@@ -135,6 +139,9 @@ const STORAGE_GROUPS_COLUMNS_GROUP_BY_TITLES = {
135139
get PoolName() {
136140
return i18n('pool-name');
137141
},
142+
get PileName() {
143+
return i18n('pile-name');
144+
},
138145
get Kind() {
139146
return i18n('type');
140147
},
@@ -157,6 +164,7 @@ const STORAGE_GROUPS_COLUMNS_GROUP_BY_TITLES = {
157164

158165
const STORAGE_GROUPS_GROUP_BY_PARAMS = [
159166
'PoolName',
167+
'PileName',
160168
'MediaType',
161169
'Encryption',
162170
'Erasure',
@@ -187,6 +195,7 @@ export const storageGroupsGroupByParamSchema = z
187195
export const GROUPS_COLUMNS_TO_DATA_FIELDS: Record<StorageGroupsColumnId, GroupsRequiredField[]> = {
188196
GroupId: ['GroupId'],
189197
PoolName: ['PoolName'],
198+
PileName: ['PileName'],
190199
// We display MediaType and Encryption in one Type column
191200
MediaType: ['MediaType', 'Encryption'],
192201
Erasure: ['Erasure'],
@@ -212,6 +221,7 @@ const STORAGE_GROUPS_COLUMNS_TO_SORT_FIELDS: Record<
212221
> = {
213222
GroupId: 'GroupId',
214223
PoolName: 'PoolName',
224+
PileName: undefined,
215225
MediaType: 'MediaType',
216226
Erasure: 'Erasure',
217227
Used: 'Used',

src/containers/Storage/PaginatedStorageGroupsTable/columns/hooks.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22

3+
import {useBridgeModeEnabled} from '../../../../store/reducers/capabilities/hooks';
34
import {VISIBLE_ENTITIES} from '../../../../store/reducers/storage/constants';
45
import {
56
useIsUserAllowedToMakeChanges,
@@ -25,21 +26,25 @@ export function useStorageGroupsSelectedColumns({
2526
}: GetStorageGroupsColumnsParams) {
2627
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
2728
const isViewerUser = useIsViewerUser();
29+
const bridgeModeEnabled = useBridgeModeEnabled();
2830

2931
const columns = React.useMemo(() => {
3032
const allColumns = getStorageGroupsColumns({viewContext});
33+
const filteredByBridge = bridgeModeEnabled
34+
? allColumns
35+
: allColumns.filter((c) => c.name !== STORAGE_GROUPS_COLUMNS_IDS.PileName);
3136

3237
if (isUserAllowedToMakeChanges) {
33-
return allColumns;
38+
return filteredByBridge;
3439
}
35-
const filteredColumns = allColumns.filter(
40+
const filteredColumns = filteredByBridge.filter(
3641
(column) => !isMonitoringUserGroupsColumn(column.name),
3742
);
3843
if (isViewerUser) {
3944
return filteredColumns;
4045
}
4146
return filteredColumns.filter((column) => !isViewerGroupsColumn(column.name));
42-
}, [isUserAllowedToMakeChanges, viewContext, isViewerUser]);
47+
}, [isUserAllowedToMakeChanges, viewContext, isViewerUser, bridgeModeEnabled]);
4348

4449
const requiredColumns = React.useMemo(() => {
4550
if (visibleEntities === VISIBLE_ENTITIES.missing) {
@@ -53,11 +58,20 @@ export function useStorageGroupsSelectedColumns({
5358
return REQUIRED_STORAGE_GROUPS_COLUMNS;
5459
}, [visibleEntities]);
5560

61+
const defaultColumns = React.useMemo(() => {
62+
if (!bridgeModeEnabled) {
63+
return DEFAULT_STORAGE_GROUPS_COLUMNS;
64+
}
65+
return DEFAULT_STORAGE_GROUPS_COLUMNS.includes(STORAGE_GROUPS_COLUMNS_IDS.PileName)
66+
? DEFAULT_STORAGE_GROUPS_COLUMNS
67+
: [...DEFAULT_STORAGE_GROUPS_COLUMNS, STORAGE_GROUPS_COLUMNS_IDS.PileName];
68+
}, [bridgeModeEnabled]);
69+
5670
return useSelectedColumns(
5771
columns,
5872
STORAGE_GROUPS_SELECTED_COLUMNS_LS_KEY,
5973
STORAGE_GROUPS_COLUMNS_TITLES,
60-
DEFAULT_STORAGE_GROUPS_COLUMNS,
74+
defaultColumns,
6175
requiredColumns,
6276
);
6377
}

src/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"pool-name": "Pool Name",
3+
"pile-name": "Pile Name",
34
"type": "Type",
45
"encryption": "Encryption",
56
"erasure": "Erasure",

src/containers/Storage/PaginatedStorageNodesTable/columns/hooks.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,17 @@ export function useStorageNodesSelectedColumns({
2323
viewContext,
2424
columnsSettings,
2525
}: GetStorageNodesColumnsParams) {
26+
const bridgeModeEnabled = useBridgeModeEnabled();
27+
2628
const columns = React.useMemo(() => {
27-
return getStorageNodesColumns({
29+
const all = getStorageNodesColumns({
2830
database,
2931
additionalNodesProps,
3032
viewContext,
3133
columnsSettings,
3234
});
33-
}, [database, additionalNodesProps, viewContext, columnsSettings]);
34-
35-
const bridgeModeEnabled = useBridgeModeEnabled();
35+
return bridgeModeEnabled ? all : all.filter((c) => c.name !== NODES_COLUMNS_IDS.PileName);
36+
}, [database, additionalNodesProps, viewContext, columnsSettings, bridgeModeEnabled]);
3637

3738
const requiredColumns = React.useMemo(() => {
3839
if (visibleEntities === VISIBLE_ENTITIES.missing) {

src/store/reducers/storage/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export interface PreparedStorageGroupFilters {
5757

5858
export interface PreparedStorageGroup {
5959
PoolName?: string;
60+
PileName?: string;
6061
MediaType?: string;
6162
Encryption?: boolean;
6263
ErasureSpecies?: Erasure;

src/types/api/storage.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ export interface TGroupsStorageGroupInfo {
132132
/** uint64 */
133133
GroupGeneration?: string;
134134
PoolName?: string;
135+
// Bridge mode
136+
PileName?: string;
135137
Encryption?: boolean;
136138
Overall?: EFlag;
137139
DiskSpace?: EFlag;
@@ -278,6 +280,7 @@ export type GroupsGroupByField =
278280
| 'Usage'
279281
| 'DiskSpaceUsage'
280282
| 'PoolName'
283+
| 'PileName'
281284
| 'Kind'
282285
| 'Encryption'
283286
| 'MediaType'
@@ -288,6 +291,7 @@ export type GroupsGroupByField =
288291
export type GroupsRequiredField =
289292
| 'GroupId' // always required
290293
| 'PoolName'
294+
| 'PileName'
291295
| 'Kind'
292296
| 'MediaType'
293297
| 'Erasure'

0 commit comments

Comments
 (0)