ydb-embedded-ui 6.6.1 → 6.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. package/dist/package.json +31 -30
  2. package/dist/src/components/InfoViewer/InfoViewer.d.ts +1 -1
  3. package/dist/src/components/InfoViewer/InfoViewer.js +2 -1
  4. package/dist/src/components/InfoViewer/i18n/en.json +2 -1
  5. package/dist/src/components/InfoViewer/i18n/index.d.ts +1 -1
  6. package/dist/src/components/InfoViewer/i18n/index.js +1 -2
  7. package/dist/src/containers/App/App.d.ts +1 -1
  8. package/dist/src/containers/App/Content.js +1 -1
  9. package/dist/src/containers/App/appSlots.d.ts +1 -1
  10. package/dist/src/containers/AppWithClusters/AppWithClusters.js +1 -1
  11. package/dist/src/containers/AsideNavigation/Navigation.js +1 -3
  12. package/dist/src/containers/AsideNavigation/i18n/en.json +0 -2
  13. package/dist/src/containers/AsideNavigation/i18n/index.d.ts +1 -1
  14. package/dist/src/containers/AsideNavigation/i18n/index.js +1 -2
  15. package/dist/src/containers/Cluster/i18n/index.d.ts +1 -1
  16. package/dist/src/containers/Clusters/constants.d.ts +1 -1
  17. package/dist/src/containers/Header/Header.js +17 -21
  18. package/dist/src/containers/Header/Header.scss +14 -5
  19. package/dist/src/containers/Header/breadcrumbs.js +65 -71
  20. package/dist/src/containers/Heatmap/Heatmap.js +3 -3
  21. package/dist/src/containers/Nodes/Nodes.js +4 -4
  22. package/dist/src/containers/Nodes/VirtualNodes.js +2 -2
  23. package/dist/src/containers/Storage/Storage.js +2 -2
  24. package/dist/src/containers/Storage/StorageGroups/getStorageGroupsColumns.js +4 -3
  25. package/dist/src/containers/Tablets/Tablets.js +8 -8
  26. package/dist/src/containers/TabletsFilters/TabletsFilters.d.ts +2 -57
  27. package/dist/src/containers/TabletsFilters/TabletsFilters.js +70 -180
  28. package/dist/src/containers/Tenant/Acl/Acl.d.ts +3 -1
  29. package/dist/src/containers/Tenant/Acl/Acl.js +85 -69
  30. package/dist/src/containers/Tenant/Acl/Acl.scss +14 -9
  31. package/dist/src/containers/Tenant/Diagnostics/Autorefresh/AutorefreshControl.js +4 -5
  32. package/dist/src/containers/Tenant/Diagnostics/Consumers/Consumers.js +3 -3
  33. package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.d.ts +2 -2
  34. package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.js +5 -6
  35. package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.d.ts +1 -0
  36. package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.js +3 -5
  37. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.d.ts +2 -0
  38. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.js +26 -50
  39. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.scss +1 -1
  40. package/dist/src/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +19 -58
  41. package/dist/src/containers/Tenant/Diagnostics/Network/Network.d.ts +2 -2
  42. package/dist/src/containers/Tenant/Diagnostics/Network/Network.js +5 -5
  43. package/dist/src/containers/Tenant/Diagnostics/Overview/AsyncReplicationInfo/AsyncReplicationInfo.js +1 -6
  44. package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.d.ts +2 -1
  45. package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.js +3 -8
  46. package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.d.ts +2 -2
  47. package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.js +19 -21
  48. package/dist/src/containers/Tenant/Diagnostics/Overview/TableInfo/TableInfo.js +3 -3
  49. package/dist/src/containers/Tenant/Diagnostics/Overview/TableInfo/TableInfo.scss +0 -2
  50. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.d.ts +2 -1
  51. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.js +3 -8
  52. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.d.ts +3 -1
  53. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js +5 -5
  54. package/dist/src/containers/Tenant/Diagnostics/Partitions/Partitions.js +4 -12
  55. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/Healthcheck.scss +48 -57
  56. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.d.ts +2 -5
  57. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.js +7 -2
  58. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.d.ts +1 -6
  59. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.js +22 -16
  60. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.d.ts +2 -8
  61. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.js +2 -2
  62. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.d.ts +2 -2
  63. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.js +2 -2
  64. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.d.ts +2 -2
  65. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js +4 -4
  66. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.d.ts +2 -2
  67. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js +4 -4
  68. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.d.ts +2 -2
  69. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +4 -4
  70. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.d.ts +2 -1
  71. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +5 -5
  72. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js +3 -3
  73. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.d.ts +2 -2
  74. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.js +2 -2
  75. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.d.ts +2 -2
  76. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js +4 -4
  77. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +7 -9
  78. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +3 -3
  79. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +3 -3
  80. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/i18n/index.d.ts +1 -1
  81. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/useHealthcheck.js +1 -1
  82. package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.d.ts +2 -2
  83. package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +5 -5
  84. package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.d.ts +3 -2
  85. package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.js +8 -8
  86. package/dist/src/containers/Tenant/EntityTitle/EntityTitle.d.ts +6 -0
  87. package/dist/src/containers/Tenant/EntityTitle/EntityTitle.js +11 -0
  88. package/dist/src/containers/Tenant/Info/ExternalDataSource/ExternalDataSource.js +0 -6
  89. package/dist/src/containers/Tenant/Info/ExternalTable/ExternalTable.js +0 -6
  90. package/dist/src/containers/Tenant/Info/View/View.js +0 -6
  91. package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.d.ts +2 -1
  92. package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.js +7 -13
  93. package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.d.ts +4 -4
  94. package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.js +159 -63
  95. package/dist/src/containers/Tenant/Query/Issues/Issues.js +6 -5
  96. package/dist/src/containers/Tenant/Query/Preview/Preview.d.ts +2 -1
  97. package/dist/src/containers/Tenant/Query/Preview/Preview.js +6 -6
  98. package/dist/src/containers/Tenant/Query/Query.d.ts +1 -0
  99. package/dist/src/containers/Tenant/Query/Query.scss +1 -1
  100. package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.d.ts +2 -0
  101. package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.js +9 -22
  102. package/dist/src/containers/Tenant/Query/i18n/en.json +1 -1
  103. package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.d.ts +1 -0
  104. package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.js +11 -19
  105. package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.d.ts +2 -2
  106. package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +13 -8
  107. package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.d.ts +2 -1
  108. package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.js +21 -2
  109. package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/en.json +1 -0
  110. package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/index.d.ts +1 -1
  111. package/dist/src/containers/Tenant/Schema/SchemaViewer/prepareData.js +2 -1
  112. package/dist/src/containers/Tenant/Schema/SchemaViewer/types.d.ts +1 -0
  113. package/dist/src/containers/Tenant/Tenant.js +20 -36
  114. package/dist/src/containers/Tenant/Tenant.scss +4 -0
  115. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.d.ts +2 -0
  116. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.js +19 -0
  117. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.scss +18 -0
  118. package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.d.ts +9 -0
  119. package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.js +44 -0
  120. package/dist/src/containers/Tenant/i18n/en.json +22 -1
  121. package/dist/src/containers/Tenant/i18n/index.d.ts +1 -1
  122. package/dist/src/containers/Tenant/utils/index.d.ts +1 -0
  123. package/dist/src/containers/Tenant/utils/index.js +6 -0
  124. package/dist/src/containers/Tenant/utils/queryTemplates.d.ts +4 -0
  125. package/dist/src/containers/Tenant/utils/queryTemplates.js +32 -0
  126. package/dist/src/containers/Tenant/utils/schemaActions.js +18 -2
  127. package/dist/src/containers/UserSettings/Setting.d.ts +7 -9
  128. package/dist/src/containers/UserSettings/Setting.js +13 -28
  129. package/dist/src/containers/UserSettings/UserSettings.d.ts +0 -2
  130. package/dist/src/containers/UserSettings/UserSettings.js +3 -6
  131. package/dist/src/containers/UserSettings/i18n/en.json +2 -2
  132. package/dist/src/containers/UserSettings/settings.js +3 -3
  133. package/dist/src/lib.d.ts +1 -1
  134. package/dist/src/lib.js +1 -1
  135. package/dist/src/routes.d.ts +1 -1
  136. package/dist/src/routes.js +3 -1
  137. package/dist/src/services/api.d.ts +6 -1
  138. package/dist/src/services/api.js +24 -3
  139. package/dist/src/services/settings.d.ts +1 -0
  140. package/dist/src/services/settings.js +3 -2
  141. package/dist/src/store/configureStore.d.ts +36 -134
  142. package/dist/src/store/configureStore.js +2 -15
  143. package/dist/src/store/defaultStore.d.ts +17 -81
  144. package/dist/src/store/reducers/api.js +0 -1
  145. package/dist/src/store/reducers/authentication/authentication.d.ts +51 -243
  146. package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +196 -849
  147. package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.js +3 -3
  148. package/dist/src/store/reducers/hotKeys/hotKeys.d.ts +6 -25
  149. package/dist/src/store/reducers/hotKeys/hotKeys.js +36 -49
  150. package/dist/src/store/reducers/index.d.ts +23 -100
  151. package/dist/src/store/reducers/index.js +0 -8
  152. package/dist/src/store/reducers/node/selectors.d.ts +0 -40
  153. package/dist/src/store/reducers/nodesList.d.ts +0 -40
  154. package/dist/src/store/reducers/schema/schema.d.ts +13 -149
  155. package/dist/src/store/reducers/schema/schema.js +45 -90
  156. package/dist/src/store/reducers/schema/types.d.ts +2 -21
  157. package/dist/src/store/reducers/schemaAcl/schemaAcl.d.ts +8 -135
  158. package/dist/src/store/reducers/schemaAcl/schemaAcl.js +18 -44
  159. package/dist/src/store/reducers/settings/settings.d.ts +17 -23
  160. package/dist/src/store/reducers/settings/settings.js +40 -33
  161. package/dist/src/store/reducers/settings/types.d.ts +1 -12
  162. package/dist/src/store/reducers/tablets.d.ts +288 -41
  163. package/dist/src/store/reducers/tablets.js +8 -4
  164. package/dist/src/store/reducers/tabletsFilters.d.ts +11 -164
  165. package/dist/src/store/reducers/tabletsFilters.js +14 -76
  166. package/dist/src/store/reducers/tenants/selectors.d.ts +8 -362
  167. package/dist/src/store/reducers/topic.d.ts +0 -600
  168. package/dist/src/store/state-url-mapping.js +0 -3
  169. package/dist/src/styles/mixins.scss +5 -0
  170. package/dist/src/styles/themes.scss +1 -1
  171. package/dist/src/types/api/acl.d.ts +2 -1
  172. package/dist/src/types/api/schema/schema.d.ts +5 -0
  173. package/dist/src/utils/constants.d.ts +1 -1
  174. package/dist/src/utils/constants.js +1 -1
  175. package/dist/src/utils/dataFormatters/dataFormatters.d.ts +2 -1
  176. package/dist/src/utils/dataFormatters/dataFormatters.js +7 -3
  177. package/dist/src/utils/hooks/index.d.ts +1 -0
  178. package/dist/src/utils/hooks/index.js +1 -0
  179. package/dist/src/utils/hooks/useAutoRefreshInterval.d.ts +1 -0
  180. package/dist/src/utils/hooks/useAutoRefreshInterval.js +5 -0
  181. package/dist/src/utils/utils.js +2 -1
  182. package/package.json +31 -30
  183. package/dist/src/components/InfoViewer/i18n/ru.json +0 -4
  184. package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.d.ts +0 -6
  185. package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.js +0 -17
  186. package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.d.ts +0 -6
  187. package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.js +0 -20
  188. package/dist/src/components/InfoViewer/schemaOverview/index.d.ts +0 -2
  189. package/dist/src/components/InfoViewer/schemaOverview/index.js +0 -2
  190. package/dist/src/containers/AsideNavigation/i18n/ru.json +0 -10
  191. package/dist/src/containers/AsideNavigation/useNavigationMenuItems.d.ts +0 -2
  192. package/dist/src/containers/AsideNavigation/useNavigationMenuItems.js +0 -54
  193. package/dist/src/containers/UserSettings/UserSettings.scss +0 -9
  194. package/dist/src/store/reducers/host.d.ts +0 -130
  195. package/dist/src/store/reducers/host.js +0 -26
  196. package/dist/src/store/reducers/hotKeys/types.d.ts +0 -10
  197. package/dist/src/store/reducers/hotKeys/types.js +0 -1
  198. package/dist/src/store/reducers/schemaAcl/types.d.ts +0 -12
  199. package/dist/src/store/reducers/schemaAcl/types.js +0 -1
  200. package/dist/src/types/store/host.d.ts +0 -15
  201. 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.8.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -12,18 +12,19 @@
