ydb-embedded-ui 4.5.2 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/components/NodeHostWrapper/NodeHostWrapper.tsx +1 -1
  3. package/dist/containers/App/Content.js +3 -2
  4. package/dist/containers/AsideNavigation/AsideNavigation.tsx +4 -50
  5. package/dist/containers/Cluster/Cluster.scss +7 -48
  6. package/dist/containers/Cluster/Cluster.tsx +136 -20
  7. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.scss +34 -17
  8. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.tsx +57 -91
  9. package/dist/containers/Cluster/ClusterInfoSkeleton/ClusterInfoSkeleton.scss +48 -0
  10. package/dist/containers/Cluster/ClusterInfoSkeleton/ClusterInfoSkeleton.tsx +34 -0
  11. package/dist/containers/Cluster/utils.ts +34 -0
  12. package/dist/containers/Header/Header.scss +0 -24
  13. package/dist/containers/Header/Header.tsx +14 -44
  14. package/dist/containers/Node/Node.tsx +22 -20
  15. package/dist/containers/Nodes/Nodes.tsx +0 -16
  16. package/dist/containers/Nodes/getNodesColumns.tsx +1 -1
  17. package/dist/containers/Storage/Storage.js +1 -11
  18. package/dist/containers/Tablet/Tablet.tsx +28 -0
  19. package/dist/containers/TabletsFilters/TabletsFilters.js +16 -1
  20. package/dist/containers/Tenant/Diagnostics/Describe/Describe.tsx +1 -1
  21. package/dist/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.scss +3 -0
  22. package/dist/containers/Tenant/Diagnostics/Diagnostics.tsx +3 -3
  23. package/dist/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.tsx +4 -6
  24. package/dist/containers/Tenant/Diagnostics/Overview/Overview.tsx +56 -53
  25. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.tsx +1 -1
  26. package/dist/containers/Tenant/ObjectSummary/ObjectSummary.tsx +1 -1
  27. package/dist/containers/Tenant/Preview/Preview.js +1 -1
  28. package/dist/containers/Tenant/QueryEditor/QueryEditor.js +26 -22
  29. package/dist/containers/Tenant/QueryEditor/QueryEditorControls/OldQueryEditorControls.tsx +10 -3
  30. package/dist/containers/Tenant/QueryEditor/QueryEditorControls/QueryEditorControls.tsx +8 -1
  31. package/dist/containers/Tenant/QueryEditor/QueryEditorControls/shared.ts +1 -6
  32. package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.tsx +1 -1
  33. package/dist/containers/Tenant/Tenant.tsx +7 -12
  34. package/dist/containers/Tenant/utils/schemaActions.ts +1 -1
  35. package/dist/containers/Tenants/Tenants.js +18 -28
  36. package/dist/containers/Tenants/Tenants.scss +2 -4
  37. package/dist/containers/UserSettings/i18n/en.json +2 -2
  38. package/dist/containers/UserSettings/i18n/ru.json +2 -2
  39. package/dist/containers/UserSettings/settings.ts +4 -4
  40. package/dist/containers/Versions/Versions.scss +0 -4
  41. package/dist/containers/Versions/Versions.tsx +74 -66
  42. package/dist/routes.ts +0 -7
  43. package/dist/services/api.ts +6 -2
  44. package/dist/store/reducers/clusterNodes/clusterNodes.tsx +4 -0
  45. package/dist/store/reducers/index.ts +3 -1
  46. package/dist/store/reducers/overview/overview.ts +109 -0
  47. package/dist/store/reducers/overview/types.ts +24 -0
  48. package/dist/store/reducers/{schema.ts → schema/schema.ts} +24 -50
  49. package/dist/{types/store/schema.ts → store/reducers/schema/types.ts} +16 -15
  50. package/dist/store/reducers/settings/settings.ts +5 -3
  51. package/dist/types/api/query.ts +78 -44
  52. package/dist/types/store/explainQuery.ts +2 -2
  53. package/dist/types/store/query.ts +4 -2
  54. package/dist/utils/constants.ts +3 -1
  55. package/dist/utils/nodes.ts +1 -1
  56. package/dist/utils/query.ts +3 -3
  57. package/package.json +1 -1
