ydb-embedded-ui 6.31.0 → 6.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. package/dist/components/AutoRefreshControl/AutoRefreshControl.js +1 -1
  2. package/dist/components/AutoRefreshControl/AutoRefreshControl.js.map +1 -1
  3. package/dist/components/BasicNodeViewer/BasicNodeViewer.js +9 -5
  4. package/dist/components/BasicNodeViewer/BasicNodeViewer.js.map +1 -1
  5. package/dist/components/NodeHostWrapper/NodeHostWrapper.js +9 -5
  6. package/dist/components/NodeHostWrapper/NodeHostWrapper.js.map +1 -1
  7. package/dist/components/PDiskPopup/PDiskPopup.js +9 -9
  8. package/dist/components/PDiskPopup/PDiskPopup.js.map +1 -1
  9. package/dist/components/PaginatedTable/types.d.ts +1 -1
  10. package/dist/components/Search/Search.d.ts +3 -1
  11. package/dist/components/Search/Search.js +2 -2
  12. package/dist/components/Search/Search.js.map +1 -1
  13. package/dist/components/TabletNameWrapper/TabletNameWrapper.js +1 -1
  14. package/dist/components/TabletNameWrapper/TabletNameWrapper.js.map +1 -1
  15. package/dist/components/TenantNameWrapper/TenantNameWrapper.js +1 -1
  16. package/dist/components/TenantNameWrapper/TenantNameWrapper.js.map +1 -1
  17. package/dist/components/TooltipsContent/NodeEndpointsTooltipContent/NodeEndpointsTooltipContent.js +10 -10
  18. package/dist/components/TooltipsContent/NodeEndpointsTooltipContent/NodeEndpointsTooltipContent.js.map +1 -1
  19. package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
  20. package/dist/components/VDiskPopup/VDiskPopup.js +1 -9
  21. package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
  22. package/dist/components/nodesColumns/constants.d.ts +4 -0
  23. package/dist/components/nodesColumns/constants.js +10 -0
  24. package/dist/components/nodesColumns/constants.js.map +1 -1
  25. package/dist/components/nodesColumns/i18n/en.json +2 -0
  26. package/dist/components/nodesColumns/i18n/index.d.ts +1 -1
  27. package/dist/containers/Clusters/i18n/index.d.ts +1 -1
  28. package/dist/containers/Header/Header.js +2 -9
  29. package/dist/containers/Header/Header.js.map +1 -1
  30. package/dist/containers/Nodes/Nodes.js +11 -33
  31. package/dist/containers/Nodes/Nodes.js.map +1 -1
  32. package/dist/containers/Nodes/Nodes.scss +4 -0
  33. package/dist/containers/Nodes/NodesControls/NodesControls.d.ts +11 -0
  34. package/dist/containers/Nodes/NodesControls/NodesControls.js +24 -0
  35. package/dist/containers/Nodes/NodesControls/NodesControls.js.map +1 -0
  36. package/dist/containers/Nodes/PaginatedNodes.d.ts +2 -2
  37. package/dist/containers/Nodes/PaginatedNodes.js +78 -54
  38. package/dist/containers/Nodes/PaginatedNodes.js.map +1 -1
  39. package/dist/containers/Nodes/PaginatedNodesTable.d.ts +22 -0
  40. package/dist/containers/Nodes/PaginatedNodesTable.js +30 -0
  41. package/dist/containers/Nodes/PaginatedNodesTable.js.map +1 -0
  42. package/dist/containers/Nodes/columns/constants.d.ts +4 -0
  43. package/dist/containers/Nodes/columns/constants.js +30 -0
  44. package/dist/containers/Nodes/columns/constants.js.map +1 -1
  45. package/dist/containers/Nodes/getNodes.js +4 -5
  46. package/dist/containers/Nodes/getNodes.js.map +1 -1
  47. package/dist/containers/Nodes/i18n/en.json +5 -1
  48. package/dist/containers/Nodes/i18n/index.d.ts +1 -1
  49. package/dist/containers/Nodes/i18n/index.js +1 -2
  50. package/dist/containers/Nodes/i18n/index.js.map +1 -1
  51. package/dist/containers/Nodes/shared.d.ts +5 -0
  52. package/dist/containers/Nodes/shared.js +16 -0
  53. package/dist/containers/Nodes/shared.js.map +1 -0
  54. package/dist/containers/Nodes/useNodesPageQueryParams.d.ts +9 -0
  55. package/dist/containers/Nodes/useNodesPageQueryParams.js +34 -0
  56. package/dist/containers/Nodes/useNodesPageQueryParams.js.map +1 -0
  57. package/dist/containers/Storage/Disks/Disks.js +1 -2
  58. package/dist/containers/Storage/Disks/Disks.js.map +1 -1
  59. package/dist/containers/Storage/PaginatedStorageNodes.js +1 -2
  60. package/dist/containers/Storage/PaginatedStorageNodes.js.map +1 -1
  61. package/dist/containers/Storage/i18n/index.d.ts +1 -1
  62. package/dist/containers/Storage/utils/index.d.ts +1 -1
  63. package/dist/containers/Tenant/ObjectSummary/SchemaTree/RefreshTreeButton.js +2 -2
  64. package/dist/containers/Tenant/Query/NewSQL/i18n/en.json +1 -1
  65. package/dist/containers/Tenant/i18n/en.json +1 -0
  66. package/dist/containers/Tenant/i18n/index.d.ts +1 -1
  67. package/dist/containers/Tenant/utils/schemaActions.js +5 -1
  68. package/dist/containers/Tenant/utils/schemaActions.js.map +1 -1
  69. package/dist/containers/Tenant/utils/schemaQueryTemplates.js +5 -1
  70. package/dist/containers/Tenant/utils/schemaQueryTemplates.js.map +1 -1
  71. package/dist/store/reducers/capabilities/hooks.d.ts +1 -0
  72. package/dist/store/reducers/capabilities/hooks.js +3 -0
  73. package/dist/store/reducers/capabilities/hooks.js.map +1 -1
  74. package/dist/store/reducers/node/selectors.js +5 -5
  75. package/dist/store/reducers/node/selectors.js.map +1 -1
  76. package/dist/store/reducers/node/types.d.ts +3 -4
  77. package/dist/store/reducers/nodes/types.d.ts +3 -1
  78. package/dist/store/reducers/nodes/utils.d.ts +1 -1
  79. package/dist/store/reducers/nodes/utils.js +9 -4
  80. package/dist/store/reducers/nodes/utils.js.map +1 -1
  81. package/dist/store/reducers/pdisk/utils.js +6 -3
  82. package/dist/store/reducers/pdisk/utils.js.map +1 -1
  83. package/dist/store/reducers/settings/hooks.d.ts +5 -0
  84. package/dist/store/reducers/settings/hooks.js +14 -0
  85. package/dist/store/reducers/settings/hooks.js.map +1 -0
  86. package/dist/store/reducers/storage/__test__/prepareGroupsDisks.test.d.ts +1 -0
  87. package/dist/store/reducers/storage/__test__/prepareGroupsDisks.test.js +354 -0
  88. package/dist/store/reducers/storage/__test__/prepareGroupsDisks.test.js.map +1 -0
  89. package/dist/store/reducers/storage/prepareGroupsDisks.d.ts +37 -0
  90. package/dist/store/reducers/storage/prepareGroupsDisks.js +72 -0
  91. package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -0
  92. package/dist/store/reducers/storage/utils.js +7 -28
  93. package/dist/store/reducers/storage/utils.js.map +1 -1
  94. package/dist/store/reducers/tenantOverview/topShards/utils.d.ts +1 -1
  95. package/dist/store/reducers/vdisk/utils.js +3 -3
  96. package/dist/store/reducers/vdisk/utils.js.map +1 -1
  97. package/dist/types/api/nodes.d.ts +1 -1
  98. package/dist/types/api/pdisk.d.ts +1 -1
  99. package/dist/types/api/storage.d.ts +2 -2
  100. package/dist/utils/developerUI/__test__/developerUI.test.js +21 -1
  101. package/dist/utils/developerUI/__test__/developerUI.test.js.map +1 -1
  102. package/dist/utils/developerUI/developerUI.d.ts +1 -0
  103. package/dist/utils/developerUI/developerUI.js +3 -0
  104. package/dist/utils/developerUI/developerUI.js.map +1 -1
  105. package/dist/utils/disks/__test__/calculatePDiskSeverity.test.js +10 -7
  106. package/dist/utils/disks/__test__/calculatePDiskSeverity.test.js.map +1 -1
  107. package/dist/utils/disks/__test__/calculateVDiskSeverity.test.js +8 -23
  108. package/dist/utils/disks/__test__/calculateVDiskSeverity.test.js.map +1 -1
  109. package/dist/utils/disks/__test__/prepareDisks.test.d.ts +1 -0
  110. package/dist/utils/disks/__test__/prepareDisks.test.js +200 -0
  111. package/dist/utils/disks/__test__/prepareDisks.test.js.map +1 -0
  112. package/dist/utils/disks/calculatePDiskSeverity.d.ts +5 -2
  113. package/dist/utils/disks/calculatePDiskSeverity.js +2 -2
  114. package/dist/utils/disks/calculatePDiskSeverity.js.map +1 -1
  115. package/dist/utils/disks/calculateVDiskSeverity.d.ts +8 -2
  116. package/dist/utils/disks/calculateVDiskSeverity.js +0 -4
  117. package/dist/utils/disks/calculateVDiskSeverity.js.map +1 -1
  118. package/dist/utils/disks/helpers.d.ts +2 -1
  119. package/dist/utils/disks/helpers.js.map +1 -1
  120. package/dist/utils/disks/prepareDisks.d.ts +22 -4
  121. package/dist/utils/disks/prepareDisks.js +75 -28
  122. package/dist/utils/disks/prepareDisks.js.map +1 -1
  123. package/dist/utils/disks/types.d.ts +9 -2
  124. package/dist/utils/storage.d.ts +1 -1
  125. package/package.json +3 -2
  126. package/dist/containers/Nodes/i18n/ru.json +0 -3
