ydb-embedded-ui 20.3.0 → 20.4.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 (145) hide show
  1. package/dist/components/Drawer/Drawer.d.ts +2 -1
  2. package/dist/components/Drawer/Drawer.js +4 -4
  3. package/dist/components/Drawer/Drawer.js.map +1 -1
  4. package/dist/components/EntityStatus/EntityStatus.d.ts +4 -1
  5. package/dist/components/EntityStatus/EntityStatus.js +2 -2
  6. package/dist/components/EntityStatus/EntityStatus.js.map +1 -1
  7. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  8. package/dist/components/TenantNameWrapper/utils.d.ts +1 -1
  9. package/dist/components/TenantNameWrapper/utils.js.map +1 -1
  10. package/dist/containers/Cluster/Cluster.js +1 -1
  11. package/dist/containers/Cluster/Cluster.js.map +1 -1
  12. package/dist/containers/Cluster/ClusterDrawerHealthcheck.d.ts +8 -0
  13. package/dist/containers/Cluster/ClusterDrawerHealthcheck.js +71 -9
  14. package/dist/containers/Cluster/ClusterDrawerHealthcheck.js.map +1 -1
  15. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.d.ts +2 -1
  16. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +2 -2
  17. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js.map +1 -1
  18. package/dist/containers/Cluster/ClusterOverview/ClusterOverview.d.ts +1 -0
  19. package/dist/containers/Cluster/ClusterOverview/ClusterOverview.js.map +1 -1
  20. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.d.ts +2 -0
  21. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.js +54 -103
  22. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.js.map +1 -1
  23. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.scss +24 -89
  24. package/dist/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.d.ts +13 -0
  25. package/dist/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.js +94 -0
  26. package/dist/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.js.map +1 -0
  27. package/dist/containers/Cluster/i18n/en.json +8 -5
  28. package/dist/containers/Cluster/i18n/index.d.ts +1 -1
  29. package/dist/containers/Clusters/constants.d.ts +1 -1
  30. package/dist/containers/Header/DatabaseRightControls.d.ts +4 -2
  31. package/dist/containers/Header/DatabaseRightControls.js +2 -2
  32. package/dist/containers/Header/DatabaseRightControls.js.map +1 -1
  33. package/dist/containers/Header/Header.js +2 -2
  34. package/dist/containers/Header/Header.js.map +1 -1
  35. package/dist/containers/Header/HeaderActionsMenu.d.ts +4 -2
  36. package/dist/containers/Header/HeaderActionsMenu.js +19 -2
  37. package/dist/containers/Header/HeaderActionsMenu.js.map +1 -1
  38. package/dist/containers/Header/HeaderRightControls.d.ts +4 -2
  39. package/dist/containers/Header/HeaderRightControls.js +2 -2
  40. package/dist/containers/Header/HeaderRightControls.js.map +1 -1
  41. package/dist/containers/Header/hooks/useClusterData.d.ts +1 -0
  42. package/dist/containers/Header/hooks/useHeaderData.d.ts +1 -0
  43. package/dist/containers/Header/hooks/useHeaderData.js +1 -0
  44. package/dist/containers/Header/hooks/useHeaderData.js.map +1 -1
  45. package/dist/containers/Header/hooks/useSharedDatabasePath.d.ts +10 -0
  46. package/dist/containers/Header/hooks/useSharedDatabasePath.js +102 -0
  47. package/dist/containers/Header/hooks/useSharedDatabasePath.js.map +1 -0
  48. package/dist/containers/Header/i18n/en.json +1 -0
  49. package/dist/containers/Header/i18n/index.d.ts +1 -1
  50. package/dist/containers/Operations/constants.d.ts +1 -1
  51. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
  52. package/dist/containers/Tablets/Tablets.js +3 -3
  53. package/dist/containers/Tablets/Tablets.js.map +1 -1
  54. package/dist/containers/Tablets/TabletsTable.js +17 -27
  55. package/dist/containers/Tablets/TabletsTable.js.map +1 -1
  56. package/dist/containers/Tablets/i18n/en.json +3 -0
  57. package/dist/containers/Tablets/i18n/index.d.ts +1 -1
  58. package/dist/containers/Tablets/useTabletQueryParams.d.ts +8 -0
  59. package/dist/containers/Tablets/useTabletQueryParams.js +40 -0
  60. package/dist/containers/Tablets/useTabletQueryParams.js.map +1 -0
  61. package/dist/containers/Tablets/utils.d.ts +11 -0
  62. package/dist/containers/Tablets/utils.js +23 -0
  63. package/dist/containers/Tablets/utils.js.map +1 -0
  64. package/dist/containers/Tenant/Healthcheck/Healthcheck.d.ts +6 -1
  65. package/dist/containers/Tenant/Healthcheck/Healthcheck.js +5 -5
  66. package/dist/containers/Tenant/Healthcheck/Healthcheck.js.map +1 -1
  67. package/dist/containers/Tenant/Healthcheck/components/HealthcheckDrawer.d.ts +2 -1
  68. package/dist/containers/Tenant/Healthcheck/components/HealthcheckDrawer.js +2 -2
  69. package/dist/containers/Tenant/Healthcheck/components/HealthcheckDrawer.js.map +1 -1
  70. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.d.ts +5 -1
  71. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js +5 -3
  72. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js.map +1 -1
  73. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.d.ts +1 -1
  74. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.js +11 -2
  75. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.js.map +1 -1
  76. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/NodeInfo.js +2 -0
  77. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/NodeInfo.js.map +1 -1
  78. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/StorageLocation.js +4 -1
  79. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/StorageLocation.js.map +1 -1
  80. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.d.ts +5 -1
  81. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js +2 -2
  82. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js.map +1 -1
  83. package/dist/containers/Tenant/Healthcheck/i18n/en.json +2 -1
  84. package/dist/containers/Tenant/Healthcheck/i18n/index.d.ts +1 -1
  85. package/dist/containers/Tenant/Query/SavedQueries/SavedQueries.scss +2 -0
  86. package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
  87. package/dist/routes.d.ts +4 -1
  88. package/dist/routes.js +3 -2
  89. package/dist/routes.js.map +1 -1
  90. package/dist/services/api/viewer.d.ts +3 -1
  91. package/dist/services/api/viewer.js +3 -2
  92. package/dist/services/api/viewer.js.map +1 -1
  93. package/dist/store/reducers/cluster/cluster.d.ts +2 -1
  94. package/dist/store/reducers/cluster/cluster.js +1 -0
  95. package/dist/store/reducers/cluster/cluster.js.map +1 -1
  96. package/dist/store/reducers/healthcheckInfo/types.d.ts +1 -0
  97. package/dist/store/reducers/healthcheckInfo/utils.d.ts +1 -0
  98. package/dist/store/reducers/healthcheckInfo/utils.js +43 -9
  99. package/dist/store/reducers/healthcheckInfo/utils.js.map +1 -1
  100. package/dist/store/reducers/tenants/tenants.d.ts +10 -1
  101. package/dist/store/reducers/tenants/tenants.js +33 -0
  102. package/dist/store/reducers/tenants/tenants.js.map +1 -1
  103. package/dist/store/reducers/tenants/types.d.ts +4 -0
  104. package/dist/types/api/healthcheck.d.ts +7 -0
  105. package/package.json +1 -1
  106. package/src/components/Drawer/Drawer.tsx +6 -0
  107. package/src/components/EntityStatus/EntityStatus.tsx +9 -1
  108. package/src/components/TenantNameWrapper/utils.ts +1 -1
  109. package/src/containers/Cluster/Cluster.tsx +1 -0
  110. package/src/containers/Cluster/ClusterDrawerHealthcheck.tsx +112 -13
  111. package/src/containers/Cluster/ClusterInfo/ClusterInfo.tsx +7 -1
  112. package/src/containers/Cluster/ClusterOverview/ClusterOverview.tsx +1 -0
  113. package/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.scss +24 -89
  114. package/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx +156 -200
  115. package/src/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.ts +142 -0
  116. package/src/containers/Cluster/i18n/en.json +8 -5
  117. package/src/containers/Header/DatabaseRightControls.tsx +7 -1
  118. package/src/containers/Header/Header.tsx +3 -0
  119. package/src/containers/Header/HeaderActionsMenu.tsx +24 -2
  120. package/src/containers/Header/HeaderRightControls.tsx +7 -1
  121. package/src/containers/Header/hooks/useHeaderData.ts +1 -0
  122. package/src/containers/Header/hooks/useSharedDatabasePath.ts +195 -0
  123. package/src/containers/Header/i18n/en.json +1 -0
  124. package/src/containers/Tablets/Tablets.tsx +3 -3
  125. package/src/containers/Tablets/TabletsTable.tsx +37 -31
  126. package/src/containers/Tablets/i18n/en.json +3 -0
  127. package/src/containers/Tablets/useTabletQueryParams.ts +54 -0
  128. package/src/containers/Tablets/utils.ts +43 -0
  129. package/src/containers/Tenant/Healthcheck/Healthcheck.tsx +37 -4
  130. package/src/containers/Tenant/Healthcheck/components/HealthcheckDrawer.tsx +3 -0
  131. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssue.tsx +17 -4
  132. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.tsx +13 -3
  133. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/NodeInfo.tsx +1 -0
  134. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/StorageLocation.tsx +3 -1
  135. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssues.tsx +15 -2
  136. package/src/containers/Tenant/Healthcheck/i18n/en.json +2 -1
  137. package/src/containers/Tenant/Query/SavedQueries/SavedQueries.scss +2 -0
  138. package/src/routes.ts +8 -2
  139. package/src/services/api/viewer.ts +10 -2
  140. package/src/store/reducers/cluster/cluster.ts +2 -1
  141. package/src/store/reducers/healthcheckInfo/types.ts +1 -0
  142. package/src/store/reducers/healthcheckInfo/utils.ts +50 -10
  143. package/src/store/reducers/tenants/tenants.ts +55 -1
  144. package/src/store/reducers/tenants/types.ts +5 -0
  145. package/src/types/api/healthcheck.ts +8 -0
