ydb-embedded-ui 6.6.1 → 6.7.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 (175) hide show
  1. package/dist/package.json +2 -1
  2. package/dist/src/containers/App/App.d.ts +1 -1
  3. package/dist/src/containers/App/Content.js +1 -1
  4. package/dist/src/containers/App/appSlots.d.ts +1 -1
  5. package/dist/src/containers/AsideNavigation/Navigation.js +1 -3
  6. package/dist/src/containers/AsideNavigation/i18n/en.json +0 -2
  7. package/dist/src/containers/AsideNavigation/i18n/index.d.ts +1 -1
  8. package/dist/src/containers/AsideNavigation/i18n/index.js +1 -2
  9. package/dist/src/containers/Cluster/i18n/index.d.ts +1 -1
  10. package/dist/src/containers/Clusters/constants.d.ts +1 -1
  11. package/dist/src/containers/Header/Header.js +17 -21
  12. package/dist/src/containers/Header/Header.scss +14 -5
  13. package/dist/src/containers/Header/breadcrumbs.js +65 -71
  14. package/dist/src/containers/Heatmap/Heatmap.js +3 -3
  15. package/dist/src/containers/Nodes/Nodes.js +4 -4
  16. package/dist/src/containers/Nodes/VirtualNodes.js +2 -2
  17. package/dist/src/containers/Storage/Storage.js +2 -2
  18. package/dist/src/containers/Tablets/Tablets.js +8 -8
  19. package/dist/src/containers/TabletsFilters/TabletsFilters.d.ts +2 -57
  20. package/dist/src/containers/TabletsFilters/TabletsFilters.js +70 -180
  21. package/dist/src/containers/Tenant/Acl/Acl.d.ts +3 -1
  22. package/dist/src/containers/Tenant/Acl/Acl.js +7 -17
  23. package/dist/src/containers/Tenant/Diagnostics/Autorefresh/AutorefreshControl.js +4 -5
  24. package/dist/src/containers/Tenant/Diagnostics/Consumers/Consumers.js +3 -3
  25. package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.d.ts +2 -2
  26. package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.js +5 -6
  27. package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.d.ts +1 -0
  28. package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.js +3 -5
  29. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.d.ts +2 -0
  30. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.js +26 -50
  31. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.scss +1 -1
  32. package/dist/src/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +19 -58
  33. package/dist/src/containers/Tenant/Diagnostics/Network/Network.d.ts +2 -2
  34. package/dist/src/containers/Tenant/Diagnostics/Network/Network.js +5 -5
  35. package/dist/src/containers/Tenant/Diagnostics/Overview/AsyncReplicationInfo/AsyncReplicationInfo.js +1 -6
  36. package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.d.ts +2 -1
  37. package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.js +3 -8
  38. package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.d.ts +2 -2
  39. package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.js +19 -21
  40. package/dist/src/containers/Tenant/Diagnostics/Overview/TableInfo/TableInfo.scss +0 -2
  41. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.d.ts +2 -1
  42. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.js +3 -8
  43. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.d.ts +3 -1
  44. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js +5 -5
  45. package/dist/src/containers/Tenant/Diagnostics/Partitions/Partitions.js +4 -12
  46. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/Healthcheck.scss +48 -57
  47. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.d.ts +2 -5
  48. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.js +7 -2
  49. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.d.ts +1 -6
  50. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.js +22 -16
  51. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.d.ts +2 -8
  52. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.js +2 -2
  53. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.d.ts +2 -2
  54. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.js +2 -2
  55. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.d.ts +2 -2
  56. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js +4 -4
  57. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.d.ts +2 -2
  58. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js +4 -4
  59. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.d.ts +2 -2
  60. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +4 -4
  61. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.d.ts +2 -1
  62. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +5 -5
  63. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js +3 -3
  64. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.d.ts +2 -2
  65. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.js +2 -2
  66. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.d.ts +2 -2
  67. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js +4 -4
  68. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +7 -9
  69. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +3 -3
  70. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +3 -3
  71. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/useHealthcheck.js +1 -1
  72. package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.d.ts +2 -2
  73. package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +5 -5
  74. package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.d.ts +3 -2
  75. package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.js +8 -8
  76. package/dist/src/containers/Tenant/Info/ExternalDataSource/ExternalDataSource.js +0 -6
  77. package/dist/src/containers/Tenant/Info/ExternalTable/ExternalTable.js +0 -6
  78. package/dist/src/containers/Tenant/Info/View/View.js +0 -6
  79. package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.d.ts +2 -1
  80. package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.js +7 -13
  81. package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.d.ts +4 -4
  82. package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.js +159 -63
  83. package/dist/src/containers/Tenant/Query/Issues/Issues.js +6 -5
  84. package/dist/src/containers/Tenant/Query/Preview/Preview.d.ts +2 -1
  85. package/dist/src/containers/Tenant/Query/Preview/Preview.js +6 -6
  86. package/dist/src/containers/Tenant/Query/Query.d.ts +1 -0
  87. package/dist/src/containers/Tenant/Query/Query.scss +1 -1
  88. package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.d.ts +2 -0
  89. package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.js +9 -22
  90. package/dist/src/containers/Tenant/Query/i18n/en.json +1 -1
  91. package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.d.ts +1 -0
  92. package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.js +11 -19
  93. package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.d.ts +2 -2
  94. package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +13 -8
  95. package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.d.ts +2 -1
  96. package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.js +21 -2
  97. package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/en.json +1 -0
  98. package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/index.d.ts +1 -1
  99. package/dist/src/containers/Tenant/Schema/SchemaViewer/prepareData.js +2 -1
  100. package/dist/src/containers/Tenant/Schema/SchemaViewer/types.d.ts +1 -0
  101. package/dist/src/containers/Tenant/Tenant.js +20 -36
  102. package/dist/src/containers/Tenant/Tenant.scss +4 -0
  103. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.d.ts +2 -0
  104. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.js +19 -0
  105. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.scss +18 -0
  106. package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.d.ts +9 -0
  107. package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.js +44 -0
  108. package/dist/src/containers/Tenant/i18n/en.json +17 -0
  109. package/dist/src/containers/Tenant/i18n/index.d.ts +1 -1
  110. package/dist/src/containers/Tenant/utils/queryTemplates.d.ts +1 -0
  111. package/dist/src/containers/Tenant/utils/queryTemplates.js +12 -0
  112. package/dist/src/containers/Tenant/utils/schemaActions.js +3 -1
  113. package/dist/src/lib.d.ts +1 -1
  114. package/dist/src/lib.js +1 -1
  115. package/dist/src/routes.d.ts +1 -1
  116. package/dist/src/routes.js +3 -1
  117. package/dist/src/services/api.d.ts +6 -1
  118. package/dist/src/services/api.js +23 -3
  119. package/dist/src/services/settings.d.ts +1 -0
  120. package/dist/src/services/settings.js +3 -2
  121. package/dist/src/store/configureStore.d.ts +36 -134
  122. package/dist/src/store/configureStore.js +2 -15
  123. package/dist/src/store/defaultStore.d.ts +17 -81
  124. package/dist/src/store/reducers/api.js +0 -1
  125. package/dist/src/store/reducers/authentication/authentication.d.ts +51 -243
  126. package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +196 -849
  127. package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.js +3 -3
  128. package/dist/src/store/reducers/hotKeys/hotKeys.d.ts +6 -25
  129. package/dist/src/store/reducers/hotKeys/hotKeys.js +36 -49
  130. package/dist/src/store/reducers/index.d.ts +23 -100
  131. package/dist/src/store/reducers/index.js +0 -8
  132. package/dist/src/store/reducers/node/selectors.d.ts +0 -40
  133. package/dist/src/store/reducers/nodesList.d.ts +0 -40
  134. package/dist/src/store/reducers/schema/schema.d.ts +13 -149
  135. package/dist/src/store/reducers/schema/schema.js +45 -90
  136. package/dist/src/store/reducers/schema/types.d.ts +2 -21
  137. package/dist/src/store/reducers/schemaAcl/schemaAcl.d.ts +8 -135
  138. package/dist/src/store/reducers/schemaAcl/schemaAcl.js +18 -44
  139. package/dist/src/store/reducers/settings/settings.d.ts +17 -23
  140. package/dist/src/store/reducers/settings/settings.js +40 -33
  141. package/dist/src/store/reducers/settings/types.d.ts +1 -12
  142. package/dist/src/store/reducers/tablets.d.ts +288 -41
  143. package/dist/src/store/reducers/tablets.js +8 -4
  144. package/dist/src/store/reducers/tabletsFilters.d.ts +11 -164
  145. package/dist/src/store/reducers/tabletsFilters.js +14 -76
  146. package/dist/src/store/reducers/tenants/selectors.d.ts +8 -362
  147. package/dist/src/store/reducers/topic.d.ts +0 -600
  148. package/dist/src/store/state-url-mapping.js +0 -3
  149. package/dist/src/utils/constants.d.ts +1 -1
  150. package/dist/src/utils/constants.js +1 -1
  151. package/dist/src/utils/dataFormatters/dataFormatters.d.ts +2 -1
  152. package/dist/src/utils/dataFormatters/dataFormatters.js +7 -3
  153. package/dist/src/utils/hooks/index.d.ts +1 -0
  154. package/dist/src/utils/hooks/index.js +1 -0
  155. package/dist/src/utils/hooks/useAutoRefreshInterval.d.ts +1 -0
  156. package/dist/src/utils/hooks/useAutoRefreshInterval.js +5 -0
  157. package/dist/src/utils/utils.js +2 -1
  158. package/package.json +2 -1
  159. package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.d.ts +0 -6
  160. package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.js +0 -17
  161. package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.d.ts +0 -6
  162. package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.js +0 -20
  163. package/dist/src/components/InfoViewer/schemaOverview/index.d.ts +0 -2
  164. package/dist/src/components/InfoViewer/schemaOverview/index.js +0 -2
  165. package/dist/src/containers/AsideNavigation/i18n/ru.json +0 -10
  166. package/dist/src/containers/AsideNavigation/useNavigationMenuItems.d.ts +0 -2
  167. package/dist/src/containers/AsideNavigation/useNavigationMenuItems.js +0 -54
  168. package/dist/src/store/reducers/host.d.ts +0 -130
  169. package/dist/src/store/reducers/host.js +0 -26
  170. package/dist/src/store/reducers/hotKeys/types.d.ts +0 -10
  171. package/dist/src/store/reducers/hotKeys/types.js +0 -1
  172. package/dist/src/store/reducers/schemaAcl/types.d.ts +0 -12
  173. package/dist/src/store/reducers/schemaAcl/types.js +0 -1
  174. package/dist/src/types/store/host.d.ts +0 -15
  175. package/dist/src/types/store/host.js +0 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ydb-embedded-ui",
