ydb-embedded-ui 6.6.0 → 6.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (332) hide show
  1. package/dist/package.json +4 -3
  2. package/dist/src/containers/App/App.d.ts +1 -1
  3. package/dist/{containers → src/containers}/App/App.scss +5 -0
  4. package/dist/src/containers/App/Content.js +1 -1
  5. package/dist/src/containers/App/appSlots.d.ts +1 -1
  6. package/dist/src/containers/AsideNavigation/Navigation.js +1 -3
  7. package/dist/src/containers/AsideNavigation/i18n/en.json +0 -2
  8. package/dist/src/containers/AsideNavigation/i18n/index.d.ts +1 -1
  9. package/dist/src/containers/AsideNavigation/i18n/index.js +1 -2
  10. package/dist/src/containers/Cluster/i18n/index.d.ts +1 -1
  11. package/dist/src/containers/Clusters/constants.d.ts +1 -1
  12. package/dist/src/containers/Header/Header.js +17 -21
  13. package/dist/{containers → src/containers}/Header/Header.scss +14 -5
  14. package/dist/src/containers/Header/breadcrumbs.js +65 -71
  15. package/dist/src/containers/Heatmap/Heatmap.js +3 -3
  16. package/dist/src/containers/Nodes/Nodes.js +4 -4
  17. package/dist/src/containers/Nodes/VirtualNodes.js +2 -2
  18. package/dist/src/containers/Storage/Storage.js +2 -2
  19. package/dist/src/containers/Tablets/Tablets.js +8 -8
  20. package/dist/src/containers/TabletsFilters/TabletsFilters.d.ts +2 -57
  21. package/dist/src/containers/TabletsFilters/TabletsFilters.js +70 -180
  22. package/dist/src/containers/Tenant/Acl/Acl.d.ts +3 -1
  23. package/dist/src/containers/Tenant/Acl/Acl.js +7 -17
  24. package/dist/src/containers/Tenant/Diagnostics/Autorefresh/AutorefreshControl.js +4 -5
  25. package/dist/src/containers/Tenant/Diagnostics/Consumers/Consumers.js +3 -3
  26. package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.d.ts +2 -2
  27. package/dist/src/containers/Tenant/Diagnostics/Describe/Describe.js +5 -6
  28. package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.d.ts +1 -0
  29. package/dist/src/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.js +3 -5
  30. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.d.ts +2 -0
  31. package/dist/src/containers/Tenant/Diagnostics/Diagnostics.js +26 -50
  32. package/dist/{containers → src/containers}/Tenant/Diagnostics/Diagnostics.scss +1 -1
  33. package/dist/src/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +19 -58
  34. package/dist/src/containers/Tenant/Diagnostics/Network/Network.d.ts +2 -2
  35. package/dist/src/containers/Tenant/Diagnostics/Network/Network.js +5 -5
  36. package/dist/src/containers/Tenant/Diagnostics/Overview/AsyncReplicationInfo/AsyncReplicationInfo.js +1 -6
  37. package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.d.ts +2 -1
  38. package/dist/src/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.js +3 -8
  39. package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.d.ts +2 -2
  40. package/dist/src/containers/Tenant/Diagnostics/Overview/Overview.js +19 -21
  41. package/dist/{containers → src/containers}/Tenant/Diagnostics/Overview/TableInfo/TableInfo.scss +0 -2
  42. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.d.ts +2 -1
  43. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.js +3 -8
  44. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.d.ts +3 -1
  45. package/dist/src/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js +5 -5
  46. package/dist/src/containers/Tenant/Diagnostics/Partitions/Partitions.js +4 -12
  47. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/Healthcheck.scss +100 -0
  48. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.d.ts +2 -5
  49. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.js +7 -2
  50. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.d.ts +1 -6
  51. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.js +22 -16
  52. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.d.ts +2 -8
  53. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.js +2 -2
  54. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.d.ts +2 -2
  55. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.js +2 -2
  56. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.d.ts +2 -2
  57. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js +4 -4
  58. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.d.ts +2 -2
  59. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js +4 -4
  60. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.d.ts +2 -2
  61. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +4 -4
  62. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.d.ts +2 -1
  63. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +5 -5
  64. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js +3 -3
  65. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.d.ts +2 -2
  66. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.js +2 -2
  67. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.d.ts +2 -2
  68. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js +4 -4
  69. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +7 -9
  70. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +3 -3
  71. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +3 -3
  72. package/dist/src/containers/Tenant/Diagnostics/TenantOverview/useHealthcheck.js +1 -1
  73. package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.d.ts +2 -2
  74. package/dist/src/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +5 -5
  75. package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.d.ts +3 -2
  76. package/dist/src/containers/Tenant/Diagnostics/TopShards/TopShards.js +8 -8
  77. package/dist/src/containers/Tenant/Info/ExternalDataSource/ExternalDataSource.js +0 -6
  78. package/dist/src/containers/Tenant/Info/ExternalTable/ExternalTable.js +0 -6
  79. package/dist/src/containers/Tenant/Info/View/View.js +0 -6
  80. package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.d.ts +2 -1
  81. package/dist/src/containers/Tenant/ObjectGeneral/ObjectGeneral.js +7 -13
  82. package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.d.ts +4 -4
  83. package/dist/src/containers/Tenant/ObjectSummary/ObjectSummary.js +159 -63
  84. package/dist/src/containers/Tenant/Query/Issues/Issues.js +6 -5
  85. package/dist/src/containers/Tenant/Query/Preview/Preview.d.ts +2 -1
  86. package/dist/src/containers/Tenant/Query/Preview/Preview.js +6 -6
  87. package/dist/src/containers/Tenant/Query/Query.d.ts +1 -0
  88. package/dist/{containers → src/containers}/Tenant/Query/Query.scss +1 -1
  89. package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.d.ts +2 -0
  90. package/dist/src/containers/Tenant/Query/QueryEditor/QueryEditor.js +9 -22
  91. package/dist/src/containers/Tenant/Query/i18n/en.json +1 -1
  92. package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.d.ts +1 -0
  93. package/dist/src/containers/Tenant/Schema/SchemaTree/SchemaTree.js +11 -19
  94. package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.d.ts +2 -2
  95. package/dist/src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +13 -8
  96. package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.d.ts +2 -1
  97. package/dist/src/containers/Tenant/Schema/SchemaViewer/columns.js +21 -2
  98. package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/en.json +1 -0
  99. package/dist/src/containers/Tenant/Schema/SchemaViewer/i18n/index.d.ts +1 -1
  100. package/dist/src/containers/Tenant/Schema/SchemaViewer/prepareData.js +2 -1
  101. package/dist/src/containers/Tenant/Schema/SchemaViewer/types.d.ts +1 -0
  102. package/dist/src/containers/Tenant/Tenant.js +20 -36
  103. package/dist/{containers → src/containers}/Tenant/Tenant.scss +4 -0
  104. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.d.ts +2 -0
  105. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.js +19 -0
  106. package/dist/src/containers/Tenant/TenantNavigation/TenantNavigation.scss +18 -0
  107. package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.d.ts +9 -0
  108. package/dist/src/containers/Tenant/TenantNavigation/useTenantNavigation.js +44 -0
  109. package/dist/src/containers/Tenant/i18n/en.json +17 -0
  110. package/dist/src/containers/Tenant/i18n/index.d.ts +1 -1
  111. package/dist/src/containers/Tenant/utils/queryTemplates.d.ts +1 -0
  112. package/dist/src/containers/Tenant/utils/queryTemplates.js +12 -0
  113. package/dist/src/containers/Tenant/utils/schema.d.ts +1 -1
  114. package/dist/src/containers/Tenant/utils/schema.js +5 -6
  115. package/dist/src/containers/Tenant/utils/schemaActions.js +3 -1
  116. package/dist/src/lib.d.ts +3 -2
  117. package/dist/src/lib.js +2 -2
  118. package/dist/src/routes.d.ts +1 -1
  119. package/dist/src/routes.js +3 -1
  120. package/dist/src/services/api.d.ts +6 -1
  121. package/dist/src/services/api.js +23 -3
  122. package/dist/src/services/settings.d.ts +1 -0
  123. package/dist/src/services/settings.js +3 -2
  124. package/dist/src/store/configureStore.d.ts +36 -134
  125. package/dist/src/store/configureStore.js +2 -15
  126. package/dist/src/store/defaultStore.d.ts +17 -81
  127. package/dist/src/store/reducers/api.js +0 -1
  128. package/dist/src/store/reducers/authentication/authentication.d.ts +51 -243
  129. package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +196 -849
  130. package/dist/src/store/reducers/healthcheckInfo/healthcheckInfo.js +3 -3
  131. package/dist/src/store/reducers/hotKeys/hotKeys.d.ts +6 -25
  132. package/dist/src/store/reducers/hotKeys/hotKeys.js +36 -49
  133. package/dist/src/store/reducers/index.d.ts +23 -100
  134. package/dist/src/store/reducers/index.js +0 -8
  135. package/dist/src/store/reducers/node/selectors.d.ts +0 -40
  136. package/dist/src/store/reducers/nodesList.d.ts +0 -40
  137. package/dist/src/store/reducers/schema/schema.d.ts +13 -149
  138. package/dist/src/store/reducers/schema/schema.js +45 -90
  139. package/dist/src/store/reducers/schema/types.d.ts +2 -21
  140. package/dist/src/store/reducers/schemaAcl/schemaAcl.d.ts +8 -135
  141. package/dist/src/store/reducers/schemaAcl/schemaAcl.js +18 -44
  142. package/dist/src/store/reducers/settings/settings.d.ts +17 -23
  143. package/dist/src/store/reducers/settings/settings.js +40 -33
  144. package/dist/src/store/reducers/settings/types.d.ts +1 -12
  145. package/dist/src/store/reducers/tablets.d.ts +288 -41
  146. package/dist/src/store/reducers/tablets.js +8 -4
  147. package/dist/src/store/reducers/tabletsFilters.d.ts +11 -164
  148. package/dist/src/store/reducers/tabletsFilters.js +14 -76
  149. package/dist/src/store/reducers/tenants/selectors.d.ts +8 -362
  150. package/dist/src/store/reducers/topic.d.ts +0 -600
  151. package/dist/src/store/state-url-mapping.js +0 -3
  152. package/dist/src/types/api/tenant.d.ts +1 -7
  153. package/dist/src/types/api/tenant.js +0 -8
  154. package/dist/src/utils/__test__/monitoring.test.js +1 -1
  155. package/dist/src/utils/constants.d.ts +1 -1
  156. package/dist/src/utils/constants.js +1 -1
  157. package/dist/src/utils/dataFormatters/dataFormatters.d.ts +2 -1
  158. package/dist/src/utils/dataFormatters/dataFormatters.js +7 -3
  159. package/dist/src/utils/hooks/index.d.ts +1 -0
  160. package/dist/src/utils/hooks/index.js +1 -0
  161. package/dist/src/utils/hooks/useAutoRefreshInterval.d.ts +1 -0
  162. package/dist/src/utils/hooks/useAutoRefreshInterval.js +5 -0
  163. package/dist/src/utils/monitoring.d.ts +2 -1
  164. package/dist/src/utils/monitoring.js +1 -4
  165. package/dist/src/utils/utils.js +2 -1
  166. package/package.json +4 -3
  167. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/Healthcheck.scss +0 -109
  168. package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.d.ts +0 -6
  169. package/dist/src/components/InfoViewer/schemaOverview/CDCStreamOverview.js +0 -17
  170. package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.d.ts +0 -6
  171. package/dist/src/components/InfoViewer/schemaOverview/PersQueueGroupOverview.js +0 -20
  172. package/dist/src/components/InfoViewer/schemaOverview/index.d.ts +0 -2
  173. package/dist/src/components/InfoViewer/schemaOverview/index.js +0 -2
  174. package/dist/src/containers/AsideNavigation/i18n/ru.json +0 -10
  175. package/dist/src/containers/AsideNavigation/useNavigationMenuItems.d.ts +0 -2
  176. package/dist/src/containers/AsideNavigation/useNavigationMenuItems.js +0 -54
  177. package/dist/src/store/reducers/host.d.ts +0 -130
  178. package/dist/src/store/reducers/host.js +0 -26
  179. package/dist/src/store/reducers/hotKeys/types.d.ts +0 -10
  180. package/dist/src/store/reducers/hotKeys/types.js +0 -1
  181. package/dist/src/store/reducers/schemaAcl/types.d.ts +0 -12
  182. package/dist/src/store/reducers/schemaAcl/types.js +0 -1
  183. package/dist/src/types/store/host.d.ts +0 -15
  184. package/dist/src/types/store/host.js +0 -1
  185. package/dist/styles/constants.scss +0 -9
  186. /package/dist/{assets → src/assets}/icons/cluster.svg +0 -0
  187. /package/dist/{assets → src/assets}/icons/databases.svg +0 -0
  188. /package/dist/{assets → src/assets}/icons/disableFullscreen.svg +0 -0
  189. /package/dist/{assets → src/assets}/icons/emptyState.svg +0 -0
  190. /package/dist/{assets → src/assets}/icons/key.svg +0 -0
  191. /package/dist/{assets → src/assets}/icons/monitoring.svg +0 -0
  192. /package/dist/{assets → src/assets}/icons/network.svg +0 -0
  193. /package/dist/{assets → src/assets}/icons/user-check.svg +0 -0
  194. /package/dist/{assets → src/assets}/icons/user-secret.svg +0 -0
  195. /package/dist/{assets → src/assets}/icons/ydb.svg +0 -0
  196. /package/dist/{assets → src/assets}/illustrations/dark/403.svg +0 -0
  197. /package/dist/{assets → src/assets}/illustrations/dark/error.svg +0 -0
  198. /package/dist/{assets → src/assets}/illustrations/dark/thumbsUp.svg +0 -0
  199. /package/dist/{assets → src/assets}/illustrations/light/403.svg +0 -0
  200. /package/dist/{assets → src/assets}/illustrations/light/error.svg +0 -0
  201. /package/dist/{assets → src/assets}/illustrations/light/thumbsUp.svg +0 -0
  202. /package/dist/{components → src/components}/BasicNodeViewer/BasicNodeViewer.scss +0 -0
  203. /package/dist/{components → src/components}/CellWithPopover/CellWithPopover.scss +0 -0
  204. /package/dist/{components → src/components}/CircularProgressBar/CircularProgressBar.scss +0 -0
  205. /package/dist/{components → src/components}/CriticalActionDialog/CriticalActionDialog.scss +0 -0
  206. /package/dist/{components → src/components}/DateRange/DateRange.scss +0 -0
  207. /package/dist/{components → src/components}/DiagnosticCard/DiagnosticCard.scss +0 -0
  208. /package/dist/{components → src/components}/DiskPageTitle/DiskPageTitle.scss +0 -0
  209. /package/dist/{components → src/components}/DiskStateProgressBar/DiskStateProgressBar.scss +0 -0
  210. /package/dist/{components → src/components}/Divider/Divider.scss +0 -0
  211. /package/dist/{components → src/components}/EmptyState/EmptyState.scss +0 -0
  212. /package/dist/{components → src/components}/EntityStatus/EntityStatus.scss +0 -0
  213. /package/dist/{components → src/components}/ErrorBoundary/ErrorBoundary.scss +0 -0
  214. /package/dist/{components → src/components}/FullNodeViewer/FullNodeViewer.scss +0 -0
  215. /package/dist/{components → src/components}/Fullscreen/Fullscreen.scss +0 -0
  216. /package/dist/{components → src/components}/InfoViewer/InfoViewer.scss +0 -0
  217. /package/dist/{components → src/components}/InfoViewerSkeleton/InfoViewerSkeleton.scss +0 -0
  218. /package/dist/{components → src/components}/LagPopoverContent/LagPopoverContent.scss +0 -0
  219. /package/dist/{components → src/components}/LinkWithIcon/LinkWithIcon.scss +0 -0
  220. /package/dist/{components → src/components}/Loader/Loader.scss +0 -0
  221. /package/dist/{components → src/components}/MetricChart/MetricChart.scss +0 -0
  222. /package/dist/{components → src/components}/MonitoringButton/MonitoringButton.scss +0 -0
  223. /package/dist/{components → src/components}/NodeHostWrapper/NodeHostWrapper.scss +0 -0
  224. /package/dist/{components → src/components}/PDiskInfo/PDiskInfo.scss +0 -0
  225. /package/dist/{components → src/components}/PDiskPopup/PDiskPopup.scss +0 -0
  226. /package/dist/{components → src/components}/PageMeta/PageMeta.scss +0 -0
  227. /package/dist/{components → src/components}/PoolBar/PoolBar.scss +0 -0
  228. /package/dist/{components → src/components}/PoolUsage/PoolUsage.scss +0 -0
  229. /package/dist/{components → src/components}/PoolsGraph/PoolsGraph.scss +0 -0
  230. /package/dist/{components → src/components}/ProgressViewer/ProgressViewer.scss +0 -0
  231. /package/dist/{components → src/components}/QueryExecutionStatus/QueryExecutionStatus.scss +0 -0
  232. /package/dist/{components → src/components}/QueryResultTable/QueryResultTable.scss +0 -0
  233. /package/dist/{components → src/components}/ResizeableDataTable/ResizeableDataTable.scss +0 -0
  234. /package/dist/{components → src/components}/Search/Search.scss +0 -0
  235. /package/dist/{components → src/components}/ShortyString/ShortyString.scss +0 -0
  236. /package/dist/{components → src/components}/SpeedMultiMeter/SpeedMultiMeter.scss +0 -0
  237. /package/dist/{components → src/components}/SplitPane/SplitPane.scss +0 -0
  238. /package/dist/{components → src/components}/Stack/Stack.scss +0 -0
  239. /package/dist/{components → src/components}/StatusIcon/StatusIcon.scss +0 -0
  240. /package/dist/{components → src/components}/TableSkeleton/TableSkeleton.scss +0 -0
  241. /package/dist/{components → src/components}/TableWithControlsLayout/TableWithControlsLayout.scss +0 -0
  242. /package/dist/{components → src/components}/Tablet/Tablet.scss +0 -0
  243. /package/dist/{components → src/components}/TabletIcon/TabletIcon.scss +0 -0
  244. /package/dist/{components → src/components}/TabletsOverall/TabletsOverall.scss +0 -0
  245. /package/dist/{components → src/components}/TabletsStatistic/TabletsStatistic.scss +0 -0
  246. /package/dist/{components → src/components}/Tag/Tag.scss +0 -0
  247. /package/dist/{components → src/components}/Tags/Tags.scss +0 -0
  248. /package/dist/{components → src/components}/TimeFrameSelector/TimeFrameSelector.scss +0 -0
  249. /package/dist/{components → src/components}/TooltipsContent/NodeEndpointsTooltipContent/NodeEndpointsTooltipContent.scss +0 -0
  250. /package/dist/{components → src/components}/TruncatedQuery/TruncatedQuery.scss +0 -0
  251. /package/dist/{components → src/components}/UsageLabel/UsageLabel.scss +0 -0
  252. /package/dist/{components → src/components}/User/User.scss +0 -0
  253. /package/dist/{components → src/components}/VDisk/VDisk.scss +0 -0
  254. /package/dist/{components → src/components}/VDiskInfo/VDiskInfo.scss +0 -0
  255. /package/dist/{components → src/components}/VDiskPopup/VDiskPopup.scss +0 -0
  256. /package/dist/{components → src/components}/VirtualTable/VirtualTable.scss +0 -0
  257. /package/dist/{containers → src/containers}/AppWithClusters/ExtendedCluster/ExtendedCluster.scss +0 -0
  258. /package/dist/{containers → src/containers}/AsideNavigation/AsideNavigation.scss +0 -0
  259. /package/dist/{containers → src/containers}/AsideNavigation/YdbInternalUser/YdbInternalUser.scss +0 -0
  260. /package/dist/{containers → src/containers}/Authentication/Authentication.scss +0 -0
  261. /package/dist/{containers → src/containers}/Cluster/Cluster.scss +0 -0
  262. /package/dist/{containers → src/containers}/Cluster/ClusterInfo/ClusterInfo.scss +0 -0
  263. /package/dist/{containers → src/containers}/Cluster/VersionsBar/VersionsBar.scss +0 -0
  264. /package/dist/{containers → src/containers}/Clusters/Clusters.scss +0 -0
  265. /package/dist/{containers → src/containers}/Heatmap/Heatmap.scss +0 -0
  266. /package/dist/{containers → src/containers}/Heatmap/Histogram/Histogram.scss +0 -0
  267. /package/dist/{containers → src/containers}/Node/Node.scss +0 -0
  268. /package/dist/{containers → src/containers}/Node/NodeStructure/NodeStructure.scss +0 -0
  269. /package/dist/{containers → src/containers}/Nodes/Nodes.scss +0 -0
  270. /package/dist/{containers → src/containers}/PDiskPage/PDiskPage.scss +0 -0
  271. /package/dist/{containers → src/containers}/ReduxTooltip/ReduxTooltip.scss +0 -0
  272. /package/dist/{containers → src/containers}/Storage/PDisk/PDisk.scss +0 -0
  273. /package/dist/{containers → src/containers}/Storage/Storage.scss +0 -0
  274. /package/dist/{containers → src/containers}/Storage/StorageGroups/StorageGroups.scss +0 -0
  275. /package/dist/{containers → src/containers}/Storage/StorageNodes/StorageNodes.scss +0 -0
  276. /package/dist/{containers → src/containers}/Storage/UsageFilter/UsageFilter.scss +0 -0
  277. /package/dist/{containers → src/containers}/Tablet/Tablet.scss +0 -0
  278. /package/dist/{containers → src/containers}/TabletsFilters/TabletsFilters.scss +0 -0
  279. /package/dist/{containers → src/containers}/Tenant/Acl/Acl.scss +0 -0
  280. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Autorefresh/AutorefreshControl.scss +0 -0
  281. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Consumers/Consumers.scss +0 -0
  282. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Consumers/Headers/Headers.scss +0 -0
  283. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Consumers/TopicStats/ConsumersTopicStats.scss +0 -0
  284. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Consumers/columns/Columns.scss +0 -0
  285. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Describe/Describe.scss +0 -0
  286. /package/dist/{containers → src/containers}/Tenant/Diagnostics/DetailedOverview/DetailedOverview.scss +0 -0
  287. /package/dist/{containers → src/containers}/Tenant/Diagnostics/HotKeys/HotKeys.scss +0 -0
  288. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Network/Network.scss +0 -0
  289. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Network/NodeNetwork/NodeNetwork.scss +0 -0
  290. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Overview/AsyncReplicationPaths/AsyncReplicationPaths.scss +0 -0
  291. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Overview/TopicStats/TopicStats.scss +0 -0
  292. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Partitions/Headers/Headers.scss +0 -0
  293. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Partitions/Partitions.scss +0 -0
  294. /package/dist/{containers → src/containers}/Tenant/Diagnostics/Partitions/columns/Columns.scss +0 -0
  295. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTree.scss +0 -0
  296. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTreeItem/IssueTreeItem.scss +0 -0
  297. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricCard/MetricCard.scss +0 -0
  298. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.scss +0 -0
  299. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.scss +0 -0
  300. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TenantOverview/TenantOverview.scss +0 -0
  301. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TopQueries/TopQueries.scss +0 -0
  302. /package/dist/{containers → src/containers}/Tenant/Diagnostics/TopShards/TopShards.scss +0 -0
  303. /package/dist/{containers → src/containers}/Tenant/Info/ExternalDataSource/ExternalDataSource.scss +0 -0
  304. /package/dist/{containers → src/containers}/Tenant/Info/ExternalTable/ExternalTable.scss +0 -0
  305. /package/dist/{containers → src/containers}/Tenant/Info/View/View.scss +0 -0
  306. /package/dist/{containers → src/containers}/Tenant/ObjectGeneral/ObjectGeneral.scss +0 -0
  307. /package/dist/{containers → src/containers}/Tenant/ObjectSummary/ObjectSummary.scss +0 -0
  308. /package/dist/{containers → src/containers}/Tenant/Query/ExecuteResult/ExecuteResult.scss +0 -0
  309. /package/dist/{containers → src/containers}/Tenant/Query/ExplainResult/ExplainResult.scss +0 -0
  310. /package/dist/{containers → src/containers}/Tenant/Query/Issues/Issues.scss +0 -0
  311. /package/dist/{containers → src/containers}/Tenant/Query/Preview/Preview.scss +0 -0
  312. /package/dist/{containers → src/containers}/Tenant/Query/QueriesHistory/QueriesHistory.scss +0 -0
  313. /package/dist/{containers → src/containers}/Tenant/Query/QueryDuration/QueryDuration.scss +0 -0
  314. /package/dist/{containers → src/containers}/Tenant/Query/QueryEditor/QueryEditor.scss +0 -0
  315. /package/dist/{containers → src/containers}/Tenant/Query/QueryEditorControls/QueryEditorControls.scss +0 -0
  316. /package/dist/{containers → src/containers}/Tenant/Query/SaveQuery/SaveQuery.scss +0 -0
  317. /package/dist/{containers → src/containers}/Tenant/Query/SavedQueries/SavedQueries.scss +0 -0
  318. /package/dist/{containers → src/containers}/Tenant/Schema/SchemaViewer/SchemaViewer.scss +0 -0
  319. /package/dist/{containers → src/containers}/Tenant/utils/ToggleButton.scss +0 -0
  320. /package/dist/{containers → src/containers}/Tenants/Tenants.scss +0 -0
  321. /package/dist/{containers → src/containers}/UserSettings/UserSettings.scss +0 -0
  322. /package/dist/{containers → src/containers}/VDiskPage/VDiskPage.scss +0 -0
  323. /package/dist/{containers → src/containers}/Versions/GroupedNodesTree/GroupedNodesTree.scss +0 -0
  324. /package/dist/{containers → src/containers}/Versions/NodesTreeTitle/NodesTreeTitle.scss +0 -0
  325. /package/dist/{containers → src/containers}/Versions/Versions.scss +0 -0
  326. /package/dist/{index.css → src/index.css} +0 -0
  327. /package/dist/{styles → src/styles}/mixins.scss +0 -0
  328. /package/dist/{styles → src/styles}/themes/dark-hc.scss +0 -0
  329. /package/dist/{styles → src/styles}/themes/dark.scss +0 -0
  330. /package/dist/{styles → src/styles}/themes/light-hc.scss +0 -0
  331. /package/dist/{styles → src/styles}/themes/light.scss +0 -0
  332. /package/dist/{styles → src/styles}/themes.scss +0 -0
