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.
- package/dist/package.json +2 -1
- package/dist/src/containers/App/App.d.ts +1 -1
- package/dist/src/containers/App/Content.js +1 -1
- package/dist/src/containers/App/appSlots.d.ts +1 -1
- package/dist/src/containers/AsideNavigation/Navigation.js +1 -3
- package/dist/src/containers/AsideNavigation/i18n/en.json +0 -2
- package/dist/src/containers/AsideNavigation/i18n/index.d.ts +1 -1
- package/dist/src/containers/AsideNavigation/i18n/index.js +1 -2
- package/dist/src/containers/Cluster/i18n/index.d.ts +1 -1
- package/dist/src/containers/Clusters/constants.d.ts +1 -1
- package/dist/src/containers/Header/Header.js +17 -21
- package/dist/src/containers/Header/Header.scss +14 -5
- package/dist/src/containers/Header/breadcrumbs.js +65 -71
- package/dist/src/containers/Heatmap/Heatmap.js +3 -3
- package/dist/src/containers/Nodes/Nodes.js +4 -4
- package/dist/src/containers/Nodes/VirtualNodes.js +2 -2
- package/dist/src/containers/Storage/Storage.js +2 -2
- package/dist/src/containers/Tablets/Tablets.js +8 -8
- package/dist/src/containers/TabletsFilters/TabletsFilters.d.ts +2 -57
- package/dist/src/containers/TabletsFilters/TabletsFilters.js +70 -180
- package/dist/src/containers/Tenant/Acl/Acl.d.ts +3 -1
- package/dist/src/containers/Tenant/Acl/Acl.js +7 -17
- package/dist/src/containers/Tenant/Diagnostics/Autorefresh/AutorefreshControl.js +4 -5
- package/dist/src/containers/Tenant/Diagnostics/Consumers/Consumers.js +3 -3
- package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.js +5 -6
- package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.d.ts +1 -0
- package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.js +3 -5
- package/dist/src/containers/Tenant/Diagnostics/Diagnostics.d.ts +2 -0
- package/dist/src/containers/Tenant/Diagnostics/Diagnostics.js +26 -50
- package/dist/src/containers/Tenant/Diagnostics/Diagnostics.scss +1 -1
- package/dist/src/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +19 -58
- package/dist/src/containers/Tenant/Diagnostics/Network/Network.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/Network/Network.js +5 -5
- package/dist/src/containers/Tenant/Diagnostics/Overview/AsyncReplicationInfo/AsyncReplicationInfo.js +1 -6
- package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.d.ts +2 -1
- package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.js +3 -8
- package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.js +19 -21
- package/dist/src/containers/Tenant/Diagnostics/Overview/TableInfo/TableInfo.scss +0 -2
- package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.d.ts +2 -1
- package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.js +3 -8
- package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.d.ts +3 -1
- package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js +5 -5
- package/dist/src/containers/Tenant/Diagnostics/Partitions/Partitions.js +4 -12
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/Healthcheck.scss +48 -57
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.d.ts +2 -5
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.js +7 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.d.ts +1 -6
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.js +22 -16
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.d.ts +2 -8
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.js +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.js +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js +4 -4
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js +4 -4
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +4 -4
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.d.ts +2 -1
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +5 -5
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js +3 -3
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.js +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js +4 -4
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +7 -9
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +3 -3
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +3 -3
- package/dist/src/containers/Tenant/Diagnostics/TenantOverview/useHealthcheck.js +1 -1
- package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.d.ts +2 -2
- package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +5 -5
- package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.d.ts +3 -2
- package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.js +8 -8
- package/dist/src/containers/Tenant/Info/ExternalDataSource/ExternalDataSource.js +0 -6
- package/dist/src/containers/Tenant/Info/ExternalTable/ExternalTable.js +0 -6
- package/dist/src/containers/Tenant/Info/View/View.js +0 -6
- package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.d.ts +2 -1
- package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.js +7 -13
- package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.d.ts +4 -4
- package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.js +159 -63
- package/dist/src/containers/Tenant/Query/Issues/Issues.js +6 -5
- package/dist/src/containers/Tenant/Query/Preview/Preview.d.ts +2 -1
- package/dist/src/containers/Tenant/Query/Preview/Preview.js +6 -6
- package/dist/src/containers/Tenant/Query/Query.d.ts +1 -0
- package/dist/src/containers/Tenant/Query/Query.scss +1 -1
- package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.d.ts +2 -0
- package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.js +9 -22
- package/dist/src/containers/Tenant/Query/i18n/en.json +1 -1
- package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.d.ts +1 -0
- package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.js +11 -19
- package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.d.ts +2 -2
- package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +13 -8
- package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.d.ts +2 -1
- package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.js +21 -2
- package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/en.json +1 -0
- package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/index.d.ts +1 -1
- package/dist/src/containers/Tenant/Schema/SchemaViewer/prepareData.js +2 -1
- package/dist/src/containers/Tenant/Schema/SchemaViewer/types.d.ts +1 -0
- package/dist/src/containers/Tenant/Tenant.js +20 -36
- package/dist/src/containers/Tenant/Tenant.scss +4 -0
- package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.d.ts +2 -0
- package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.js +19 -0
- package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.scss +18 -0
- package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.d.ts +9 -0
- package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.js +44 -0
- package/dist/src/containers/Tenant/i18n/en.json +17 -0
- package/dist/src/containers/Tenant/i18n/index.d.ts +1 -1
- package/dist/src/containers/Tenant/utils/queryTemplates.d.ts +1 -0
- package/dist/src/containers/Tenant/utils/queryTemplates.js +12 -0
- package/dist/src/containers/Tenant/utils/schemaActions.js +3 -1
- package/dist/src/lib.d.ts +1 -1
- package/dist/src/lib.js +1 -1
- package/dist/src/routes.d.ts +1 -1
- package/dist/src/routes.js +3 -1
- package/dist/src/services/api.d.ts +6 -1
- package/dist/src/services/api.js +23 -3
- package/dist/src/services/settings.d.ts +1 -0
- package/dist/src/services/settings.js +3 -2
- package/dist/src/store/configureStore.d.ts +36 -134
- package/dist/src/store/configureStore.js +2 -15
- package/dist/src/store/defaultStore.d.ts +17 -81
- package/dist/src/store/reducers/api.js +0 -1
- package/dist/src/store/reducers/authentication/authentication.d.ts +51 -243
- package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +196 -849
- package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.js +3 -3
- package/dist/src/store/reducers/hotKeys/hotKeys.d.ts +6 -25
- package/dist/src/store/reducers/hotKeys/hotKeys.js +36 -49
- package/dist/src/store/reducers/index.d.ts +23 -100
- package/dist/src/store/reducers/index.js +0 -8
- package/dist/src/store/reducers/node/selectors.d.ts +0 -40
- package/dist/src/store/reducers/nodesList.d.ts +0 -40
- package/dist/src/store/reducers/schema/schema.d.ts +13 -149
- package/dist/src/store/reducers/schema/schema.js +45 -90
- package/dist/src/store/reducers/schema/types.d.ts +2 -21
- package/dist/src/store/reducers/schemaAcl/schemaAcl.d.ts +8 -135
- package/dist/src/store/reducers/schemaAcl/schemaAcl.js +18 -44
- package/dist/src/store/reducers/settings/settings.d.ts +17 -23
- package/dist/src/store/reducers/settings/settings.js +40 -33
- package/dist/src/store/reducers/settings/types.d.ts +1 -12
- package/dist/src/store/reducers/tablets.d.ts +288 -41
- package/dist/src/store/reducers/tablets.js +8 -4
- package/dist/src/store/reducers/tabletsFilters.d.ts +11 -164
- package/dist/src/store/reducers/tabletsFilters.js +14 -76
- package/dist/src/store/reducers/tenants/selectors.d.ts +8 -362
- package/dist/src/store/reducers/topic.d.ts +0 -600
- package/dist/src/store/state-url-mapping.js +0 -3
- package/dist/src/utils/constants.d.ts +1 -1
- package/dist/src/utils/constants.js +1 -1
- package/dist/src/utils/dataFormatters/dataFormatters.d.ts +2 -1
- package/dist/src/utils/dataFormatters/dataFormatters.js +7 -3
- package/dist/src/utils/hooks/index.d.ts +1 -0
- package/dist/src/utils/hooks/index.js +1 -0
- package/dist/src/utils/hooks/useAutoRefreshInterval.d.ts +1 -0
- package/dist/src/utils/hooks/useAutoRefreshInterval.js +5 -0
- package/dist/src/utils/utils.js +2 -1
- package/package.json +2 -1
- package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.d.ts +0 -6
- package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.js +0 -17
- package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.d.ts +0 -6
- package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.js +0 -20
- package/dist/src/components/InfoViewer/schemaOverview/index.d.ts +0 -2
- package/dist/src/components/InfoViewer/schemaOverview/index.js +0 -2
- package/dist/src/containers/AsideNavigation/i18n/ru.json +0 -10
- package/dist/src/containers/AsideNavigation/useNavigationMenuItems.d.ts +0 -2
- package/dist/src/containers/AsideNavigation/useNavigationMenuItems.js +0 -54
- package/dist/src/store/reducers/host.d.ts +0 -130
- package/dist/src/store/reducers/host.js +0 -26
- package/dist/src/store/reducers/hotKeys/types.d.ts +0 -10
- package/dist/src/store/reducers/hotKeys/types.js +0 -1
- package/dist/src/store/reducers/schemaAcl/types.d.ts +0 -12
- package/dist/src/store/reducers/schemaAcl/types.js +0 -1
- package/dist/src/types/store/host.d.ts +0 -15
- 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.
|
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
|
-
|
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,2 +1,2 @@
|
|
1
|
-
declare const _default: (key: "
|
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,2 +1,2 @@
|
|
1
|
-
declare const _default: (key: "nodes" | "tablets" | "versions" | "
|
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" | "
|
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
|
28
|
-
const
|
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
|
-
|
33
|
+
const options = pageBreadcrumbsOptions;
|
34
34
|
if (mainPage) {
|
35
35
|
rawBreadcrumbs.push(mainPage);
|
36
36
|
}
|
37
|
-
if (
|
38
|
-
options =
|
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
|
-
|
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
|
-
}, [
|
44
|
+
}, [clusterName, mainPage, history, queryParams, page, pageBreadcrumbsOptions]);
|
50
45
|
const renderHeader = () => {
|
51
|
-
return (_jsxs("header", { className: b(), children: [_jsx(
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
-
&
|
13
|
+
&__breadcrumbs-item {
|
14
14
|
display: flex;
|
15
|
-
|
15
|
+
gap: 3px;
|
16
|
+
|
17
|
+
color: var(--g-color-text-secondary);
|
16
18
|
|
17
|
-
&
|
18
|
-
|
19
|
+
&_link:hover {
|
20
|
+
color: var(--g-color-text-complementary);
|
21
|
+
}
|
19
22
|
|
20
|
-
|
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
|
-
|
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
|
35
|
-
const
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
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
|
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
|
-
|
58
|
-
tenantName: undefined,
|
59
|
-
nodeId: nodeId,
|
60
|
+
nodeId,
|
60
61
|
});
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
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
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
88
|
+
const getTabletsBreadcrumbs = (options, query = {}) => {
|
81
89
|
const { tenantName, nodeIds } = options;
|
82
|
-
const
|
83
|
-
|
84
|
-
|
85
|
-
|
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
|
-
|
95
|
+
const lastItem = { text: headerKeyset('breadcrumbs.tablets'), link };
|
96
|
+
breadcrumbs.push(lastItem);
|
93
97
|
return breadcrumbs;
|
94
98
|
};
|
95
|
-
const
|
99
|
+
const getTabletBreadcrumbs = (options, query = {}) => {
|
96
100
|
const { tabletId, tabletType } = options;
|
97
|
-
const breadcrumbs =
|
98
|
-
|
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
|
-
|
106
|
-
|
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
|
21
|
-
const { currentData, isFetching, error } = heatmapApi.useGetHeatmapTabletsInfoQuery({ path }, { pollingInterval:
|
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(
|
37
|
-
const
|
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(
|
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
|
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: "
|
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: '
|
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
|
115
|
-
let params =
|
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:
|
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,
|
127
|
+
const tablets = useTypedSelector((state) => selectTabletsWithFqdn(state, params));
|
128
128
|
if (loading) {
|
129
129
|
return _jsx(TableSkeleton, {});
|
130
130
|
}
|
@@ -1,57 +1,2 @@
|
|
1
|
-
|
2
|
-
|
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;
|