3
- "version": "6.6.1",
3
+ "version": "6.7.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -24,6 +24,7 @@
24
24
  "@gravity-ui/websql-autocomplete": "^9.1.0",
25
25
  "@reduxjs/toolkit": "^2.2.3",
26
26
  "axios": "^1.6.8",
27
+ "axios-retry": "^4.4.0",
27
28
  "colord": "^2.9.3",
28
29
  "copy-to-clipboard": "^3.3.3",
29
30
  "crc-32": "^1.2.2",
@@ -13,9 +13,9 @@ export interface AppProps {
13
13
  declare function App({ store, history, singleClusterMode, children, userSettings }: AppProps): import("react/jsx-runtime").JSX.Element;
14
14
  declare const _default: import("react-redux").ConnectedComponent<typeof App, {
15
15
  history: History<unknown>;
16
+ userSettings?: YDBEmbeddedUISettings | undefined;
16
17
  store: Store<any, import("redux").UnknownAction, unknown>;
17
18
  children?: React.ReactNode;
18
- userSettings?: YDBEmbeddedUISettings | undefined;
19
19
  context?: React.Context<import("react-redux").ReactReduxContextValue<any, import("redux").UnknownAction> | null> | undefined;
20
20
  }>;
21
21
  export default _default;
@@ -16,7 +16,7 @@ import Header from '../Header/Header';
16
16
  import Node from '../Node/Node';
17
17
  import { PDiskPage } from '../PDiskPage/PDiskPage';
18
18
  import { Tablet } from '../Tablet';
19
- import TabletsFilters from '../TabletsFilters/TabletsFilters';
19
+ import { TabletsFilters } from '../TabletsFilters/TabletsFilters';
20
20
  import Tenant from '../Tenant/Tenant';
21
21
  import { VDiskPage } from '../VDiskPage/VDiskPage';
22
22
  import { ClusterSlot, ClustersSlot, NodeSlot, PDiskPageSlot, RedirectSlot, RoutesSlot, TabletSlot, TabletsFiltersSlot, TenantSlot, VDiskPageSlot, } from './appSlots';
@@ -5,7 +5,7 @@ import type { Clusters } from '../Clusters/Clusters';
5
5
  import type Node from '../Node/Node';
6
6
  import type { PDiskPage } from '../PDiskPage/PDiskPage';
7
7
  import type { Tablet } from '../Tablet';
8
- import type TabletsFilters from '../TabletsFilters/TabletsFilters';
8
+ import type { TabletsFilters } from '../TabletsFilters/TabletsFilters';
9
9
  import type Tenant from '../Tenant/Tenant';
10
10
  import type { VDiskPage } from '../VDiskPage/VDiskPage';
11
11
  export declare const ClustersSlot: import("../../components/slots/types").SlotComponent<{
@@ -2,9 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useComponent } from '../../components/ComponentsProvider/ComponentsProvider';
3
3
  import { UserSettings } from '../UserSettings/UserSettings';
4
4
  import { YdbInternalUser } from './YdbInternalUser/YdbInternalUser';
5
- import { useNavigationMenuItems } from './useNavigationMenuItems';
6
5
  export function Navigation({ children, userSettings }) {
7
6
  const AsideNavigation = useComponent('AsideNavigation');
8
- const menuItems = useNavigationMenuItems();
9
- return (_jsx(AsideNavigation, { settings: _jsx(UserSettings, { settings: userSettings }), menuItems: menuItems, ydbInternalUser: _jsx(YdbInternalUser, {}), content: children }));
7
+ return (_jsx(AsideNavigation, { settings: _jsx(UserSettings, { settings: userSettings }), ydbInternalUser: _jsx(YdbInternalUser, {}), content: children }));
10
8
  }
@@ -1,6 +1,4 @@
1
1
  {
2
- "pages.query": "Query",
3
- "pages.diagnostics": "Diagnostics",
4
2
  "navigation-item.documentation": "Documentation",
5
3
  "navigation-item.settings": "Settings",
6
4
  "navigation-item.account": "Account",
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "pages.query" | "pages.diagnostics" | "navigation-item.documentation" | "navigation-item.settings" | "navigation-item.account" | "account.user" | "account.login" | "account.logout", params?: import("@gravity-ui/i18n").Params | undefined) => string;
1
+ declare const _default: (key: "navigation-item.documentation" | "navigation-item.settings" | "navigation-item.account" | "account.user" | "account.login" | "account.logout", params?: import("@gravity-ui/i18n").Params | undefined) => string;
2
2
  export default _default;
@@ -1,5 +1,4 @@
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-aside-navigation';
5
- export default registerKeysets(COMPONENT, { ru, en });
4
+ export default registerKeysets(COMPONENT, { en });
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "nodes" | "tablets" | "versions" | "links" | "load" | "disk-type" | "erasure" | "allocated" | "available" | "usage" | "dc" | "databases" | "storage-size" | "storage-groups", params?: import("@gravity-ui/i18n").Params | undefined) => string;
1
+ declare const _default: (key: "nodes" | "tablets" | "versions" | "load" | "links" | "disk-type" | "erasure" | "allocated" | "available" | "usage" | "dc" | "databases" | "storage-size" | "storage-groups", params?: import("@gravity-ui/i18n").Params | undefined) => string;
2
2
  export default _default;