@@ -5,10 +5,11 @@ import DataTable from '@gravity-ui/react-data-table';
5
5
  import { Button, Card, Icon } from '@gravity-ui/uikit';
6
6
  import { ResponseError } from '../../../../components/Errors/ResponseError';
7
7
  import { ResizeableDataTable } from '../../../../components/ResizeableDataTable/ResizeableDataTable';
8
- import { setHotKeysData, setHotKeysDataWasNotLoaded, setHotKeysError, setHotKeysLoading, } from '../../../../store/reducers/hotKeys/hotKeys';
8
+ import { hotKeysApi } from '../../../../store/reducers/hotKeys/hotKeys';
9
+ import { schemaApi } from '../../../../store/reducers/schema/schema';
9
10
  import { cn } from '../../../../utils/cn';
10
- import { DEFAULT_TABLE_SETTINGS, IS_HOTKEYS_HELP_HIDDDEN_KEY } from '../../../../utils/constants';
11
- import { useSetting, useTypedDispatch, useTypedSelector } from '../../../../utils/hooks';
11
+ import { DEFAULT_TABLE_SETTINGS, IS_HOTKEYS_HELP_HIDDEN_KEY } from '../../../../utils/constants';
12
+ import { useSetting } from '../../../../utils/hooks';
12
13
  import i18n from './i18n';