@@ -1,40 +1,28 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { ASCENDING } from '@gravity-ui/react-data-table/build/esm/lib/constants';
4
- import { TableColumnSetup } from '@gravity-ui/uikit';
5
- import { StringParam, useQueryParams } from 'use-query-params';
6
- import { EntitiesCount } from '../../components/EntitiesCount';
7
4
  import { AccessDenied } from '../../components/Errors/403';
8
5
  import { isAccessError } from '../../components/Errors/PageError/PageError';
9
6
  import { ResponseError } from '../../components/Errors/ResponseError';
10
7
  import { Illustration } from '../../components/Illustration';
11
- import { ProblemFilter } from '../../components/ProblemFilter';
12
8
  import { ResizeableDataTable } from '../../components/ResizeableDataTable/ResizeableDataTable';
13
- import { Search } from '../../components/Search';
14
9
  import { TableWithControlsLayout } from '../../components/TableWithControlsLayout/TableWithControlsLayout';
15
- import { UptimeFilter } from '../../components/UptimeFIlter';
16
10
  import { NODES_COLUMNS_WIDTH_LS_KEY } from '../../components/nodesColumns/constants';
17
11
  import { nodesApi } from '../../store/reducers/nodes/nodes';
18
12
  import { filterNodes } from '../../store/reducers/nodes/selectors';
19
- import { ProblemFilterValues, changeFilter, selectProblemFilter, } from '../../store/reducers/settings/settings';
20
- import { cn } from '../../utils/cn';
13
+ import { useProblemFilter } from '../../store/reducers/settings/hooks';
21
14
  import { DEFAULT_TABLE_SETTINGS } from '../../utils/constants';
22
- import { useAutoRefreshInterval, useTableSort, useTypedDispatch, useTypedSelector, } from '../../utils/hooks';
23
- import { NodesUptimeFilterValues, isUnavailableNode, nodesUptimeFilterValuesSchema, } from '../../utils/nodes';
15
+ import { useAutoRefreshInterval, useTableSort } from '../../utils/hooks';
16
+ import { NodesUptimeFilterValues } from '../../utils/nodes';
17
+ import { NodesControls } from './NodesControls/NodesControls';
24
18
  import { useNodesSelectedColumns } from './columns/hooks';
25
19
  import i18n from './i18n';
20
+ import { getRowClassName } from './shared';
21
+ import { useNodesPageQueryParams } from './useNodesPageQueryParams';
26
22
  import './Nodes.scss';