@@ -14,7 +14,7 @@ export declare const COLUMNS_NAMES: {
14
14
  readonly DESCRIPTION: "description";
15
15
  readonly BALANCER: "balancer";
16
16
  };
17
- export declare const DEFAULT_COLUMNS: ("nodes" | "storage" | "status" | "tenants" | "versions" | "service" | "hosts" | "balancer" | "title" | "owner" | "load")[];
17
+ export declare const DEFAULT_COLUMNS: ("nodes" | "storage" | "status" | "tenants" | "versions" | "service" | "load" | "hosts" | "balancer" | "title" | "owner")[];
18
18
  export declare const COLUMNS_TITLES: {
19
19
  readonly title: "Cluster";
20
20
  readonly versions: "Versions";
@@ -1,7 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { Breadcrumbs } from '@gravity-ui/uikit';
4
+ import { get } from 'lodash';
4
5
  import { useHistory, useLocation } from 'react-router';
6
+ import { InternalLink } from '../../components/InternalLink';
5
7
  import { LinkWithIcon } from '../../components/LinkWithIcon/LinkWithIcon';
6
8
  import { parseQuery } from '../../routes';
7
9
  import { backend, customBackend } from '../../store';
@@ -19,41 +21,35 @@ const getInternalLink = (singleClusterMode) => {
19
21
  return backend + '/internal';
20
22
  };
21
23
  function Header({ mainPage }) {
22
- var _a;
23
24
  const history = useHistory();
24
25
  const location = useLocation();
26
+ const queryParams = parseQuery(location);
25
27
  const singleClusterMode = useTypedSelector((state) => state.singleClusterMode);
26
28
  const { page, pageBreadcrumbsOptions } = useTypedSelector((state) => state.header);
27
- const queryParams = parseQuery(location);
28
- const clusterNameFromQuery = (_a = queryParams.clusterName) === null || _a === void 0 ? void 0 : _a.toString();
29
- const { currentData: { clusterData: data } = {} } = clusterApi.useGetClusterInfoQuery(clusterNameFromQuery);
30
- const clusterNameFinal = (data === null || data === void 0 ? void 0 : data.Name) || clusterNameFromQuery;
29
+ const clusterInfo = clusterApi.useGetClusterInfoQuery(queryParams.clusterName);
30
+ const clusterName = get(clusterInfo, ['currentData', 'clusterData', 'Name'], queryParams.clusterName);
31
31
  const breadcrumbItems = React.useMemo(() => {
32
32
  const rawBreadcrumbs = [];
33
- let options = pageBreadcrumbsOptions;
33
+ const options = pageBreadcrumbsOptions;
34
34
  if (mainPage) {
35
35
  rawBreadcrumbs.push(mainPage);
36
36
  }
37
- if (clusterNameFinal) {
38
- options = Object.assign(Object.assign({}, pageBreadcrumbsOptions), { clusterName: clusterNameFinal });
37
+ if (clusterName) {
38
+ options.clusterName = clusterName;
39
39
  }
40
40
  const breadcrumbs = getBreadcrumbs(page, options, rawBreadcrumbs, queryParams);
41
41
  return breadcrumbs.map((item) => {
42
- const action = () => {
43
- if (item.link) {
44
- history.push(item.link);
45
- }
46
- };
47
- return Object.assign(Object.assign({}, item), { action });
42
+ return Object.assign(Object.assign({}, item), { action: () => { } });
48
43
  });
49
- }, [clusterNameFinal, mainPage, history, queryParams, page, pageBreadcrumbsOptions]);
44
+ }, [clusterName, mainPage, history, queryParams, page, pageBreadcrumbsOptions]);
50
45
  const renderHeader = () => {
51
- return (_jsxs("header", { className: b(), children: [_jsx("div", { children: _jsx(Breadcrumbs, { items: breadcrumbItems, lastDisplayedItemsCount: 1, firstDisplayedItemsCount: 1, renderItemContent: ({ icon, text }) => {
52
- if (!icon) {
53
- return text;
54
- }
55
- return (_jsxs("span", { className: b('breadcrumb'), children: [_jsx("div", { className: b('breadcrumb__icon'), children: icon }), text] }));
56
- } }) }), _jsx(LinkWithIcon, { title: DEVELOPER_UI_TITLE, url: getInternalLink(singleClusterMode) })] }));
46
+ return (_jsxs("header", { className: b(), children: [_jsx(Breadcrumbs, { items: breadcrumbItems, lastDisplayedItemsCount: 1, firstDisplayedItemsCount: 1, className: b('breadcrumbs'), renderItem: ({ item, isCurrent }) => {
47
+ const { icon, text, link } = item;
48
+ return (_jsxs(InternalLink, { className: b('breadcrumbs-item', {
49
+ active: isCurrent,
50
+ link: !isCurrent,
51
+ }), to: isCurrent ? undefined : link, children: [icon ? (_jsx("span", { className: b('breadcrumbs-icon'), children: icon })) : null, _jsx("span", { children: text })] }));
52
+ } }), _jsx(LinkWithIcon, { title: DEVELOPER_UI_TITLE, url: getInternalLink(singleClusterMode) })] }));
57
53
  };
58
54
  return renderHeader();
59
55
  }
