ydb-embedded-ui 22.5.0 → 22.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/components/AutoRefreshControl/StickyAutoRefreshControl.d.ts +2 -0
  2. package/dist/components/AutoRefreshControl/StickyAutoRefreshControl.js +9 -0
  3. package/dist/components/AutoRefreshControl/StickyAutoRefreshControl.js.map +1 -0
  4. package/dist/components/AutoRefreshControl/StickyAutoRefreshControl.scss +18 -0
  5. package/dist/components/HideUnavailableNodesSwitch/HideUnavailableNodesSwitch.d.ts +3 -0
  6. package/dist/components/HideUnavailableNodesSwitch/HideUnavailableNodesSwitch.js +12 -0
  7. package/dist/components/HideUnavailableNodesSwitch/HideUnavailableNodesSwitch.js.map +1 -0
  8. package/dist/components/HideUnavailableNodesSwitch/i18n/en.json +3 -0
  9. package/dist/components/HideUnavailableNodesSwitch/i18n/index.d.ts +2 -0
  10. package/dist/components/HideUnavailableNodesSwitch/i18n/index.js +6 -0
  11. package/dist/components/HideUnavailableNodesSwitch/i18n/index.js.map +1 -0
  12. package/dist/components/HideUnavailableNodesSwitch/i18n/ru.json +3 -0
  13. package/dist/components/PageMeta/PageMeta.d.ts +0 -2
  14. package/dist/components/PageMeta/PageMeta.js +1 -6
  15. package/dist/components/PageMeta/PageMeta.js.map +1 -1
  16. package/dist/containers/Node/Node.js +4 -3
  17. package/dist/containers/Node/Node.js.map +1 -1
  18. package/dist/containers/Node/Node.scss +14 -2
  19. package/dist/containers/Nodes/NodesControls/NodesControls.js +2 -1
  20. package/dist/containers/Nodes/NodesControls/NodesControls.js.map +1 -1
  21. package/dist/containers/Nodes/NodesTable.js +4 -0
  22. package/dist/containers/Nodes/NodesTable.js.map +1 -1
  23. package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js +3 -0
  24. package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js.map +1 -1
  25. package/dist/containers/Nodes/PaginatedNodes/NodesComponent.js +9 -1
  26. package/dist/containers/Nodes/PaginatedNodes/NodesComponent.js.map +1 -1
  27. package/dist/containers/Nodes/getNodes.js +2 -1
  28. package/dist/containers/Nodes/getNodes.js.map +1 -1
  29. package/dist/containers/PDiskPage/PDiskPage.js +5 -14
  30. package/dist/containers/PDiskPage/PDiskPage.js.map +1 -1
  31. package/dist/containers/PDiskPage/PDiskPage.scss +11 -4
  32. package/dist/containers/PDiskPage/i18n/en.json +0 -1
  33. package/dist/containers/PDiskPage/i18n/index.d.ts +1 -1
  34. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.js +3 -0
  35. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.js.map +1 -1
  36. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.js +8 -1
  37. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.js.map +1 -1
  38. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesControls.js +2 -1
  39. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesControls.js.map +1 -1
  40. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.js +4 -0
  41. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.js.map +1 -1
  42. package/dist/containers/Storage/PaginatedStorageNodesTable/getNodes.js +2 -1
  43. package/dist/containers/Storage/PaginatedStorageNodesTable/getNodes.js.map +1 -1
  44. package/dist/containers/Storage/Storage.scss +4 -0
  45. package/dist/containers/StorageGroupPage/StorageGroupPage.js +4 -15
  46. package/dist/containers/StorageGroupPage/StorageGroupPage.js.map +1 -1
  47. package/dist/containers/StorageGroupPage/StorageGroupPage.scss +14 -9
  48. package/dist/containers/StorageGroupPage/i18n/en.json +0 -1
  49. package/dist/containers/StorageGroupPage/i18n/index.d.ts +1 -1
  50. package/dist/containers/Tablet/Tablet.js +3 -2
  51. package/dist/containers/Tablet/Tablet.js.map +1 -1
  52. package/dist/containers/Tablet/Tablet.scss +15 -1
  53. package/dist/containers/VDiskPage/VDiskPage.js +5 -14
  54. package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
  55. package/dist/containers/VDiskPage/VDiskPage.scss +23 -4
  56. package/dist/containers/VDiskPage/i18n/en.json +0 -1
  57. package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
  58. package/dist/store/reducers/capabilities/hooks.d.ts +1 -0
  59. package/dist/store/reducers/capabilities/hooks.js +3 -0
  60. package/dist/store/reducers/capabilities/hooks.js.map +1 -1
  61. package/dist/store/reducers/nodes/types.d.ts +1 -0
  62. package/dist/store/reducers/storage/types.d.ts +1 -0
  63. package/dist/types/api/capabilities.d.ts +1 -1
  64. package/dist/types/api/nodes.d.ts +2 -0
  65. package/dist/utils/hooks/useHideUnavailableNodes.d.ts +5 -0
  66. package/dist/utils/hooks/useHideUnavailableNodes.js +21 -0
  67. package/dist/utils/hooks/useHideUnavailableNodes.js.map +1 -0
  68. package/package.json +1 -1
  69. package/src/components/AutoRefreshControl/StickyAutoRefreshControl.scss +18 -0
  70. package/src/components/AutoRefreshControl/StickyAutoRefreshControl.tsx +15 -0
  71. package/src/components/HideUnavailableNodesSwitch/HideUnavailableNodesSwitch.tsx +24 -0
  72. package/src/components/HideUnavailableNodesSwitch/i18n/en.json +3 -0
  73. package/src/components/HideUnavailableNodesSwitch/i18n/index.ts +7 -0
  74. package/src/components/HideUnavailableNodesSwitch/i18n/ru.json +3 -0
  75. package/src/components/PageMeta/PageMeta.tsx +0 -18
  76. package/src/containers/Node/Node.scss +14 -2
  77. package/src/containers/Node/Node.tsx +6 -6
  78. package/src/containers/Nodes/NodesControls/NodesControls.tsx +2 -0
  79. package/src/containers/Nodes/NodesTable.tsx +4 -0
  80. package/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx +3 -0
  81. package/src/containers/Nodes/PaginatedNodes/NodesComponent.tsx +9 -1
  82. package/src/containers/Nodes/getNodes.ts +2 -0
  83. package/src/containers/PDiskPage/PDiskPage.scss +11 -4
  84. package/src/containers/PDiskPage/PDiskPage.tsx +4 -30
  85. package/src/containers/PDiskPage/i18n/en.json +0 -1
  86. package/src/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.tsx +3 -0
  87. package/src/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.tsx +8 -1
  88. package/src/containers/Storage/PaginatedStorageNodes/StorageNodesControls.tsx +2 -0
  89. package/src/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.tsx +4 -0
  90. package/src/containers/Storage/PaginatedStorageNodesTable/getNodes.ts +2 -0
  91. package/src/containers/Storage/Storage.scss +4 -0
  92. package/src/containers/StorageGroupPage/StorageGroupPage.scss +14 -9
  93. package/src/containers/StorageGroupPage/StorageGroupPage.tsx +3 -32
  94. package/src/containers/StorageGroupPage/i18n/en.json +0 -1
  95. package/src/containers/Tablet/Tablet.scss +15 -1
  96. package/src/containers/Tablet/Tablet.tsx +21 -15
  97. package/src/containers/VDiskPage/VDiskPage.scss +23 -4
  98. package/src/containers/VDiskPage/VDiskPage.tsx +4 -31
  99. package/src/containers/VDiskPage/i18n/en.json +0 -1
  100. package/src/store/reducers/capabilities/hooks.ts +4 -0
  101. package/src/store/reducers/nodes/types.ts +1 -0
  102. package/src/store/reducers/storage/types.ts +1 -0
  103. package/src/types/api/capabilities.ts +1 -0
  104. package/src/types/api/nodes.ts +2 -0
  105. package/src/utils/hooks/useHideUnavailableNodes.ts +33 -0