27
- const b = cn('ydb-nodes');
28
23
  export const Nodes = ({ path, database, additionalNodesProps = {} }) => {
29
- var _a;
30
- const [queryParams, setQueryParams] = useQueryParams({
31
- uptimeFilter: StringParam,
32
- search: StringParam,
33
- });
34
- const uptimeFilter = nodesUptimeFilterValuesSchema.parse(queryParams.uptimeFilter);
35
- const searchValue = (_a = queryParams.search) !== null && _a !== void 0 ? _a : '';
36
- const dispatch = useTypedDispatch();
37
- const problemFilter = useTypedSelector(selectProblemFilter);
24
+ const { searchValue, uptimeFilter } = useNodesPageQueryParams();
25
+ const { problemFilter } = useProblemFilter();
38
26
  const [autoRefreshInterval] = useAutoRefreshInterval();
39
27
  const { columnsToShow, columnsToSelect, setColumns } = useNodesSelectedColumns({
40
28
  getNodeRef: additionalNodesProps.getNodeRef,
@@ -48,30 +36,20 @@ export const Nodes = ({ path, database, additionalNodesProps = {} }) => {
48
36
  const [sort, handleSort] = useTableSort(sortValue, (sortParams) => {
49
37
  setSortValue(sortParams);
50
38
  });
51
- const handleSearchQueryChange = (value) => {
52
- setQueryParams({ search: value || undefined }, 'replaceIn');
53
- };
54
- const handleProblemFilterChange = (value) => {
55
- dispatch(changeFilter(value));
56
- };
57
- const handleUptimeFilterChange = (value) => {
58
- setQueryParams({ uptimeFilter: value }, 'replaceIn');
59
- };
60
39
  const nodes = React.useMemo(() => {
61
40
  return filterNodes(data === null || data === void 0 ? void 0 : data.Nodes, { searchValue, uptimeFilter, problemFilter });
62
41
  }, [data, searchValue, uptimeFilter, problemFilter]);
63
42
  const totalNodes = (data === null || data === void 0 ? void 0 : data.TotalNodes) || 0;
64
43
  const renderControls = () => {
65
- return (_jsxs(React.Fragment, { children: [_jsx(Search, { onChange: handleSearchQueryChange, placeholder: "Host name", className: b('search'), value: searchValue }), _jsx(ProblemFilter, { value: problemFilter, onChange: handleProblemFilterChange }), _jsx(UptimeFilter, { value: uptimeFilter, onChange: handleUptimeFilterChange }), _jsx(TableColumnSetup, { popupWidth: 200, items: columnsToSelect, showStatus: true, onUpdate: setColumns, sortable: false }), _jsx(EntitiesCount, { total: totalNodes, current: nodes.length, label: 'Nodes', loading: isLoading })] }));
44
+ return (_jsx(NodesControls, { columnsToSelect: columnsToSelect, handleSelectedColumnsUpdate: setColumns, entitiesCountCurrent: nodes.length, entitiesCountTotal: totalNodes, entitiesLoading: isLoading }));
66
45
  };
67
46
  const renderTable = () => {
68
47
  if (nodes.length === 0) {
69
- if (problemFilter !== ProblemFilterValues.ALL ||
70
- uptimeFilter !== NodesUptimeFilterValues.All) {
48
+ if (problemFilter !== 'All' || uptimeFilter !== NodesUptimeFilterValues.All) {
71
49
  return _jsx(Illustration, { name: "thumbsUp", width: "200" });
72
50
  }
73
51
  }
74
- return (_jsx(ResizeableDataTable, { columnsWidthLSKey: NODES_COLUMNS_WIDTH_LS_KEY, data: nodes || [], columns: columnsToShow, settings: DEFAULT_TABLE_SETTINGS, sortOrder: sort, onSort: handleSort, emptyDataMessage: i18n('empty.default'), rowClassName: (row) => b('node', { unavailable: isUnavailableNode(row) }) }));
52
+ return (_jsx(ResizeableDataTable, { columnsWidthLSKey: NODES_COLUMNS_WIDTH_LS_KEY, data: nodes || [], columns: columnsToShow, settings: DEFAULT_TABLE_SETTINGS, sortOrder: sort, onSort: handleSort, emptyDataMessage: i18n('empty.default'), rowClassName: getRowClassName }));
75
53
  };
76
54
  if (isAccessError(error)) {
77
55
  return _jsx(AccessDenied, {});
@@ -1 +1 @@
1
- {"version":3,"file":"Nodes.js","sourceRoot":"","sources":["../../../src/containers/Nodes/Nodes.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Nodes.js","sourceRoot":"","sources":["../../../src/containers/Nodes/Nodes.tsx"],"names":[],"mappings":"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"}
@@ -15,4 +15,8 @@
15
15
  &__node_unavailable {
16
16
  opacity: 0.6;
17
17
  }
18
+
19
+ &__groups-wrapper {
20
+ padding-right: 20px;
21
+ }
18
22
  }
@@ -0,0 +1,11 @@
1
+ import type { TableColumnSetupItem } from '@gravity-ui/uikit';
2
+ interface NodesControlsProps {
3
+ withGroupBySelect?: boolean;
4
+ columnsToSelect: TableColumnSetupItem[];
5
+ handleSelectedColumnsUpdate: (updated: TableColumnSetupItem[]) => void;
6
+ entitiesCountCurrent: number;
7
+ entitiesCountTotal?: number;
8
+ entitiesLoading: boolean;
9
+ }
10
+ export declare function NodesControls({ withGroupBySelect, columnsToSelect, handleSelectedColumnsUpdate, entitiesCountCurrent, entitiesCountTotal, entitiesLoading, }: NodesControlsProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { Select, TableColumnSetup, Text } from '@gravity-ui/uikit';
4
+ import { EntitiesCount } from '../../../components/EntitiesCount';
5
+ import { ProblemFilter } from '../../../components/ProblemFilter';
6
+ import { Search } from '../../../components/Search';
7
+ import { UptimeFilter } from '../../../components/UptimeFIlter';
8
+ import { useViewerNodesHandlerHasGroupingBySystemState } from '../../../store/reducers/capabilities/hooks';
9
+ import { useProblemFilter } from '../../../store/reducers/settings/hooks';
10
+ import { getNodesGroupByOptions } from '../columns/constants';
11
+ import i18n from '../i18n';
12
+ import { b } from '../shared';
13
+ import { useNodesPageQueryParams } from '../useNodesPageQueryParams';
14
+ export function NodesControls({ withGroupBySelect, columnsToSelect, handleSelectedColumnsUpdate, entitiesCountCurrent, entitiesCountTotal, entitiesLoading, }) {
15
+ const { searchValue, uptimeFilter, groupByParam, handleSearchQueryChange, handleUptimeFilterChange, handleGroupByParamChange, } = useNodesPageQueryParams();
16
+ const { problemFilter, handleProblemFilterChange } = useProblemFilter();
17
+ const systemStateGroupingAvailable = useViewerNodesHandlerHasGroupingBySystemState();
18
+ const groupByoptions = getNodesGroupByOptions(systemStateGroupingAvailable);
19
+ const handleGroupBySelectUpdate = (value) => {
20
+ handleGroupByParamChange(value[0]);
21
+ };
22
+ return (_jsxs(React.Fragment, { children: [_jsx(Search, { onChange: handleSearchQueryChange, placeholder: i18n('controls_search-placeholder'), width: 238, value: searchValue }), systemStateGroupingAvailable && withGroupBySelect ? null : (_jsx(ProblemFilter, { value: problemFilter, onChange: handleProblemFilterChange })), withGroupBySelect ? null : (_jsx(UptimeFilter, { value: uptimeFilter, onChange: handleUptimeFilterChange })), _jsx(TableColumnSetup, { popupWidth: 200, items: columnsToSelect, showStatus: true, onUpdate: handleSelectedColumnsUpdate, sortable: false }), withGroupBySelect ? (_jsxs(React.Fragment, { children: [_jsx(Text, { variant: "body-2", children: i18n('controls_group-by-placeholder') }), _jsx(Select, { hasClear: true, placeholder: '-', width: 150, defaultValue: groupByParam ? [groupByParam] : undefined, onUpdate: handleGroupBySelectUpdate, options: groupByoptions, className: b('group-by-select'), popupClassName: b('group-by-popup') })] })) : null, _jsx(EntitiesCount, { current: entitiesCountCurrent, total: entitiesCountTotal, label: i18n('nodes'), loading: entitiesLoading })] }));
23
+ }
24
+ //# sourceMappingURL=NodesControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodesControls.js","sourceRoot":"","sources":["../../../../src/containers/Nodes/NodesControls/NodesControls.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
2
  import type { AdditionalNodesProps } from '../../types/additionalProps';
3
3
  import './Nodes.scss';
4
- interface NodesProps {
4
+ interface PaginatedNodesProps {
5
5
  path?: string;
6
6
  database?: string;
7
7
  parentRef: React.RefObject<HTMLElement>;
8
8
  additionalNodesProps?: AdditionalNodesProps;
9
9
  }
10
- export declare const PaginatedNodes: ({ path, database, parentRef, additionalNodesProps }: NodesProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare function PaginatedNodes(props: PaginatedNodesProps): import("react/jsx-runtime").JSX.Element;
11
11
  export {};
@@ -1,70 +1,94 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- import { TableColumnSetup } from '@gravity-ui/uikit';
4
- import { StringParam, useQueryParams } from 'use-query-params';
5
- import { EntitiesCount } from '../../components/EntitiesCount';
6
- import { AccessDenied } from '../../components/Errors/403';
7
3
  import { ResponseError } from '../../components/Errors/ResponseError';
8
- import { Illustration } from '../../components/Illustration';
9
- import { ResizeablePaginatedTable } from '../../components/PaginatedTable';
10
- import { ProblemFilter } from '../../components/ProblemFilter';
11
- import { Search } from '../../components/Search';
12
- import { UptimeFilter } from '../../components/UptimeFIlter';
13
- import { NODES_COLUMNS_WIDTH_LS_KEY } from '../../components/nodesColumns/constants';
14
- import { ProblemFilterValues, changeFilter, selectProblemFilter, } from '../../store/reducers/settings/settings';
15
- import { cn } from '../../utils/cn';
16
- import { useTypedDispatch, useTypedSelector } from '../../utils/hooks';
17
- import { NodesUptimeFilterValues, isUnavailableNode, nodesUptimeFilterValuesSchema, } from '../../utils/nodes';
4
+ import { LoaderWrapper } from '../../components/LoaderWrapper/LoaderWrapper';
5
+ import { TableWithControlsLayout } from '../../components/TableWithControlsLayout/TableWithControlsLayout';
6
+ import { useCapabilitiesLoaded, useViewerNodesHandlerHasGrouping, } from '../../store/reducers/capabilities/hooks';
7
+ import { nodesApi } from '../../store/reducers/nodes/nodes';
8
+ import { useProblemFilter } from '../../store/reducers/settings/hooks';
9
+ import { useAutoRefreshInterval } from '../../utils/hooks';
10
+ import { NodesUptimeFilterValues } from '../../utils/nodes';
11
+ import { TableGroup } from '../Storage/TableGroup/TableGroup';
12
+ import { useExpandedGroups } from '../Storage/TableGroup/useExpandedTableGroups';
13
+ import { NodesControls } from './NodesControls/NodesControls';
14
+ import { PaginatedNodesTable } from './PaginatedNodesTable';
18
15
  import { useNodesSelectedColumns } from './columns/hooks';
19
- import { getNodes } from './getNodes';
20
16
  import i18n from './i18n';
17
+ import { b } from './shared';
18
+ import { useNodesPageQueryParams } from './useNodesPageQueryParams';
21
19
  import './Nodes.scss';
22
- const b = cn('ydb-nodes');
23
- export const PaginatedNodes = ({ path, database, parentRef, additionalNodesProps }) => {
24
- var _a;
25
- const [queryParams, setQueryParams] = useQueryParams({
26
- uptimeFilter: StringParam,
27
- search: StringParam,
28
- });
29
- const uptimeFilter = nodesUptimeFilterValuesSchema.parse(queryParams.uptimeFilter);
30
- const searchValue = (_a = queryParams.search) !== null && _a !== void 0 ? _a : '';
31
- const dispatch = useTypedDispatch();
32
- const problemFilter = useTypedSelector(selectProblemFilter);
33
- const tableFilters = React.useMemo(() => {
34
- return { path, database, searchValue, problemFilter, uptimeFilter };
35
- }, [path, database, searchValue, problemFilter, uptimeFilter]);
20
+ export function PaginatedNodes(props) {
21
+ const { uptimeFilter, groupByParam, handleUptimeFilterChange } = useNodesPageQueryParams();
22
+ const { problemFilter, handleProblemFilterChange } = useProblemFilter();
23
+ const capabilitiesLoaded = useCapabilitiesLoaded();
24
+ const viewerNodesHandlerHasGrouping = useViewerNodesHandlerHasGrouping();
25
+ // Other filters do not fit with grouping
26
+ // Reset them if grouping available
27
+ React.useEffect(() => {
28
+ if (viewerNodesHandlerHasGrouping &&
29
+ (problemFilter !== 'All' || uptimeFilter !== NodesUptimeFilterValues.All)) {
30
+ handleProblemFilterChange('All');
31
+ handleUptimeFilterChange(NodesUptimeFilterValues.All);
32
+ }
33
+ }, [
34
+ handleProblemFilterChange,
35
+ handleUptimeFilterChange,
36
+ problemFilter,
37
+ uptimeFilter,
38
+ viewerNodesHandlerHasGrouping,
39
+ ]);
40
+ const renderContent = () => {
41
+ if (viewerNodesHandlerHasGrouping && groupByParam) {
42
+ return _jsx(GroupedNodesComponent, { ...props });
43
+ }
44
+ return _jsx(NodesComponent, { ...props });
45
+ };
46
+ return _jsx(LoaderWrapper, { loading: !capabilitiesLoaded, children: renderContent() });
47
+ }
48
+ function NodesComponent({ path, database, parentRef, additionalNodesProps }) {
49
+ const { searchValue, uptimeFilter } = useNodesPageQueryParams();
50
+ const { problemFilter } = useProblemFilter();
51
+ const viewerNodesHandlerHasGrouping = useViewerNodesHandlerHasGrouping();
36
52
  const { columnsToShow, columnsToSelect, setColumns } = useNodesSelectedColumns({
37
53
  getNodeRef: additionalNodesProps === null || additionalNodesProps === void 0 ? void 0 : additionalNodesProps.getNodeRef,
38
54
  database,
39
55
  });
40
- const getRowClassName = (row) => {
41
- return b('node', { unavailable: isUnavailableNode(row) });
42
- };
43
56
  const renderControls = ({ totalEntities, foundEntities, inited }) => {
44
- const handleSearchQueryChange = (value) => {
45
- setQueryParams({ search: value || undefined }, 'replaceIn');
46
- };
47
- const handleProblemFilterChange = (value) => {
48
- dispatch(changeFilter(value));
49
- };
50
- const handleUptimeFilterChange = (value) => {
51
- setQueryParams({ uptimeFilter: value }, 'replaceIn');
52
- };
53
- return (_jsxs(React.Fragment, { children: [_jsx(Search, { onChange: handleSearchQueryChange, placeholder: "Host name", className: b('search'), value: searchValue }), _jsx(ProblemFilter, { value: problemFilter, onChange: handleProblemFilterChange }), _jsx(UptimeFilter, { value: uptimeFilter, onChange: handleUptimeFilterChange }), _jsx(TableColumnSetup, { popupWidth: 200, items: columnsToSelect, showStatus: true, onUpdate: setColumns, sortable: false }), _jsx(EntitiesCount, { total: totalEntities, current: foundEntities, label: 'Nodes', loading: !inited })] }));
57
+ return (_jsx(NodesControls, { withGroupBySelect: viewerNodesHandlerHasGrouping, columnsToSelect: columnsToSelect, handleSelectedColumnsUpdate: setColumns, entitiesCountCurrent: foundEntities, entitiesCountTotal: totalEntities, entitiesLoading: !inited }));
54
58
  };
55
- const renderEmptyDataMessage = () => {
56
- if (problemFilter !== ProblemFilterValues.ALL ||
57
- uptimeFilter !== NodesUptimeFilterValues.All) {
58
- return _jsx(Illustration, { name: "thumbsUp", width: "200" });
59
- }
60
- return i18n('empty.default');
59
+ return (_jsx(PaginatedNodesTable, { path: path, database: database, searchValue: searchValue, problemFilter: problemFilter, uptimeFilter: uptimeFilter, columns: columnsToShow, parentRef: parentRef, renderControls: renderControls }));
60
+ }
61
+ function GroupedNodesComponent({ path, database, parentRef, additionalNodesProps, }) {
62
+ const { searchValue, groupByParam } = useNodesPageQueryParams();
63
+ const [autoRefreshInterval] = useAutoRefreshInterval();
64
+ const { columnsToShow, columnsToSelect, setColumns } = useNodesSelectedColumns({
65
+ getNodeRef: additionalNodesProps === null || additionalNodesProps === void 0 ? void 0 : additionalNodesProps.getNodeRef,
66
+ database,
67
+ });
68
+ const { currentData, isFetching, error } = nodesApi.useGetNodesQuery({
69
+ path,
70
+ database,
71
+ filter: searchValue,
72
+ group: groupByParam,
73
+ limit: 0,
74
+ }, {
75
+ pollingInterval: autoRefreshInterval,
76
+ });
77
+ const isLoading = currentData === undefined && isFetching;
78
+ const { NodeGroups: tableGroups, FoundNodes: found = 0, TotalNodes: total = 0, } = currentData || {};
79
+ const { expandedGroups, setIsGroupExpanded } = useExpandedGroups(tableGroups);
80
+ const renderControls = () => {
81
+ return (_jsx(NodesControls, { withGroupBySelect: true, columnsToSelect: columnsToSelect, handleSelectedColumnsUpdate: setColumns, entitiesCountCurrent: found, entitiesCountTotal: total, entitiesLoading: isLoading }));
61
82
  };
62
- const renderErrorMessage = (error) => {
63
- if (error && error.status === 403) {
64
- return _jsx(AccessDenied, { position: "left" });
83
+ const renderGroups = () => {
84
+ if (tableGroups === null || tableGroups === void 0 ? void 0 : tableGroups.length) {
85
+ return tableGroups.map(({ name, count }) => {
86
+ const isExpanded = expandedGroups[name];
87
+ return (_jsx(TableGroup, { title: name, count: count, entityName: i18n('nodes'), expanded: isExpanded, onIsExpandedChange: setIsGroupExpanded, children: _jsx(PaginatedNodesTable, { path: path, database: database, searchValue: searchValue, problemFilter: 'All', uptimeFilter: NodesUptimeFilterValues.All, filterGroup: name, filterGroupBy: groupByParam, initialEntitiesCount: count, columns: columnsToShow, parentRef: parentRef }) }, name));
88
+ });
65
89
  }
66
- return _jsx(ResponseError, { error: error });
90
+ return i18n('no-nodes-groups');
67
91
  };
68
- return (_jsx(ResizeablePaginatedTable, { columnsWidthLSKey: NODES_COLUMNS_WIDTH_LS_KEY, parentRef: parentRef, columns: columnsToShow, fetchData: getNodes, limit: 50, renderControls: renderControls, renderErrorMessage: renderErrorMessage, renderEmptyDataMessage: renderEmptyDataMessage, getRowClassName: getRowClassName, filters: tableFilters, tableName: "nodes" }));
69
- };
92
+ return (_jsxs(TableWithControlsLayout, { children: [_jsx(TableWithControlsLayout.Controls, { children: renderControls() }), error ? _jsx(ResponseError, { error: error }) : null, _jsx(TableWithControlsLayout.Table, { loading: isLoading, className: b('groups-wrapper'), children: renderGroups() })] }));
93
+ }
70
94
  //# sourceMappingURL=PaginatedNodes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaginatedNodes.js","sourceRoot":"","sources":["../../../src/containers/Nodes/PaginatedNodes.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PaginatedNodes.js","sourceRoot":"","sources":["../../../src/containers/Nodes/PaginatedNodes.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { RenderControls } from '../../components/PaginatedTable';
3
+ import type { NodesPreparedEntity } from '../../store/reducers/nodes/types';
4
+ import type { ProblemFilterValue } from '../../store/reducers/settings/types';
5
+ import type { NodesGroupByField } from '../../types/api/nodes';
6
+ import { NodesUptimeFilterValues } from '../../utils/nodes';
7
+ import type { Column } from '../../utils/tableUtils/types';
8
+ interface PaginatedNodesTableProps {
9
+ path?: string;
10
+ database?: string;
11
+ searchValue: string;
12
+ problemFilter: ProblemFilterValue;
13
+ uptimeFilter: NodesUptimeFilterValues;
14
+ filterGroup?: string;
15
+ filterGroupBy?: NodesGroupByField;
16
+ columns: Column<NodesPreparedEntity>[];
17
+ parentRef: React.RefObject<HTMLElement>;
18
+ renderControls?: RenderControls;
19
+ initialEntitiesCount?: number;
20
+ }
21
+ export declare function PaginatedNodesTable({ path, database, searchValue, problemFilter, uptimeFilter, filterGroup, filterGroupBy, columns, parentRef, renderControls, initialEntitiesCount, }: PaginatedNodesTableProps): import("react/jsx-runtime").JSX.Element;
22
+ export {};
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { Illustration } from '../../components/Illustration';
4
+ import { ResizeablePaginatedTable } from '../../components/PaginatedTable';
5
+ import { NODES_COLUMNS_WIDTH_LS_KEY } from '../../components/nodesColumns/constants';
6
+ import { NodesUptimeFilterValues } from '../../utils/nodes';
7
+ import { getNodes } from './getNodes';
8
+ import i18n from './i18n';
9
+ import { getRowClassName, renderPaginatedTableErrorMessage } from './shared';
10
+ export function PaginatedNodesTable({ path, database, searchValue, problemFilter, uptimeFilter, filterGroup, filterGroupBy, columns, parentRef, renderControls, initialEntitiesCount, }) {
11
+ const tableFilters = React.useMemo(() => {
12
+ return {
13
+ path,
14
+ database,
15
+ searchValue,
16
+ problemFilter,
17
+ uptimeFilter,
18
+ filterGroup,
19
+ filterGroupBy,
20
+ };
21
+ }, [path, database, searchValue, problemFilter, uptimeFilter, filterGroup, filterGroupBy]);
22
+ const renderEmptyDataMessage = () => {
23
+ if (problemFilter !== 'All' || uptimeFilter !== NodesUptimeFilterValues.All) {
24
+ return _jsx(Illustration, { name: "thumbsUp", width: "200" });
25
+ }
26
+ return i18n('empty.default');
27
+ };
28
+ return (_jsx(ResizeablePaginatedTable, { columnsWidthLSKey: NODES_COLUMNS_WIDTH_LS_KEY, parentRef: parentRef, columns: columns, fetchData: getNodes, limit: 50, initialEntitiesCount: initialEntitiesCount, renderControls: renderControls, renderErrorMessage: renderPaginatedTableErrorMessage, renderEmptyDataMessage: renderEmptyDataMessage, getRowClassName: getRowClassName, filters: tableFilters, tableName: "nodes" }));
29
+ }
30
+ //# sourceMappingURL=PaginatedNodesTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaginatedNodesTable.js","sourceRoot":"","sources":["../../../src/containers/Nodes/PaginatedNodesTable.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAC,wBAAwB,EAAC,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAC,0BAA0B,EAAC,MAAM,yCAAyC,CAAC;AAInF,OAAO,EAAC,uBAAuB,EAAC,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAC,eAAe,EAAE,gCAAgC,EAAC,MAAM,UAAU,CAAC;AAoB3E,MAAM,UAAU,mBAAmB,CAAC,EAChC,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,EACb,OAAO,EACP,SAAS,EACT,cAAc,EACd,oBAAoB,GACG;IACvB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO;YACH,IAAI;YACJ,QAAQ;YACR,WAAW;YACX,aAAa;YACb,YAAY;YACZ,WAAW;YACX,aAAa;SAChB,CAAC;IACN,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3F,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAChC,IAAI,aAAa,KAAK,KAAK,IAAI,YAAY,KAAK,uBAAuB,CAAC,GAAG,EAAE,CAAC;YAC1E,OAAO,KAAC,YAAY,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,KAAK,GAAG,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,wBAAwB,IACrB,iBAAiB,EAAE,0BAA0B,EAC7C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,KAAK,EAAE,EAAE,EACT,oBAAoB,EAAE,oBAAoB,EAC1C,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,gCAAgC,EACpD,sBAAsB,EAAE,sBAAsB,EAC9C,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,OAAO,GACnB,CACL,CAAC;AACN,CAAC"}
@@ -1,4 +1,8 @@
1
+ import type { SelectOption } from '@gravity-ui/uikit';
1
2
  import type { NodesColumnId } from '../../../components/nodesColumns/constants';
3
+ import type { NodesGroupByField } from '../../../types/api/nodes';
2
4
  export declare const NODES_TABLE_SELECTED_COLUMNS_LS_KEY = "nodesTableSelectedColumns";
3
5
  export declare const DEFAULT_NODES_COLUMNS: NodesColumnId[];
4
6
  export declare const REQUIRED_NODES_COLUMNS: NodesColumnId[];
7
+ export declare function getNodesGroupByOptions(withSystemStateGroupBy?: boolean): SelectOption[];
8
+ export declare function parseNodesGroupByParam(paramToParse: unknown, withSystemStateGroupBy?: boolean): NodesGroupByField | undefined;
@@ -1,3 +1,4 @@
1
+ import { NODES_COLUMNS_TITLES } from '../../../components/nodesColumns/constants';
1
2
  export const NODES_TABLE_SELECTED_COLUMNS_LS_KEY = 'nodesTableSelectedColumns';
2
3
  export const DEFAULT_NODES_COLUMNS = [
3
4
  'NodeId',
@@ -12,4 +13,33 @@ export const DEFAULT_NODES_COLUMNS = [
12
13
  'Tablets',
13
14
  ];
14
15
  export const REQUIRED_NODES_COLUMNS = ['NodeId'];
16
+ const ALL_NODES_GROUP_BY_PARAMS = [
17
+ 'SystemState',
18
+ 'Host',
19
+ 'DC',
20
+ 'Rack',
21
+ 'Database',
22
+ 'Version',
23
+ 'Uptime',
24
+ 'Missing',
25
+ 'DiskSpaceUsage',
26
+ ];
27
+ function getAvailableNodesGroupByParams(withSystemStateGroupBy) {
28
+ if (!withSystemStateGroupBy) {
29
+ return ALL_NODES_GROUP_BY_PARAMS.filter((param) => param !== 'SystemState');
30
+ }
31
+ return ALL_NODES_GROUP_BY_PARAMS;
32
+ }
33
+ export function getNodesGroupByOptions(withSystemStateGroupBy) {
34
+ return getAvailableNodesGroupByParams(withSystemStateGroupBy).map((param) => {
35
+ return {
36
+ value: param,
37
+ content: NODES_COLUMNS_TITLES[param],
38
+ };
39
+ });
40
+ }
41
+ export function parseNodesGroupByParam(paramToParse, withSystemStateGroupBy) {
42
+ const availableParams = getAvailableNodesGroupByParams(withSystemStateGroupBy);
43
+ return availableParams.find((groupByField) => groupByField === paramToParse);
44
+ }
15
45
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/containers/Nodes/columns/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mCAAmC,GAAG,2BAA2B,CAAC;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IAClD,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,aAAa;IACb,SAAS;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAoB,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/containers/Nodes/columns/constants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAC,MAAM,4CAA4C,CAAC;AAIhF,MAAM,CAAC,MAAM,mCAAmC,GAAG,2BAA2B,CAAC;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IAClD,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,aAAa;IACb,SAAS;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAoB,CAAC,QAAQ,CAAC,CAAC;AAElE,MAAM,yBAAyB,GAAG;IAC9B,aAAa;IACb,MAAM;IACN,IAAI;IACJ,MAAM;IACN,UAAU;IACV,SAAS;IACT,QAAQ;IACR,SAAS;IACT,gBAAgB;CACoB,CAAC;AAEzC,SAAS,8BAA8B,CAAC,sBAAgC;IACpE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1B,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,yBAAyB,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,sBAAgC;IACnE,OAAO,8BAA8B,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxE,OAAO;YACH,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC;SACvC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,sBAAsB,CAClC,YAAqB,EACrB,sBAAgC;IAEhC,MAAM,eAAe,GAAG,8BAA8B,CAAC,sBAAsB,CAAC,CAAC;IAE/E,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;AACjF,CAAC"}
@@ -3,13 +3,10 @@ import { prepareNodesData } from '../../store/reducers/nodes/utils';
3
3
  import { prepareSortValue } from '../../utils/filters';
4
4
  import { NODES_SORT_VALUE_TO_FIELD, getProblemParamValue, getUptimeParamValue, isSortableNodesProperty, } from '../../utils/nodes';
5
5
  import { getRequiredDataFields } from '../../utils/tableUtils/getRequiredDataFields';
6
- const getConcurrentId = (limit, offset) => {
7
- return `getNodes|offset${offset}|limit${limit}`;
8
- };
9
6
  export const getNodes = async (params) => {
10
7
  const { type = 'any', storage = false, tablets = true, limit, offset, sortParams, filters, columnsIds, } = params;
11
8
  const { sortOrder, columnId } = sortParams !== null && sortParams !== void 0 ? sortParams : {};
12
- const { path, database, searchValue, problemFilter, uptimeFilter } = filters !== null && filters !== void 0 ? filters : {};
9
+ const { path, database, searchValue, problemFilter, uptimeFilter, filterGroup, filterGroupBy } = filters !== null && filters !== void 0 ? filters : {};
13
10
  const sort = isSortableNodesProperty(columnId)
14
11
  ? prepareSortValue(NODES_SORT_VALUE_TO_FIELD[columnId], sortOrder)
15
12
  : undefined;
@@ -26,8 +23,10 @@ export const getNodes = async (params) => {
26
23
  filter: searchValue,
27
24
  problems_only: getProblemParamValue(problemFilter),
28
25
  uptime: getUptimeParamValue(uptimeFilter),
26
+ filter_group: filterGroup,
27
+ filter_group_by: filterGroupBy,
29
28
  fieldsRequired: dataFieldsRequired,
30
- }, { concurrentId: getConcurrentId(limit, offset), signal: params.signal });
29
+ });
31
30
  const preparedResponse = prepareNodesData(response);
32
31
  return {
33
32
  data: preparedResponse.Nodes || [],
@@ -1 +1 @@
1
- {"version":3,"file":"getNodes.js","sourceRoot":"","sources":["../../../src/containers/Nodes/getNodes.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,4BAA4B,EAAC,MAAM,yCAAyC,CAAC;AAErF,OAAO,EAAC,gBAAgB,EAAC,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,qBAAqB,EAAC,MAAM,8CAA8C,CAAC;AAEnF,MAAM,eAAe,GAAG,CAAC,KAAc,EAAE,MAAe,EAAE,EAAE;IACxD,OAAO,kBAAkB,MAAM,SAAS,KAAK,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAIjB,KAAK,EAAE,MAAM,EAAE,EAAE;IACjB,MAAM,EACF,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,IAAI,EACd,KAAK,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,UAAU,GACb,GAAG,MAAM,CAAC;IAEX,MAAM,EAAC,SAAS,EAAE,QAAQ,EAAC,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC;IAC/C,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAC,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAEjF,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;QAClE,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;IAE3F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CACtC;QACI,IAAI;QACJ,OAAO;QACP,OAAO;QACP,KAAK;QACL,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,oBAAoB,CAAC,aAAa,CAAC;QAClD,MAAM,EAAE,mBAAmB,CAAC,YAAY,CAAC;QACzC,cAAc,EAAE,kBAAkB;KACrC,EACD,EAAC,YAAY,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CACxE,CAAC;IACF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpD,OAAO;QACH,IAAI,EAAE,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAClC,KAAK,EAAE,gBAAgB,CAAC,UAAU,IAAI,CAAC;QACvC,KAAK,EAAE,gBAAgB,CAAC,UAAU,IAAI,CAAC;KAC1C,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"getNodes.js","sourceRoot":"","sources":["../../../src/containers/Nodes/getNodes.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,4BAA4B,EAAC,MAAM,yCAAyC,CAAC;AAErF,OAAO,EAAC,gBAAgB,EAAC,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,qBAAqB,EAAC,MAAM,8CAA8C,CAAC;AAEnF,MAAM,CAAC,MAAM,QAAQ,GAIjB,KAAK,EAAE,MAAM,EAAE,EAAE;IACjB,MAAM,EACF,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,IAAI,EACd,KAAK,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,UAAU,GACb,GAAG,MAAM,CAAC;IAEX,MAAM,EAAC,SAAS,EAAE,QAAQ,EAAC,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC;IAC/C,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAC,GACxF,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAElB,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;QAClE,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;IAE3F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvC,IAAI;QACJ,OAAO;QACP,OAAO;QACP,KAAK;QACL,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,oBAAoB,CAAC,aAAa,CAAC;QAClD,MAAM,EAAE,mBAAmB,CAAC,YAAY,CAAC;QACzC,YAAY,EAAE,WAAW;QACzB,eAAe,EAAE,aAAa;QAC9B,cAAc,EAAE,kBAAkB;KACrC,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpD,OAAO;QACH,IAAI,EAAE,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAClC,KAAK,EAAE,gBAAgB,CAAC,UAAU,IAAI,CAAC;QACvC,KAAK,EAAE,gBAAgB,CAAC,UAAU,IAAI,CAAC;KAC1C,CAAC;AACN,CAAC,CAAC"}
@@ -1,3 +1,7 @@
1
1
  {
2
- "empty.default": "No such nodes"
2
+ "nodes": "Nodes",
3
+ "empty.default": "No such nodes",
4
+ "no-nodes-groups": "No nodes groups",
5
+ "controls_search-placeholder": "Host name",
6
+ "controls_group-by-placeholder": "Group by:"
3
7
  }
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "empty.default", params?: import("@gravity-ui/i18n").Params) => string;
1
+ declare const _default: (key: "nodes" | "empty.default" | "no-nodes-groups" | "controls_search-placeholder" | "controls_group-by-placeholder", params?: import("@gravity-ui/i18n").Params) => string;
2
2
  export default _default;
@@ -1,6 +1,5 @@
1
1
  import { registerKeysets } from '../../../utils/i18n';
2
2
  import en from './en.json';
3
- import ru from './ru.json';
4
3
  const COMPONENT = 'ydb-nodes';
5
- export default registerKeysets(COMPONENT, { ru, en });
4
+ export default registerKeysets(COMPONENT, { en });
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/containers/Nodes/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,SAAS,GAAG,WAAW,CAAC;AAE9B,eAAe,eAAe,CAAC,SAAS,EAAE,EAAC,EAAE,EAAE,EAAE,EAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/containers/Nodes/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,SAAS,GAAG,WAAW,CAAC;AAE9B,eAAe,eAAe,CAAC,SAAS,EAAE,EAAC,EAAE,EAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GetRowClassName, RenderErrorMessage } from '../../components/PaginatedTable';
2
+ import type { NodesPreparedEntity } from '../../store/reducers/nodes/types';
3
+ export declare const b: import("@bem-react/classname").ClassNameFormatter;
4
+ export declare const getRowClassName: GetRowClassName<NodesPreparedEntity>;
5
+ export declare const renderPaginatedTableErrorMessage: RenderErrorMessage;
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AccessDenied } from '../../components/Errors/403';
3
+ import { ResponseError } from '../../components/Errors/ResponseError';
4
+ import { cn } from '../../utils/cn';
5
+ import { isUnavailableNode } from '../../utils/nodes';
6
+ export const b = cn('ydb-nodes');
7
+ export const getRowClassName = (row) => {
8
+ return b('node', { unavailable: isUnavailableNode(row) });
9
+ };
10
+ export const renderPaginatedTableErrorMessage = (error) => {
11
+ if (error && error.status === 403) {
12
+ return _jsx(AccessDenied, { position: "left" });
13
+ }
14
+ return _jsx(ResponseError, { error: error });
15
+ };
16
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/containers/Nodes/shared.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAC,aAAa,EAAC,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAyC,CAAC,GAAG,EAAE,EAAE;IACzE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAC,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAuB,CAAC,KAAK,EAAE,EAAE;IAC1E,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,KAAC,YAAY,IAAC,QAAQ,EAAC,MAAM,GAAG,CAAC;IAC5C,CAAC;IAED,OAAO,KAAC,aAAa,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC;AAC3C,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { NodesUptimeFilterValues } from '../../utils/nodes';
2
+ export declare function useNodesPageQueryParams(): {
3
+ uptimeFilter: NodesUptimeFilterValues;
4
+ searchValue: string;
5
+ groupByParam: import("../../types/api/nodes").NodesGroupByField | undefined;
6
+ handleSearchQueryChange: (value: string) => void;
7
+ handleUptimeFilterChange: (value: NodesUptimeFilterValues) => void;
8
+ handleGroupByParamChange: (value: string) => void;
9
+ };