@@ -10,14 +10,23 @@
10
10
 
11
11
  border-bottom: 1px solid var(--g-color-line-generic);
12
12
 
13
- &__breadcrumb {
13
+ &__breadcrumbs-item {
14
14
  display: flex;
15
- align-items: center;
15
+ gap: 3px;
16
+
17
+ color: var(--g-color-text-secondary);
16
18
 
17
- &__icon {
18
- display: flex;
19
+ &_link:hover {
20
+ color: var(--g-color-text-complementary);
21
+ }
19
22
 
20
- margin-right: 3px;
23
+ &_active {
24
+ color: var(--g-color-text-primary);
21
25
  }
22
26
  }
27
+
28
+ &__breadcrumbs-icon {
29
+ display: flex;
30
+ align-items: center;
31
+ }
23
32
  }
@@ -11,6 +11,10 @@ import { headerKeyset } from './i18n';
11
11
  const prepareTenantName = (tenantName) => {
12
12
  return tenantName.startsWith('/') ? tenantName.slice(1) : tenantName;
13
13
  };
14
+ const getQueryForTenant = (type) => ({
15
+ [TENANT_PAGE]: TENANT_PAGES_IDS.diagnostics,
16
+ [TenantTabsGroups.diagnosticsTab]: TENANT_DIAGNOSTICS_TABS_IDS[type],
17
+ });
14
18
  const getClusterBreadcrumbs = (options, query = {}) => {
15
19
  const { clusterName, clusterTab } = options;
16
20
  return [
@@ -23,109 +27,99 @@ const getClusterBreadcrumbs = (options, query = {}) => {
23
27
  };
24
28
  const getTenantBreadcrumbs = (options, query = {}) => {
25
29
  const { tenantName } = options;
30
+ const breadcrumbs = getClusterBreadcrumbs(options, query);
26
31
  const text = tenantName ? prepareTenantName(tenantName) : headerKeyset('breadcrumbs.tenant');
27
32
  const link = tenantName ? getTenantPath(Object.assign(Object.assign({}, query), { name: tenantName })) : undefined;
28
- return [...getClusterBreadcrumbs(options, query), { text, link, icon: _jsx(DatabaseIcon, {}) }];
33
+ const lastItem = { text, link, icon: _jsx(DatabaseIcon, {}) };
34
+ breadcrumbs.push(lastItem);
35
+ return breadcrumbs;
29
36
  };
30
37
  const getNodeBreadcrumbs = (options, query = {}) => {
31
38
  const { tenantName, nodeId } = options;
32
- let breadcrumbs;
33
39
  // Compute nodes have tenantName, storage nodes doesn't
34
- const isStorageNode = !tenantName;
35
- const newQuery = Object.assign(Object.assign({}, query), { [TENANT_PAGE]: TENANT_PAGES_IDS.diagnostics, [TenantTabsGroups.diagnosticsTab]: TENANT_DIAGNOSTICS_TABS_IDS.nodes });
36
- if (isStorageNode) {
37
- breadcrumbs = getClusterBreadcrumbs(options, query);
38
- }
39
- else {
40
- breadcrumbs = getTenantBreadcrumbs(options, newQuery);
40
+ const isStorage = !tenantName;
41
+ const tenantQuery = getQueryForTenant('nodes');
42
+ const breadcrumbs = isStorage
43
+ ? getClusterBreadcrumbs(options, query)
44
+ : getTenantBreadcrumbs(options, Object.assign(Object.assign({}, query), tenantQuery));
45
+ let text = headerKeyset('breadcrumbs.node');
46
+ if (nodeId) {
47
+ text += ` ${nodeId}`;
41
48
  }
42
- const text = nodeId
43
- ? `${headerKeyset('breadcrumbs.node')} ${nodeId}`
44
- : headerKeyset('breadcrumbs.node');
45
- const link = nodeId ? getDefaultNodePath(nodeId, query) : undefined;
46
- const icon = isStorageNode ? _jsx(StorageNodeIcon, {}) : _jsx(ComputeNodeIcon, {});
47
- breadcrumbs.push({
49
+ const lastItem = {
48
50
  text,
49
- link,
50
- icon,
51
- });
51
+ link: nodeId ? getDefaultNodePath(nodeId, query) : undefined,
52
+ icon: isStorage ? _jsx(StorageNodeIcon, {}) : _jsx(ComputeNodeIcon, {}),
53
+ };
54
+ breadcrumbs.push(lastItem);
52
55
  return breadcrumbs;
53
56
  };
54
57
  const getPDiskBreadcrumbs = (options, query = {}) => {
55
58
  const { nodeId, pDiskId } = options;
56
59
  const breadcrumbs = getNodeBreadcrumbs({
57
- // PDisks relate to storage Nodes, they don't have tenant name
58
- tenantName: undefined,
59
- nodeId: nodeId,
60
+ nodeId,
60
61
  });
61
- const text = pDiskId
62
- ? `${headerKeyset('breadcrumbs.pDisk')} ${pDiskId}`
63
- : headerKeyset('breadcrumbs.pDisk');
64
- const link = pDiskId && nodeId ? getPDiskPagePath(pDiskId, nodeId, query) : undefined;
65
- breadcrumbs.push({
62
+ let text = headerKeyset('breadcrumbs.pDisk');
63
+ if (pDiskId) {
64
+ text += ` ${pDiskId}`;
65
+ }
66
+ const hasLink = pDiskId && nodeId;
67
+ const link = hasLink ? getPDiskPagePath(pDiskId, nodeId, query) : undefined;
68
+ const lastItem = {
66
69
  text,
67
70
  link,
68
- });
71
+ };
72
+ breadcrumbs.push(lastItem);
69
73
  return breadcrumbs;
70
74
  };
71
75
  const getVDiskBreadcrumbs = (options, query = {}) => {
72
76
  const { vDiskSlotId } = options;
73
77
  const breadcrumbs = getPDiskBreadcrumbs(options, query);
74
- const text = vDiskSlotId
75
- ? `${headerKeyset('breadcrumbs.vDisk')} ${vDiskSlotId}`
76
- : headerKeyset('breadcrumbs.vDisk');
77
- breadcrumbs.push({ text });
78
+ let text = headerKeyset('breadcrumbs.vDisk');
79
+ if (vDiskSlotId) {
80
+ text += ` ${vDiskSlotId}`;
81
+ }
82
+ const lastItem = {
83
+ text,
84
+ };
85
+ breadcrumbs.push(lastItem);
78
86
  return breadcrumbs;
79
87
  };
80
- const getTabletsBreadcrubms = (options, query = {}) => {
88
+ const getTabletsBreadcrumbs = (options, query = {}) => {
81
89
  const { tenantName, nodeIds } = options;
82
- const newQuery = Object.assign(Object.assign({}, query), { [TENANT_PAGE]: TENANT_PAGES_IDS.diagnostics, [TenantTabsGroups.diagnosticsTab]: TENANT_DIAGNOSTICS_TABS_IDS.tablets });
83
- let breadcrumbs;
84
- // Cluster system tablets don't have tenantName
85
- if (tenantName) {
86
- breadcrumbs = getTenantBreadcrumbs(options, newQuery);
87
- }
88
- else {
89
- breadcrumbs = getClusterBreadcrumbs(options, query);
90
- }
90
+ const tenantQuery = getQueryForTenant('tablets');
91
+ const breadcrumbs = tenantName
92
+ ? getTenantBreadcrumbs(options, Object.assign(Object.assign({}, query), tenantQuery))
93
+ : getClusterBreadcrumbs(options, query);
91
94
  const link = createHref(routes.tabletsFilters, undefined, Object.assign(Object.assign({}, query), { nodeIds, path: tenantName }));
92
- breadcrumbs.push({ text: headerKeyset('breadcrumbs.tablets'), link });
95
+ const lastItem = { text: headerKeyset('breadcrumbs.tablets'), link };
96
+ breadcrumbs.push(lastItem);
93
97
  return breadcrumbs;
94
98
  };
95
- const getTabletBreadcrubms = (options, query = {}) => {
99
+ const getTabletBreadcrumbs = (options, query = {}) => {
96
100
  const { tabletId, tabletType } = options;
97
- const breadcrumbs = getTabletsBreadcrubms(options, query);
98
- breadcrumbs.push({
101
+ const breadcrumbs = getTabletsBreadcrumbs(options, query);
102
+ const lastItem = {
99
103
  text: tabletId || headerKeyset('breadcrumbs.tablet'),
100
104
  icon: _jsx(TabletIcon, { text: getTabletLabel(tabletType) }),
101
- });
105
+ };
106
+ breadcrumbs.push(lastItem);
102
107
  return breadcrumbs;
103
108
  };
109
+ const mapPageToGetter = {
110
+ cluster: getClusterBreadcrumbs,
111
+ node: getNodeBreadcrumbs,
112
+ pDisk: getPDiskBreadcrumbs,
113
+ tablet: getTabletBreadcrumbs,
114
+ tablets: getTabletsBreadcrumbs,
115
+ tenant: getTenantBreadcrumbs,
116
+ vDisk: getVDiskBreadcrumbs,
117
+ };
104
118
  export const getBreadcrumbs = (page, options, rawBreadcrumbs = [], query = {}) => {
105
- switch (page) {
106
- case 'cluster': {
107
- return [...rawBreadcrumbs, ...getClusterBreadcrumbs(options, query)];
108
- }
109
- case 'tenant': {
110
- return [...rawBreadcrumbs, ...getTenantBreadcrumbs(options, query)];
111
- }
112
- case 'node': {
113
- return [...rawBreadcrumbs, ...getNodeBreadcrumbs(options, query)];
114
- }
115
- case 'pDisk': {
116
- return [...rawBreadcrumbs, ...getPDiskBreadcrumbs(options, query)];
117
- }
118
- case 'vDisk': {
119
- return [...rawBreadcrumbs, ...getVDiskBreadcrumbs(options, query)];
120
- }
121
- case 'tablets': {
122
- return [...rawBreadcrumbs, ...getTabletsBreadcrubms(options, query)];
123
- }
124
- case 'tablet': {
125
- return [...rawBreadcrumbs, ...getTabletBreadcrubms(options, query)];
126
- }
127
- default: {
128
- return rawBreadcrumbs;
129
- }
119
+ if (!page) {
120
+ return rawBreadcrumbs;
130
121
  }
122
+ const getter = mapPageToGetter[page];
123
+ const pageBreadcrumbs = getter(options, query);
124
+ return [...rawBreadcrumbs, ...pageBreadcrumbs];
131
125
  };
@@ -7,7 +7,7 @@ import { heatmapApi, setHeatmapOptions } from '../../store/reducers/heatmap';
7
7
  import { hideTooltip, showTooltip } from '../../store/reducers/tooltip';
8
8
  import { cn } from '../../utils/cn';
9
9
  import { formatNumber } from '../../utils/dataFormatters/dataFormatters';
10
- import { useTypedDispatch, useTypedSelector } from '../../utils/hooks';
10
+ import { useAutoRefreshInterval, useTypedDispatch, useTypedSelector } from '../../utils/hooks';
11
11
  import { HeatmapCanvas } from './HeatmapCanvas/HeatmapCanvas';
12
12
  import { Histogram } from './Histogram/Histogram';
13
13
  import { COLORS_RANGE_SIZE, getColorIndex, getColorRange, getCurrentMetricLimits } from './util';
@@ -17,8 +17,8 @@ const COLORS_RANGE = getColorRange(COLORS_RANGE_SIZE);
17
17
  export const Heatmap = ({ path }) => {
18
18
  const dispatch = useTypedDispatch();
19
19
  const itemsContainer = React.createRef();
20
- const { autorefresh } = useTypedSelector((state) => state.schema);
21
- const { currentData, isFetching, error } = heatmapApi.useGetHeatmapTabletsInfoQuery({ path }, { pollingInterval: autorefresh });
20
+ const [autoRefreshInterval] = useAutoRefreshInterval();
21
+ const { currentData, isFetching, error } = heatmapApi.useGetHeatmapTabletsInfoQuery({ path }, { pollingInterval: autoRefreshInterval });
22
22
  const loading = isFetching && currentData === undefined;
23
23
  const { tablets = [], metrics } = currentData || {};
24
24
  const { sort, heatmap, currentMetric } = useTypedSelector((state) => state.heatmap);
@@ -14,10 +14,10 @@ import { TableWithControlsLayout } from '../../components/TableWithControlsLayou
14
14
  import { UptimeFilter } from '../../components/UptimeFIlter';
15
15
  import { nodesApi } from '../../store/reducers/nodes/nodes';
16
16
  import { filterNodes } from '../../store/reducers/nodes/selectors';
17
- import { ProblemFilterValues, changeFilter } from '../../store/reducers/settings/settings';
17
+ import { ProblemFilterValues, changeFilter, selectProblemFilter, } from '../../store/reducers/settings/settings';
18
18
  import { cn } from '../../utils/cn';
19
19
  import { DEFAULT_POLLING_INTERVAL, DEFAULT_TABLE_SETTINGS, USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY, } from '../../utils/constants';
20
- import { useSetting, useTableSort, useTypedDispatch, useTypedSelector } from '../../utils/hooks';
20
+ import { useAutoRefreshInterval, useSetting, useTableSort, useTypedDispatch, useTypedSelector, } from '../../utils/hooks';
21
21
  import { NodesUptimeFilterValues, isSortableNodesProperty, isUnavailableNode, nodesUptimeFilterValuesSchema, } from '../../utils/nodes';
22
22
  import { NODES_COLUMNS_WIDTH_LS_KEY, getNodesColumns } from './getNodesColumns';
23
23
  import i18n from './i18n';
@@ -33,8 +33,8 @@ export const Nodes = ({ path, additionalNodesProps = {} }) => {
33
33
  const searchValue = (_a = queryParams.search) !== null && _a !== void 0 ? _a : '';
34
34
  const dispatch = useTypedDispatch();
35
35
  const isClusterNodes = !path;
36
- const problemFilter = useTypedSelector((state) => state.settings.problemFilter);
37
- const { autorefresh } = useTypedSelector((state) => state.schema);
36
+ const problemFilter = useTypedSelector(selectProblemFilter);
37
+ const [autorefresh] = useAutoRefreshInterval();
38
38
  const [useNodesEndpoint] = useSetting(USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY);
39
39
  const autoRefreshInterval = isClusterNodes ? DEFAULT_POLLING_INTERVAL : autorefresh;
40
40
  // If there is no path, it's cluster Nodes tab
@@ -9,7 +9,7 @@ import { ProblemFilter } from '../../components/ProblemFilter';
9
9
  import { Search } from '../../components/Search';
10
10
  import { UptimeFilter } from '../../components/UptimeFIlter';
11
11
  import { ResizeableVirtualTable } from '../../components/VirtualTable/ResizeableVirtualTable';
12
- import { ProblemFilterValues, changeFilter } from '../../store/reducers/settings/settings';
12
+ import { ProblemFilterValues, changeFilter, selectProblemFilter, } from '../../store/reducers/settings/settings';
13
13
  import { cn } from '../../utils/cn';
14
14
  import { useTypedDispatch, useTypedSelector } from '../../utils/hooks';
15
15
  import { NodesUptimeFilterValues, getProblemParamValue, getUptimeParamValue, isSortableNodesProperty, isUnavailableNode, nodesUptimeFilterValuesSchema, } from '../../utils/nodes';
@@ -27,7 +27,7 @@ export const VirtualNodes = ({ path, parentContainer, additionalNodesProps }) =>
27
27
  const uptimeFilter = nodesUptimeFilterValuesSchema.parse(queryParams.uptimeFilter);
28
28
  const searchValue = (_a = queryParams.search) !== null && _a !== void 0 ? _a : '';
29
29
  const dispatch = useTypedDispatch();
30
- const problemFilter = useTypedSelector((state) => state.settings.problemFilter);
30
+ const problemFilter = useTypedSelector(selectProblemFilter);
31
31
  const filters = React.useMemo(() => {
32
32
  return [path, searchValue, problemFilter, uptimeFilter];
33
33
  }, [path, searchValue, problemFilter, uptimeFilter]);
@@ -11,7 +11,7 @@ import { filterGroups, filterNodes, getUsageFilterOptions, } from '../../store/r
11
11
  import { storageApi } from '../../store/reducers/storage/storage';
12
12
  import { storageTypeSchema, visibleEntitiesSchema } from '../../store/reducers/storage/types';
13
13
  import { DEFAULT_POLLING_INTERVAL, DEFAULT_TABLE_SETTINGS } from '../../utils/constants';
14
- import { useNodesRequestParams, useStorageRequestParams, useTableSort, useTypedSelector, } from '../../utils/hooks';
14
+ import { useAutoRefreshInterval, useNodesRequestParams, useStorageRequestParams, useTableSort, useTypedSelector, } from '../../utils/hooks';
15
15
  import { NodesUptimeFilterValues, nodesUptimeFilterValuesSchema } from '../../utils/nodes';
16
16
  import { StorageControls } from './StorageControls/StorageControls';
17
17
  import { StorageGroups } from './StorageGroups/StorageGroups';
@@ -33,7 +33,7 @@ const UsageFilterParam = withDefault({
33
33
  }, []);
34
34
  export const Storage = ({ additionalNodesProps, tenant, nodeId }) => {
35
35
  var _a;
36
- const { autorefresh } = useTypedSelector((state) => state.schema);
36
+ const [autorefresh] = useAutoRefreshInterval();
37
37
  const [queryParams, setQueryParams] = useQueryParams({
38
38
  type: StringParam,
39
39
  visible: StringParam,
@@ -14,7 +14,7 @@ import { ETabletState } from '../../types/api/tablet';
14
14
  import { cn } from '../../utils/cn';
15
15
  import { DEFAULT_TABLE_SETTINGS } from '../../utils/constants';
16
16
  import { calcUptime } from '../../utils/dataFormatters/dataFormatters';
17
- import { useTypedDispatch, useTypedSelector } from '../../utils/hooks';
17
+ import { useAutoRefreshInterval, useTypedDispatch, useTypedSelector } from '../../utils/hooks';
18
18
  import { mapTabletStateToLabelTheme } from '../../utils/tablet';
19
19
  import { getDefaultNodePath } from '../Node/NodePages';
20
20
  import i18n from './i18n';
@@ -26,7 +26,7 @@ const columns = [
26
26
  return i18n('Type');
27
27
  },
28
28
  render: ({ row }) => {
29
- return (_jsxs("span", { children: [row.Type, " ", row.Leader ? _jsx(Text, { color: "secondary", children: "leader" }) : ''] }));
29
+ return (_jsxs("span", { children: [row.Type, " ", row.Leader ? '' : _jsx(Text, { color: "secondary", children: "follower" })] }));
30
30
  },
31
31
  },
32
32
  {
@@ -61,7 +61,7 @@ const columns = [
61
61
  align: 'right',
62
62
  },
63
63
  {
64
- name: 'FQDN',
64
+ name: 'fqdn',
65
65
  get header() {
66
66
  return i18n('Node FQDN');
67
67
  },
@@ -111,8 +111,8 @@ function TabletActions(tablet) {
111
111
  }, buttonDisabled: isDisabledRestart || !isUserAllowedToMakeChanges, withPopover: true, popoverContent: i18n('controls.kill-not-allowed'), popoverDisabled: isUserAllowedToMakeChanges, children: _jsx(Icon, { data: ArrowsRotateRight }) }));
112
112
  }
113
113
  export function Tablets({ nodeId, path, className }) {
114
- const { autorefresh } = useTypedSelector((state) => state.schema);
115
- let params = skipToken;
114
+ const [autoRefreshInterval] = useAutoRefreshInterval();
115
+ let params = {};
116
116
  const node = nodeId === undefined ? undefined : String(nodeId);
117
117
  if (node !== undefined) {
118
118
  params = { nodes: [String(node)] };
@@ -120,11 +120,11 @@ export function Tablets({ nodeId, path, className }) {
120
120
  else if (path) {
121
121
  params = { path };
122
122
  }
123
- const { currentData, isFetching, error } = tabletsApi.useGetTabletsInfoQuery(params, {
124
- pollingInterval: autorefresh,
123
+ const { currentData, isFetching, error } = tabletsApi.useGetTabletsInfoQuery(Object.keys(params).length === 0 ? skipToken : params, {
124
+ pollingInterval: autoRefreshInterval,
125
125
  });
126
126
  const loading = isFetching && currentData === undefined;
127
- const tablets = useTypedSelector((state) => selectTabletsWithFqdn(state, node, path));
127
+ const tablets = useTypedSelector((state) => selectTabletsWithFqdn(state, params));
128
128
  if (loading) {
129
129
  return _jsx(TableSkeleton, {});
130
130
  }
@@ -1,57 +1,2 @@
1
- export class TabletsFilters extends React.Component<any, any, any> {
2
- static propTypes: {
3
- wasLoaded: PropTypes.Requireable<boolean>;
4
- loading: PropTypes.Requireable<boolean>;
5
- getTabletsInfo: PropTypes.Requireable<(...args: any[]) => any>;
6
- timeoutForRequest: PropTypes.Requireable<number>;
7
- path: PropTypes.Requireable<string>;
8
- clearWasLoadingFlag: PropTypes.Requireable<(...args: any[]) => any>;
9
- nodes: PropTypes.Requireable<any[]>;
10
- tablets: PropTypes.Requireable<any[]>;
11
- filteredTablets: PropTypes.Requireable<any[]>;
12
- setStateFilter: PropTypes.Requireable<(...args: any[]) => any>;
13
- setTypeFilter: PropTypes.Requireable<(...args: any[]) => any>;
14
- stateFilter: PropTypes.Requireable<any[]>;
15
- typeFilter: PropTypes.Requireable<any[]>;
16
- error: PropTypes.Requireable<PropTypes.Requireable<string> | PropTypes.Requireable<object>>;
17
- setHeader: PropTypes.Requireable<(...args: any[]) => any>;
18
- };
19
- static renderLoader(): import("react/jsx-runtime").JSX.Element;
20
- static parseNodes: (nodes: any) => number[] | undefined;
21
- static getStateFiltersFromColor: (color: any) => any;
22
- static CONTROL_WIDTH: number;
23
- static POPUP_WIDTH: number;
24
- constructor(props: any);
25
- constructor(props: any, context: any);
26
- state: {
27
- nodeFilter: never[];
28
- tenantPath: string;
29
- clusterName: string;
30
- };
31
- reloadDescriptor: number;
32
- componentDidMount(): void;
33
- componentDidUpdate(prevProps: any): void;
34
- componentWillUnmount(): void;
35
- makeRequest: () => void;
36
- getTablets: () => void;
37
- handleNodeFilterChange: (nodeFilter: any) => void;
38
- handleStateFilterChange: (stateFilter: any) => void;
39
- handleTypeFilterChange: (typeFilter: any) => void;
40
- renderTablet: (index: any, key: any) => import("react/jsx-runtime").JSX.Element;
41
- renderContent: () => import("react/jsx-runtime").JSX.Element;
42
- renderView: () => import("react/jsx-runtime").JSX.Element;
43
- render(): import("react/jsx-runtime").JSX.Element;
44
- }
45
- declare const _default: import("react-redux").ConnectedComponent<typeof TabletsFilters, {
46
- path?: string | null | undefined;
47
- setHeader?: ((...args: any[]) => any) | null | undefined;
48
- context?: React.Context<import("react-redux").ReactReduxContextValue<any, import("redux").UnknownAction> | null> | undefined;
49
- store?: import("redux").Store<any, import("redux").UnknownAction, unknown> | undefined;
50
- } | {
51
- path?: string | null | undefined;
52
- setHeader?: ((...args: any[]) => any) | null | undefined;
53
- store?: import("redux").Store<any, import("redux").UnknownAction, unknown> | undefined;
54
- }>;
55
- export default _default;
56
- import React from 'react';
57
- import PropTypes from 'prop-types';
1
+ import './TabletsFilters.scss';
2
+ export declare function TabletsFilters(): import("react/jsx-runtime").JSX.Element;