13
14
  import keyIcon from '../../../../assets/icons/key.svg';
14
15
  import './HotKeys.scss';
@@ -37,59 +38,18 @@ const getHotKeysColumns = (keyColumnsIds = []) => {
37
38
  ];
38
39
  };
39
40
  export function HotKeys({ path }) {
40
- var _a, _b, _c;
41
- const dispatch = useTypedDispatch();
42
- const [helpHidden, setHelpHidden] = useSetting(IS_HOTKEYS_HELP_HIDDDEN_KEY);
43
- const collectSamplesTimerRef = React.useRef();
44
- const { loading, wasLoaded, data, error } = useTypedSelector((state) => state.hotKeys);
45
- const { loading: schemaLoading, data: schemaData } = useTypedSelector((state) => state.schema);
46
- const keyColumnsIds = (_c = (_b = (_a = schemaData[path]) === null || _a === void 0 ? void 0 : _a.PathDescription) === null || _b === void 0 ? void 0 : _b.Table) === null || _c === void 0 ? void 0 : _c.KeyColumnNames;
41
+ var _a, _b;
42
+ const { currentData: data, isFetching, error } = hotKeysApi.useGetHotKeysQuery({ path });
43
+ const loading = isFetching && data === undefined;
44
+ const { currentData: schemaData, isFetching: schemaIsFetching } = schemaApi.endpoints.getSchema.useQueryState({ path });
45
+ const schemaLoading = schemaIsFetching && schemaData === undefined;
46
+ const keyColumnsIds = (_b = (_a = schemaData === null || schemaData === void 0 ? void 0 : schemaData.PathDescription) === null || _a === void 0 ? void 0 : _a.Table) === null || _b === void 0 ? void 0 : _b.KeyColumnNames;
47
47
  const tableColumns = React.useMemo(() => {
48
48
  return getHotKeysColumns(keyColumnsIds);
49
49
  }, [keyColumnsIds]);
50
- React.useEffect(() => {
51
- const fetchHotkeys = async (enableSampling) => {
52
- // Set hotkeys error, but not data, since data is set conditionally
53
- try {
54
- const response = await window.api.getHotKeys(path, enableSampling);
55
- return response;
56
- }
57
- catch (err) {
58
- dispatch(setHotKeysError(err));
59
- return undefined;
60
- }
61
- };
62
- const fetchData = async () => {
63
- // If there is previous pending request for samples, cancel it
64
- if (collectSamplesTimerRef.current !== undefined) {
65
- window.clearInterval(collectSamplesTimerRef.current);
66
- }
67
- dispatch(setHotKeysDataWasNotLoaded());
68
- dispatch(setHotKeysLoading());
69
- // Send request that will trigger hot keys sampling (enable_sampling = true)
70
- const initialResponse = await fetchHotkeys(true);
71
- // If there are hotkeys in the initial request (hotkeys was collected before)
72
- // we could just use colleted samples (collected hotkeys are stored only for 30 seconds)
73
- if (initialResponse && initialResponse.hotkeys) {
74
- dispatch(setHotKeysData(initialResponse));
75
- }
76
- else if (initialResponse) {
77
- // Else wait for 5 seconds, while hot keys are being collected
78
- // And request these samples (enable_sampling = false)
79
- const timer = setTimeout(async () => {
80
- const responseWithSamples = await fetchHotkeys(false);
81
- if (responseWithSamples) {
82
- dispatch(setHotKeysData(responseWithSamples));
83
- }
84
- }, 5000);
85
- collectSamplesTimerRef.current = timer;
86
- }
87
- };
88
- fetchData();
89
- }, [dispatch, path]);
90
50
  const renderContent = () => {
91
51
  // It takes a while to collect hot keys. Display explicit status message, while collecting
92
- if ((loading && !wasLoaded) || schemaLoading) {
52
+ if (loading || schemaLoading) {
93
53
  return _jsx("div", { children: i18n('hot-keys-collecting') });
94
54
  }
95
55
  if (error) {
@@ -103,11 +63,12 @@ export function HotKeys({ path }) {
103
63
  order: DataTable.DESCENDING,
104
64
  } }));
105
65
  };