12
12
  "dependencies": {
13
13
  "@bem-react/classname": "^1.6.0",
14
14
  "@gravity-ui/axios-wrapper": "^1.4.1",
15
- "@gravity-ui/chartkit": "^5.5.0",
16
- "@gravity-ui/components": "^3.6.2",
17
- "@gravity-ui/date-utils": "^2.4.0",
18
- "@gravity-ui/i18n": "^1.5.0",
19
- "@gravity-ui/icons": "^2.9.1",
20
- "@gravity-ui/navigation": "^2.10.0",
15
+ "@gravity-ui/chartkit": "^5.9.0",
16
+ "@gravity-ui/components": "^3.7.0",
17
+ "@gravity-ui/date-utils": "^2.5.3",
18
+ "@gravity-ui/i18n": "^1.5.1",
19
+ "@gravity-ui/icons": "^2.10.0",
20
+ "@gravity-ui/navigation": "^2.16.0",
21
21
  "@gravity-ui/paranoid": "^2.0.1",
22
22
  "@gravity-ui/react-data-table": "^2.1.1",
23
- "@gravity-ui/uikit": "^6.15.0",
23
+ "@gravity-ui/uikit": "^6.20.1",
24
24
  "@gravity-ui/websql-autocomplete": "^9.1.0",
25
25
  "@reduxjs/toolkit": "^2.2.3",
26
- "axios": "^1.6.8",
26
+ "axios": "^1.7.2",
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",
@@ -34,17 +35,17 @@
34
35
  "path-to-regexp": "^3.0.0",
35
36
  "qs": "^6.12.0",
36
37
  "react-error-boundary": "^4.0.13",
37
- "react-helmet-async": "2.0.4",
38
+ "react-helmet-async": "^2.0.5",
38
39
  "react-json-inspector": "^7.1.1",
39
40
  "react-list": "^0.8.17",
40
41
  "react-monaco-editor": "^0.55.0",
41
- "react-redux": "^9.1.0",
42
+ "react-redux": "^9.1.2",
42
43
  "react-router": "^5.3.4",
43
44
  "react-router-dom": "^5.3.4",
44
45
  "react-split": "^2.0.14",
45
46
  "redux": "^5.0.1",
46
47
  "redux-location-state": "^2.8.2",
47
- "tslib": "^2.6.2",
48
+ "tslib": "^2.6.3",
48
49
  "url": "^0.11.3",
49
50
  "use-query-params": "^2.2.1",
50
51
  "web-vitals": "^1.1.2",
@@ -121,54 +122,54 @@
121
122
  ]