@@ -1,4 +1,8 @@
1
+ @use '../../styles/mixins.scss';
2
+
1
3
  .ydb-vdisk-page {
4
+ --sticky-tabs-height: 40px;
5
+ --data-table-start: var(--sticky-tabs-height);
2
6
  --g-definition-list-item-gap: var(--g-spacing-3);
3
7
  position: relative;
4
8
 
@@ -6,9 +10,8 @@
6
10
  overflow-anchor: none;
7
11
 
8
12
  height: 100%;
9
- padding: 20px 20px 0;
13
+ padding: 0 20px;
10
14
 
11
- &__meta,
12
15
  &__title,
13
16
  &__controls,
14
17
  &__storage-details,
@@ -36,8 +39,8 @@
36
39
  min-width: 0;
37
40
  }
38
41
 
39
- &__refresh-control {
40
- flex-shrink: 0;
42
+ &__title {
43
+ padding-right: 125px;
41
44
  }
42
45
 
43
46
  &__controls {
@@ -53,5 +56,21 @@
53
56
 
54
57
  &__tablets-content {
55
58
  margin-top: var(--g-spacing-4);
59
+
60
+ .data-table__sticky_moving {
61
+ // Override the table's inline sticky offset.
62
+ top: var(--sticky-tabs-height) !important;
63
+ }
64
+ }
65
+
66
+ &__tabs {
67
+ z-index: 3;
68
+
69
+ height: var(--sticky-tabs-height);
70
+ margin-bottom: 0;
71
+ padding-right: 125px;
72
+
73
+ @include mixins.sticky-top();
74
+ @include mixins.tabs-wrapper-styles();
56
75
  }
57
76
  }
@@ -4,7 +4,6 @@
4
4
  "vdisk": "VDisk",
5
5
  "storage": "Storage",
6
6
  "tablets": "Tablets",
7
- "action_back": "Back",
8
7
  "action_go-to-pdisk": "Go to PDisk",
9
8
  "action_open-in-developer-ui": "Open in Developer UI",
10
9
  "tablet-id": "Tablet ID",
@@ -1 +1 @@
1
- export declare const vDiskPageKeyset: (key: "count" | "storage" | "size" | "tablets" | "node" | "tablet-id" | "action_open-in-developer-ui" | "action_go-to-pdisk" | "action_back" | "vdisk" | "pdisk" | "channel-id", params?: import("@gravity-ui/i18n").Params) => string;
1
+ export declare const vDiskPageKeyset: (key: "count" | "storage" | "size" | "tablets" | "node" | "tablet-id" | "action_open-in-developer-ui" | "action_go-to-pdisk" | "vdisk" | "pdisk" | "channel-id", params?: import("@gravity-ui/i18n").Params) => string;
@@ -87,6 +87,7 @@ export declare const useDetailedStorageViewAvailable: () => boolean | undefined;
87
87
  export declare const useNewStorageViewEnabled: () => boolean | undefined;
88
88
  export declare const useBlobIndexStatWithVdiskId: () => boolean;
89
89
  export declare const useStorageGroupsHandlerHasGrouping: () => boolean;
90
+ export declare const useViewerNodesAliveFilterAvailable: () => boolean;
90
91
  export declare const useViewerNodesHandlerHasGrouping: () => boolean;
91
92
  export declare const useViewerNodesHandlerHasGroupingBySystemState: () => boolean;
92
93
  export declare const useViewerNodesHandlerHasNetworkStats: () => boolean;
@@ -66,6 +66,9 @@ export const useBlobIndexStatWithVdiskId = () => {
66
66
  export const useStorageGroupsHandlerHasGrouping = () => {
67
67
  return useGetFeatureVersion('/storage/groups') > 4;
68
68
  };
69
+ export const useViewerNodesAliveFilterAvailable = () => {
70
+ return useGetFeatureVersion('/viewer/nodes/alive') >= 1;
71
+ };
69
72
  export const useViewerNodesHandlerHasGrouping = () => {
70
73
  return useGetFeatureVersion('/viewer/nodes') > 6;
71
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/store/reducers/capabilities/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/store/reducers/capabilities/hooks.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { NodesGroupByField, NodesPeerRole } from '../../../types/api/nodes'
2
2
  import type { NodesUptimeFilterValues } from '../../../utils/nodes';
3
3
  export interface NodesFilters {
4
4
  searchValue: string;
5
+ hideUnavailable?: boolean;
5
6
  withProblems: boolean;
6
7
  uptimeFilter: NodesUptimeFilterValues;
7
8
  peerRoleFilter?: NodesPeerRole;
@@ -18,6 +18,7 @@ export declare const storageTypeSchema: z.ZodCatch<z.ZodEnum<{
18
18
  export type StorageType = z.infer<typeof storageTypeSchema>;
19
19
  export interface PreparedStorageNodeFilters {
20
20
  searchValue: string;
21
+ hideUnavailable?: boolean;
21
22
  nodesUptimeFilter: NodesUptimeFilterValues;
22
23
  visibleEntities: VisibleEntities;
23
24
  database?: string;
@@ -14,7 +14,7 @@ export interface CapabilitiesResponse {
14
14
  };
15
15
  };
16
16
  }
17
- export type Capability = '/pdisk/info' | '/scheme/directory' | '/storage/groups' | '/viewer/storage_stats' | '/viewer/query' | '/viewer/feature_flags' | '/viewer/config' | '/viewer/cluster' | '/vdisk/blobindexstat' | '/viewer/nodes' | '/viewer/peers' | '/viewer/acl' | '/viewer/topic_data' | '/operation/list';
17
+ export type Capability = '/pdisk/info' | '/scheme/directory' | '/storage/groups' | '/viewer/storage_stats' | '/viewer/query' | '/viewer/feature_flags' | '/viewer/config' | '/viewer/cluster' | '/vdisk/blobindexstat' | '/viewer/nodes' | '/viewer/nodes/alive' | '/viewer/peers' | '/viewer/acl' | '/viewer/topic_data' | '/operation/list';
18
18
  export type SecuritySetting = 'UseLoginProvider' | 'DomainLoginOnly';
19
19
  export type FeatureSetting = 'EnableAnalyzeLongRunningOperation' | 'EnableTabletDevUiSecurePath';
20
20
  export interface MetaCapabilitiesResponse {
@@ -231,6 +231,8 @@ export interface NodesRequestParams {
231
231
  uptime?: number;
232
232
  /** return nodes with SystemState !== EFlag.Green */
233
233
  problems_only?: boolean;
234
+ /** exclude disconnected nodes; requires /viewer/nodes/alive capability */
235
+ alive?: boolean;
234
236
  /** filter nodes by id or host */
235
237
  filter?: string;
236
238
  filter_peer_role?: NodesPeerRole;
@@ -0,0 +1,5 @@
1
+ export declare function useHideUnavailableNodes(): {
2
+ available: boolean;
3
+ hideUnavailable: boolean;
4
+ handleHideUnavailableChange: (checked: boolean) => void;
5
+ };
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { BooleanParam, useQueryParam } from 'use-query-params';
3
+ import { z } from 'zod';
4
+ import { useCapabilitiesLoaded, useViewerNodesAliveFilterAvailable, } from '../../store/reducers/capabilities/hooks';
5
+ const hideUnavailableSchema = z.boolean().catch(false);
6
+ export function useHideUnavailableNodes() {
7
+ const [value, setValue] = useQueryParam('hideUnavailable', BooleanParam);
8
+ const available = useViewerNodesAliveFilterAvailable();
9
+ const capabilitiesLoaded = useCapabilitiesLoaded();
10
+ const hideUnavailable = available && hideUnavailableSchema.parse(value);
11
+ React.useEffect(() => {
12
+ if (capabilitiesLoaded && !available && value !== undefined) {
13
+ setValue(undefined, 'replaceIn');
14
+ }
15
+ }, [available, capabilitiesLoaded, setValue, value]);
16
+ const handleHideUnavailableChange = React.useCallback((checked) => {
17
+ setValue(checked || undefined, 'replaceIn');
18
+ }, [setValue]);
19
+ return { available, hideUnavailable, handleHideUnavailableChange };
20
+ }
21
+ //# sourceMappingURL=useHideUnavailableNodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHideUnavailableNodes.js","sourceRoot":"","sources":["../../../src/utils/hooks/useHideUnavailableNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EACH,qBAAqB,EACrB,kCAAkC,GACrC,MAAM,yCAAyC,CAAC;AAEjD,MAAM,qBAAqB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEvD,MAAM,UAAU,uBAAuB;IACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,kCAAkC,EAAE,CAAC;IACvD,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD,MAAM,eAAe,GAAG,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,kBAAkB,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1D,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACrC,CAAC;IACL,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAErD,MAAM,2BAA2B,GAAG,KAAK,CAAC,WAAW,CACjD,CAAC,OAAgB,EAAE,EAAE;QACjB,QAAQ,CAAC,OAAO,IAAI,SAAS,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,OAAO,EAAC,SAAS,EAAE,eAAe,EAAE,2BAA2B,EAAC,CAAC;AACrE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ydb-embedded-ui",
3
- "version": "22.5.0",
3
+ "version": "22.6.0",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
@@ -0,0 +1,18 @@
1
+ .ydb-sticky-auto-refresh-control {
2
+ // Match the cluster page: the floating control does not allocate a header row.
3
+ position: sticky;
4
+ z-index: 4;
5
+ top: 74px;
6
+ left: 0;
7
+
8
+ // Keep the initial page inset in the flow.
9
+ margin-bottom: 20px;
10
+
11
+ &__control {
12
+ float: right;
13
+
14
+ margin-top: -54px;
15
+
16
+ background-color: var(--g-color-base-background);
17
+ }
18
+ }
@@ -0,0 +1,15 @@
1
+ import {cn} from '../../utils/cn';
2
+
3
+ import {AutoRefreshControl} from './AutoRefreshControl';
4
+
5
+ import './StickyAutoRefreshControl.scss';
6
+
7
+ const b = cn('ydb-sticky-auto-refresh-control');
8
+
9
+ export function StickyAutoRefreshControl() {
10
+ return (
11
+ <div className={b()}>
12
+ <AutoRefreshControl className={b('control')} />
13
+ </div>
14
+ );
15
+ }
@@ -0,0 +1,24 @@
1
+ import {Switch} from '@gravity-ui/uikit';
2
+
3
+ import {useHideUnavailableNodes} from '../../utils/hooks/useHideUnavailableNodes';
4
+
5
+ import i18n from './i18n';
6
+
7
+ export function HideUnavailableNodesSwitch({className}: {className?: string}) {
8
+ const {available, hideUnavailable, handleHideUnavailableChange} = useHideUnavailableNodes();
9
+
10
+ if (!available) {
11
+ return null;
12
+ }
13
+
14
+ return (
15
+ <Switch
16
+ className={className}
17
+ size="m"
18
+ checked={hideUnavailable}
19
+ onUpdate={handleHideUnavailableChange}
20
+ content={i18n('action_hide-unavailable')}
21
+ qa="hide-unavailable-nodes"
22
+ />
23
+ );
24
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "action_hide-unavailable": "Hide unavailable"
3
+ }
@@ -0,0 +1,7 @@
1
+ import {registerKeysets} from '../../../utils/i18n';
2
+
3
+ import en from './en.json';
4
+ import ru from './ru.json';
5
+
6
+ // Switch for excluding disconnected nodes from node lists.
7
+ export default registerKeysets('ydb-hide-unavailable-nodes-switch', {en, ru});
@@ -0,0 +1,3 @@
1
+ {
2
+ "action_hide-unavailable": "Скрыть недоступные"
3
+ }
@@ -1,7 +1,4 @@
1
- import {Flex} from '@gravity-ui/uikit';
2
-
3
1
  import {cn} from '../../utils/cn';
4
- import {AutoRefreshControl} from '../AutoRefreshControl/AutoRefreshControl';
5
2
  import {Skeleton} from '../Skeleton/Skeleton';
6
3
 
7
4
  import './PageMeta.scss';
@@ -10,7 +7,6 @@ const b = cn('ydb-page-meta');
10
7
 
11
8
  interface PageMetaProps {
12
9
  items: (string | undefined)[];
13
- className?: string;
14
10
  loading?: boolean;
15
11
  }
16
12
 
@@ -27,17 +23,3 @@ export function PageMeta({items, loading}: PageMetaProps) {
27
23
 
28
24
  return <div className={b('info')}>{renderContent()}</div>;
29
25
  }
30
-
31
- export function PageMetaWithAutorefresh({className, ...rest}: PageMetaProps) {
32
- return (
33
- <Flex
34
- gap={1}
35
- alignItems="center"
36
- justifyContent="space-between"
37
- className={b(null, className)}
38
- >
39
- <PageMeta {...rest} />
40
- <AutoRefreshControl />
41
- </Flex>
42
- );
43
- }
@@ -1,8 +1,10 @@
1
1
  @use '../../styles/mixins';
2
2
 
3
3
  .node {
4
+ --sticky-tabs-height: 40px;
5
+ --data-table-start: var(--sticky-tabs-height);
4
6
  --ydb-configs-controls-height: 62px;
5
- --ydb-configs-container-height: calc(100vh - var(--header-height));
7
+ --ydb-configs-container-height: calc(100vh - var(--header-height) - var(--sticky-tabs-height));
6
8
  position: relative;
7
9
 
8
10
  overflow: auto;
@@ -22,7 +24,11 @@
22
24
  }
23
25
 
24
26
  &__meta {
25
- margin-top: 20px;
27
+ display: flex;
28
+ align-items: center;
29
+
30
+ min-height: 28px;
31
+ padding-right: 121px;
26
32
  }
27
33
 
28
34
  &__tabs,
@@ -31,6 +37,12 @@
31
37
  }
32
38
 
33
39
  &__tabs {
40
+ z-index: 3;
41
+
42
+ height: var(--sticky-tabs-height);
43
+ padding-right: 125px;
44
+
45
+ @include mixins.sticky-top();
34
46
  @include mixins.tabs-wrapper-styles();
35
47
  }
36
48
  &__treads {
@@ -6,12 +6,13 @@ import {Helmet} from 'react-helmet-async';
6
6
  import {useHistory, useRouteMatch} from 'react-router-dom';
7
7
  import {useQueryParams} from 'use-query-params';
8
8
 
9
+ import {StickyAutoRefreshControl} from '../../components/AutoRefreshControl/StickyAutoRefreshControl';
9
10
  import {EntityPageTitle} from '../../components/EntityPageTitle/EntityPageTitle';
10
11
  import {ResponseError} from '../../components/Errors/ResponseError';
11
12
  import {FullNodeViewer} from '../../components/FullNodeViewer/FullNodeViewer';
12
13
  import {InfoViewerSkeleton} from '../../components/InfoViewerSkeleton/InfoViewerSkeleton';
13
14
  import {InternalLink} from '../../components/InternalLink';
14
- import {PageMetaWithAutorefresh} from '../../components/PageMeta/PageMeta';
15
+ import {PageMeta} from '../../components/PageMeta/PageMeta';
15
16
  import routes, {getDefaultNodePath} from '../../routes';
16
17
  import {
17
18
  useCapabilitiesLoaded,
@@ -161,6 +162,7 @@ export function Node() {
161
162
  return (
162
163
  <div className={b(null)} ref={container}>
163
164
  {<NodePageHelmet node={node} activeTabTitle={activeTab.title} />}
165
+ <StickyAutoRefreshControl />
164
166
  {<NodePageMeta node={node} loading={pageLoading} />}
165
167
  {<NodePageTitle node={node} />}
166
168
  {error ? <ResponseError error={error} className={b('error')} /> : null}
@@ -206,11 +208,9 @@ function NodePageMeta({node, loading}: NodePageMetaProps) {
206
208
  const dcItem = node?.DC ? `${i18n('dc')}: ${node.DC}` : undefined;
207
209
 
208
210
  return (
209
- <PageMetaWithAutorefresh
210
- loading={loading}
211
- items={[hostItem, dcItem]}
212
- className={b('meta')}
213
- />
211
+ <div className={b('meta')}>
212
+ <PageMeta loading={loading} items={[hostItem, dcItem]} />
213
+ </div>
214
214
  );
215
215
  }
216
216
 
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import {Select, Text} from '@gravity-ui/uikit';
4
4
 
5
5
  import {EntitiesCount} from '../../../components/EntitiesCount';
6
+ import {HideUnavailableNodesSwitch} from '../../../components/HideUnavailableNodesSwitch/HideUnavailableNodesSwitch';
6
7
  import {ProblemFilter} from '../../../components/ProblemFilter/ProblemFilter';
7
8
  import {Search} from '../../../components/Search';
8
9
  import {UptimeFilter} from '../../../components/UptimeFIlter';
@@ -102,6 +103,7 @@ export function NodesControls({
102
103
  />
103
104
  </React.Fragment>
104
105
  ) : null}
106
+ <HideUnavailableNodesSwitch />
105
107
  <EntitiesCount
106
108
  current={entitiesCountCurrent}
107
109
  total={entitiesCountTotal}
@@ -14,6 +14,7 @@ import {useClusterWithProxy} from '../../store/reducers/cluster/cluster';
14
14
  import type {NodesFilters} from '../../store/reducers/nodes/types';
15
15
  import type {PreparedStorageNode} from '../../store/reducers/storage/types';
16
16
  import type {NodesGroupByField, NodesPeerRole} from '../../types/api/nodes';
17
+ import {useHideUnavailableNodes} from '../../utils/hooks/useHideUnavailableNodes';
17
18
  import {getIllustration} from '../../utils/illustrations';
18
19
  import {NodesUptimeFilterValues} from '../../utils/nodes';
19
20
  import {renderPaginatedTableErrorMessage} from '../../utils/renderPaginatedTableErrorMessage';
@@ -61,6 +62,7 @@ export function NodesTable({
61
62
  onDataFetched,
62
63
  }: NodesTableProps) {
63
64
  const history = useHistory();
65
+ const {hideUnavailable} = useHideUnavailableNodes();
64
66
  const SuccessImage = getIllustration('SuccessOperation');
65
67
 
66
68
  const useMetaProxy = useClusterWithProxy();
@@ -71,6 +73,7 @@ export function NodesTable({
71
73
  useMetaProxy,
72
74
  database,
73
75
  searchValue,
76
+ hideUnavailable,
74
77
  withProblems,
75
78
  uptimeFilter,
76
79
  peerRoleFilter,
@@ -78,6 +81,7 @@ export function NodesTable({
78
81
  filterGroupBy,
79
82
  };
80
83
  }, [
84
+ hideUnavailable,
81
85
  path,
82
86
  databaseFullPath,
83
87
  useMetaProxy,
@@ -14,6 +14,7 @@ import {nodesApi} from '../../../store/reducers/nodes/nodes';
14
14
  import type {PreparedStorageNode} from '../../../store/reducers/storage/types';
15
15
  import type {NodesGroupByField, NodesPeerRole} from '../../../types/api/nodes';
16
16
  import {useAutoRefreshInterval} from '../../../utils/hooks';
17
+ import {useHideUnavailableNodes} from '../../../utils/hooks/useHideUnavailableNodes';
17
18
  import {useSelectedColumns} from '../../../utils/hooks/useSelectedColumns';
18
19
  import {NodesUptimeFilterValues} from '../../../utils/nodes';
19
20
  import {TableGroup} from '../../Storage/TableGroup/TableGroup';
@@ -127,6 +128,7 @@ export function GroupedNodesComponent({
127
128
  const searchFilter = useDebouncedSearch(searchValue);
128
129
  const useMetaProxy = useClusterWithProxy();
129
130
  const [autoRefreshInterval] = useAutoRefreshInterval();
131
+ const {hideUnavailable} = useHideUnavailableNodes();
130
132
 
131
133
  const {columnsToShow, columnsToSelect, setColumns} = useSelectedColumns(
132
134
  columns,
@@ -147,6 +149,7 @@ export function GroupedNodesComponent({
147
149
  {
148
150
  path: schemaPathParam,
149
151
  database,
152
+ alive: hideUnavailable || undefined,
150
153
  filter: searchFilter.trim(),
151
154
  filter_peer_role: peerRoleFilter,
152
155
  group: groupByParam,
@@ -9,6 +9,7 @@ import type {NodesColumn} from '../../../components/nodesColumns/types';
9
9
  import {useViewerNodesHandlerHasGrouping} from '../../../store/reducers/capabilities/hooks';
10
10
  import type {PreparedStorageNode} from '../../../store/reducers/storage/types';
11
11
  import type {NodesGroupByField} from '../../../types/api/nodes';
12
+ import {useHideUnavailableNodes} from '../../../utils/hooks/useHideUnavailableNodes';
12
13
  import {useSelectedColumns} from '../../../utils/hooks/useSelectedColumns';
13
14
  import {NodesTable} from '../NodesTable';
14
15
  import {useDebouncedSearch} from '../useDebouncedSearch';
@@ -49,6 +50,7 @@ export function NodesComponent({
49
50
  );
50
51
  const searchFilter = useDebouncedSearch(searchValue);
51
52
  const viewerNodesHandlerHasGrouping = useViewerNodesHandlerHasGrouping();
53
+ const {hideUnavailable} = useHideUnavailableNodes();
52
54
 
53
55
  const {columnsToShow, columnsToSelect, setColumns} = useSelectedColumns(
54
56
  columns,
@@ -91,7 +93,13 @@ export function NodesComponent({
91
93
  }
92
94
  tableWrapperProps={{
93
95
  scrollContainerRef,
94
- scrollDependencies: [searchFilter, withProblems, uptimeFilter, peerRoleFilter],
96
+ scrollDependencies: [
97
+ searchFilter,
98
+ withProblems,
99
+ uptimeFilter,
100
+ peerRoleFilter,
101
+ hideUnavailable,
102
+ ],
95
103
  }}
96
104
  />
97
105
  );
@@ -27,6 +27,7 @@ export const getNodes: FetchData<
27
27
  useMetaProxy,
28
28
  database,
29
29
  searchValue,
30
+ hideUnavailable,
30
31
  withProblems,
31
32
  uptimeFilter,
32
33
  peerRoleFilter,
@@ -53,6 +54,7 @@ export const getNodes: FetchData<
53
54
  path: schemePathParam,
54
55
  database,
55
56
  filter: searchValue?.trim(),
57
+ alive: hideUnavailable || undefined,
56
58
  problems_only: withProblems,
57
59
  uptime: getUptimeParamValue(uptimeFilter),
58
60
  filter_peer_role: peerRoleFilter,
@@ -1,15 +1,16 @@
1
1
  @use '../../styles//mixins.scss';
2
2
 
3
3
  .ydb-pdisk-page {
4
+ --sticky-tabs-height: 40px;
5
+ --data-table-start: var(--sticky-tabs-height);
4
6
  position: relative;
5
7
 
6
8
  overflow: auto;
7
9
  overflow-anchor: none;
8
10
 
9
11
  height: 100%;
10
- padding: 20px 20px 0;
12
+ padding: 0 20px;
11
13
 
12
- &__meta,
13
14
  &__title,
14
15
  &__storage-details,
15
16
  &__info,
@@ -32,8 +33,8 @@
32
33
  min-width: 0;
33
34
  }
34
35
 
35
- &__refresh-control {
36
- flex-shrink: 0;
36
+ &__title {
37
+ padding-right: 125px;
37
38
  }
38
39
 
39
40
  &__storage-details {
@@ -56,6 +57,12 @@
56
57
  }
57
58
 
58
59
  &__tabs {
60
+ z-index: 3;
61
+
62
+ height: var(--sticky-tabs-height);
63
+ padding-right: 125px;
64
+
65
+ @include mixins.sticky-top();
59
66
  @include mixins.tabs-wrapper-styles();
60
67
  }
61
68
  }
@@ -1,14 +1,13 @@
1
1
  import React from 'react';
2
2
 
3
- import {ArrowLeft, ArrowRotateLeft, Wrench} from '@gravity-ui/icons';
4
- import {Button, Flex, Icon, Tab, TabList, TabProvider, Text} from '@gravity-ui/uikit';
3
+ import {ArrowRotateLeft, Wrench} from '@gravity-ui/icons';
4
+ import {Flex, Icon, Tab, TabList, TabProvider, Text} from '@gravity-ui/uikit';
5
5
  import {skipToken} from '@reduxjs/toolkit/query';
6
6
  import {Helmet} from 'react-helmet-async';
7
- import {useHistory} from 'react-router-dom';
8
7
  import {StringParam, useQueryParams} from 'use-query-params';
9
8
  import {z} from 'zod';
10
9
 
11
- import {AutoRefreshControl} from '../../components/AutoRefreshControl/AutoRefreshControl';
10
+ import {StickyAutoRefreshControl} from '../../components/AutoRefreshControl/StickyAutoRefreshControl';
12
11
  import {ButtonWithConfirmDialog} from '../../components/ButtonWithConfirmDialog/ButtonWithConfirmDialog';
13
12
  import {CopyableValue} from '../../components/CopyableValue/CopyableValue';
14
13
  import {DiskStatusLabel, DiskTypeLabel} from '../../components/DiskStatus/DiskStatus';
@@ -70,8 +69,6 @@ const pDiskTabSchema = z.nativeEnum(PDISK_TABS_IDS).catch(PDISK_TABS_IDS.spaceDi
70
69
 
71
70
  export function PDiskPage() {
72
71
  const dispatch = useTypedDispatch();
73
- const history = useHistory();
74
- const showBackButton = history.length > 1;
75
72
  const hasDeveloperUi = useHasDeveloperUi();
76
73
 
77
74
  const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
@@ -144,26 +141,6 @@ export function PDiskPage() {
144
141
  );
145
142
  };
146
143
 
147
- const renderPageMeta = () => {
148
- if (!showBackButton) {
149
- return null;
150
- }
151
- return (
152
- <Flex
153
- className={pdiskPageCn('meta')}
154
- alignItems="center"
155
- justifyContent="space-between"
156
- gap={1}
157
- >
158
- <Button size="m" view="outlined" onClick={() => history.goBack()}>
159
- <Icon data={ArrowLeft} size={16} />
160
- {pDiskPageKeyset('action_back')}
161
- </Button>
162
- <AutoRefreshControl className={pdiskPageCn('refresh-control')} />
163
- </Flex>
164
- );
165
- };
166
-
167
144
  const renderPageTitle = () => {
168
145
  const statusLabels = [
169
146
  {id: 'state', label: getPDiskStateLabel(pDiskData?.State)},
@@ -199,9 +176,6 @@ export function PDiskPage() {
199
176
  <DiskTypeLabel type={pDiskData?.Type} size="s" />
200
177
  </Flex>
201
178
  </Flex>
202
- {!showBackButton && (
203
- <AutoRefreshControl className={pdiskPageCn('refresh-control')} />
204
- )}
205
179
  </Flex>
206
180
  );
207
181
  };
@@ -310,7 +284,7 @@ export function PDiskPage() {
310
284
  return (
311
285
  <div className={pdiskPageCn(null)} ref={containerRef}>
312
286
  {renderHelmet()}
313
- {renderPageMeta()}
287
+ <StickyAutoRefreshControl />
314
288
  {renderPageTitle()}
315
289
  {renderControls()}
316
290
  {renderError()}
@@ -2,7 +2,6 @@
2
2
  "fqdn": "FQDN",
3
3
  "pdisk": "PDisk",
4
4
  "node": "Node",
5
- "action_back": "Back",
6
5
  "action_open-in-developer-ui": "Open in Developer UI",
7
6
 
8
7
  "storage": "Storage",