106
- const renderHelpCard = () => {
107
- if (helpHidden) {
108
- return null;
109
- }
110
- return (_jsxs(Card, { theme: "info", view: "filled", type: "container", className: b('help-card'), children: [i18n('help'), _jsx(Button, { className: b('help-card__close-button'), view: "flat", onClick: () => setHelpHidden(true), children: _jsx(Icon, { data: Xmark, size: 18 }) })] }));
111
- };
112
- return (_jsxs(React.Fragment, { children: [renderHelpCard(), renderContent()] }));
66
+ return (_jsxs(React.Fragment, { children: [_jsx(HelpCard, {}), renderContent()] }));
67
+ }
68
+ function HelpCard() {
69
+ const [helpHidden, setHelpHidden] = useSetting(IS_HOTKEYS_HELP_HIDDEN_KEY);
70
+ if (helpHidden) {
71
+ return null;
72
+ }
73
+ return (_jsxs(Card, { theme: "info", view: "filled", type: "container", className: b('help-card'), children: [i18n('help'), _jsx(Button, { className: b('help-card__close-button'), view: "flat", onClick: () => setHelpHidden(true), children: _jsx(Icon, { data: Xmark, size: 18 }) })] }));
113
74
  }
@@ -1,6 +1,6 @@
1
1
  import './Network.scss';