122
123
  },
123
124
  "devDependencies": {
124
- "@commitlint/cli": "^19.2.1",
125
- "@commitlint/config-conventional": "^19.1.0",
125
+ "@commitlint/cli": "^19.3.0",
126
+ "@commitlint/config-conventional": "^19.2.2",
126
127
  "@gravity-ui/eslint-config": "^3.2.0",
127
128
  "@gravity-ui/prettier-config": "^1.1.0",
128
129
  "@gravity-ui/stylelint-config": "^4.0.1",
129
130
  "@gravity-ui/tsconfig": "^1.0.0",
130
131
  "@playwright/test": "^1.42.1",
131
- "@testing-library/jest-dom": "^6.4.2",
132
+ "@testing-library/jest-dom": "^6.4.6",
132
133
  "@testing-library/react": "^14.2.2",
133
134
  "@testing-library/user-event": "^14.5.2",
134
135
  "@types/jest": "^29.5.12",
135
136
  "@types/lodash": "^4.17.0",
136
137
  "@types/numeral": "^2.0.5",
137
- "@types/qs": "^6.9.14",
138
- "@types/react": "^18.2.73",
139
- "@types/react-dom": "^18.2.23",
138
+ "@types/qs": "^6.9.15",
139
+ "@types/react": "^18.3.3",
140
+ "@types/react-dom": "^18.3.0",
140
141
  "@types/react-router": "^5.1.20",
141
142
  "@types/react-router-dom": "^5.3.3",
142
143
  "copyfiles": "^2.4.1",
143
144
  "http-proxy-middleware": "^2.0.6",
144
145
  "husky": "^9.0.11",
145
146
  "jest-transform-css": "^6.0.1",
146
- "lint-staged": "^15.2.2",
147
+ "lint-staged": "^15.2.7",
147
148
  "npm-run-all": "^4.1.5",
148
149
  "postcss": "^8.4.38",
149
150
  "prettier": "^3.2.5",
150
151
  "prop-types": "^15.8.1",
151
- "react": "^18.2.0",
152
+ "react": "^18.3.1",
152
153
  "react-app-rewired": "^2.2.1",
153
- "react-dom": "^18.2.0",
154
+ "react-dom": "^18.3.1",
154
155
  "react-scripts": "^5.0.1",
155
156
  "sass": "^1.72.0",
156
157
  "source-map-explorer": "^2.5.3",
157
- "stylelint": "^15.0.0",
158
- "ts-jest": "^29.1.2",
158
+ "stylelint": "^15.11.0",
159
+ "ts-jest": "^29.1.5",
159
160
  "typescript": "^5.4.3"
160
161
  },