@@ -1,42 +1,46 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- import { ArrowChevronRight, Ban, CircleCheck, CirclePause, LinkSlash } from '@gravity-ui/icons';
4
- import { Flex, Icon, Text } from '@gravity-ui/uikit';
3
+ import { Archive, ArrowChevronRight, Ban, ChevronRight, CirclePause, LinkSlash, MapPin, } from '@gravity-ui/icons';
4
+ import { Flex, Icon, Label, Text } from '@gravity-ui/uikit';
5
+ import { EntityStatus } from '../../../../components/EntityStatus/EntityStatus';
5
6
  import { LabelWithHelpMark } from '../../../../components/LabelWithHelpMark/LabelWithHelpMark';
6
- import { BridgePileGroupStatus, BridgePileState } from '../../../../types/api/cluster';
7
+ import { Skeleton } from '../../../../components/Skeleton/Skeleton';
8
+ import { healthcheckApi, selectLeavesIssues, } from '../../../../store/reducers/healthcheckInfo/healthcheckInfo';
9
+ import { BridgePileState } from '../../../../types/api/cluster';
7
10
  import { cn } from '../../../../utils/cn';
8
11
  import { EMPTY_DATA_PLACEHOLDER } from '../../../../utils/constants';
9
12
  import { formatNumber } from '../../../../utils/dataFormatters/dataFormatters';
13
+ import { useAutoRefreshInterval, useTypedSelector } from '../../../../utils/hooks';
14
+ import { useClusterHealthcheckQueryParams } from '../../ClusterDrawerHealthcheck';
10
15
  import i18n from '../../i18n';
16
+ import { getBridgePileHealthcheck } from './bridgePileHealthcheck';
11
17
  import './BridgeInfoTable.scss';
12
18
  const b = cn('ydb-bridge-info-table');