@@ -1,10 +1,14 @@
1
1
  import {useState} from 'react';
2
+ import {useDispatch} from 'react-redux';
2
3
  import block from 'bem-cn-lite';
3
4
 
4
5
  import {Checkbox, RadioButton} from '@gravity-ui/uikit';
5
6
 
6
- import type {PreparedClusterNode} from '../../store/reducers/clusterNodes/types';
7
7
  import type {VersionToColorMap} from '../../types/versions';
8
+ import {useAutofetcher, useTypedSelector} from '../../utils/hooks';
9
+ import {getClusterNodes} from '../../store/reducers/clusterNodes/clusterNodes';
10
+ import {Loader} from '../../components/Loader';
11
+
8
12
  import {getGroupedStorageNodes, getGroupedTenantNodes, getOtherNodes} from './groupNodes';
9
13
  import {GroupedNodesTree} from './GroupedNodesTree/GroupedNodesTree';
10
14
  import {GroupByValue} from './types';
@@ -14,11 +18,16 @@ import './Versions.scss';
14
18
  const b = block('ydb-versions');
15
19
 
16
20
  interface VersionsProps {
17
- nodes?: PreparedClusterNode[];
18
21
  versionToColor?: VersionToColorMap;
19
22
  }
20
23
 
21
- export const Versions = ({nodes = [], versionToColor}: VersionsProps) => {
24
+ export const Versions = ({versionToColor}: VersionsProps) => {
25
+ const dispatch = useDispatch();
26
+
27
+ const {nodes = [], loading, wasLoaded} = useTypedSelector((state) => state.clusterNodes);
28
+
29
+ useAutofetcher(() => dispatch(getClusterNodes()), [dispatch], true);
30
+
22
31
  const [groupByValue, setGroupByValue] = useState<GroupByValue>(GroupByValue.VERSION);
23
32
  const [expanded, setExpanded] = useState(false);
24
33
 
@@ -55,67 +64,66 @@ export const Versions = ({nodes = [], versionToColor}: VersionsProps) => {
55
64
  </div>
56
65
  );
57
66
  };
58
- const renderGroupedNodes = () => {
59
- const tenantNodes = getGroupedTenantNodes(nodes, versionToColor, groupByValue);
60
- const storageNodes = getGroupedStorageNodes(nodes, versionToColor);
61
- const otherNodes = getOtherNodes(nodes, versionToColor);
62
- const storageNodesContent = storageNodes?.length ? (
63
- <>
64
- <h3>Storage nodes</h3>
65
- {storageNodes.map(({title, nodes: itemNodes, items, versionColor}, index) => (
66
- <GroupedNodesTree
67
- key={`storage-nodes-${index}`}
68
- title={title}
69
- nodes={itemNodes}
70
- items={items}
71
- versionColor={versionColor}
72
- />
73
- ))}
74
- </>
75
- ) : null;
76
- const tenantNodesContent = tenantNodes?.length ? (
77
- <>
78
- <h3>Database nodes</h3>
79
- {renderControls()}
80
- {tenantNodes.map(
81
- ({title, nodes: itemNodes, items, versionColor, versionsValues}, index) => (
82
- <GroupedNodesTree
83
- key={`tenant-nodes-${index}`}
84
- title={title}
85
- nodes={itemNodes}
86
- items={items}
87
- expanded={expanded}
88
- versionColor={versionColor}
89
- versionsValues={versionsValues}
90
- />
91
- ),
92
- )}
93
- </>
94
- ) : null;
95
- const otherNodesContent = otherNodes?.length ? (
96
- <>
97
- <h3>Other nodes</h3>
98
- {otherNodes.map(
99
- ({title, nodes: itemNodes, items, versionColor, versionsValues}, index) => (
100
- <GroupedNodesTree
101
- key={`other-nodes-${index}`}
102
- title={title}
103
- nodes={itemNodes}
104
- items={items}
105
- versionColor={versionColor}
106
- versionsValues={versionsValues}
107
- />
108
- ),
109
- )}
110
- </>
111
- ) : null;
112
- return (
113
- <div className={b('versions')}>
114
- {storageNodesContent}
115
- {tenantNodesContent}
116
- {otherNodesContent}
117
- </div>
118
- );
119
- };
120
- return <div className={b('content')}>{renderGroupedNodes()}</div>;
67
+
68
+ if (loading && !wasLoaded) {
69
+ return <Loader />;
70
+ }
71
+
72
+ const tenantNodes = getGroupedTenantNodes(nodes, versionToColor, groupByValue);
73
+ const storageNodes = getGroupedStorageNodes(nodes, versionToColor);
74
+ const otherNodes = getOtherNodes(nodes, versionToColor);
75
+ const storageNodesContent = storageNodes?.length ? (
76
+ <>
77
+ <h3>Storage nodes</h3>
78
+ {storageNodes.map(({title, nodes: itemNodes, items, versionColor}) => (
79
+ <GroupedNodesTree
80
+ key={`storage-nodes-${title}`}
81
+ title={title}
82
+ nodes={itemNodes}
83
+ items={items}
84
+ versionColor={versionColor}
85
+ />
86
+ ))}
87
+ </>
88
+ ) : null;
89
+ const tenantNodesContent = tenantNodes?.length ? (
90
+ <>
91
+ <h3>Database nodes</h3>
92
+ {renderControls()}
93
+ {tenantNodes.map(({title, nodes: itemNodes, items, versionColor, versionsValues}) => (
94
+ <GroupedNodesTree
95
+ key={`tenant-nodes-${title}`}
96
+ title={title}
97
+ nodes={itemNodes}
98
+ items={items}
99
+ expanded={expanded}
100
+ versionColor={versionColor}
101
+ versionsValues={versionsValues}
102
+ />
103
+ ))}
104
+ </>
105
+ ) : null;
106
+ const otherNodesContent = otherNodes?.length ? (
107
+ <>
108
+ <h3>Other nodes</h3>
109
+ {otherNodes.map(({title, nodes: itemNodes, items, versionColor, versionsValues}) => (
110
+ <GroupedNodesTree
111
+ key={`other-nodes-${title}`}
112
+ title={title}
113
+ nodes={itemNodes}
114
+ items={items}
115
+ versionColor={versionColor}
116
+ versionsValues={versionsValues}
117
+ />
118
+ ))}
119
+ </>
120
+ ) : null;
121
+
122
+ return (
123
+ <div className={b('versions')}>
124
+ {storageNodesContent}
125
+ {tenantNodesContent}
126
+ {otherNodesContent}
127
+ </div>
128
+ );
121
129
  };