161
162
  "peerDependencies": {
162
163
  "prop-types": "^15.8.1",
163
- "react": "^18.2.0",
164
- "react-dom": "^18.2.0"
164
+ "react": "^18.3.1",
165
+ "react-dom": "^18.3.1"
165
166
  },
166
167
  "overrides": {
167
168
  "fork-ts-checker-webpack-plugin": "^9.0.2",
168
- "react": "^18.2.0",
169
- "react-dom": "^18.2.0",
170
- "redux": "^5.0.1",
171
- "typescript": "^5.4.3",
172
- "monaco-editor": "^0.48.0"
169
+ "react": "$react",
170
+ "react-dom": "$react-dom",
171
+ "redux": "$redux",
172
+ "typescript": "$typescript",
173
+ "monaco-editor": "$monaco-editor"
173
174
  }
174
175
  }
@@ -5,7 +5,7 @@ export interface InfoViewerItem {
5
5
  value: React.ReactNode;
6
6
  }
7
7
  export interface InfoViewerProps {
8
- title?: string;
8
+ title?: React.ReactNode;
9
9
  info?: InfoViewerItem[];
10
10
  dots?: boolean;
11
11
  size?: 's';
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { cn } from '../../utils/cn';
4
+ import i18n from './i18n';
4
5
  import './InfoViewer.scss';
5
6
  const b = cn('info-viewer');
6
7
  export const InfoViewer = ({ title, info, dots = true, size, className, multilineLabels, renderEmptyState, }) => {
7
8
  if ((!info || !info.length) && renderEmptyState) {
8
9
  return _jsx(React.Fragment, { children: renderEmptyState({ title, size }) });
9
10
  }
10
- return (_jsxs("div", { className: b({ size }, className), children: [title && _jsx("div", { className: b('title'), children: title }), info && info.length > 0 ? (_jsx("div", { className: b('items'), children: info.map((data, infoIndex) => (_jsxs("div", { className: b('row'), children: [_jsxs("div", { className: b('label'), children: [_jsx("div", { className: b('label-text', { multiline: multilineLabels }), children: data.label }), dots && _jsx("div", { className: b('dots') })] }), _jsx("div", { className: b('value'), children: data.value })] }, infoIndex))) })) : (_jsxs(React.Fragment, { children: ["No ", title, " data"] }))] }));
11
+ return (_jsxs("div", { className: b({ size }, className), children: [title && _jsx("div", { className: b('title'), children: title }), info && info.length > 0 ? (_jsx("div", { className: b('items'), children: info.map((data, infoIndex) => (_jsxs("div", { className: b('row'), children: [_jsxs("div", { className: b('label'), children: [_jsx("div", { className: b('label-text', { multiline: multilineLabels }), children: data.label }), dots && _jsx("div", { className: b('dots') })] }), _jsx("div", { className: b('value'), children: data.value })] }, infoIndex))) })) : (i18n('no-data'))] }));
11
12
  };
12
13
  export default InfoViewer;
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "common.created": "Created",
3
- "common.type": "Type"
3
+ "common.type": "Type",
4
+ "no-data": "No data"
4
5
  }
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "common.created" | "common.type", params?: import("@gravity-ui/i18n").Params | undefined) => string;
1
+ declare const _default: (key: "common.created" | "common.type" | "no-data", 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-components-info-viewer';
5
- export default registerKeysets(COMPONENT, { ru, en });
4
+ export default registerKeysets(COMPONENT, { en });
@@ -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<{
@@ -10,7 +10,7 @@ import i18n from './i18n';
10
10
  const defaultUserSettings = settings;
11
11
  defaultUserSettings[2].sections[0].settings.push({
12
12
  title: i18n('settings.useClusterBalancerAsBackend.title'),
13
- helpPopoverContent: i18n('settings.useClusterBalancerAsBackend.popover'),
13
+ description: i18n('settings.useClusterBalancerAsBackend.popover'),
14
14
  settingKey: USE_CLUSTER_BALANCER_AS_BACKEND_KEY,
15
15
  });
16
16
  export function AppWithClusters({ store, history, getMonitoringLink = getMonitoringLinkDefault, getMonitoringClusterLink = getMonitoringClusterLinkDefault, userSettings = defaultUserSettings, children, }) {
@@ -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]);