13
- const progressB = cn('ydb-bridge-info-table-progress');
14
- const legendB = cn('ydb-bridge-info-table-legend');
15
19
  function getBridgePileStateInfo(state) {
16
20
  switch (state) {
17
21
  case BridgePileState.PRIMARY:
18
22
  return {
19
23
  label: i18n('value_bridge-state-primary'),
20
24
  theme: 'normal',
25
+ help: i18n('context_bridge-pile-state-primary'),
21
26
  };
22
27
  case BridgePileState.PROMOTED:
23
28
  return {
24
29
  label: i18n('value_bridge-state-promoted'),
25
- theme: 'normal',
30
+ theme: 'info',
26
31
  icon: _jsx(Icon, { data: ArrowChevronRight, size: 12 }),
27
32
  help: i18n('context_bridge-pile-state-promoted'),
28
33
  };
29
34
  case BridgePileState.SYNCHRONIZED:
30
35
  return {
31
36
  label: i18n('value_bridge-state-synchronised'),
32
- theme: 'success',
33
- icon: _jsx(Icon, { data: CircleCheck, size: 12 }),
37
+ theme: 'normal',
34
38
  help: i18n('context_bridge-pile-state-synchronised'),
35
39
  };
36
40
  case BridgePileState.NOT_SYNCHRONIZED:
37
41
  return {
38
42
  label: i18n('value_bridge-state-not-synchronised'),
39
- theme: 'normal',
43
+ theme: 'warning',
40
44
  icon: _jsx(Icon, { data: Ban, size: 12 }),
41
45
  help: i18n('context_bridge-pile-state-not-synchronised'),
42
46
  };
@@ -50,7 +54,7 @@ function getBridgePileStateInfo(state) {
50
54
  case BridgePileState.DISCONNECTED:
51
55
  return {
52
56
  label: i18n('value_bridge-state-disconnected'),
53
- theme: 'unknown',
57
+ theme: 'danger',
54
58
  icon: _jsx(Icon, { data: LinkSlash, size: 12 }),
55
59
  help: i18n('context_bridge-pile-state-disconnected'),
56
60
  };
@@ -66,99 +70,14 @@ function getBridgePileStateInfo(state) {
66
70
  };
67
71
  }
68
72
  }
69
- function getNodesLabel(nodes) {
70
- if (nodes === undefined) {
71
- return EMPTY_DATA_PLACEHOLDER;
72
- }
73
- return i18n('value_nodes', {
74
- count: nodes,
75
- formattedCount: formatNumber(nodes),
76
- });
77
- }
78
- function getBridgePileGroupStatusInfo(status) {
79
- switch (status) {
80
- case BridgePileGroupStatus.UNKNOWN:
81
- return {
82
- label: i18n('value_bridge-group-status-unknown'),
83
- theme: 'secondary',
84
- };
85
- case BridgePileGroupStatus.FULL:
86
- return {
87
- label: i18n('value_bridge-group-status-full'),
88
- theme: 'positive',
89
- };
90
- case BridgePileGroupStatus.PARTIAL:
91
- return {
92
- label: i18n('value_bridge-group-status-partial'),
93
- theme: 'warning',
94
- };
95
- case BridgePileGroupStatus.DEGRADED:
96
- return {
97
- label: i18n('value_bridge-group-status-degraded'),
98
- theme: 'danger',
99
- };
100
- case BridgePileGroupStatus.DISINTEGRATED:
101
- return {
102
- label: i18n('value_bridge-group-status-disintegrated'),
103
- theme: 'dark-complementary',
104
- };
105
- default:
106
- return {
107
- label: EMPTY_DATA_PLACEHOLDER,
108
- theme: 'secondary',
109
- };
110
- }
111
- }
112
- function getBridgePileGroupStatus(status) {
113
- if (Object.values(BridgePileGroupStatus).includes(status)) {
114
- return status;
115
- }
116
- return undefined;
117
- }
118
- function prepareGroupStatuses(groupStatuses) {
119
- return Object.entries(groupStatuses !== null && groupStatuses !== void 0 ? groupStatuses : {})
120
- .map(([status, value]) => {
121
- const groupStatus = getBridgePileGroupStatus(status);
122
- const { label, theme } = groupStatus
123
- ? getBridgePileGroupStatusInfo(groupStatus)
124
- : { label: status, theme: 'secondary' };
125
- const numericValue = Number(value);
126
- if (!Number.isFinite(numericValue) || numericValue <= 0) {
127
- return undefined;
128
- }
129
- return {
130
- label,
131
- theme,
132
- value: numericValue,
133
- };
134
- })
135
- .filter((status) => status !== undefined);
136
- }
137
- function SegmentedProgressBar({ statuses, describedBy }) {
138
- const total = statuses.reduce((sum, { value }) => sum + value, 0);
139
- if (!Number.isFinite(total) || total <= 0) {
140
- return (_jsx("div", { className: progressB({ empty: true }), role: "img", "aria-label": i18n('context_group-statuses-empty') }));
141
- }
142
- return (_jsx("div", { className: progressB(), role: "img", "aria-label": i18n('context_group-statuses'), "aria-describedby": describedBy, children: statuses.map(({ label, theme, value }) => (_jsx("div", { className: progressB('item', { theme }), "aria-hidden": "true", style: {
143
- width: `${(value / total) * 100}%`,
144
- } }, `${label}-${value}`))) }));
145
- }
146
- function GroupStatusesLegend({ statuses, id }) {
147
- if (!statuses.length) {
148
- return (_jsx(Text, { variant: "caption-2", color: "secondary", children: EMPTY_DATA_PLACEHOLDER }));
149
- }
150
- return (_jsx("ul", { id: id, className: legendB(), "aria-label": i18n('context_group-statuses'), children: statuses.map(({ label, theme, value }) => (_jsxs("li", { className: legendB('item'), children: [_jsx("span", { "aria-hidden": "true", className: legendB('dot', { theme }) }), _jsx(Text, { variant: "caption-2", className: legendB('label'), children: label }), _jsx(Text, { variant: "caption-2", color: "secondary", children: formatNumber(value) })] }, `${label}-${value}`))) }));
151
- }
152
- const BridgePileCard = React.memo(function BridgePileCard({ pile }) {
73
+ const BridgePileCard = React.memo(function BridgePileCard({ pile, current, healthcheckAvailable, healthcheckSupportsPiles, healthcheckLoading, leavesIssues, onHealthcheckClick, }) {
153
74
  var _a;
154
- const groupStatusesLegendId = React.useId();
155
75
  const stateStatus = React.useMemo(() => {
156
76
  const { label, theme, icon, help } = getBridgePileStateInfo(pile.State);
157
77
  if (!label) {
158
78
  return null;
159
79
  }
160
- const showStateHelp = Boolean(help);
161
- return (_jsx(LabelWithHelpMark, { theme: theme, size: "xs", icon: icon, className: b('state-label', { 'with-help': showStateHelp }), contentGap: 2, help: help, helpMarkProps: {
80
+ return (_jsx(LabelWithHelpMark, { theme: theme, size: "xs", icon: icon, className: b('state-label'), contentGap: 2, help: help, helpMarkProps: {
162
81
  className: b('state-help'),
163
82
  popoverProps: {
164
83
  placement: ['top', 'bottom'],
@@ -166,12 +85,44 @@ const BridgePileCard = React.memo(function BridgePileCard({ pile }) {
166
85
  },
167
86
  }, children: label }));
168
87
  }, [pile.State]);
169
- const groupStatuses = React.useMemo(() => prepareGroupStatuses(pile.GroupStatuses), [pile.GroupStatuses]);
170
- const groupStatusesDescriptionId = groupStatuses.length ? groupStatusesLegendId : undefined;
171
- return (_jsxs(Flex, { direction: "column", gap: 2, className: b('pile'), children: [_jsxs(Flex, { justifyContent: "space-between", alignItems: "flex-start", gap: 3, children: [_jsxs(Flex, { direction: "column", className: b('pile-title'), children: [_jsx(Text, { variant: "subheader-1", ellipsis: true, children: ((_a = pile.Name) === null || _a === void 0 ? void 0 : _a.trim()) || EMPTY_DATA_PLACEHOLDER }), _jsx(Text, { variant: "caption-2", color: "secondary", children: getNodesLabel(pile.Nodes) })] }), stateStatus] }), _jsxs(Flex, { direction: "column", gap: 1, className: b('statuses'), children: [_jsx(SegmentedProgressBar, { statuses: groupStatuses, describedBy: groupStatusesDescriptionId }), _jsx(GroupStatusesLegend, { statuses: groupStatuses, id: groupStatusesDescriptionId })] })] }));
88
+ const pileHealthcheck = React.useMemo(() => getBridgePileHealthcheck(pile.Name, leavesIssues, healthcheckAvailable, healthcheckSupportsPiles), [healthcheckAvailable, healthcheckSupportsPiles, leavesIssues, pile.Name]);
89
+ const pileName = ((_a = pile.Name) === null || _a === void 0 ? void 0 : _a.trim()) || EMPTY_DATA_PLACEHOLDER;
90
+ const nodes = pile.Nodes === undefined ? EMPTY_DATA_PLACEHOLDER : formatNumber(pile.Nodes);
91
+ const handleHealthcheckClick = () => {
92
+ if (pileHealthcheck.target) {
93
+ onHealthcheckClick(pileHealthcheck.target);
94
+ }
95
+ };
96
+ return (_jsxs(Flex, { direction: "column", gap: 2, className: b('pile'), children: [_jsxs(Flex, { justifyContent: "space-between", alignItems: "flex-start", gap: 2, width: "100%", children: [_jsx(Text, { variant: "subheader-1", ellipsis: true, className: b('pile-name'), children: pileName }), current ? (_jsx(Label, { theme: "clear", size: "xs", icon: _jsx(Icon, { data: MapPin, size: 12 }), className: b('current-pile'), children: i18n('label_you-are-here') })) : null] }), _jsxs(Flex, { gap: 2, alignItems: "center", wrap: true, children: [stateStatus, healthcheckLoading ? (_jsx(Skeleton, { className: b('healthcheck-skeleton') })) : (_jsx(EntityStatus.Label, { status: pileHealthcheck.status, size: "xs", className: b('healthcheck-status'), onClick: pileHealthcheck.target ? handleHealthcheckClick : undefined, endContent: pileHealthcheck.target ? (_jsx(Icon, { data: ChevronRight, size: 12 })) : undefined, qa: "bridge-pile-healthcheck", children: pileHealthcheck.target ? (_jsx("span", { className: b('healthcheck-accessible-prefix'), children: i18n('label_bridge-pile-health-status-prefix', { pileName }) })) : null }))] }), _jsxs(Flex, { gap: 1, alignItems: "center", className: b('nodes'), children: [_jsx(Icon, { data: Archive, size: 14 }), _jsxs(Text, { variant: "body-1", children: [i18n('field_nodes'), ": ", nodes] })] })] }));
172
97
  });
173
- export const BridgeInfoTable = React.memo(function BridgeInfoTable({ piles }) {
174
- const renderedPiles = React.useMemo(() => piles.map((pile, index) => { var _a; return _jsx(BridgePileCard, { pile: pile }, (_a = pile.PileId) !== null && _a !== void 0 ? _a : index); }), [piles]);
175
- return (_jsx(Flex, { gap: 2, wrap: true, className: b(), children: renderedPiles }));
98
+ export const BridgeInfoTable = React.memo(function BridgeInfoTable({ piles, database, clusterName, }) {
99
+ var _a, _b, _c;
100
+ const [autoRefreshInterval] = useAutoRefreshInterval();
101
+ const { handleOpenHealthcheckIssue } = useClusterHealthcheckQueryParams();
102
+ const { currentData: healthcheckData, isFetching: healthcheckFetching, error: healthcheckError, } = healthcheckApi.useGetHealthcheckInfoQuery({ database: database !== null && database !== void 0 ? database : '', clusterName }, {
103
+ pollingInterval: autoRefreshInterval,
104
+ skip: !database,
105
+ });
106
+ const leavesIssues = useTypedSelector((state) => selectLeavesIssues(state, database !== null && database !== void 0 ? database : '', clusterName));
107
+ const healthcheckAvailable = healthcheckData !== undefined && healthcheckError === undefined;
108
+ const healthcheckLoading = healthcheckData === undefined && healthcheckFetching;
109
+ const currentPileName = (_b = (_a = healthcheckData === null || healthcheckData === void 0 ? void 0 : healthcheckData.location) === null || _a === void 0 ? void 0 : _a.pile) === null || _b === void 0 ? void 0 : _b.name;
110
+ const healthcheckSupportsPiles = ((_c = healthcheckData === null || healthcheckData === void 0 ? void 0 : healthcheckData.location) === null || _c === void 0 ? void 0 : _c.pile) !== undefined;
111
+ const sortedPiles = React.useMemo(() => {
112
+ return piles
113
+ .map((pile, index) => ({ pile, index }))
114
+ .sort((left, right) => {
115
+ const leftPrimary = left.pile.State === BridgePileState.PRIMARY;
116
+ const rightPrimary = right.pile.State === BridgePileState.PRIMARY;
117
+ if (leftPrimary !== rightPrimary) {
118
+ return leftPrimary ? -1 : 1;
119
+ }
120
+ return left.index - right.index;
121
+ });
122
+ }, [piles]);
123
+ return (_jsx(Flex, { wrap: true, className: b(), children: sortedPiles.map(({ pile, index }) => {
124
+ var _a, _b;
125
+ return (_jsx(BridgePileCard, { pile: pile, current: Boolean((currentPileName === null || currentPileName === void 0 ? void 0 : currentPileName.trim()) && pile.Name === currentPileName), healthcheckAvailable: healthcheckAvailable, healthcheckSupportsPiles: healthcheckSupportsPiles, healthcheckLoading: healthcheckLoading, leavesIssues: leavesIssues, onHealthcheckClick: handleOpenHealthcheckIssue }, (_b = (_a = pile.PileId) !== null && _a !== void 0 ? _a : pile.Name) !== null && _b !== void 0 ? _b : index));
126
+ }) }));
176
127
  });
177
128
  //# sourceMappingURL=BridgeInfoTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeInfoTable.js","sourceRoot":"","sources":["../../../../../src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,4DAA4D,CAAC;AAE7F,OAAO,EAAC,qBAAqB,EAAE,eAAe,EAAC,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAC,EAAE,EAAC,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,iDAAiD,CAAC;AAC7E,OAAO,IAAI,MAAM,YAAY,CAAC;AAE9B,OAAO,wBAAwB,CAAC;AAEhC,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,CAAC;AACtC,MAAM,SAAS,GAAG,EAAE,CAAC,gCAAgC,CAAC,CAAC;AACvD,MAAM,OAAO,GAAG,EAAE,CAAC,8BAA8B,CAAC,CAAC;AAiBnD,SAAS,sBAAsB,CAAC,KAAuB;IACnD,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,eAAe,CAAC,OAAO;YACxB,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC;gBACzC,KAAK,EAAE,QAAQ;aAClB,CAAC;QACN,KAAK,eAAe,CAAC,QAAQ;YACzB,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,6BAA6B,CAAC;gBAC1C,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,GAAI;gBACjD,IAAI,EAAE,IAAI,CAAC,oCAAoC,CAAC;aACnD,CAAC;QACN,KAAK,eAAe,CAAC,YAAY;YAC7B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,iCAAiC,CAAC;gBAC9C,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAI;gBAC3C,IAAI,EAAE,IAAI,CAAC,wCAAwC,CAAC;aACvD,CAAC;QACN,KAAK,eAAe,CAAC,gBAAgB;YACjC,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,qCAAqC,CAAC;gBAClD,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAI;gBACnC,IAAI,EAAE,IAAI,CAAC,4CAA4C,CAAC;aAC3D,CAAC;QACN,KAAK,eAAe,CAAC,SAAS;YAC1B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,8BAA8B,CAAC;gBAC3C,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAI;gBAC3C,IAAI,EAAE,IAAI,CAAC,qCAAqC,CAAC;aACpD,CAAC;QACN,KAAK,eAAe,CAAC,YAAY;YAC7B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,iCAAiC,CAAC;gBAC9C,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAI;gBACzC,IAAI,EAAE,IAAI,CAAC,wCAAwC,CAAC;aACvD,CAAC;QACN,KAAK,eAAe,CAAC,WAAW;YAC5B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,gCAAgC,CAAC;gBAC7C,KAAK,EAAE,SAAS;aACnB,CAAC;QACN;YACI,OAAO;gBACH,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,SAAS;aACnB,CAAC;IACV,CAAC;AACL,CAAC;AAOD,SAAS,aAAa,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC,aAAa,EAAE;QACvB,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC;KACtC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,4BAA4B,CAAC,MAA8B;IAChE,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,qBAAqB,CAAC,OAAO;YAC9B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,mCAAmC,CAAC;gBAChD,KAAK,EAAE,WAAW;aACrB,CAAC;QACN,KAAK,qBAAqB,CAAC,IAAI;YAC3B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,gCAAgC,CAAC;gBAC7C,KAAK,EAAE,UAAU;aACpB,CAAC;QACN,KAAK,qBAAqB,CAAC,OAAO;YAC9B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,mCAAmC,CAAC;gBAChD,KAAK,EAAE,SAAS;aACnB,CAAC;QACN,KAAK,qBAAqB,CAAC,QAAQ;YAC/B,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,oCAAoC,CAAC;gBACjD,KAAK,EAAE,QAAQ;aAClB,CAAC;QACN,KAAK,qBAAqB,CAAC,aAAa;YACpC,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,yCAAyC,CAAC;gBACtD,KAAK,EAAE,oBAAoB;aAC9B,CAAC;QACN;YACI,OAAO;gBACH,KAAK,EAAE,sBAAsB;gBAC7B,KAAK,EAAE,WAAW;aACrB,CAAC;IACV,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAc;IAC5C,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,MAA+B,CAAC,EAAE,CAAC;QACjF,OAAO,MAA+B,CAAC;IAC3C,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,aAA4C;IACtE,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,MAAM,WAAW,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,WAAW;YAC9B,CAAC,CAAC,4BAA4B,CAAC,WAAW,CAAC;YAC3C,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAoB,EAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO;YACH,KAAK;YACL,KAAK;YACL,KAAK,EAAE,YAAY;SACtB,CAAC;IACN,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,MAAM,EAAiC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AACjF,CAAC;AAOD,SAAS,oBAAoB,CAAC,EAAC,QAAQ,EAAE,WAAW,EAA4B;IAC5E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAEhE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,CACH,cACI,SAAS,EAAE,SAAS,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EACnC,IAAI,EAAC,KAAK,gBACE,IAAI,CAAC,8BAA8B,CAAC,GAClD,CACL,CAAC;IACN,CAAC;IAED,OAAO,CACH,cACI,SAAS,EAAE,SAAS,EAAE,EACtB,IAAI,EAAC,KAAK,gBACE,IAAI,CAAC,wBAAwB,CAAC,sBACxB,WAAW,YAE5B,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,CACrC,cAEI,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,EAAC,KAAK,EAAC,CAAC,iBACzB,MAAM,EAClB,KAAK,EAAE;gBACH,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG;aACrC,IALI,GAAG,KAAK,IAAI,KAAK,EAAE,CAM1B,CACL,CAAC,GACA,CACT,CAAC;AACN,CAAC;AAOD,SAAS,mBAAmB,CAAC,EAAC,QAAQ,EAAE,EAAE,EAA2B;IACjE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CACH,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,WAAW,YACtC,sBAAsB,GACpB,CACV,CAAC;IACN,CAAC;IAED,OAAO,CACH,aAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAc,IAAI,CAAC,wBAAwB,CAAC,YACvE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,CACrC,cAA8B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,aACpD,8BAAkB,MAAM,EAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,EAAC,KAAK,EAAC,CAAC,GAAI,EAC/D,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,YAChD,KAAK,GACH,EACP,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,WAAW,YACtC,YAAY,CAAC,KAAK,CAAC,GACjB,KAPF,GAAG,KAAK,IAAI,KAAK,EAAE,CAQvB,CACR,CAAC,GACD,CACR,CAAC;AACN,CAAC;AAUD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,cAAc,CAAC,EAAC,IAAI,EAAsB;;IACjF,MAAM,qBAAqB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAE5C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,CACH,KAAC,iBAAiB,IACd,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,IAAI,EACT,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,CAAC,CAAC,aAAa,EAAE,EAAC,WAAW,EAAE,aAAa,EAAC,CAAC,EACzD,UAAU,EAAE,CAAC,EACb,IAAI,EAAE,IAAI,EACV,aAAa,EAAE;gBACX,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC;gBAC1B,YAAY,EAAE;oBACV,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;oBAC5B,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC;iBACrC;aACJ,YAEA,KAAK,GACU,CACvB,CAAC;IACN,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAC/B,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,EAC9C,CAAC,IAAI,CAAC,aAAa,CAAC,CACvB,CAAC;IACF,MAAM,0BAA0B,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5F,OAAO,CACH,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aACjD,MAAC,IAAI,IAAC,cAAc,EAAC,eAAe,EAAC,UAAU,EAAC,YAAY,EAAC,GAAG,EAAE,CAAC,aAC/D,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,aAC/C,KAAC,IAAI,IAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,kBAC/B,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,EAAE,KAAI,sBAAsB,GACzC,EACP,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,WAAW,YACtC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GACvB,IACJ,EACN,WAAW,IACT,EACP,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,aACrD,KAAC,oBAAoB,IACjB,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,0BAA0B,GACzC,EACF,KAAC,mBAAmB,IAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,0BAA0B,GAAI,IAC7E,IACJ,CACV,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,EAAC,KAAK,EAAuB;IAC5F,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAC/B,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,WAAC,OAAA,KAAC,cAAc,IAA4B,IAAI,EAAE,IAAI,IAAhC,MAAA,IAAI,CAAC,MAAM,mCAAI,KAAK,CAAgB,CAAA,EAAA,CAAC,EAC3F,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,OAAO,CACH,KAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,IAAI,QAAC,SAAS,EAAE,CAAC,EAAE,YAC5B,aAAa,GACX,CACV,CAAC;AACN,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"BridgeInfoTable.js","sourceRoot":"","sources":["../../../../../src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx"],"names":[],"mappings":"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"}
@@ -1,50 +1,29 @@
1
- @use '../../../../styles/mixins.scss';
2
-
3
- @mixin bridge-group-status-background {
4
- &_theme_positive {
5
- background-color: var(--g-color-text-positive);
6
- }
7
-
8
- &_theme_warning {
9
- background-color: var(--g-color-text-warning);
10
- }
11
-
12
- &_theme_danger {
13
- background-color: var(--g-color-text-danger);
14
- }
15
-
16
- &_theme_dark-complementary {
17
- background-color: var(--g-color-text-dark-complementary);
18
- }
19
-
20
- &_theme_secondary {
21
- background-color: var(--g-color-text-secondary);
22
- }
23
- }
24
-
25
1
  .ydb-bridge-info-table {
2
+ gap: 10px;
3
+
26
4
  height: 100%;
27
5
 
28
6
  &__pile {
7
+ box-sizing: border-box;
29
8
  width: 321px;
30
- padding: var(--g-spacing-3) var(--g-spacing-4);
9
+ min-height: 98px;
10
+ padding: var(--g-spacing-3);
31
11
 
32
12
  border-radius: var(--g-border-radius-s);
33
13
  background-color: var(--g-color-base-generic);
34
-
35
- @include mixins.body-2-typography();
36
14
  }
37
15
 
38
- &__pile-title {
16
+ &__pile-name {
39
17
  min-width: 0;
40
18
  }
41
19
 
42
- &__state-label {
20
+ &__current-pile {
43
21
  flex-shrink: 0;
22
+ }
44
23
 
45
- &_with-help .g-label__text {
46
- margin-inline: var(--g-spacing-1) var(--g-spacing-1);
47
- }
24
+ &__state-label,
25
+ &__healthcheck-status {
26
+ flex-shrink: 0;
48
27
  }
49
28
 
50
29
  &__state-help {
@@ -55,69 +34,25 @@
55
34
  white-space: pre-line;
56
35
  }
57
36
 
58
- &__statuses {
59
- width: 100%;
37
+ &__healthcheck-skeleton {
38
+ width: 72px;
39
+ height: 20px;
60
40
  }
61
- }
62
-
63
- .ydb-bridge-info-table-progress {
64
- display: flex;
65
- overflow: hidden;
66
- align-items: center;
67
- gap: var(--g-spacing-half);
68
41
 
69
- height: 10px;
42
+ &__healthcheck-accessible-prefix {
43
+ position: absolute;
70
44
 
71
- border-radius: var(--g-border-radius-xs);
72
-
73
- &_empty {
74
- background-color: var(--g-color-sfx-shadow);
75
- }
76
-
77
- &__item {
78
- min-width: 8px;
79
- height: 4px;
80
-
81
- border-radius: var(--g-border-radius-xs);
82
-
83
- @include bridge-group-status-background();
84
- }
85
- }
86
-
87
- .ydb-bridge-info-table-legend {
88
- display: flex;
89
- flex-wrap: wrap;
90
- gap: var(--g-spacing-2);
91
-
92
- min-width: 0;
93
- margin: 0;
94
- padding: 0;
95
-
96
- list-style: none;
97
-
98
- &__item {
99
- display: inline-flex;
100
- align-items: center;
101
- gap: var(--g-spacing-1);
102
-
103
- min-width: 0;
104
- }
105
-
106
- &__dot {
107
- flex: 0 0 6px;
108
-
109
- width: 6px;
110
- height: 6px;
45
+ overflow: hidden;
46
+ clip: rect(0 0 0 0);
111
47
 
112
- border-radius: 50%;
48
+ width: 1px;
49
+ height: 1px;
113
50
 
114
- @include bridge-group-status-background();
51
+ white-space: nowrap;
52
+ clip-path: inset(50%);
115
53
  }
116
54
 
117
- &__label {
118
- overflow: hidden;
119
-
120
- white-space: nowrap;
121
- text-overflow: ellipsis;
55
+ &__nodes {
56
+ color: var(--g-color-text-secondary);
122
57
  }
123
58
  }
@@ -0,0 +1,13 @@
1
+ import type { IssuesTree } from '../../../../store/reducers/healthcheckInfo/types';
2
+ import { EFlag } from '../../../../types/api/enums';
3
+ export interface BridgePileHealthcheckTarget {
4
+ issueId: string;
5
+ leafIssueId: string;
6
+ view: string;
7
+ }
8
+ interface BridgePileHealthcheck {
9
+ status: EFlag;
10
+ target?: BridgePileHealthcheckTarget;
11
+ }
12
+ export declare function getBridgePileHealthcheck(pileName: string | undefined, leavesIssues: IssuesTree[], healthcheckAvailable: boolean, healthcheckSupportsPiles?: boolean): BridgePileHealthcheck;
13
+ export {};
@@ -0,0 +1,94 @@
1
+ import { getHealthcheckIssuePileNames, hcStatusToColorFlag, } from '../../../../store/reducers/healthcheckInfo/utils';
2
+ import { EFlag } from '../../../../types/api/enums';
3
+ import { StatusFlag } from '../../../../types/api/healthcheck';
4
+ const STATUS_PRIORITY = {
5
+ [StatusFlag.UNSPECIFIED]: 0,
6
+ [StatusFlag.GREY]: 0,
7
+ [StatusFlag.GREEN]: 1,
8
+ [StatusFlag.BLUE]: 2,
9
+ [StatusFlag.YELLOW]: 3,
10
+ [StatusFlag.ORANGE]: 4,
11
+ [StatusFlag.RED]: 5,
12
+ };
13
+ function normalizeStatus(status) {
14
+ return typeof status === 'string' && Object.hasOwn(STATUS_PRIORITY, status)
15
+ ? status
16
+ : StatusFlag.UNSPECIFIED;
17
+ }
18
+ function getBranch(leaf) {
19
+ const branch = [];
20
+ let current = leaf;
21
+ while (current) {
22
+ branch.push(current);
23
+ current = current.parent;
24
+ }
25
+ return branch.reverse();
26
+ }
27
+ function getBranchCandidate(leaf, pileName) {
28
+ var _a;
29
+ const branch = getBranch(leaf);
30
+ for (const [branchIndex, issue] of branch.entries()) {
31
+ if (!getHealthcheckIssuePileNames(issue).includes(pileName)) {
32
+ continue;
33
+ }
34
+ // Backend guarantees increasing levels; add validation here if that can change.
35
+ const level = (_a = issue.level) !== null && _a !== void 0 ? _a : branchIndex;
36
+ return { issue, leaf, level };
37
+ }
38
+ return undefined;
39
+ }
40
+ function compareSourceOrder(left, right) {
41
+ if (!left) {
42
+ return right ? 1 : 0;
43
+ }
44
+ if (!right) {
45
+ return -1;
46
+ }
47
+ const commonLength = Math.min(left.length, right.length);
48
+ for (let index = 0; index < commonLength; index += 1) {
49
+ if (left[index] !== right[index]) {
50
+ return left[index] - right[index];
51
+ }
52
+ }
53
+ return left.length - right.length;
54
+ }
55
+ function isWorseCandidate(candidate, current) {
56
+ const candidatePriority = STATUS_PRIORITY[normalizeStatus(candidate.issue.status)];
57
+ const currentPriority = STATUS_PRIORITY[normalizeStatus(current.issue.status)];
58
+ if (candidatePriority !== currentPriority) {
59
+ return candidatePriority > currentPriority;
60
+ }
61
+ if (candidate.level !== current.level) {
62
+ return candidate.level < current.level;
63
+ }
64
+ const issueOrder = compareSourceOrder(candidate.issue.sourceOrderPath, current.issue.sourceOrderPath);
65
+ if (issueOrder !== 0) {
66
+ return issueOrder < 0;
67
+ }
68
+ return compareSourceOrder(candidate.leaf.sourceOrderPath, current.leaf.sourceOrderPath) < 0;
69
+ }
70
+ export function getBridgePileHealthcheck(pileName, leavesIssues, healthcheckAvailable, healthcheckSupportsPiles = healthcheckAvailable) {
71
+ if (!healthcheckAvailable || !(pileName === null || pileName === void 0 ? void 0 : pileName.trim())) {
72
+ return { status: EFlag.Grey };
73
+ }
74
+ let selectedCandidate;
75
+ for (const leaf of leavesIssues) {
76
+ const candidate = getBranchCandidate(leaf, pileName);
77
+ if (candidate && (!selectedCandidate || isWorseCandidate(candidate, selectedCandidate))) {
78
+ selectedCandidate = candidate;
79
+ }
80
+ }
81
+ if (!selectedCandidate) {
82
+ return { status: healthcheckSupportsPiles ? EFlag.Green : EFlag.Grey };
83
+ }
84
+ const issueStatus = normalizeStatus(selectedCandidate.issue.status);
85
+ return {
86
+ status: hcStatusToColorFlag[issueStatus],
87
+ target: {
88
+ issueId: selectedCandidate.issue.id,
89
+ leafIssueId: selectedCandidate.leaf.id,
90
+ view: selectedCandidate.leaf.categoryForUI,
91
+ },
92
+ };
93
+ }
94
+ //# sourceMappingURL=bridgePileHealthcheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridgePileHealthcheck.js","sourceRoot":"","sources":["../../../../../src/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.ts"],"names":[],"mappings":"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"}
@@ -24,16 +24,19 @@
24
24
  "value_bridge-state-suspended": "Suspended",
25
25
  "value_bridge-state-disconnected": "Disconnected",
26
26
  "value_bridge-state-unspecified": "Unspecified",
27
+ "label_you-are-here": "You are here",
28
+ "label_bridge-pile-health-status-prefix": "Health status for pile {{pileName}}:",
27
29
  "value_bridge-group-status-unknown": "Unknown",
28
30
  "value_bridge-group-status-full": "Full",
29
31
  "value_bridge-group-status-partial": "Partial",
30
32
  "value_bridge-group-status-degraded": "Degraded",
31
33
  "value_bridge-group-status-disintegrated": "Disintegrated",
32
- "context_bridge-pile-state-promoted": "Pile that is being promoted from SYNCHRONIZED\nto PRIMARY. It stays in this state during the graceful\nswitchover. After completion, YDB will automatically\nset it to PRIMARY.",
33
- "context_bridge-pile-state-synchronised": "Secondary pile where all storage groups are fully\nsynchronized with PRIMARY. In normal operation,\nthe pair works as PRIMARY + SYNCHRONISED.",
34
- "context_bridge-pile-state-not-synchronised": "Storage groups of this pile are not yet fully synchronized\nwith PRIMARY. After synchronization is complete, YDB\nwill automatically transition the pile to SYNCHRONIZED.",
35
- "context_bridge-pile-state-suspended": "Pile is being gracefully transitioned to DISCONNECTED\nstate. It remains in this state during the graceful shutdown.\nAfter completion, YDB will automatically move it\nto DISCONNECTED.",
36
- "context_bridge-pile-state-disconnected": "Pile is disconnected from PRIMARY and does\nnot participate in operation execution.",
34
+ "context_bridge-pile-state-promoted": "Pile that is being promoted from Synchronized to\u00a0Primary",
35
+ "context_bridge-pile-state-primary": "Primary pile that currently participates in operation execution.",
36
+ "context_bridge-pile-state-synchronised": "Secondary pile where all storage groups are fully synchronized with Primary",
37
+ "context_bridge-pile-state-not-synchronised": "Storage groups are not yet fully synchronized with Primary",
38
+ "context_bridge-pile-state-suspended": "Pile is being transitioned to\u00a0Disconnected state",
39
+ "context_bridge-pile-state-disconnected": "Pile is disconnected from Primary and does not participate in operation execution",
37
40
  "context_group-statuses": "Storage group statuses",
38
41
  "context_group-statuses-empty": "No storage group status data",
39
42
  "context_cpu": "CPU load",
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "title_allocated" | "title_available-one" | "title_available-other" | "context_storage-group-allocation-progress" | "title_cpu" | "title_storage-groups" | "title_memory" | "title_network" | "title_links" | "title_details" | "title_bridge" | "label_overview" | "field_state" | "field_nodes" | "value_nodes" | "value_bridge-state-primary" | "value_bridge-state-promoted" | "value_bridge-state-synchronised" | "value_bridge-state-not-synchronised" | "value_bridge-state-suspended" | "value_bridge-state-disconnected" | "value_bridge-state-unspecified" | "value_bridge-group-status-unknown" | "value_bridge-group-status-full" | "value_bridge-group-status-partial" | "value_bridge-group-status-degraded" | "value_bridge-group-status-disintegrated" | "context_bridge-pile-state-promoted" | "context_bridge-pile-state-synchronised" | "context_bridge-pile-state-not-synchronised" | "context_bridge-pile-state-suspended" | "context_bridge-pile-state-disconnected" | "context_group-statuses" | "context_group-statuses-empty" | "context_cpu" | "context_memory" | "title_storage-by-type" | "title_storage" | "context_network" | "context_cpu-description" | "context_memory-description" | "context_storage-by-type-description" | "context_storage-total-description" | "context_network-description" | "tab_databases" | "tab_nodes" | "tab_storage" | "tab_network" | "tab_versions" | "tab_tablets" | "tab_events" | "tab_configs" | "title_healthcheck-dashboard" | "action_download-healthcheck", params?: import("@gravity-ui/i18n").Params) => string;
1
+ declare const _default: (key: "title_allocated" | "title_available-one" | "title_available-other" | "context_storage-group-allocation-progress" | "title_cpu" | "title_storage-groups" | "title_memory" | "title_network" | "title_links" | "title_details" | "title_bridge" | "label_overview" | "field_state" | "field_nodes" | "value_nodes" | "value_bridge-state-primary" | "value_bridge-state-promoted" | "value_bridge-state-synchronised" | "value_bridge-state-not-synchronised" | "value_bridge-state-suspended" | "value_bridge-state-disconnected" | "value_bridge-state-unspecified" | "label_you-are-here" | "label_bridge-pile-health-status-prefix" | "value_bridge-group-status-unknown" | "value_bridge-group-status-full" | "value_bridge-group-status-partial" | "value_bridge-group-status-degraded" | "value_bridge-group-status-disintegrated" | "context_bridge-pile-state-promoted" | "context_bridge-pile-state-primary" | "context_bridge-pile-state-synchronised" | "context_bridge-pile-state-not-synchronised" | "context_bridge-pile-state-suspended" | "context_bridge-pile-state-disconnected" | "context_group-statuses" | "context_group-statuses-empty" | "context_cpu" | "context_memory" | "title_storage-by-type" | "title_storage" | "context_network" | "context_cpu-description" | "context_memory-description" | "context_storage-by-type-description" | "context_storage-total-description" | "context_network-description" | "tab_databases" | "tab_nodes" | "tab_storage" | "tab_network" | "tab_versions" | "tab_tablets" | "tab_events" | "tab_configs" | "title_healthcheck-dashboard" | "action_download-healthcheck", params?: import("@gravity-ui/i18n").Params) => string;
2
2
  export default _default;
@@ -16,7 +16,7 @@ export declare const COLUMNS_NAMES: {
16
16
  readonly TENANTS: "tenants";
17
17
  readonly DESCRIPTION: "description";
18
18
  };
19
- export declare const DEFAULT_COLUMNS: ("storage" | "hosts" | "versions" | "title" | "status" | "service" | "nodes" | "tenants" | "load")[];
19
+ export declare const DEFAULT_COLUMNS: ("status" | "storage" | "hosts" | "versions" | "title" | "service" | "nodes" | "tenants" | "load")[];
20
20
  export declare const COLUMNS_TITLES: {
21
21
  readonly title: string;
22
22
  readonly versions: string;
@@ -1,13 +1,15 @@
1
1
  import type { PreparedTenant } from '../../store/reducers/tenants/types';
2
- import type { ClusterLinkWithTitle } from '../../types/additionalProps';
2
+ import type { AdditionalTenantsProps, ClusterLinkWithTitle } from '../../types/additionalProps';
3
3
  interface DatabaseRightControlsProps {
4
4
  database: string;
5
5
  clusterName?: string;
6
6
  databaseData?: PreparedTenant;
7
7
  isDatabaseDataLoading: boolean;
8
8
  isV2NavigationEnabled: boolean;
9
+ isViewerUser?: boolean;
10
+ prepareTenantBackend?: AdditionalTenantsProps['prepareTenantBackend'];
9
11
  showDeveloperUI: boolean;
10
12
  databaseLinks: ClusterLinkWithTitle[];
11
13
  }
12
- export declare function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, showDeveloperUI, databaseLinks, }: DatabaseRightControlsProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, showDeveloperUI, databaseLinks, }: DatabaseRightControlsProps): import("react/jsx-runtime").JSX.Element;
13
15
  export {};
@@ -8,10 +8,10 @@ import { DeveloperUIControl } from './GlobalRightControls';
8
8
  import { DBHeaderActionsMenu } from './HeaderActionsMenu';
9
9
  import { MonitoringControl } from './MonitoringControl';
10
10
  import { headerKeyset } from './i18n';
11
- export function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, showDeveloperUI, databaseLinks, }) {
11
+ export function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, showDeveloperUI, databaseLinks, }) {
12
12
  const monitoringDatabaseLink = React.useMemo(() => databaseLinks.find((link) => link.context === CLUSTER_LINK_CONTEXT.MONITORING), [databaseLinks]);
13
13
  const actionDatabaseLinks = React.useMemo(() => databaseLinks.filter((link) => link.context !== CLUSTER_LINK_CONTEXT.MONITORING), [databaseLinks]);
14
14
  const showLegacyConnect = !isV2NavigationEnabled;
15
- return (_jsxs(React.Fragment, { children: [monitoringDatabaseLink ? _jsx(MonitoringControl, { link: monitoringDatabaseLink }) : null, showLegacyConnect ? (_jsx(ActionTooltip, { title: headerKeyset('description_connect-to-db'), children: _jsxs(Button, { view: "flat", onClick: () => getConnectToDBDialog({ database }), children: [_jsx(Icon, { data: PlugConnection }), headerKeyset('title_connect')] }) })) : null, showDeveloperUI ? _jsx(DeveloperUIControl, {}) : null, _jsx(DBHeaderActionsMenu, { database: database, clusterName: clusterName, databaseData: databaseData, isDatabaseDataLoading: isDatabaseDataLoading, isV2NavigationEnabled: isV2NavigationEnabled, databaseLinks: actionDatabaseLinks })] }));
15
+ return (_jsxs(React.Fragment, { children: [monitoringDatabaseLink ? _jsx(MonitoringControl, { link: monitoringDatabaseLink }) : null, showLegacyConnect ? (_jsx(ActionTooltip, { title: headerKeyset('description_connect-to-db'), children: _jsxs(Button, { view: "flat", onClick: () => getConnectToDBDialog({ database }), children: [_jsx(Icon, { data: PlugConnection }), headerKeyset('title_connect')] }) })) : null, showDeveloperUI ? _jsx(DeveloperUIControl, {}) : null, _jsx(DBHeaderActionsMenu, { database: database, clusterName: clusterName, databaseData: databaseData, isDatabaseDataLoading: isDatabaseDataLoading, isV2NavigationEnabled: isV2NavigationEnabled, isViewerUser: isViewerUser, prepareTenantBackend: prepareTenantBackend, databaseLinks: actionDatabaseLinks })] }));
16
16
  }
17
17
  //# sourceMappingURL=DatabaseRightControls.js.map