ydb-embedded-ui 6.6.1 → 6.7.0

Sign up to get free protection for your applications and to get access to all the features.
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;