package/dist/routes.ts CHANGED
@@ -13,13 +13,6 @@ const routes = {
13
13
  auth: '/auth',
14
14
  };
15
15
 
16
- export const CLUSTER_PAGES = {
17
- tenants: {id: 'tenants', name: 'Databases', title: 'Database list'},
18
- nodes: {id: 'nodes', name: 'Nodes', title: 'Nodes'},
19
- storage: {id: 'storage', name: 'Storage', title: 'Storage'},
20
- cluster: {id: 'cluster', name: 'Cluster', title: 'Cluster'},
21
- };
22
-
23
16
  export function createHref(
24
17
  route: string,
25
18
  params?: Record<string, string | number>,
@@ -50,8 +50,12 @@ export class YdbEmbeddedAPI extends AxiosWrapper {
50
50
  tablets: true,
51
51
  });
52
52
  }
53
- getClusterNodes() {
54
- return this.get<TEvSystemStateResponse>(this.getPath('/viewer/json/sysinfo'), {});
53
+ getClusterNodes({concurrentId}: AxiosOptions = {}) {
54
+ return this.get<TEvSystemStateResponse>(
55
+ this.getPath('/viewer/json/sysinfo'),
56
+ {},
57
+ {concurrentId: concurrentId || `getClusterNodes`},
58
+ );
55
59
  }
56
60
  getNodeInfo(id?: string) {
57
61
  return this.get<TEvSystemStateResponse>(this.getPath('/viewer/json/sysinfo?enums=true'), {
@@ -34,6 +34,10 @@ const clusterNodes: Reducer<ClusterNodesState, ClusterNodesAction> = (
34
34
  };
35
35
  }
36
36
  case FETCH_CLUSTER_NODES.FAILURE: {
37
+ if (action.error?.isCancelled) {
38
+ return state;
39
+ }
40
+
37
41
  return {
38
42
  ...state,
39
43
  error: action.error,
@@ -9,7 +9,8 @@ import node from './node/node';
9
9
  import tooltip from './tooltip';
10
10
  import tablets from './tablets';
11
11
  import heatmap from './heatmap';
12
- import schema from './schema';
12
+ import schema from './schema/schema';
13
+ import overview from './overview/overview';
13
14
  import host from './host';
14
15
  import network from './network/network';
15
16
  import tenants from './tenants/tenants';
@@ -46,6 +47,7 @@ export const rootReducer = {
46
47
  tooltip,
47
48
  tablets,
48
49
  schema,
50
+ overview,
49
51
  olapStats,
50
52
  host,
51
53
  network,
@@ -0,0 +1,109 @@
1
+ import type {Reducer} from 'redux';
2
+
3
+ import type {OverviewState, OverviewAction, OverviewHandledResponse} from './types';
4
+
5
+ import '../../../services/api';
6
+ import {createRequestActionTypes, createApiRequest} from '../../utils';
7
+
8
+ export const FETCH_OVERVIEW = createRequestActionTypes('overview', 'FETCH_OVERVIEW');
9
+ const SET_CURRENT_OVERVIEW_PATH = 'overview/SET_CURRENT_OVERVIEW_PATH';
10
+ const SET_DATA_WAS_NOT_LOADED = 'overview/SET_DATA_WAS_NOT_LOADED';
11
+
12
+ export const initialState = {
13
+ loading: true,
14
+ wasLoaded: false,
15
+ };
16
+
17
+ const schema: Reducer<OverviewState, OverviewAction> = (state = initialState, action) => {
18
+ switch (action.type) {
19
+ case FETCH_OVERVIEW.REQUEST: {
20
+ return {
21
+ ...state,
22
+ loading: true,
23
+ };
24
+ }
25
+ case FETCH_OVERVIEW.SUCCESS: {
26
+ if (action.data.data.Path !== state.currentOverviewPath) {
27
+ return state;
28
+ }
29
+
30
+ return {
31
+ ...state,
32
+ error: undefined,
33
+ data: action.data.data,
34
+ additionalData: action.data.additionalData,
35
+ loading: false,
36
+ wasLoaded: true,
37
+ };
38
+ }
39
+ case FETCH_OVERVIEW.FAILURE: {
40
+ if (action.error?.isCancelled) {
41
+ return state;
42
+ }
43
+
44
+ return {
45
+ ...state,
46
+ error: action.error,
47
+ loading: false,
48
+ };
49
+ }
50
+ case SET_CURRENT_OVERVIEW_PATH: {
51
+ return {
52
+ ...state,
53
+ currentOverviewPath: action.data,
54
+ };
55
+ }
56
+ case SET_DATA_WAS_NOT_LOADED: {
57
+ return {
58
+ ...state,
59
+ wasLoaded: false,
60
+ };
61
+ }
62
+ default:
63
+ return state;
64
+ }
65
+ };
66
+
67
+ export function getOverview({path}: {path: string}) {
68
+ const request = window.api.getDescribe({path}, {concurrentId: 'getOverview'});
69
+ return createApiRequest({
70
+ request,
71
+ actions: FETCH_OVERVIEW,
72
+ dataHandler: (data): OverviewHandledResponse => {
73
+ return {data};
74
+ },
75
+ });
76
+ }
77
+
78
+ export function getOverviewBatched(paths: string[]) {
79
+ const requestArray = paths.map((p) =>
80
+ window.api.getDescribe({path: p}, {concurrentId: `getOverviewBatched|${p}`}),
81
+ );
82
+ const request = Promise.all(requestArray);
83
+
84
+ return createApiRequest({
85
+ request,
86
+ actions: FETCH_OVERVIEW,
87
+ dataHandler: ([item, ...rest]): OverviewHandledResponse => {
88
+ return {
89
+ data: item,
90
+ additionalData: rest,
91
+ };
92
+ },
93
+ });
94
+ }
95
+
96
+ export function setDataWasNotLoaded() {
97
+ return {
98
+ type: SET_DATA_WAS_NOT_LOADED,
99
+ } as const;
100
+ }
101
+
102
+ export const setCurrentOverviewPath = (path?: string) => {
103
+ return {
104
+ type: SET_CURRENT_OVERVIEW_PATH,
105
+ data: path,
106
+ } as const;
107
+ };
108
+
109
+ export default schema;
@@ -0,0 +1,24 @@
1
+ import type {ApiRequestAction} from '../../utils';
2
+ import type {IResponseError} from '../../../types/api/error';
3
+ import type {TEvDescribeSchemeResult} from '../../../types/api/schema';
4
+
5
+ import {FETCH_OVERVIEW, setDataWasNotLoaded, setCurrentOverviewPath} from './overview';
6
+
7
+ export interface OverviewState {
8
+ loading: boolean;
9
+ wasLoaded: boolean;
10
+ currentOverviewPath?: string;
11
+ data?: TEvDescribeSchemeResult;
12
+ additionalData?: TEvDescribeSchemeResult[];
13
+ error?: IResponseError;
14
+ }
15
+
16
+ export interface OverviewHandledResponse {
17
+ data: TEvDescribeSchemeResult;
18
+ additionalData?: TEvDescribeSchemeResult[];
19
+ }
20
+
21
+ export type OverviewAction =
22
+ | ApiRequestAction<typeof FETCH_OVERVIEW, OverviewHandledResponse, IResponseError>
23
+ | ReturnType<typeof setCurrentOverviewPath>
24
+ | ReturnType<typeof setDataWasNotLoaded>;
@@ -1,18 +1,20 @@
1
- import {Reducer} from 'redux';
2
- import {createSelector, Selector} from 'reselect';
3
-
4
- import {
5
- ISchemaAction,
6
- ISchemaData,
7
- ISchemaHandledResponse,
8
- ISchemaRootStateSlice,
9
- ISchemaState,
10
- } from '../../types/store/schema';
11
- import {EPathType} from '../../types/api/schema';
12
- import '../../services/api';
13
- import {isEntityWithMergedImplementation} from '../../containers/Tenant/utils/schema';
14
-
15
- import {createRequestActionTypes, createApiRequest} from '../utils';
1
+ import type {Reducer} from 'redux';
2
+ import type {Selector} from 'reselect';
3
+
4
+ import {createSelector} from 'reselect';
5
+
6
+ import type {EPathType} from '../../../types/api/schema';
7
+ import type {
8
+ SchemaAction,
9
+ SchemaData,
10
+ SchemaHandledResponse,
11
+ SchemaStateSlice,
12
+ SchemaState,
13
+ } from './types';
14
+
15
+ import '../../../services/api';
16
+ import {isEntityWithMergedImplementation} from '../../../containers/Tenant/utils/schema';
17
+ import {createRequestActionTypes, createApiRequest} from '../../utils';
16
18
 
17
19
  export const FETCH_SCHEMA = createRequestActionTypes('schema', 'FETCH_SCHEMA');
18
20
  const PRELOAD_SCHEMAS = 'schema/PRELOAD_SCHEMAS';
@@ -31,7 +33,7 @@ export const initialState = {
31
33
  showPreview: false,
32
34
  };
33
35
 
34
- const schema: Reducer<ISchemaState, ISchemaAction> = (state = initialState, action) => {
36
+ const schema: Reducer<SchemaState, SchemaAction> = (state = initialState, action) => {
35
37
  switch (action.type) {
36
38
  case FETCH_SCHEMA.REQUEST: {
37
39
  return {
@@ -87,7 +89,6 @@ const schema: Reducer<ISchemaState, ISchemaAction> = (state = initialState, acti
87
89
  return {
88
90
  ...state,
89
91
  currentSchemaPath: action.data,
90
- wasLoaded: false,
91
92
  };
92
93
  }
93
94
  case ENABLE_AUTOREFRESH: {
@@ -124,8 +125,8 @@ export function getSchema({path}: {path: string}) {
124
125
  return createApiRequest({
125
126
  request,
126
127
  actions: FETCH_SCHEMA,
127
- dataHandler: (data): ISchemaHandledResponse => {
128
- const newData: ISchemaData = {};
128
+ dataHandler: (data): SchemaHandledResponse => {
129
+ const newData: SchemaData = {};
129
130
  if (data.Path) {
130
131
  newData[data.Path] = data;
131
132
  }
@@ -138,33 +139,6 @@ export function getSchema({path}: {path: string}) {
138
139
  });
139
140
  }
140
141
 
141
- export function getSchemaBatched(paths: string[]) {
142
- const requestArray = paths.map((p) =>
143
- window.api.getSchema({path: p}, {concurrentId: `getSchemaBatched|${p}`}),
144
- );
145
- const request = Promise.all(requestArray);
146
-
147
- return createApiRequest({
148
- request,
149
- actions: FETCH_SCHEMA,
150
- dataHandler: (data): ISchemaHandledResponse => {
151
- const newData: ISchemaData = {};
152
-
153
- data.forEach((dataItem) => {
154
- if (dataItem.Path) {
155
- newData[dataItem.Path] = dataItem;
156
- }
157
- });
158
-
159
- return {
160
- path: data[0].Path,
161
- currentSchema: data[0],
162
- data: newData,
163
- };
164
- },
165
- });
166
- }
167
-
168
142
  export function setCurrentSchemaPath(currentSchemaPath: string) {
169
143
  return {
170
144
  type: SET_SCHEMA,
@@ -190,7 +164,7 @@ export function setShowPreview(value: boolean) {
190
164
 
191
165
  // only stores data for paths that are not in the store yet
192
166
  // existing paths are ignored
193
- export function preloadSchemas(data: ISchemaData) {
167
+ export function preloadSchemas(data: SchemaData) {
194
168
  return {
195
169
  type: PRELOAD_SCHEMAS,
196
170
  data,
@@ -203,14 +177,14 @@ export function resetLoadingState() {
203
177
  } as const;
204
178
  }
205
179
 
206
- export const selectSchemaChildren = (state: ISchemaRootStateSlice, path?: string) =>
180
+ const selectSchemaChildren = (state: SchemaStateSlice, path?: string) =>
207
181
  path ? state.schema.data[path]?.PathDescription?.Children : undefined;
208
182
 
209
- export const selectSchemaData = (state: ISchemaRootStateSlice, path?: string) =>
183
+ export const selectSchemaData = (state: SchemaStateSlice, path?: string) =>
210
184
  path ? state.schema.data[path] : undefined;
211
185
 
212
186
  export const selectSchemaMergedChildrenPaths: Selector<
213
- ISchemaRootStateSlice,
187
+ SchemaStateSlice,
214
188
  string[] | undefined,
215
189
  [string | undefined, EPathType | undefined]
216
190
  > = createSelector(
@@ -1,3 +1,7 @@
1
+ import type {ApiRequestAction} from '../../utils';
2
+ import type {IResponseError} from '../../../types/api/error';
3
+ import type {TEvDescribeSchemeResult} from '../../../types/api/schema';
4
+
1
5
  import {
2
6
  disableAutorefresh,
3
7
  enableAutorefresh,
@@ -6,17 +10,14 @@ import {
6
10
  resetLoadingState,
7
11
  setCurrentSchemaPath,
8
12
  setShowPreview,
9
- } from '../../store/reducers/schema';
10
- import {ApiRequestAction} from '../../store/utils';
11
- import {IResponseError} from '../api/error';
12
- import {TEvDescribeSchemeResult} from '../api/schema';
13
+ } from './schema';
13
14
 
14
- export type ISchemaData = Record<string, TEvDescribeSchemeResult>;
15
+ export type SchemaData = Record<string, TEvDescribeSchemeResult>;
15
16
 
16
- export interface ISchemaState {
17
+ export interface SchemaState {
17
18
  loading: boolean;
18
19
  wasLoaded: boolean;
19
- data: ISchemaData;
20
+ data: SchemaData;
20
21
  currentSchema?: TEvDescribeSchemeResult;
21
22
  currentSchemaPath?: string;
22
23
  autorefresh: boolean;
@@ -24,20 +25,20 @@ export interface ISchemaState {
24
25
  error?: IResponseError;
25
26
  }
26
27
 
27
- export interface ISchemaHandledResponse {
28
+ export interface SchemaHandledResponse {
28
29
  path?: string;
29
30
  currentSchema?: TEvDescribeSchemeResult;
30
- data?: ISchemaData;
31
+ data?: SchemaData;
31
32
  }
32
33
 
33
- type ISchemaApiRequestAction = ApiRequestAction<
34
+ type SchemaApiRequestAction = ApiRequestAction<
34
35
  typeof FETCH_SCHEMA,
35
- ISchemaHandledResponse,
36
+ SchemaHandledResponse,
36
37
  IResponseError
37
38
  >;
38
39
 
39
- export type ISchemaAction =
40
- | ISchemaApiRequestAction
40
+ export type SchemaAction =
41
+ | SchemaApiRequestAction
41
42
  | (
42
43
  | ReturnType<typeof setCurrentSchemaPath>
43
44
  | ReturnType<typeof enableAutorefresh>
@@ -47,6 +48,6 @@ export type ISchemaAction =
47
48
  | ReturnType<typeof resetLoadingState>
48
49
  );
49
50
 
50
- export interface ISchemaRootStateSlice {
51
- schema: ISchemaState;
51
+ export interface SchemaStateSlice {
52
+ schema: SchemaState;
52
53
  }
@@ -11,7 +11,8 @@ import {
11
11
  USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY,
12
12
  PARTITIONS_HIDDEN_COLUMNS_KEY,
13
13
  QUERY_INITIAL_MODE_KEY,
14
- ENABLE_QUERY_MODES_FOR_EXPLAIN,
14
+ ENABLE_ADDITIONAL_QUERY_MODES,
15
+ CLUSTER_INFO_HIDDEN_KEY,
15
16
  } from '../../../utils/constants';
16
17
  import '../../../services/api';
17
18
  import {getValueFromLS, parseJson} from '../../../utils/utils';
@@ -52,8 +53,8 @@ export const initialState = {
52
53
  USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY,
53
54
  'false',
54
55
  ),
55
- [ENABLE_QUERY_MODES_FOR_EXPLAIN]: readSavedSettingsValue(
56
- ENABLE_QUERY_MODES_FOR_EXPLAIN,
56
+ [ENABLE_ADDITIONAL_QUERY_MODES]: readSavedSettingsValue(
57
+ ENABLE_ADDITIONAL_QUERY_MODES,
57
58
  'false',
58
59
  ),
59
60
  [SAVED_QUERIES_KEY]: readSavedSettingsValue(SAVED_QUERIES_KEY, '[]'),
@@ -61,6 +62,7 @@ export const initialState = {
61
62
  [QUERY_INITIAL_MODE_KEY]: readSavedSettingsValue(QUERY_INITIAL_MODE_KEY, QueryModes.script),
62
63
  [ASIDE_HEADER_COMPACT_KEY]: readSavedSettingsValue(ASIDE_HEADER_COMPACT_KEY, 'true'),
63
64
  [PARTITIONS_HIDDEN_COLUMNS_KEY]: readSavedSettingsValue(PARTITIONS_HIDDEN_COLUMNS_KEY),
65
+ [CLUSTER_INFO_HIDDEN_KEY]: readSavedSettingsValue(CLUSTER_INFO_HIDDEN_KEY, 'false'),
64
66
  },
65
67
  systemSettings,
66
68
  };