2
2
  interface NetworkProps {
3
- path: string;
3
+ tenantName: string;
4
4
  }
5
- export declare function Network({ path }: NetworkProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function Network({ tenantName }: NetworkProps): import("react/jsx-runtime").JSX.Element;
6
6
  export {};
@@ -9,23 +9,23 @@ import { networkApi } from '../../../../store/reducers/network/network';
9
9
  import { ProblemFilterValues, changeFilter, selectProblemFilter, } from '../../../../store/reducers/settings/settings';
10
10
  import { hideTooltip, showTooltip } from '../../../../store/reducers/tooltip';
11
11
  import { cn } from '../../../../utils/cn';
12
- import { useTypedDispatch, useTypedSelector } from '../../../../utils/hooks';
12
+ import { useAutoRefreshInterval, useTypedDispatch, useTypedSelector } from '../../../../utils/hooks';
13
13
  import { getDefaultNodePath } from '../../../Node/NodePages';
14
14
  import { NodeNetwork } from './NodeNetwork/NodeNetwork';
15
15
  import { getConnectedNodesCount } from './utils';
16
16
  import networkIcon from '../../../../assets/icons/network.svg';
17
17
  import './Network.scss';
18
18
  const b = cn('network');
19
- export function Network({ path }) {
19
+ export function Network({ tenantName }) {
20
20
  var _a, _b;
21
- const { autorefresh } = useTypedSelector((state) => state.schema);
21
+ const [autoRefreshInterval] = useAutoRefreshInterval();
22
22
  const filter = useTypedSelector(selectProblemFilter);
23
23
  const dispatch = useTypedDispatch();
24
24
  const [clickedNode, setClickedNode] = React.useState();
25
25
  const [showId, setShowId] = React.useState(false);
26
26
  const [showRacks, setShowRacks] = React.useState(false);
27
- const { currentData, isFetching, error } = networkApi.useGetNetworkInfoQuery(path, {
28
- pollingInterval: autorefresh,
27
+ const { currentData, isFetching, error } = networkApi.useGetNetworkInfoQuery(tenantName, {
28
+ pollingInterval: autoRefreshInterval,
29
29
  });
30
30
  const loading = isFetching && currentData === undefined;
31
31
  if (loading) {
@@ -1,8 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Flex, Text } from '@gravity-ui/uikit';
3
3
  import { AsyncReplicationState } from '../../../../../components/AsyncReplicationState';
4
4
  import { InfoViewer } from '../../../../../components/InfoViewer';
5
- import { useTypedSelector } from '../../../../../utils/hooks';
6
5
  import { getEntityName } from '../../../utils';
7
6
  import { AsyncReplicationPaths } from '../AsyncReplicationPaths';
8
7
  import { Credentials } from './Credentials';
@@ -11,10 +10,6 @@ import i18n from './i18n';
11
10
  export function AsyncReplicationInfo({ data }) {
12
11
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
13
12
  const entityName = getEntityName(data === null || data === void 0 ? void 0 : data.PathDescription);
14
- const { error: schemaError } = useTypedSelector((state) => state.schema);
15
- if (schemaError) {
16
- return _jsx("div", { className: "error", children: schemaError.statusText });
17
- }
18
13
  if (!data) {
19
14
  return (_jsxs("div", { className: "error", children: [i18n('noData'), " ", entityName] }));
20
15
  }
@@ -1,8 +1,9 @@
1
1
  import type { TEvDescribeSchemeResult } from '../../../../../types/api/schema';
2
2
  interface ChangefeedProps {
3
+ path: string;
3
4
  data?: TEvDescribeSchemeResult;
4
5
  topic?: TEvDescribeSchemeResult;
5
6
  }
6
7
  /** Displays overview for CDCStream EPathType */
7
- export declare const ChangefeedInfo: ({ data, topic }: ChangefeedProps) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const ChangefeedInfo: ({ path, data, topic }: ChangefeedProps) => import("react/jsx-runtime").JSX.Element;
8
9
  export {};
@@ -1,7 +1,6 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { InfoViewer, formatObject } from '../../../../../components/InfoViewer';
3
3
  import { formatCdcStreamItem, formatCommonItem, } from '../../../../../components/InfoViewer/formatters';
4
- import { useTypedSelector } from '../../../../../utils/hooks';
5
4
  import { getEntityName } from '../../../utils';
6
5
  import { TopicStats } from '../TopicStats';
7
6
  import { prepareTopicSchemaInfo } from '../utils';
@@ -21,14 +20,10 @@ const prepareChangefeedInfo = (changefeedData, topicData) => {
21
20
  return [created, ...changefeedInfo, ...topicInfo];
22
21
  };
23
22
  /** Displays overview for CDCStream EPathType */
24
- export const ChangefeedInfo = ({ data, topic }) => {
23
+ export const ChangefeedInfo = ({ path, data, topic }) => {
25
24
  const entityName = getEntityName(data === null || data === void 0 ? void 0 : data.PathDescription);
26
- const { error: schemaError } = useTypedSelector((state) => state.schema);
27
- if (schemaError) {
28
- return _jsx("div", { className: "error", children: schemaError.statusText });
29
- }
30
25
  if (!data || !topic) {
31
26
  return _jsxs("div", { className: "error", children: ["No ", entityName, " data"] });
32
27
  }
33
- return (_jsxs("div", { children: [_jsx(InfoViewer, { title: entityName, info: prepareChangefeedInfo(data, topic) }), _jsx(TopicStats, {})] }));
28
+ return (_jsxs("div", { children: [_jsx(InfoViewer, { title: entityName, info: prepareChangefeedInfo(data, topic) }), _jsx(TopicStats, { path: path })] }));
34
29
  };
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { EPathType } from '../../../../types/api/schema';
3
3
  interface OverviewProps {
4
4
  type?: EPathType;
5
- tenantName?: string;
5
+ path: string;
6
6
  }
7
- declare function Overview({ type, tenantName }: OverviewProps): string | number | true | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element;
7
+ declare function Overview({ type, path }: OverviewProps): string | number | true | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element;
8
8
  export default Overview;
@@ -6,9 +6,9 @@ import { TableIndexInfo } from '../../../../components/InfoViewer/schemaInfo';
6
6
  import { Loader } from '../../../../components/Loader';
7
7
  import { olapApi } from '../../../../store/reducers/olapStats';
8
8
  import { overviewApi } from '../../../../store/reducers/overview/overview';
9
- import { selectSchemaMergedChildrenPaths } from '../../../../store/reducers/schema/schema';
9
+ import { schemaApi, selectSchemaMergedChildrenPaths } from '../../../../store/reducers/schema/schema';
10
10
  import { EPathType } from '../../../../types/api/schema';
11
- import { useTypedSelector } from '../../../../utils/hooks';
11
+ import { useAutoRefreshInterval, useTypedSelector } from '../../../../utils/hooks';
12
12
  import { ExternalDataSourceInfo } from '../../Info/ExternalDataSource/ExternalDataSource';
13
13
  import { ExternalTableInfo } from '../../Info/ExternalTable/ExternalTable';
14
14
  import { ViewInfo } from '../../Info/View/View';
@@ -17,30 +17,28 @@ import { AsyncReplicationInfo } from './AsyncReplicationInfo';
17
17
  import { ChangefeedInfo } from './ChangefeedInfo';
18
18
  import { TableInfo } from './TableInfo';
19
19
  import { TopicInfo } from './TopicInfo';
20
- function Overview({ type, tenantName }) {
21
- const { autorefresh, currentSchemaPath } = useTypedSelector((state) => state.schema);
22
- const schemaPath = currentSchemaPath || tenantName;
23
- const olapParams = isTableType(type) && isColumnEntityType(type) ? { path: schemaPath } : skipToken;
24
- const { currentData: olapData, isFetching: olapIsFetching } = olapApi.useGetOlapStatsQuery(olapParams, { pollingInterval: autorefresh });
20
+ function Overview({ type, path }) {
21
+ const [autoRefreshInterval] = useAutoRefreshInterval();
22
+ const olapParams = isTableType(type) && isColumnEntityType(type) ? { path } : skipToken;
23
+ const { currentData: olapData, isFetching: olapIsFetching } = olapApi.useGetOlapStatsQuery(olapParams, { pollingInterval: autoRefreshInterval });
25
24
  const olapStatsLoading = olapIsFetching && olapData === undefined;
26
25
  const { result: olapStats } = olapData || { result: undefined };
27
26
  const isEntityWithMergedImpl = isEntityWithMergedImplementation(type);
28
- // shalloEqual prevents rerenders when new schema data is loaded
29
- const mergedChildrenPaths = useTypedSelector((state) => selectSchemaMergedChildrenPaths(state, currentSchemaPath, type), shallowEqual);
27
+ // shallowEqual prevents rerenders when new schema data is loaded
28
+ const mergedChildrenPaths = useTypedSelector((state) => selectSchemaMergedChildrenPaths(state, path, type), shallowEqual);
30
29
  let paths = skipToken;
31
- if (schemaPath) {
32
- if (!isEntityWithMergedImpl) {
33
- paths = [schemaPath];
34
- }
35
- else if (mergedChildrenPaths) {
36
- paths = [schemaPath, ...mergedChildrenPaths];
37
- }
30
+ if (!isEntityWithMergedImpl) {
31
+ paths = [path];
32
+ }
33
+ else if (mergedChildrenPaths) {
34
+ paths = [path, ...mergedChildrenPaths];
38
35
  }
39
36
  const { currentData, isFetching, error: overviewError, } = overviewApi.useGetOverviewQuery(paths, {
40
- pollingInterval: autorefresh,
37
+ pollingInterval: autoRefreshInterval,
41
38
  });
42
39
  const overviewLoading = isFetching && currentData === undefined;
43
40
  const { data: rawData, additionalData } = currentData || {};
41
+ const { error: schemaError } = schemaApi.endpoints.getSchema.useQueryState({ path });
44
42
  const entityLoading = overviewLoading || olapStatsLoading;
45
43
  const entityNotReady = isEntityWithMergedImpl && !mergedChildrenPaths;
46
44
  const renderContent = () => {
@@ -59,9 +57,9 @@ function Overview({ type, tenantName }) {
59
57
  [EPathType.EPathTypeColumnTable]: undefined,
60
58
  [EPathType.EPathTypeCdcStream]: () => {
61
59
  var _a;
62
- return (_jsx(ChangefeedInfo, { data: data, topic: (_a = additionalData === null || additionalData === void 0 ? void 0 : additionalData[0]) !== null && _a !== void 0 ? _a : undefined }));
60
+ return (_jsx(ChangefeedInfo, { path: path, data: data, topic: (_a = additionalData === null || additionalData === void 0 ? void 0 : additionalData[0]) !== null && _a !== void 0 ? _a : undefined }));
63
61
  },
64
- [EPathType.EPathTypePersQueueGroup]: () => _jsx(TopicInfo, { data: data }),
62
+ [EPathType.EPathTypePersQueueGroup]: () => _jsx(TopicInfo, { data: data, path: path }),
65
63
  [EPathType.EPathTypeExternalTable]: () => _jsx(ExternalTableInfo, { data: data }),
66
64
  [EPathType.EPathTypeExternalDataSource]: () => _jsx(ExternalDataSourceInfo, { data: data }),
67
65
  [EPathType.EPathTypeView]: () => _jsx(ViewInfo, { data: data }),
@@ -72,8 +70,8 @@ function Overview({ type, tenantName }) {
72
70
  if (entityLoading || entityNotReady) {
73
71
  return _jsx(Loader, { size: "m" });
74
72
  }
75
- if (overviewError) {
76
- return _jsx(ResponseError, { error: overviewError });
73
+ if (schemaError || overviewError) {
74
+ return _jsx(ResponseError, { error: schemaError || overviewError });
77
75
  }
78
76
  return renderContent();
79
77
  }
@@ -1,8 +1,6 @@
1
1
  @import '../../../../../styles/mixins.scss';
2
2
 
3
3
  .ydb-diagnostics-table-info {
4
- overflow: auto;
5
-
6
4
  &__title {
7
5
  @include info-viewer-title();
8
6
  }
@@ -1,7 +1,8 @@
1
1
  import type { TEvDescribeSchemeResult } from '../../../../../types/api/schema';
2
2
  interface TopicInfoProps {
3
+ path: string;
3
4
  data?: TEvDescribeSchemeResult;
4
5
  }
5
6
  /** Displays overview for PersQueueGroup EPathType */
6
- export declare const TopicInfo: ({ data }: TopicInfoProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const TopicInfo: ({ data, path }: TopicInfoProps) => import("react/jsx-runtime").JSX.Element;
7
8
  export {};
@@ -1,18 +1,13 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { InfoViewer } from '../../../../../components/InfoViewer';
3
- import { useTypedSelector } from '../../../../../utils/hooks';
4
3
  import { getEntityName } from '../../../utils';
5
4
  import { TopicStats } from '../TopicStats';
6
5
  import { prepareTopicSchemaInfo } from '../utils';
7
6
  /** Displays overview for PersQueueGroup EPathType */
8
- export const TopicInfo = ({ data }) => {
7
+ export const TopicInfo = ({ data, path }) => {
9
8
  const entityName = getEntityName(data === null || data === void 0 ? void 0 : data.PathDescription);
10
- const { error: schemaError } = useTypedSelector((state) => state.schema);
11
- if (schemaError) {
12
- return _jsx("div", { className: "error", children: schemaError.statusText });
13
- }
14
9
  if (!data) {
15
10
  return _jsxs("div", { className: "error", children: ["No ", entityName, " data"] });
16
11
  }
17
- return (_jsxs("div", { children: [_jsx(InfoViewer, { title: entityName, info: prepareTopicSchemaInfo(data) }), _jsx(TopicStats, {})] }));
12
+ return (_jsxs("div", { children: [_jsx(InfoViewer, { title: entityName, info: prepareTopicSchemaInfo(data) }), _jsx(TopicStats, { path: path })] }));
18
13
  };
@@ -1,2 +1,4 @@
1
1
  import './TopicStats.scss';
2
- export declare const TopicStats: () => import("react/jsx-runtime").JSX.Element;
2
+ export declare const TopicStats: ({ path }: {
3
+ path: string;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -8,7 +8,7 @@ import { SpeedMultiMeter } from '../../../../../components/SpeedMultiMeter';
8
8
  import { selectPreparedTopicStats, topicApi } from '../../../../../store/reducers/topic';
9
9
  import { cn } from '../../../../../utils/cn';
10
10
  import { formatBps, formatBytes } from '../../../../../utils/dataFormatters/dataFormatters';
11
- import { useTypedSelector } from '../../../../../utils/hooks';
11
+ import { useAutoRefreshInterval, useTypedSelector } from '../../../../../utils/hooks';
12
12
  import { formatDurationToShortTimeFormat } from '../../../../../utils/timeParsers';
13
13
  import i18n from './i18n';
14
14
  import './TopicStats.scss';
@@ -47,11 +47,11 @@ const prepareBytesWrittenInfo = (data) => {
47
47
  },
48
48
  ];
49
49
  };
50
- export const TopicStats = () => {
51
- const { autorefresh, currentSchemaPath } = useTypedSelector((state) => state.schema);
52
- const { currentData, isFetching, error } = topicApi.useGetTopicQuery({ path: currentSchemaPath }, { pollingInterval: autorefresh });
50
+ export const TopicStats = ({ path }) => {
51
+ const [autoRefreshInterval] = useAutoRefreshInterval();
52
+ const { currentData, isFetching, error } = topicApi.useGetTopicQuery({ path }, { pollingInterval: autoRefreshInterval });
53
53
  const loading = isFetching && currentData === undefined;
54
- const data = useTypedSelector((state) => selectPreparedTopicStats(state, currentSchemaPath));
54
+ const data = useTypedSelector((state) => selectPreparedTopicStats(state, path));
55
55
  if (loading) {
56
56
  return (_jsx("div", { className: b(), children: _jsx(Loader, { size: "s" }) }));
57
57
  }
@@ -9,7 +9,7 @@ import { partitionsApi, setSelectedConsumer } from '../../../../store/reducers/p
9
9
  import { selectConsumersNames, topicApi } from '../../../../store/reducers/topic';
10
10
  import { cn } from '../../../../utils/cn';
11
11
  import { DEFAULT_TABLE_SETTINGS, PARTITIONS_HIDDEN_COLUMNS_KEY } from '../../../../utils/constants';
12
- import { useSetting, useTypedDispatch, useTypedSelector } from '../../../../utils/hooks';
12
+ import { useAutoRefreshInterval, useSetting, useTypedDispatch, useTypedSelector, } from '../../../../utils/hooks';
13
13
  import { PartitionsControls } from './PartitionsControls/PartitionsControls';
14
14
  import { PARTITIONS_COLUMNS_WIDTH_LS_KEY } from './columns';
15
15
  import i18n from './i18n';
@@ -19,12 +19,9 @@ import './Partitions.scss';
19
19
  export const b = cn('ydb-diagnostics-partitions');
20
20
  export const Partitions = ({ path }) => {
21
21
  const dispatch = useTypedDispatch();
22
- // Manual path control to ensure that topic state will be reset before data fetch
23
- // so no request with wrong params will be sent
24
- const [componentCurrentPath, setComponentCurrentPath] = React.useState(path);
25
22
  const [partitionsToRender, setPartitionsToRender] = React.useState([]);
26
23
  const consumers = useTypedSelector((state) => selectConsumersNames(state, path));
27
- const { autorefresh } = useTypedSelector((state) => state.schema);
24
+ const [autoRefreshInterval] = useAutoRefreshInterval();
28
25
  const { selectedConsumer } = useTypedSelector((state) => state.partitions);
29
26
  const { currentData: topicData, isFetching: topicIsFetching, error: topicError, } = topicApi.useGetTopicQuery({ path });
30
27
  const topicLoading = topicIsFetching && topicData === undefined;
@@ -33,13 +30,8 @@ export const Partitions = ({ path }) => {
33
30
  const nodesMap = useTypedSelector(selectNodesMap);
34
31
  const [hiddenColumns, setHiddenColumns] = useSetting(PARTITIONS_HIDDEN_COLUMNS_KEY);
35
32
  const [columns, columnsIdsForSelector] = useGetPartitionsColumns(selectedConsumer);
36
- React.useEffect(() => {
37
- setComponentCurrentPath(path);
38
- }, [dispatch, path]);
39
- const params = !topicLoading && componentCurrentPath
40
- ? { path: componentCurrentPath, consumerName: selectedConsumer }
41
- : skipToken;
42
- const { currentData: partitionsData, isFetching: partitionsIsFetching, error: partitionsError, } = partitionsApi.useGetPartitionsQuery(params, { pollingInterval: autorefresh });
33
+ const params = !topicLoading && path ? { path, consumerName: selectedConsumer } : skipToken;
34
+ const { currentData: partitionsData, isFetching: partitionsIsFetching, error: partitionsError, } = partitionsApi.useGetPartitionsQuery(params, { pollingInterval: autoRefreshInterval });
43
35
  const partitionsLoading = partitionsIsFetching && partitionsData === undefined;
44
36
  const rawPartitions = partitionsData;
45
37
  const partitionsWithHosts = React.useMemo(() => {
@@ -0,0 +1,100 @@
1
+ @import '../../../../../styles/mixins.scss';
2
+
3
+ .healthcheck {
4
+ $block: &;
5
+
6
+ &__details {
7
+ width: 872px;
8
+ }
9
+
10
+ &__details-content-wrapper {
11
+ overflow-x: hidden;
12
+ }
13
+
14
+ &__preview {
15
+ display: flex;
16
+ flex-direction: column;
17
+
18
+ height: 100%;
19
+ }
20
+
21
+ &__preview-title {
22
+ font-weight: 600;
23
+
24
+ color: var(--g-color-text-link);
25
+
26
+ @include lead-typography();
27
+ }
28
+
29
+ &__preview-content {
30
+ margin: auto;
31
+
32
+ line-height: 24px;
33
+ }
34
+
35
+ &__preview-status-icon {
36
+ width: 64px;
37
+ height: 64px;
38
+ }
39
+
40
+ &__preview-title-wrapper {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 8px;
44
+
45
+ margin-bottom: 4px;
46
+ }
47
+
48
+ &__preview-issue {
49
+ position: relative;
50
+ top: -8px;
51
+
52
+ display: flex;
53
+ flex-direction: column;
54
+ align-items: center;
55
+ gap: 4px;
56
+
57
+ &_good {
58
+ color: var(--g-color-text-positive);
59
+ & #{$block}__self-check-status-indicator {
60
+ background-color: var(--g-color-base-positive-light);
61
+ }
62
+ }
63
+ &_degraded {
64
+ color: var(--g-color-text-info);
65
+ & #{$block}__self-check-status-indicator {
66
+ background-color: var(--g-color-base-info-light);
67
+ }
68
+ }
69
+ &_emergency {
70
+ color: var(--g-color-text-danger);
71
+ & #{$block}__self-check-status-indicator {
72
+ background-color: var(--g-color-base-danger-light);
73
+ }
74
+ }
75
+ &_unspecified {
76
+ color: var(--g-color-text-misc);
77
+ & #{$block}__self-check-status-indicator {
78
+ background-color: var(--g-color-base-misc-light);
79
+ }
80
+ }
81
+ &_maintenance_required {
82
+ color: var(--g-color-text-warning-heavy);
83
+ & #{$block}__self-check-status-indicator {
84
+ background-color: var(--g-color-base-warning-light);
85
+ }
86
+ }
87
+ }
88
+
89
+ &__self-check-status-indicator {
90
+ display: inline-block;
91
+
92
+ padding: 0 8px;
93
+
94
+ font-size: 13px;
95
+ line-height: 24px;
96
+ text-wrap: nowrap;
97
+
98
+ border-radius: 4px;
99
+ }
100
+ }
@@ -1,9 +1,6 @@
1
- import type { IssuesTree } from '../../../../../store/reducers/healthcheckInfo/types';
2
1
  import './Healthcheck.scss';
3
2
  interface HealthcheckDetailsProps {
4
- issueTrees?: IssuesTree[];
5
- loading?: boolean;
6
- error?: unknown;
3
+ tenantName: string;
7
4
  }
8
- export declare function HealthcheckDetails(props: HealthcheckDetailsProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function HealthcheckDetails({ tenantName }: HealthcheckDetailsProps): import("react/jsx-runtime").JSX.Element;
9
6
  export {};
@@ -3,12 +3,17 @@ import React from 'react';
3
3
  import { ResponseError } from '../../../../../components/Errors/ResponseError';
4
4
  import { Loader } from '../../../../../components/Loader';
5
5
  import { cn } from '../../../../../utils/cn';
6
+ import { useAutoRefreshInterval } from '../../../../../utils/hooks';
7
+ import { useHealthcheck } from '../useHealthcheck';
6
8
  import IssueTree from './IssuesViewer/IssueTree';
7
9
  import i18n from './i18n';
8
10
  import './Healthcheck.scss';
9
11
  const b = cn('healthcheck');
10
- export function HealthcheckDetails(props) {
11
- const { issueTrees, loading, error } = props;
12
+ export function HealthcheckDetails({ tenantName }) {
13
+ const [autoRefreshInterval] = useAutoRefreshInterval();
14
+ const { issueTrees, loading, error } = useHealthcheck(tenantName, {
15
+ autorefresh: autoRefreshInterval,
16
+ });
12
17
  const renderContent = () => {
13
18
  if (error) {
14
19
  return _jsx(ResponseError, { error: error, defaultMessage: i18n('no-data') });
@@ -1,11 +1,6 @@
1
- import type { SelfCheckResult, StatusFlag } from '../../../../../types/api/healthcheck';
2
1
  import './Healthcheck.scss';
3
2
  interface HealthcheckPreviewProps {
4
- selfCheckResult: SelfCheckResult;
5
- issuesStatistics?: [StatusFlag, number][];
6
- loading?: boolean;
7
- onUpdate: VoidFunction;
8
- error?: unknown;
3
+ tenantName: string;
9
4
  active?: boolean;
10
5
  }
11
6
  export declare function HealthcheckPreview(props: HealthcheckPreviewProps): import("react/jsx-runtime").JSX.Element;
@@ -1,28 +1,32 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from 'react';
3
- import { ArrowsRotateRight } from '@gravity-ui/icons';
4
- import { Button, Icon } from '@gravity-ui/uikit';
2
+ import { CircleCheck, CircleInfo, CircleQuestion, CircleXmark, TriangleExclamationFill, } from '@gravity-ui/icons';
3
+ import { Icon } from '@gravity-ui/uikit';
5
4
  import { DiagnosticCard } from '../../../../../components/DiagnosticCard/DiagnosticCard';
6
- import { EntityStatus } from '../../../../../components/EntityStatus/EntityStatus';
7
5
  import { ResponseError } from '../../../../../components/Errors/ResponseError';
8
6
  import { Loader } from '../../../../../components/Loader';
9
- import { hcStatusToColorFlag } from '../../../../../store/reducers/healthcheckInfo/utils';
7
+ import { healthcheckApi } from '../../../../../store/reducers/healthcheckInfo/healthcheckInfo';
8
+ import { SelfCheckResult } from '../../../../../types/api/healthcheck';
10
9
  import { cn } from '../../../../../utils/cn';
10
+ import { useAutoRefreshInterval } from '../../../../../utils/hooks';
11
11
  import i18n from './i18n';
12
12
  import './Healthcheck.scss';
13
13
  const b = cn('healthcheck');
14
+ const icons = {
15
+ [SelfCheckResult.UNSPECIFIED]: CircleQuestion,
16
+ [SelfCheckResult.GOOD]: CircleCheck,
17
+ [SelfCheckResult.DEGRADED]: CircleInfo,
18
+ [SelfCheckResult.MAINTENANCE_REQUIRED]: CircleXmark,
19
+ [SelfCheckResult.EMERGENCY]: TriangleExclamationFill,
20
+ };
14
21
  export function HealthcheckPreview(props) {
15
- const { selfCheckResult, issuesStatistics, loading, onUpdate, error, active } = props;
22
+ const { tenantName, active } = props;
23
+ const [autoRefreshInterval] = useAutoRefreshInterval();
24
+ const { currentData: data, isFetching, error, } = healthcheckApi.useGetHealthcheckInfoQuery({ database: tenantName }, {
25
+ pollingInterval: autoRefreshInterval,
26
+ });
27
+ const loading = isFetching && data === undefined;
16
28
  const renderHeader = () => {
17
- const modifier = selfCheckResult.toLowerCase();
18
- if (loading) {
19
- return null;
20
- }
21
- return (_jsxs("div", { className: b('preview-header'), children: [_jsxs("div", { className: b('preview-title-wrapper'), children: [_jsx("div", { className: b('preview-title'), children: i18n('title.healthcheck') }), _jsx(Button, { size: "s", onClick: (event) => {
22
- // FIXME: refactor card to remove the button from the anchor link.
23
- event.preventDefault();
24
- onUpdate();
25
- }, loading: loading, view: "flat-secondary", children: _jsx(Icon, { data: ArrowsRotateRight, size: 20 }) })] }), _jsx("div", { className: b('self-check-status-indicator', { [modifier]: true }), children: selfCheckResult })] }));
29
+ return (_jsx("div", { className: b('preview-header'), children: _jsx("div", { className: b('preview-title-wrapper'), children: _jsx("div", { className: b('preview-title'), children: i18n('title.healthcheck') }) }) }));
26
30
  };
27
31
  const renderContent = () => {
28
32
  if (error) {
@@ -31,7 +35,9 @@ export function HealthcheckPreview(props) {
31
35
  if (loading) {
32
36
  return _jsx(Loader, { size: "m" });
33
37
  }
34
- return (_jsx("div", { className: b('preview-content'), children: !issuesStatistics || !issuesStatistics.length ? (i18n('status_message.ok')) : (_jsxs(React.Fragment, { children: [_jsx("div", { children: i18n('label.issues') }), _jsx("div", { className: b('issues-statistics'), children: issuesStatistics.map(([status, count]) => (_jsx(EntityStatus, { mode: "icons", status: hcStatusToColorFlag[status], label: count.toString(), size: "l" }, status))) })] })) }));
38
+ const selfCheckResult = (data === null || data === void 0 ? void 0 : data.self_check_result) || SelfCheckResult.UNSPECIFIED;
39
+ const modifier = selfCheckResult.toLowerCase();
40
+ return (_jsx("div", { className: b('preview-content'), children: _jsxs("div", { className: b('preview-issue', { [modifier]: true }), children: [_jsx(Icon, { className: b('preview-status-icon'), data: icons[selfCheckResult] }), _jsx("div", { className: b('self-check-status-indicator'), children: selfCheckResult.replace(/_/g, ' ') })] }) }));
35
41
  };
36
42
  return (_jsxs(DiagnosticCard, { className: b('preview'), active: active, children: [renderHeader(), renderContent()] }));
37
43
  }