ydb-embedded-ui 21.1.0 → 22.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/dist/components/ComponentsProvider/ComponentsProvider.d.ts +0 -4
  2. package/dist/components/ComponentsProvider/componentsRegistry.d.ts +0 -2
  3. package/dist/components/ComponentsProvider/componentsRegistry.js +1 -3
  4. package/dist/components/ComponentsProvider/componentsRegistry.js.map +1 -1
  5. package/dist/components/ContentWithPopup/ContentWithPopup.d.ts +1 -1
  6. package/dist/components/ContentWithPopup/ContentWithPopup.js +4 -2
  7. package/dist/components/ContentWithPopup/ContentWithPopup.js.map +1 -1
  8. package/dist/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.d.ts +2 -1
  9. package/dist/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.js +5 -2
  10. package/dist/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.js.map +1 -1
  11. package/dist/components/DiskStateProgressBar/AllModeIndicators.d.ts +2 -1
  12. package/dist/components/DiskStateProgressBar/AllModeIndicators.js +4 -2
  13. package/dist/components/DiskStateProgressBar/AllModeIndicators.js.map +1 -1
  14. package/dist/components/DiskStateProgressBar/DiskIndicator.d.ts +7 -2
  15. package/dist/components/DiskStateProgressBar/DiskIndicator.js +6 -6
  16. package/dist/components/DiskStateProgressBar/DiskIndicator.js.map +1 -1
  17. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js +1 -1
  18. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js.map +1 -1
  19. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.scss +53 -45
  20. package/dist/components/DiskStateProgressBar/PDiskAllModeIndicators.js +9 -1
  21. package/dist/components/DiskStateProgressBar/PDiskAllModeIndicators.js.map +1 -1
  22. package/dist/components/EvictVDiskButton/EvictVDiskButton.js +7 -3
  23. package/dist/components/EvictVDiskButton/EvictVDiskButton.js.map +1 -1
  24. package/dist/components/FullNodeViewer/FullNodeViewer.js +40 -17
  25. package/dist/components/FullNodeViewer/FullNodeViewer.js.map +1 -1
  26. package/dist/components/FullNodeViewer/FullNodeViewer.scss +3 -3
  27. package/dist/components/FullNodeViewer/i18n/en.json +2 -1
  28. package/dist/components/FullNodeViewer/i18n/index.d.ts +1 -1
  29. package/dist/components/HoverPopup/HoverPopup.js +36 -6
  30. package/dist/components/HoverPopup/HoverPopup.js.map +1 -1
  31. package/dist/components/HoverPopup/getPopupScrollContainer.d.ts +1 -0
  32. package/dist/components/HoverPopup/getPopupScrollContainer.js +20 -0
  33. package/dist/components/HoverPopup/getPopupScrollContainer.js.map +1 -0
  34. package/dist/components/InfoViewer/InfoViewer.js +1 -1
  35. package/dist/components/InfoViewer/InfoViewer.js.map +1 -1
  36. package/dist/components/InfoViewer/formatters/pqGroup.js +6 -1
  37. package/dist/components/InfoViewer/formatters/pqGroup.js.map +1 -1
  38. package/dist/components/InfoViewer/schemaInfo/i18n/en.json +1 -0
  39. package/dist/components/InfoViewer/schemaInfo/i18n/index.d.ts +1 -1
  40. package/dist/components/InfoViewer/schemaInfo/utils.js +6 -1
  41. package/dist/components/InfoViewer/schemaInfo/utils.js.map +1 -1
  42. package/dist/components/MetricChart/reducer.d.ts +2 -2
  43. package/dist/components/NodeHostWrapper/NodeHostWrapper.d.ts +4 -1
  44. package/dist/components/NodeHostWrapper/NodeHostWrapper.js +13 -9
  45. package/dist/components/NodeHostWrapper/NodeHostWrapper.js.map +1 -1
  46. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  47. package/dist/components/PaginatedTable/KeyboardNavigation.d.ts +9 -0
  48. package/dist/components/PaginatedTable/KeyboardNavigation.js +14 -0
  49. package/dist/components/PaginatedTable/KeyboardNavigation.js.map +1 -0
  50. package/dist/components/PaginatedTable/PaginatedTable.d.ts +4 -1
  51. package/dist/components/PaginatedTable/PaginatedTable.js +77 -4
  52. package/dist/components/PaginatedTable/PaginatedTable.js.map +1 -1
  53. package/dist/components/PaginatedTable/PaginatedTable.scss +10 -0
  54. package/dist/components/PaginatedTable/PaginatedTableWithLayout.d.ts +2 -1
  55. package/dist/components/PaginatedTable/PaginatedTableWithLayout.js +2 -2
  56. package/dist/components/PaginatedTable/PaginatedTableWithLayout.js.map +1 -1
  57. package/dist/components/PaginatedTable/ResizeablePaginatedTable.js +2 -1
  58. package/dist/components/PaginatedTable/ResizeablePaginatedTable.js.map +1 -1
  59. package/dist/components/PaginatedTable/TableChunk.js +6 -10
  60. package/dist/components/PaginatedTable/TableChunk.js.map +1 -1
  61. package/dist/components/PaginatedTable/TableChunksRenderer.d.ts +2 -1
  62. package/dist/components/PaginatedTable/TableChunksRenderer.js +6 -1
  63. package/dist/components/PaginatedTable/TableChunksRenderer.js.map +1 -1
  64. package/dist/components/PaginatedTable/TableRow.d.ts +3 -1
  65. package/dist/components/PaginatedTable/TableRow.js +24 -8
  66. package/dist/components/PaginatedTable/TableRow.js.map +1 -1
  67. package/dist/components/PaginatedTable/getTableChunkQueryParams.d.ts +23 -0
  68. package/dist/components/PaginatedTable/getTableChunkQueryParams.js +12 -0
  69. package/dist/components/PaginatedTable/getTableChunkQueryParams.js.map +1 -0
  70. package/dist/components/PaginatedTable/rowLookup.d.ts +8 -0
  71. package/dist/components/PaginatedTable/rowLookup.js +35 -0
  72. package/dist/components/PaginatedTable/rowLookup.js.map +1 -0
  73. package/dist/components/PaginatedTable/useKeyboardNavigation.d.ts +27 -0
  74. package/dist/components/PaginatedTable/useKeyboardNavigation.js +70 -0
  75. package/dist/components/PaginatedTable/useKeyboardNavigation.js.map +1 -0
  76. package/dist/components/ResizeableDataTable/DataTableKeyboardNavigation.d.ts +24 -0
  77. package/dist/components/ResizeableDataTable/DataTableKeyboardNavigation.js +144 -0
  78. package/dist/components/ResizeableDataTable/DataTableKeyboardNavigation.js.map +1 -0
  79. package/dist/components/ResizeableDataTable/ResizeableDataTable.d.ts +4 -1
  80. package/dist/components/ResizeableDataTable/ResizeableDataTable.js +28 -4
  81. package/dist/components/ResizeableDataTable/ResizeableDataTable.js.map +1 -1
  82. package/dist/components/ResizeableDataTable/ResizeableDataTable.scss +10 -0
  83. package/dist/components/ResizeableDataTable/getDataTableOrder.d.ts +2 -0
  84. package/dist/components/ResizeableDataTable/getDataTableOrder.js +12 -0
  85. package/dist/components/ResizeableDataTable/getDataTableOrder.js.map +1 -0
  86. package/dist/components/Search/Search.d.ts +2 -1
  87. package/dist/components/Search/Search.js +6 -2
  88. package/dist/components/Search/Search.js.map +1 -1
  89. package/dist/components/SegmentedProgress/SegmentedProgress.d.ts +22 -1
  90. package/dist/components/SegmentedProgress/SegmentedProgress.js +44 -3
  91. package/dist/components/SegmentedProgress/SegmentedProgress.js.map +1 -1
  92. package/dist/components/SegmentedProgress/SegmentedProgress.scss +5 -0
  93. package/dist/components/ShardsTable/columns.js +6 -3
  94. package/dist/components/ShardsTable/columns.js.map +1 -1
  95. package/dist/components/ShardsTable/i18n/en.json +1 -0
  96. package/dist/components/ShardsTable/i18n/index.d.ts +1 -1
  97. package/dist/components/StorageGroupInfo/StorageGroupInfo.js +1 -13
  98. package/dist/components/StorageGroupInfo/StorageGroupInfo.js.map +1 -1
  99. package/dist/components/StorageGroupInfo/i18n/en.json +0 -1
  100. package/dist/components/StorageGroupInfo/i18n/index.d.ts +1 -1
  101. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.d.ts +54 -0
  102. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.js +389 -0
  103. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.js.map +1 -0
  104. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.scss +16 -0
  105. package/dist/components/TableKeyboardNavigation/i18n/en.json +4 -0
  106. package/dist/components/TableKeyboardNavigation/i18n/index.d.ts +2 -0
  107. package/dist/components/TableKeyboardNavigation/i18n/index.js +4 -0
  108. package/dist/components/TableKeyboardNavigation/i18n/index.js.map +1 -0
  109. package/dist/components/TableKeyboardNavigation/utils.d.ts +3 -0
  110. package/dist/components/TableKeyboardNavigation/utils.js +24 -0
  111. package/dist/components/TableKeyboardNavigation/utils.js.map +1 -0
  112. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.d.ts +4 -1
  113. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js +4 -2
  114. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js.map +1 -1
  115. package/dist/components/TenantNameWrapper/TenantNameWrapper.d.ts +3 -1
  116. package/dist/components/TenantNameWrapper/TenantNameWrapper.js +8 -12
  117. package/dist/components/TenantNameWrapper/TenantNameWrapper.js.map +1 -1
  118. package/dist/components/TenantNameWrapper/utils.d.ts +10 -0
  119. package/dist/components/TenantNameWrapper/utils.js +11 -0
  120. package/dist/components/TenantNameWrapper/utils.js.map +1 -1
  121. package/dist/components/UptimeViewer/UptimeViewer.d.ts +2 -2
  122. package/dist/components/VDisk/VDisk.d.ts +5 -1
  123. package/dist/components/VDisk/VDisk.js +84 -29
  124. package/dist/components/VDisk/VDisk.js.map +1 -1
  125. package/dist/components/VDisk/VDiskWithDonorsStack.d.ts +4 -1
  126. package/dist/components/VDisk/VDiskWithDonorsStack.js +8 -4
  127. package/dist/components/VDisk/VDiskWithDonorsStack.js.map +1 -1
  128. package/dist/components/VDisk/i18n/en.json +11 -0
  129. package/dist/components/VDisk/i18n/index.d.ts +1 -1
  130. package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
  131. package/dist/components/nodesColumns/columns.d.ts +4 -1
  132. package/dist/components/nodesColumns/columns.js +13 -0
  133. package/dist/components/nodesColumns/columns.js.map +1 -1
  134. package/dist/components/nodesColumns/constants.d.ts +2 -0
  135. package/dist/components/nodesColumns/constants.js +6 -0
  136. package/dist/components/nodesColumns/constants.js.map +1 -1
  137. package/dist/components/nodesColumns/i18n/en.json +2 -1
  138. package/dist/components/nodesColumns/i18n/index.d.ts +1 -1
  139. package/dist/containers/App/App.js +3 -3
  140. package/dist/containers/App/App.js.map +1 -1
  141. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +8 -5
  142. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js.map +1 -1
  143. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.scss +8 -0
  144. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.d.ts +4 -3
  145. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.js +62 -25
  146. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.js.map +1 -1
  147. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.scss +18 -0
  148. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/utils.d.ts +22 -0
  149. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/utils.js +49 -0
  150. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/utils.js.map +1 -0
  151. package/dist/containers/Cluster/i18n/en.json +13 -4
  152. package/dist/containers/Cluster/i18n/index.d.ts +1 -1
  153. package/dist/containers/Clusters/Clusters.js +11 -7
  154. package/dist/containers/Clusters/Clusters.js.map +1 -1
  155. package/dist/containers/Node/Node.js +20 -17
  156. package/dist/containers/Node/Node.js.map +1 -1
  157. package/dist/containers/Node/NodeNetwork/NodeNetworkControls/NodeNetworkControls.js +1 -1
  158. package/dist/containers/Node/NodeNetwork/NodeNetworkControls/NodeNetworkControls.js.map +1 -1
  159. package/dist/containers/Node/NodeNetwork/NodeNetworkTable.js +11 -1
  160. package/dist/containers/Node/NodeNetwork/NodeNetworkTable.js.map +1 -1
  161. package/dist/containers/Node/NodePages.d.ts +3 -9
  162. package/dist/containers/Node/NodePages.js +2 -10
  163. package/dist/containers/Node/NodePages.js.map +1 -1
  164. package/dist/containers/Node/Threads/ThreadStatesBar/ThreadStatesBar.d.ts +1 -1
  165. package/dist/containers/Node/i18n/en.json +0 -3
  166. package/dist/containers/Node/i18n/index.d.ts +1 -1
  167. package/dist/containers/Nodes/NodesControls/NodesControls.js +1 -1
  168. package/dist/containers/Nodes/NodesControls/NodesControls.js.map +1 -1
  169. package/dist/containers/Nodes/NodesTable.js +13 -2
  170. package/dist/containers/Nodes/NodesTable.js.map +1 -1
  171. package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js +1 -1
  172. package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js.map +1 -1
  173. package/dist/containers/Nodes/columns/columns.js +2 -1
  174. package/dist/containers/Nodes/columns/columns.js.map +1 -1
  175. package/dist/containers/Storage/Disks/Disks.d.ts +2 -1
  176. package/dist/containers/Storage/Disks/Disks.js +34 -23
  177. package/dist/containers/Storage/Disks/Disks.js.map +1 -1
  178. package/dist/containers/Storage/Disks/Disks.scss +5 -0
  179. package/dist/containers/Storage/PDisk/PDisk.d.ts +6 -9
  180. package/dist/containers/Storage/PDisk/PDisk.js +92 -37
  181. package/dist/containers/Storage/PDisk/PDisk.js.map +1 -1
  182. package/dist/containers/Storage/PDisk/PDisk.scss +79 -1
  183. package/dist/containers/Storage/PDisk/PDiskWithVDisks.d.ts +17 -0
  184. package/dist/containers/Storage/PDisk/PDiskWithVDisks.js +48 -0
  185. package/dist/containers/Storage/PDisk/PDiskWithVDisks.js.map +1 -0
  186. package/dist/containers/Storage/PDisk/i18n/en.json +8 -0
  187. package/dist/containers/Storage/PDisk/i18n/index.d.ts +1 -1
  188. package/dist/containers/Storage/PDisk/index.d.ts +1 -0
  189. package/dist/containers/Storage/PDisk/index.js +1 -0
  190. package/dist/containers/Storage/PDisk/index.js.map +1 -1
  191. package/dist/containers/Storage/PDisks/PDisks.d.ts +4 -1
  192. package/dist/containers/Storage/PDisks/PDisks.js +52 -6
  193. package/dist/containers/Storage/PDisks/PDisks.js.map +1 -1
  194. package/dist/containers/Storage/PaginatedStorage.js +3 -1
  195. package/dist/containers/Storage/PaginatedStorage.js.map +1 -1
  196. package/dist/containers/Storage/PaginatedStorageGroups/GroupedStorageGroupsComponent.js +1 -2
  197. package/dist/containers/Storage/PaginatedStorageGroups/GroupedStorageGroupsComponent.js.map +1 -1
  198. package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js +2 -2
  199. package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js.map +1 -1
  200. package/dist/containers/Storage/PaginatedStorageGroupsTable/PaginatedStorageGroupsTable.js +12 -4
  201. package/dist/containers/Storage/PaginatedStorageGroupsTable/PaginatedStorageGroupsTable.js.map +1 -1
  202. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/constants.d.ts +2 -2
  203. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
  204. package/dist/containers/Storage/PaginatedStorageGroupsTable/getGroups.d.ts +1 -1
  205. package/dist/containers/Storage/PaginatedStorageGroupsTable/getGroups.js +2 -3
  206. package/dist/containers/Storage/PaginatedStorageGroupsTable/getGroups.js.map +1 -1
  207. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.d.ts +1 -0
  208. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.js +8 -5
  209. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.js.map +1 -1
  210. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.js +6 -3
  211. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.js.map +1 -1
  212. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesControls.js +17 -5
  213. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesControls.js.map +1 -1
  214. package/dist/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.d.ts +16 -0
  215. package/dist/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.js +68 -0
  216. package/dist/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.js.map +1 -0
  217. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.d.ts +2 -1
  218. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.js +14 -2
  219. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.js.map +1 -1
  220. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/columns.js +2 -2
  221. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/columns.js.map +1 -1
  222. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js +7 -2
  223. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js.map +1 -1
  224. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/types.d.ts +2 -0
  225. package/dist/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.d.ts +5 -0
  226. package/dist/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.js +31 -0
  227. package/dist/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.js.map +1 -0
  228. package/dist/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.d.ts +5 -0
  229. package/dist/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.js +31 -0
  230. package/dist/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.js.map +1 -0
  231. package/dist/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.d.ts +21 -0
  232. package/dist/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.js +13 -0
  233. package/dist/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.js.map +1 -0
  234. package/dist/containers/Storage/StorageExpertModePanel/components/FrontQueuesLegend.js +1 -0
  235. package/dist/containers/Storage/StorageExpertModePanel/components/FrontQueuesLegend.js.map +1 -1
  236. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDecommitLegend.js +1 -0
  237. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDecommitLegend.js.map +1 -1
  238. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDriveLegend.js +3 -2
  239. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDriveLegend.js.map +1 -1
  240. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskMaintenanceLegend.js +1 -0
  241. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskMaintenanceLegend.js.map +1 -1
  242. package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js +4 -4
  243. package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js.map +1 -1
  244. package/dist/containers/Storage/StorageExpertModePanel/components/StatusPairLegend.js +3 -3
  245. package/dist/containers/Storage/StorageExpertModePanel/components/StatusPairLegend.js.map +1 -1
  246. package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.d.ts +1 -1
  247. package/dist/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.d.ts +4 -0
  248. package/dist/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.js +49 -0
  249. package/dist/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.js.map +1 -0
  250. package/dist/containers/Storage/StorageExpertModePanel/constants.d.ts +20 -0
  251. package/dist/containers/Storage/StorageExpertModePanel/constants.js +22 -0
  252. package/dist/containers/Storage/StorageExpertModePanel/constants.js.map +1 -1
  253. package/dist/containers/Storage/StorageExpertModePanel/i18n/en.json +2 -2
  254. package/dist/containers/Storage/StorageExpertModePanel/i18n/index.d.ts +1 -1
  255. package/dist/containers/Storage/TableGroup/TableGroup.js +2 -1
  256. package/dist/containers/Storage/TableGroup/TableGroup.js.map +1 -1
  257. package/dist/containers/Storage/VDisks/VDisks.d.ts +2 -1
  258. package/dist/containers/Storage/VDisks/VDisks.js +11 -4
  259. package/dist/containers/Storage/VDisks/VDisks.js.map +1 -1
  260. package/dist/containers/Storage/VDisks/VDisks.scss +3 -0
  261. package/dist/containers/Storage/useStoragePDiskDisplayStateGetter.d.ts +1 -0
  262. package/dist/containers/Storage/useStoragePDiskDisplayStateGetter.js +73 -102
  263. package/dist/containers/Storage/useStoragePDiskDisplayStateGetter.js.map +1 -1
  264. package/dist/containers/Storage/useStorageQueryParams.d.ts +9 -1
  265. package/dist/containers/Storage/useStorageQueryParams.js +50 -2
  266. package/dist/containers/Storage/useStorageQueryParams.js.map +1 -1
  267. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.d.ts +1 -0
  268. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js +50 -13
  269. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js.map +1 -1
  270. package/dist/containers/Storage/utils/useStorageColumnsSettings.d.ts +4 -1
  271. package/dist/containers/Storage/utils/useStorageColumnsSettings.js +49 -39
  272. package/dist/containers/Storage/utils/useStorageColumnsSettings.js.map +1 -1
  273. package/dist/containers/Storage/utils/useVirtualizedDiskList.d.ts +10 -0
  274. package/dist/containers/Storage/utils/useVirtualizedDiskList.js +131 -0
  275. package/dist/containers/Storage/utils/useVirtualizedDiskList.js.map +1 -0
  276. package/dist/containers/StorageGroupPage/StorageGroupPage.js +2 -3
  277. package/dist/containers/StorageGroupPage/StorageGroupPage.js.map +1 -1
  278. package/dist/containers/Tablet/Tablet.js +4 -2
  279. package/dist/containers/Tablet/Tablet.js.map +1 -1
  280. package/dist/containers/Tablet/components/TabletControls/TabletControls.js +3 -1
  281. package/dist/containers/Tablet/components/TabletControls/TabletControls.js.map +1 -1
  282. package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js +9 -3
  283. package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js.map +1 -1
  284. package/dist/containers/Tablets/TabletsTable.js +25 -1
  285. package/dist/containers/Tablets/TabletsTable.js.map +1 -1
  286. package/dist/containers/Tablets/i18n/en.json +2 -1
  287. package/dist/containers/Tablets/i18n/index.d.ts +1 -1
  288. package/dist/containers/Tenant/Diagnostics/Overview/AsyncReplicationPaths/i18n/index.d.ts +1 -1
  289. package/dist/containers/Tenant/Diagnostics/Overview/Overview.js +2 -1
  290. package/dist/containers/Tenant/Diagnostics/Overview/Overview.js.map +1 -1
  291. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.d.ts +7 -0
  292. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.js +69 -0
  293. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.js.map +1 -0
  294. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/en.json +9 -0
  295. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.d.ts +2 -0
  296. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.js +5 -0
  297. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.js.map +1 -0
  298. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.d.ts +1 -0
  299. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.js +2 -0
  300. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.js.map +1 -0
  301. package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.js +3 -3
  302. package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.js.map +1 -1
  303. package/dist/containers/Tenant/Diagnostics/Partitions/utils/constants.d.ts +2 -2
  304. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +1 -3
  305. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js.map +1 -1
  306. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/useTenantStorageNewData.d.ts +5 -5
  307. package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.d.ts +2 -1
  308. package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.js +3 -2
  309. package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.js.map +1 -1
  310. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js +1 -1
  311. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js.map +1 -1
  312. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js +1 -1
  313. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js.map +1 -1
  314. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +1 -1
  315. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js.map +1 -1
  316. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.d.ts +3 -3
  317. package/dist/containers/Tenant/Diagnostics/useDiagnosticsPages.js +2 -4
  318. package/dist/containers/Tenant/Diagnostics/useDiagnosticsPages.js.map +1 -1
  319. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.js +2 -1
  320. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.js.map +1 -1
  321. package/dist/containers/Tenant/Query/SavedQueries/SavedQueries.js +1 -1
  322. package/dist/containers/Tenant/Query/SavedQueries/SavedQueries.js.map +1 -1
  323. package/dist/containers/Tenants/TenantsTable.js +37 -6
  324. package/dist/containers/Tenants/TenantsTable.js.map +1 -1
  325. package/dist/containers/VDiskPage/VDiskPage.js +1 -1
  326. package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
  327. package/dist/routes.d.ts +1 -0
  328. package/dist/routes.js.map +1 -1
  329. package/dist/services/api/tablets.d.ts +6 -4
  330. package/dist/services/api/tablets.js +9 -8
  331. package/dist/services/api/tablets.js.map +1 -1
  332. package/dist/services/api/viewer.d.ts +1 -2
  333. package/dist/services/api/viewer.js +0 -11
  334. package/dist/services/api/viewer.js.map +1 -1
  335. package/dist/store/configureStore.d.ts +12 -12
  336. package/dist/store/defaultStore.d.ts +6 -6
  337. package/dist/store/reducers/api.d.ts +1 -1
  338. package/dist/store/reducers/api.js +3 -0
  339. package/dist/store/reducers/api.js.map +1 -1
  340. package/dist/store/reducers/authentication/authentication.d.ts +4 -4
  341. package/dist/store/reducers/cancelQuery.d.ts +2 -2
  342. package/dist/store/reducers/capabilities/capabilities.d.ts +47 -47
  343. package/dist/store/reducers/capabilities/hooks.d.ts +6 -6
  344. package/dist/store/reducers/capabilities/hooks.js +8 -3
  345. package/dist/store/reducers/capabilities/hooks.js.map +1 -1
  346. package/dist/store/reducers/cluster/cluster.d.ts +5 -5
  347. package/dist/store/reducers/cluster/cluster.js +3 -2
  348. package/dist/store/reducers/cluster/cluster.js.map +1 -1
  349. package/dist/store/reducers/clusters/clusters.d.ts +2 -2
  350. package/dist/store/reducers/clusters/clusters.js +2 -1
  351. package/dist/store/reducers/clusters/clusters.js.map +1 -1
  352. package/dist/store/reducers/codeAssist/codeAssist.d.ts +6 -6
  353. package/dist/store/reducers/configs.d.ts +3 -3
  354. package/dist/store/reducers/entityDataTags.d.ts +21 -0
  355. package/dist/store/reducers/entityDataTags.js +24 -0
  356. package/dist/store/reducers/entityDataTags.js.map +1 -0
  357. package/dist/store/reducers/environments/environments.d.ts +2 -2
  358. package/dist/store/reducers/executeTopQueries/executeTopQueries.d.ts +4 -4
  359. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +111 -111
  360. package/dist/store/reducers/heatmap.d.ts +2 -2
  361. package/dist/store/reducers/hotKeys/hotKeys.d.ts +2 -2
  362. package/dist/store/reducers/index.d.ts +8 -8
  363. package/dist/store/reducers/network/network.d.ts +2 -2
  364. package/dist/store/reducers/node/node.d.ts +2 -5
  365. package/dist/store/reducers/node/node.js +0 -12
  366. package/dist/store/reducers/node/node.js.map +1 -1
  367. package/dist/store/reducers/node/types.d.ts +0 -14
  368. package/dist/store/reducers/nodes/nodes.d.ts +2 -2
  369. package/dist/store/reducers/nodesList.d.ts +6 -264
  370. package/dist/store/reducers/nodesList.js +1 -1
  371. package/dist/store/reducers/nodesList.js.map +1 -1
  372. package/dist/store/reducers/operations.d.ts +5 -5
  373. package/dist/store/reducers/overview/overview.d.ts +2 -2
  374. package/dist/store/reducers/partitions/partitions.d.ts +3 -3
  375. package/dist/store/reducers/pdisk/pdisk.d.ts +2 -2
  376. package/dist/store/reducers/planToSvg.d.ts +2 -2
  377. package/dist/store/reducers/preview.d.ts +2 -2
  378. package/dist/store/reducers/query/api.d.ts +4 -4
  379. package/dist/store/reducers/replication.d.ts +2 -2
  380. package/dist/store/reducers/schema/schema.d.ts +16 -16
  381. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +40 -40
  382. package/dist/store/reducers/settings/api.d.ts +4 -4
  383. package/dist/store/reducers/settings/constants.d.ts +4 -0
  384. package/dist/store/reducers/settings/constants.js +4 -0
  385. package/dist/store/reducers/settings/constants.js.map +1 -1
  386. package/dist/store/reducers/settings/settings.d.ts +1 -1
  387. package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +2 -2
  388. package/dist/store/reducers/showCreateTable/showCreateTable.d.ts +2 -2
  389. package/dist/store/reducers/storage/prepareGroupsDisks.d.ts +1 -0
  390. package/dist/store/reducers/storage/prepareGroupsDisks.js +17 -13
  391. package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -1
  392. package/dist/store/reducers/storage/requestStorageData.d.ts +2 -4
  393. package/dist/store/reducers/storage/requestStorageData.js +4 -10
  394. package/dist/store/reducers/storage/requestStorageData.js.map +1 -1
  395. package/dist/store/reducers/storage/storage.d.ts +4 -6
  396. package/dist/store/reducers/storage/storage.js.map +1 -1
  397. package/dist/store/reducers/storage/types.d.ts +0 -9
  398. package/dist/store/reducers/storage/utils.d.ts +1 -2
  399. package/dist/store/reducers/storage/utils.js +11 -116
  400. package/dist/store/reducers/storage/utils.js.map +1 -1
  401. package/dist/store/reducers/storageUsage/StorageUsage.d.ts +2 -2
  402. package/dist/store/reducers/streamingQuery/streamingQuery.d.ts +2 -2
  403. package/dist/store/reducers/table/table.d.ts +4 -4
  404. package/dist/store/reducers/tableData.d.ts +2 -2
  405. package/dist/store/reducers/tableData.js.map +1 -1
  406. package/dist/store/reducers/tablePartitioning/tablePartitioning.d.ts +2 -2
  407. package/dist/store/reducers/tableSchemaData.d.ts +2 -2
  408. package/dist/store/reducers/tablet.d.ts +11 -8
  409. package/dist/store/reducers/tablet.js +6 -6
  410. package/dist/store/reducers/tablet.js.map +1 -1
  411. package/dist/store/reducers/tablets.d.ts +3 -3
  412. package/dist/store/reducers/tenant/tenant.d.ts +2 -2
  413. package/dist/store/reducers/tenant/tenant.js +14 -1
  414. package/dist/store/reducers/tenant/tenant.js.map +1 -1
  415. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +2 -2
  416. package/dist/store/reducers/tenantOverview/storage/tenantOverviewStorage.d.ts +2 -2
  417. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +2 -2
  418. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.js +1 -1
  419. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.js.map +1 -1
  420. package/dist/store/reducers/tenants/tenants.d.ts +3 -3
  421. package/dist/store/reducers/tenants/tenants.js +2 -1
  422. package/dist/store/reducers/tenants/tenants.js.map +1 -1
  423. package/dist/store/reducers/topic/topic.d.ts +84 -84
  424. package/dist/store/reducers/vdisk/vdisk.d.ts +3 -3
  425. package/dist/store/reducers/viewSchema/viewSchema.d.ts +2 -2
  426. package/dist/store/state-url-mapping.js +5 -1
  427. package/dist/store/state-url-mapping.js.map +1 -1
  428. package/dist/types/api/capabilities.d.ts +2 -2
  429. package/dist/types/api/pdisk.d.ts +2 -0
  430. package/dist/types/api/pdisk.js.map +1 -1
  431. package/dist/types/api/schema/persQueueGroup.d.ts +2 -2
  432. package/dist/types/api/schema/schema.d.ts +15 -0
  433. package/dist/types/api/schema/schema.js.map +1 -1
  434. package/dist/types/api/schema/tableIndex.d.ts +1 -0
  435. package/dist/types/api/storage.d.ts +6 -111
  436. package/dist/types/api/storage.js.map +1 -1
  437. package/dist/types/api/vdisk.d.ts +2 -0
  438. package/dist/types/api/vdisk.js.map +1 -1
  439. package/dist/uiFactory/types.d.ts +2 -0
  440. package/dist/utils/developerUI/tabletDevUi.d.ts +1 -0
  441. package/dist/utils/developerUI/tabletDevUi.js +4 -0
  442. package/dist/utils/developerUI/tabletDevUi.js.map +1 -0
  443. package/dist/utils/disks/displayState.d.ts +2 -0
  444. package/dist/utils/disks/displayState.js.map +1 -1
  445. package/dist/utils/disks/getDiskBarTone.d.ts +2 -1
  446. package/dist/utils/disks/getDiskBarTone.js +5 -1
  447. package/dist/utils/disks/getDiskBarTone.js.map +1 -1
  448. package/dist/utils/disks/pdiskState.js +2 -2
  449. package/dist/utils/disks/pdiskState.js.map +1 -1
  450. package/dist/utils/disks/prepareDisks.js +19 -9
  451. package/dist/utils/disks/prepareDisks.js.map +1 -1
  452. package/dist/utils/disks/types.d.ts +2 -1
  453. package/dist/utils/hooks/useWhoami.d.ts +5 -5
  454. package/dist/utils/query.d.ts +1 -0
  455. package/dist/utils/query.js +6 -0
  456. package/dist/utils/query.js.map +1 -1
  457. package/package.json +1 -1
  458. package/src/components/ComponentsProvider/componentsRegistry.ts +1 -4
  459. package/src/components/ContentWithPopup/ContentWithPopup.tsx +7 -0
  460. package/src/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.tsx +15 -2
  461. package/src/components/DiskStateProgressBar/AllModeIndicators.tsx +19 -6
  462. package/src/components/DiskStateProgressBar/DiskIndicator.tsx +19 -8
  463. package/src/components/DiskStateProgressBar/DiskStateProgressBar.scss +53 -45
  464. package/src/components/DiskStateProgressBar/DiskStateProgressBar.tsx +1 -1
  465. package/src/components/DiskStateProgressBar/PDiskAllModeIndicators.tsx +16 -3
  466. package/src/components/EvictVDiskButton/EvictVDiskButton.tsx +10 -3
  467. package/src/components/FullNodeViewer/FullNodeViewer.scss +3 -3
  468. package/src/components/FullNodeViewer/FullNodeViewer.tsx +81 -34
  469. package/src/components/FullNodeViewer/i18n/en.json +2 -1
  470. package/src/components/HoverPopup/HoverPopup.tsx +53 -19
  471. package/src/components/HoverPopup/getPopupScrollContainer.ts +20 -0
  472. package/src/components/InfoViewer/InfoViewer.tsx +4 -2
  473. package/src/components/InfoViewer/formatters/pqGroup.ts +6 -2
  474. package/src/components/InfoViewer/schemaInfo/i18n/en.json +1 -0
  475. package/src/components/InfoViewer/schemaInfo/utils.tsx +9 -0
  476. package/src/components/NodeHostWrapper/NodeHostWrapper.tsx +23 -13
  477. package/src/components/PaginatedTable/KeyboardNavigation.tsx +30 -0
  478. package/src/components/PaginatedTable/PaginatedTable.scss +10 -0
  479. package/src/components/PaginatedTable/PaginatedTable.tsx +128 -4
  480. package/src/components/PaginatedTable/PaginatedTableWithLayout.tsx +6 -1
  481. package/src/components/PaginatedTable/ResizeablePaginatedTable.tsx +6 -1
  482. package/src/components/PaginatedTable/TableChunk.tsx +6 -14
  483. package/src/components/PaginatedTable/TableChunksRenderer.tsx +12 -0
  484. package/src/components/PaginatedTable/TableRow.tsx +54 -20
  485. package/src/components/PaginatedTable/getTableChunkQueryParams.ts +25 -0
  486. package/src/components/PaginatedTable/rowLookup.ts +63 -0
  487. package/src/components/PaginatedTable/useKeyboardNavigation.ts +115 -0
  488. package/src/components/ResizeableDataTable/DataTableKeyboardNavigation.tsx +194 -0
  489. package/src/components/ResizeableDataTable/ResizeableDataTable.scss +10 -0
  490. package/src/components/ResizeableDataTable/ResizeableDataTable.tsx +100 -5
  491. package/src/components/ResizeableDataTable/getDataTableOrder.ts +18 -0
  492. package/src/components/Search/Search.tsx +8 -1
  493. package/src/components/SegmentedProgress/SegmentedProgress.scss +5 -0
  494. package/src/components/SegmentedProgress/SegmentedProgress.tsx +99 -10
  495. package/src/components/ShardsTable/columns.tsx +14 -5
  496. package/src/components/ShardsTable/i18n/en.json +1 -0
  497. package/src/components/StorageGroupInfo/StorageGroupInfo.tsx +0 -13
  498. package/src/components/StorageGroupInfo/i18n/en.json +0 -1
  499. package/src/components/TableKeyboardNavigation/TableKeyboardNavigation.scss +16 -0
  500. package/src/components/TableKeyboardNavigation/TableKeyboardNavigation.tsx +519 -0
  501. package/src/components/TableKeyboardNavigation/i18n/en.json +4 -0
  502. package/src/components/TableKeyboardNavigation/i18n/index.ts +5 -0
  503. package/src/components/TableKeyboardNavigation/utils.ts +36 -0
  504. package/src/components/TableWithControlsLayout/TableWithControlsLayout.tsx +26 -1
  505. package/src/components/TenantNameWrapper/TenantNameWrapper.tsx +14 -15
  506. package/src/components/TenantNameWrapper/utils.ts +26 -0
  507. package/src/components/VDisk/VDisk.tsx +115 -41
  508. package/src/components/VDisk/VDiskWithDonorsStack.tsx +18 -3
  509. package/src/components/VDisk/i18n/en.json +11 -0
  510. package/src/components/nodesColumns/columns.tsx +13 -1
  511. package/src/components/nodesColumns/constants.ts +6 -0
  512. package/src/components/nodesColumns/i18n/en.json +2 -1
  513. package/src/containers/App/App.tsx +3 -3
  514. package/src/containers/Cluster/ClusterInfo/ClusterInfo.scss +8 -0
  515. package/src/containers/Cluster/ClusterInfo/ClusterInfo.tsx +12 -11
  516. package/src/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.scss +18 -0
  517. package/src/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.tsx +143 -58
  518. package/src/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/utils.ts +89 -0
  519. package/src/containers/Cluster/i18n/en.json +13 -4
  520. package/src/containers/Clusters/Clusters.tsx +47 -29
  521. package/src/containers/Node/Node.tsx +32 -18
  522. package/src/containers/Node/NodeNetwork/NodeNetworkControls/NodeNetworkControls.tsx +1 -0
  523. package/src/containers/Node/NodeNetwork/NodeNetworkTable.tsx +17 -0
  524. package/src/containers/Node/NodePages.ts +5 -10
  525. package/src/containers/Node/i18n/en.json +0 -4
  526. package/src/containers/Nodes/NodesControls/NodesControls.tsx +1 -0
  527. package/src/containers/Nodes/NodesTable.tsx +23 -1
  528. package/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx +1 -0
  529. package/src/containers/Nodes/columns/columns.tsx +2 -0
  530. package/src/containers/Storage/Disks/Disks.scss +5 -0
  531. package/src/containers/Storage/Disks/Disks.tsx +156 -92
  532. package/src/containers/Storage/PDisk/PDisk.scss +79 -1
  533. package/src/containers/Storage/PDisk/PDisk.tsx +157 -81
  534. package/src/containers/Storage/PDisk/PDiskWithVDisks.tsx +181 -0
  535. package/src/containers/Storage/PDisk/i18n/en.json +8 -0
  536. package/src/containers/Storage/PDisk/index.ts +1 -0
  537. package/src/containers/Storage/PDisks/PDisks.tsx +157 -22
  538. package/src/containers/Storage/PaginatedStorage.tsx +4 -0
  539. package/src/containers/Storage/PaginatedStorageGroups/GroupedStorageGroupsComponent.tsx +1 -1
  540. package/src/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.tsx +3 -2
  541. package/src/containers/Storage/PaginatedStorageGroupsTable/PaginatedStorageGroupsTable.tsx +15 -6
  542. package/src/containers/Storage/PaginatedStorageGroupsTable/columns/constants.ts +2 -2
  543. package/src/containers/Storage/PaginatedStorageGroupsTable/getGroups.ts +40 -47
  544. package/src/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.tsx +10 -2
  545. package/src/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.tsx +6 -2
  546. package/src/containers/Storage/PaginatedStorageNodes/StorageNodesControls.tsx +76 -41
  547. package/src/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.ts +103 -0
  548. package/src/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.tsx +24 -1
  549. package/src/containers/Storage/PaginatedStorageNodesTable/columns/columns.tsx +3 -1
  550. package/src/containers/Storage/PaginatedStorageNodesTable/columns/hooks.ts +8 -1
  551. package/src/containers/Storage/PaginatedStorageNodesTable/columns/types.ts +2 -0
  552. package/src/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.tsx +63 -0
  553. package/src/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.tsx +67 -0
  554. package/src/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.tsx +63 -0
  555. package/src/containers/Storage/StorageExpertModePanel/components/FrontQueuesLegend.tsx +1 -0
  556. package/src/containers/Storage/StorageExpertModePanel/components/PDiskDecommitLegend.tsx +1 -0
  557. package/src/containers/Storage/StorageExpertModePanel/components/PDiskDriveLegend.tsx +3 -2
  558. package/src/containers/Storage/StorageExpertModePanel/components/PDiskMaintenanceLegend.tsx +1 -0
  559. package/src/containers/Storage/StorageExpertModePanel/components/SpaceLegend.tsx +3 -0
  560. package/src/containers/Storage/StorageExpertModePanel/components/StatusPairLegend.tsx +7 -9
  561. package/src/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.ts +1 -1
  562. package/src/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.tsx +58 -0
  563. package/src/containers/Storage/StorageExpertModePanel/constants.ts +26 -0
  564. package/src/containers/Storage/StorageExpertModePanel/i18n/en.json +2 -2
  565. package/src/containers/Storage/TableGroup/TableGroup.tsx +6 -1
  566. package/src/containers/Storage/VDisks/VDisks.scss +3 -0
  567. package/src/containers/Storage/VDisks/VDisks.tsx +29 -7
  568. package/src/containers/Storage/useStoragePDiskDisplayStateGetter.ts +94 -135
  569. package/src/containers/Storage/useStorageQueryParams.ts +120 -1
  570. package/src/containers/Storage/useStorageVDiskDisplayStateGetter.ts +65 -10
  571. package/src/containers/Storage/utils/useStorageColumnsSettings.ts +77 -49
  572. package/src/containers/Storage/utils/useVirtualizedDiskList.ts +156 -0
  573. package/src/containers/StorageGroupPage/StorageGroupPage.tsx +2 -6
  574. package/src/containers/Tablet/Tablet.tsx +4 -2
  575. package/src/containers/Tablet/components/TabletControls/TabletControls.tsx +7 -3
  576. package/src/containers/Tablet/components/TabletInfo/TabletInfo.tsx +13 -3
  577. package/src/containers/Tablets/TabletsTable.tsx +50 -10
  578. package/src/containers/Tablets/i18n/en.json +2 -1
  579. package/src/containers/Tenant/Diagnostics/Overview/Overview.tsx +2 -1
  580. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.tsx +106 -0
  581. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/en.json +9 -0
  582. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.ts +7 -0
  583. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.ts +1 -0
  584. package/src/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.ts +3 -3
  585. package/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.tsx +1 -6
  586. package/src/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.tsx +6 -0
  587. package/src/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.tsx +4 -0
  588. package/src/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.tsx +7 -1
  589. package/src/containers/Tenant/Diagnostics/TopShards/TopShards.tsx +1 -1
  590. package/src/containers/Tenant/Diagnostics/useDiagnosticsPages.ts +1 -4
  591. package/src/containers/Tenant/Query/QueriesHistory/QueriesHistory.tsx +5 -0
  592. package/src/containers/Tenant/Query/SavedQueries/SavedQueries.tsx +6 -0
  593. package/src/containers/Tenants/TenantsTable.tsx +70 -12
  594. package/src/containers/VDiskPage/VDiskPage.tsx +1 -1
  595. package/src/routes.ts +1 -1
  596. package/src/services/api/tablets.ts +16 -7
  597. package/src/services/api/viewer.ts +1 -25
  598. package/src/store/reducers/api.ts +4 -0
  599. package/src/store/reducers/capabilities/hooks.ts +9 -4
  600. package/src/store/reducers/cluster/cluster.ts +3 -2
  601. package/src/store/reducers/clusters/clusters.ts +2 -1
  602. package/src/store/reducers/entityDataTags.ts +34 -0
  603. package/src/store/reducers/node/node.ts +0 -11
  604. package/src/store/reducers/node/types.ts +0 -18
  605. package/src/store/reducers/nodesList.ts +2 -3
  606. package/src/store/reducers/settings/constants.ts +4 -0
  607. package/src/store/reducers/storage/prepareGroupsDisks.ts +16 -11
  608. package/src/store/reducers/storage/requestStorageData.ts +5 -17
  609. package/src/store/reducers/storage/storage.ts +2 -6
  610. package/src/store/reducers/storage/types.ts +0 -9
  611. package/src/store/reducers/storage/utils.ts +14 -180
  612. package/src/store/reducers/tableData.ts +1 -1
  613. package/src/store/reducers/tablet.ts +25 -6
  614. package/src/store/reducers/tenant/tenant.ts +17 -1
  615. package/src/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.ts +1 -1
  616. package/src/store/reducers/tenants/tenants.ts +2 -1
  617. package/src/store/state-url-mapping.ts +5 -1
  618. package/src/types/api/capabilities.ts +2 -2
  619. package/src/types/api/pdisk.ts +2 -0
  620. package/src/types/api/schema/persQueueGroup.ts +2 -2
  621. package/src/types/api/schema/schema.ts +18 -0
  622. package/src/types/api/schema/tableIndex.ts +1 -0
  623. package/src/types/api/storage.ts +11 -131
  624. package/src/types/api/vdisk.ts +2 -0
  625. package/src/uiFactory/types.ts +3 -0
  626. package/src/utils/developerUI/tabletDevUi.ts +3 -0
  627. package/src/utils/disks/displayState.ts +2 -0
  628. package/src/utils/disks/getDiskBarTone.ts +8 -0
  629. package/src/utils/disks/pdiskState.ts +2 -2
  630. package/src/utils/disks/prepareDisks.ts +25 -9
  631. package/src/utils/disks/types.ts +2 -1
  632. package/src/utils/query.ts +7 -0
  633. package/dist/containers/Node/NodeStructure/NodeStructure.d.ts +0 -7
  634. package/dist/containers/Node/NodeStructure/NodeStructure.js +0 -76
  635. package/dist/containers/Node/NodeStructure/NodeStructure.js.map +0 -1
  636. package/dist/containers/Node/NodeStructure/NodeStructure.scss +0 -155
  637. package/dist/containers/Node/NodeStructure/PDiskTitleBadge.d.ts +0 -7
  638. package/dist/containers/Node/NodeStructure/PDiskTitleBadge.js +0 -7
  639. package/dist/containers/Node/NodeStructure/PDiskTitleBadge.js.map +0 -1
  640. package/dist/containers/Node/NodeStructure/Pdisk.d.ts +0 -10
  641. package/dist/containers/Node/NodeStructure/Pdisk.js +0 -125
  642. package/dist/containers/Node/NodeStructure/Pdisk.js.map +0 -1
  643. package/dist/containers/Storage/PDisk/PDiskVDisks.d.ts +0 -13
  644. package/dist/containers/Storage/PDisk/PDiskVDisks.js +0 -20
  645. package/dist/containers/Storage/PDisk/PDiskVDisks.js.map +0 -1
  646. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.d.ts +0 -6
  647. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js +0 -66
  648. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js.map +0 -1
  649. package/dist/store/reducers/node/selectors.d.ts +0 -47
  650. package/dist/store/reducers/node/selectors.js +0 -43
  651. package/dist/store/reducers/node/selectors.js.map +0 -1
  652. package/src/containers/Node/NodeStructure/NodeStructure.scss +0 -155
  653. package/src/containers/Node/NodeStructure/NodeStructure.tsx +0 -121
  654. package/src/containers/Node/NodeStructure/PDiskTitleBadge.tsx +0 -18
  655. package/src/containers/Node/NodeStructure/Pdisk.tsx +0 -274
  656. package/src/containers/Storage/PDisk/PDiskVDisks.tsx +0 -65
  657. package/src/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.tsx +0 -151
  658. package/src/store/reducers/node/selectors.ts +0 -68
@@ -3,7 +3,6 @@ import React from 'react';
3
3
  import {Pencil, PlugConnection, TrashBin} from '@gravity-ui/icons';
4
4
  import {ClipboardButton, Flex, Link, Text} from '@gravity-ui/uikit';
5
5
 
6
- import {getTenantPath} from '../../routes';
7
6
  import {useEmMetaAvailable} from '../../store/reducers/capabilities/hooks';
8
7
  import {useClusterBaseInfo} from '../../store/reducers/cluster/cluster';
9
8
  import type {PreparedTenant} from '../../store/reducers/tenants/types';
@@ -23,7 +22,7 @@ import {EntityStatus} from '../EntityStatus/EntityStatus';
23
22
  import {InternalLink} from '../InternalLink/InternalLink';
24
23
 
25
24
  import i18n from './i18n';
26
- import {getTenantBackend} from './utils';
25
+ import {getTenantLink} from './utils';
27
26
 
28
27
  import './TenantNameWrapper.scss';
29
28
 
@@ -34,6 +33,7 @@ interface TenantNameWrapperProps {
34
33
  clusterName?: string;
35
34
  additionalTenantsProps?: AdditionalTenantsProps;
36
35
  externalLink?: boolean;
36
+ link?: ReturnType<typeof getTenantLink>;
37
37
  onStatusClick?: (tenant: PreparedTenant, database: string | undefined) => void;
38
38
  }
39
39
 
@@ -42,6 +42,7 @@ export function TenantNameWrapper({
42
42
  clusterName,
43
43
  additionalTenantsProps,
44
44
  externalLink,
45
+ link: tenantLink,
45
46
  onStatusClick,
46
47
  }: TenantNameWrapperProps) {
47
48
  const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
@@ -51,8 +52,17 @@ export function TenantNameWrapper({
51
52
 
52
53
  const {settings} = useClusterBaseInfo();
53
54
 
54
- const backend = getTenantBackend(tenant, additionalTenantsProps);
55
- const isExternalLink = externalLink || Boolean(backend);
55
+ const {
56
+ href: dbUrl,
57
+ database,
58
+ isExternalLink,
59
+ } = tenantLink ??
60
+ getTenantLink({
61
+ tenant,
62
+ additionalTenantsProps,
63
+ externalLink,
64
+ useDatabaseId: uiFactory.useDatabaseId && settings?.use_meta_proxy !== false,
65
+ });
56
66
  const useMetaProxy = uiFactory.useMetaProxy && settings?.use_meta_proxy !== false;
57
67
 
58
68
  const legacyLinks = React.useMemo(
@@ -74,17 +84,6 @@ export function TenantNameWrapper({
74
84
  [allResolvedLinks, showMonitoring],
75
85
  );
76
86
 
77
- const useDatabaseId = uiFactory.useDatabaseId && settings?.use_meta_proxy !== false;
78
- const database = useDatabaseId ? tenant.Id : tenant.Name;
79
-
80
- const dbUrl = getTenantPath(
81
- {
82
- clusterName: tenant.Cluster,
83
- database,
84
- backend,
85
- },
86
- {withBasename: isExternalLink},
87
- );
88
87
  const dbName = tenant.controlPlaneName;
89
88
  const dbPath = tenant.Name ?? i18n('context_unknown');
90
89
  const dbStatus = tenant.Overall;
@@ -1,3 +1,4 @@
1
+ import {getTenantPath} from '../../routes';
1
2
  import type {PreparedTenant} from '../../store/reducers/tenants/types';
2
3
  import type {AdditionalTenantsProps} from '../../types/additionalProps';
3
4
 
@@ -17,3 +18,28 @@ export function getTenantBackend(
17
18
  }
18
19
  return additionalTenantsProps.prepareTenantBackend(nodeId);
19
20
  }
21
+
22
+ export function getTenantLink({
23
+ tenant,
24
+ additionalTenantsProps,
25
+ externalLink,
26
+ useDatabaseId,
27
+ }: {
28
+ tenant: PreparedTenant;
29
+ additionalTenantsProps?: AdditionalTenantsProps;
30
+ externalLink?: boolean;
31
+ useDatabaseId?: boolean;
32
+ }) {
33
+ const backend = getTenantBackend(tenant, additionalTenantsProps);
34
+ const isExternalLink = Boolean(externalLink || backend);
35
+ const database = useDatabaseId ? tenant.Id : tenant.Name;
36
+
37
+ return {
38
+ database,
39
+ isExternalLink,
40
+ href: getTenantPath(
41
+ {clusterName: tenant.Cluster, database, backend},
42
+ {withBasename: isExternalLink},
43
+ ),
44
+ };
45
+ }
@@ -3,11 +3,12 @@ import React from 'react';
3
3
  import type {PopupPlacement, PopupProps} from '@gravity-ui/uikit';
4
4
 
5
5
  import {useVDiskPagePath} from '../../routes';
6
+ import {EFlag, isCapacityAlert} from '../../types/api/enums';
6
7
  import {cn} from '../../utils/cn';
7
8
  import {NOT_AVAILABLE_SEVERITY} from '../../utils/disks/constants';
8
9
  import type {
9
- AllModeIndicatorsState,
10
10
  DiskIndicatorValue,
11
+ VDiskDisplayState,
11
12
  VDiskDisplayStateGetter,
12
13
  } from '../../utils/disks/displayState';
13
14
  import {getDefaultDiskDisplayState} from '../../utils/disks/displayState';
@@ -35,7 +36,6 @@ const EMPTY_ALL_MODE_INDICATORS = {};
35
36
  interface GetVDiskBarContentParams {
36
37
  allocatedPercent?: number;
37
38
  compact?: boolean;
38
- hidden: boolean;
39
39
  noDataPlaceholder?: React.ReactNode;
40
40
  severity: number;
41
41
  showAllocatedPercentLabel?: boolean;
@@ -45,16 +45,11 @@ interface GetVDiskBarContentParams {
45
45
  function getVDiskBarContent({
46
46
  allocatedPercent,
47
47
  compact,
48
- hidden,
49
48
  noDataPlaceholder,
50
49
  severity,
51
50
  showAllocatedPercentLabel,
52
51
  showNoDataPlaceholder,
53
52
  }: GetVDiskBarContentParams) {
54
- if (hidden) {
55
- return null;
56
- }
57
-
58
53
  const hasAllocatedPercent = isNumeric(allocatedPercent) && allocatedPercent >= 0;
59
54
  if (!compact && hasAllocatedPercent && showAllocatedPercentLabel !== false) {
60
55
  return <DiskBarLabel>{`${Math.floor(allocatedPercent)}%`}</DiskBarLabel>;
@@ -74,6 +69,9 @@ function getVDiskBarContent({
74
69
  interface GetVDiskBarIndicatorParams {
75
70
  hidden: boolean;
76
71
  icon?: DiskIndicatorValue;
72
+ indicatorClassName?: string;
73
+ iconGroupSize?: number;
74
+ iconSize?: number;
77
75
  isDonor?: boolean;
78
76
  placement: 'inline' | 'overlap';
79
77
  severity: number;
@@ -83,6 +81,9 @@ interface GetVDiskBarIndicatorParams {
83
81
  function getVDiskBarIndicator({
84
82
  hidden,
85
83
  icon,
84
+ indicatorClassName,
85
+ iconGroupSize,
86
+ iconSize,
86
87
  isDonor,
87
88
  placement,
88
89
  severity,
@@ -94,33 +95,49 @@ function getVDiskBarIndicator({
94
95
  }
95
96
 
96
97
  return {
97
- leading: <DiskIndicator value={resolvedIndicator} placement={placement} />,
98
+ leading: (
99
+ <DiskIndicator
100
+ value={resolvedIndicator}
101
+ placement={placement}
102
+ iconSize={iconSize}
103
+ iconGroupSize={iconGroupSize}
104
+ className={indicatorClassName}
105
+ />
106
+ ),
98
107
  overflowVisible: placement === 'overlap',
99
108
  showIndicator: true,
100
109
  };
101
110
  }
102
111
 
103
- function getAllModeOverlay(
104
- compact: boolean | undefined,
105
- isAllMode: boolean,
106
- indicators: AllModeIndicatorsState | undefined,
107
- ) {
108
- if (compact || !isAllMode) {
109
- return null;
112
+ function getFlagAccessibleName(flag: EFlag | undefined) {
113
+ switch (flag) {
114
+ case EFlag.Green:
115
+ case EFlag.Blue:
116
+ return i18n('value_ok');
117
+ case EFlag.Yellow:
118
+ return i18n('value_notice');
119
+ case EFlag.Orange:
120
+ return i18n('value_warning');
121
+ case EFlag.Red:
122
+ return i18n('value_impaired');
123
+ default:
124
+ return i18n('context_no-data');
110
125
  }
111
-
112
- return <AllModeIndicators indicators={indicators ?? EMPTY_ALL_MODE_INDICATORS} />;
113
126
  }
114
127
 
115
- function getAccessibleName(
116
- data: PreparedVDisk,
117
- hasIssues: boolean | undefined,
118
- isAllMode: boolean,
119
- ) {
120
- if (!isAllMode) {
121
- return undefined;
128
+ function getReplicationAccessibleName(replicated: boolean | undefined) {
129
+ if (replicated === undefined) {
130
+ return i18n('context_no-data');
122
131
  }
123
132
 
133
+ return i18n(
134
+ replicated
135
+ ? 'context_all-mode-replication-complete'
136
+ : 'context_all-mode-replication-in-progress',
137
+ );
138
+ }
139
+
140
+ function getAllModeAccessibleName(data: PreparedVDisk, hasIssues: boolean | undefined) {
124
141
  const noData = i18n('context_no-data');
125
142
  const health =
126
143
  hasIssues === undefined
@@ -132,20 +149,11 @@ function getAccessibleName(
132
149
  Number.isFinite(data.AllocatedPercent) && Number(data.AllocatedPercent) >= 0
133
150
  ? `${data.AllocatedPercent}%`
134
151
  : noData;
135
- const replication =
136
- data.Replicated === undefined
137
- ? noData
138
- : i18n(
139
- data.Replicated
140
- ? 'context_all-mode-replication-complete'
141
- : 'context_all-mode-replication-in-progress',
142
- );
143
-
144
152
  return i18n('context_all-mode-accessible-name', {
145
153
  vdiskId: data.StringifiedId || noData,
146
154
  health,
147
- state: data.VDiskState || noData,
148
- replication,
155
+ state: data.VDiskState || data.Status || noData,
156
+ replication: getReplicationAccessibleName(data.Replicated),
149
157
  capacityAlert: data.CapacityAlert || noData,
150
158
  frontQueues: data.FrontQueues || noData,
151
159
  freshCompaction: data.SatisfactionRank?.FreshRank?.Flag || noData,
@@ -154,9 +162,58 @@ function getAccessibleName(
154
162
  });
155
163
  }
156
164
 
165
+ function getAccessibleName(data: PreparedVDisk, {mode, allMode, isNoData}: VDiskDisplayState) {
166
+ if (!mode) {
167
+ return undefined;
168
+ }
169
+ if (mode === 'all') {
170
+ return getAllModeAccessibleName(data, allMode?.hasIssues);
171
+ }
172
+
173
+ const noData = i18n('context_no-data');
174
+ let diskName = i18n(data.DonorMode ? 'context_donor-vdisk' : 'context_vdisk', {
175
+ vdiskId: data.StringifiedId || noData,
176
+ nodeId: data.NodeId ?? noData,
177
+ });
178
+ if (isNoData) {
179
+ diskName = i18n('context_vdisk-no-whiteboard', {disk: diskName, noData});
180
+ }
181
+
182
+ const {CapacityAlert, FrontQueues, SatisfactionRank, Replicated} = isNoData ? {} : data;
183
+ const {FreshRank, LevelRank} = SatisfactionRank ?? {};
184
+
185
+ switch (mode) {
186
+ case 'state':
187
+ return i18n('context_state-accessible-name', {
188
+ disk: diskName,
189
+ state: data.VDiskState || data.Status || noData,
190
+ replication: getReplicationAccessibleName(Replicated),
191
+ });
192
+ case 'space':
193
+ return i18n('context_space-accessible-name', {
194
+ disk: diskName,
195
+ capacityAlert: isCapacityAlert(CapacityAlert) ? CapacityAlert : noData,
196
+ });
197
+ case 'frontQueues':
198
+ return i18n('context_front-queues-accessible-name', {
199
+ disk: diskName,
200
+ frontQueues: getFlagAccessibleName(FrontQueues),
201
+ });
202
+ case 'compaction':
203
+ return i18n('context_compaction-accessible-name', {
204
+ disk: diskName,
205
+ freshCompaction: getFlagAccessibleName(FreshRank?.Flag),
206
+ levelCompaction: getFlagAccessibleName(LevelRank?.Flag),
207
+ });
208
+ default:
209
+ return undefined;
210
+ }
211
+ }
212
+
157
213
  export interface VDiskProps {
158
214
  data?: PreparedVDisk;
159
215
  compact?: boolean;
216
+ allModeSize?: 's' | 'm';
160
217
  inactive?: boolean;
161
218
  showPopup?: boolean;
162
219
  onShowPopup?: VoidFunction;
@@ -165,6 +222,9 @@ export interface VDiskProps {
165
222
  delayOpen?: number;
166
223
  delayClose?: number;
167
224
  withIcon?: boolean;
225
+ iconSize?: number;
226
+ iconGroupSize?: number;
227
+ indicatorClassName?: string;
168
228
  highlighted?: boolean;
169
229
  placement?: PopupPlacement;
170
230
  popupOffset?: PopupProps['offset'];
@@ -175,6 +235,7 @@ export interface VDiskProps {
175
235
  export const VDisk = ({
176
236
  data = {},
177
237
  compact,
238
+ allModeSize,
178
239
  inactive,
179
240
  showPopup,
180
241
  onShowPopup,
@@ -183,6 +244,9 @@ export const VDisk = ({
183
244
  delayClose,
184
245
  delayOpen,
185
246
  withIcon,
247
+ iconSize,
248
+ iconGroupSize,
249
+ indicatorClassName,
186
250
  highlighted,
187
251
  placement = ['top', 'bottom', 'left', 'right'],
188
252
  popupOffset = DEFAULT_POPUP_OFFSET,
@@ -203,20 +267,24 @@ export const VDisk = ({
203
267
  icon,
204
268
  mode,
205
269
  isLegendInactive,
270
+ borderless,
206
271
  showNoDataPlaceholder,
207
272
  allocatedPercent,
208
273
  showAllocatedPercentLabel,
209
274
  striped,
210
275
  iconPlacement,
211
276
  allMode,
277
+ isNoData,
212
278
  } = displayState;
213
279
 
214
280
  const isAllMode = mode === 'all';
215
- const accessibleName = getAccessibleName(data, allMode?.hasIssues, isAllMode);
216
- const hideBarContent = Boolean(isLegendInactive && !isDonor);
281
+ const accessibleName = getAccessibleName(data, displayState);
217
282
  const {leading, overflowVisible, showIndicator} = getVDiskBarIndicator({
218
- hidden: hideBarContent,
283
+ hidden: Boolean(isLegendInactive && !isDonor),
219
284
  icon,
285
+ indicatorClassName,
286
+ iconGroupSize,
287
+ iconSize,
220
288
  isDonor,
221
289
  placement: iconPlacement,
222
290
  severity,
@@ -226,18 +294,24 @@ export const VDisk = ({
226
294
  const barContent = getVDiskBarContent({
227
295
  allocatedPercent,
228
296
  compact,
229
- hidden: hideBarContent,
230
297
  noDataPlaceholder,
231
298
  severity,
232
299
  showAllocatedPercentLabel,
233
300
  showNoDataPlaceholder,
234
301
  });
235
- const overlay = getAllModeOverlay(compact, isAllMode, allMode?.indicators);
302
+ const overlay =
303
+ !compact && isAllMode && !isNoData ? (
304
+ <AllModeIndicators
305
+ indicators={allMode?.indicators ?? EMPTY_ALL_MODE_INDICATORS}
306
+ size={allModeSize}
307
+ />
308
+ ) : null;
236
309
  const tone = getDiskBarTone({
237
310
  severity,
238
311
  isDonor,
239
312
  showIndicator,
240
313
  indicator: icon,
314
+ isNoData,
241
315
  });
242
316
 
243
317
  return (
@@ -275,7 +349,7 @@ export const VDisk = ({
275
349
  overlay={overlay}
276
350
  highlighted={highlighted}
277
351
  strongFill={allMode?.hasIssues}
278
- borderless={isLegendInactive}
352
+ borderless={borderless}
279
353
  overflowVisible={overflowVisible}
280
354
  />
281
355
  </InternalLink>
@@ -15,6 +15,8 @@ interface VDiskWithDonorsStackProps extends Omit<VDiskProps, 'withOpaqueBackgrou
15
15
  highlightedVDisk?: string;
16
16
  setHighlightedVDisk?: (id?: string) => void;
17
17
  progressBarClassName?: string;
18
+ renderContent?: boolean;
19
+ placeholderProps?: React.HTMLAttributes<HTMLDivElement>;
18
20
  }
19
21
 
20
22
  const diskInStackPlacement: PopupPlacement = ['left', 'right'];
@@ -33,6 +35,8 @@ export function VDiskWithDonorsStack({
33
35
  onShowPopup: _onShowPopup,
34
36
  onHidePopup: _onHidePopup,
35
37
  highlighted: _highlighted,
38
+ renderContent = true,
39
+ placeholderProps,
36
40
  ...restProps
37
41
  }: VDiskWithDonorsStackProps) {
38
42
  const donors = data?.Donors ?? EMPTY_DONORS;
@@ -44,7 +48,7 @@ export function VDiskWithDonorsStack({
44
48
  const [internalHighlightedVDisk, setInternalHighlightedVDisk] = React.useState<string>();
45
49
 
46
50
  const donorIds = React.useMemo(
47
- () => new Set(donors?.map((donor) => donor.StringifiedId) ?? []),
51
+ () => new Set(donors.map((donor) => donor.StringifiedId)),
48
52
  [donors],
49
53
  );
50
54
 
@@ -65,6 +69,13 @@ export function VDiskWithDonorsStack({
65
69
  setHighlightedVDisk?.(undefined);
66
70
  }, [setHighlightedVDisk]);
67
71
 
72
+ // Keep the stack's state and popup anchors until a main/donor interaction finishes.
73
+ if (!renderContent && !isHighlighted && !highlightedVDiskInStack) {
74
+ return (
75
+ <div className={className} data-disk-id={stackId} tabIndex={-1} {...placeholderProps} />
76
+ );
77
+ }
78
+
68
79
  // Spread restProps first, then explicitly override critical fields to prevent
69
80
  // external code from breaking the stack's highlight/popup coordination.
70
81
  const mainVDiskProps: Partial<VDiskProps> = {
@@ -107,7 +118,7 @@ export function VDiskWithDonorsStack({
107
118
  highlighted={donor.StringifiedId === internalHighlightedVDisk}
108
119
  onShowPopup={() => {
109
120
  if (donor.StringifiedId) {
110
- setInternalHighlightedVDisk?.(donor.StringifiedId);
121
+ setInternalHighlightedVDisk(donor.StringifiedId);
111
122
  }
112
123
  }}
113
124
  onHidePopup={() => {
@@ -121,5 +132,9 @@ export function VDiskWithDonorsStack({
121
132
  <VDisk data={data} withIcon={withIcon} {...mainVDiskProps} />
122
133
  );
123
134
 
124
- return <div className={className}>{content}</div>;
135
+ return (
136
+ <div className={className} data-disk-id={stackId} tabIndex={-1}>
137
+ {content}
138
+ </div>
139
+ );
125
140
  }
@@ -1,5 +1,16 @@
1
1
  {
2
2
  "context_no-data": "N/D",
3
+ "context_vdisk": "VDisk {{vdiskId}} on node {{nodeId}}",
4
+ "context_donor-vdisk": "Donor VDisk {{vdiskId}} on node {{nodeId}}",
5
+ "context_vdisk-no-whiteboard": "{{disk}}. Whiteboard: {{noData}}",
6
+ "context_state-accessible-name": "{{disk}}. State: {{state}}. Replication: {{replication}}.",
7
+ "context_space-accessible-name": "{{disk}}. Capacity alert: {{capacityAlert}}.",
8
+ "context_front-queues-accessible-name": "{{disk}}. Front queues: {{frontQueues}}.",
9
+ "context_compaction-accessible-name": "{{disk}}. Fresh compaction: {{freshCompaction}}. Level compaction: {{levelCompaction}}.",
10
+ "value_ok": "OK",
11
+ "value_notice": "Notice",
12
+ "value_warning": "Warning",
13
+ "value_impaired": "Impaired",
3
14
  "context_all-mode-health-healthy": "healthy",
4
15
  "context_all-mode-health-issues": "issues detected",
5
16
  "context_all-mode-replication-complete": "complete",
@@ -2,7 +2,7 @@ import DataTable from '@gravity-ui/react-data-table';
2
2
  import {DefinitionList, Tooltip} from '@gravity-ui/uikit';
3
3
 
4
4
  import type {PreparedStorageNode} from '../../store/reducers/storage/types';
5
- import type {TMemoryStats, TPoolStats} from '../../types/api/nodes';
5
+ import type {TEndpoint, TMemoryStats, TPoolStats} from '../../types/api/nodes';
6
6
  import type {TTabletStateInfo} from '../../types/api/tablet';
7
7
  import {valueIsDefined} from '../../utils';
8
8
  import {cn} from '../../utils/cn';
@@ -59,6 +59,18 @@ export function getHostColumn<T extends PreparedStorageNode>({
59
59
  };
60
60
  }
61
61
 
62
+ export function getICPortColumn<T extends {Endpoints?: TEndpoint[]}>(): Column<T> {
63
+ return {
64
+ name: NODES_COLUMNS_IDS.ICPort,
65
+ header: NODES_COLUMNS_TITLES.ICPort,
66
+ render: ({row}) =>
67
+ row.Endpoints?.find(({Name}) => Name === 'ic')?.Address?.replace(/^:/, '') ||
68
+ EMPTY_DATA_PLACEHOLDER,
69
+ width: 100,
70
+ align: DataTable.RIGHT,
71
+ };
72
+ }
73
+
62
74
  // Different column for different set of required fields
63
75
  // ConnectStatus is required here, it makes handler to return network stats
64
76
  // On versions before 25-1-2 ConnectStatus also makes handler to return peers - it can significantly increase response size
@@ -12,6 +12,7 @@ export const NODES_COLUMNS_WIDTH_LS_KEY = 'nodesTableColumnsWidth';
12
12
  export const NODES_COLUMNS_IDS = {
13
13
  NodeId: 'NodeId',
14
14
  Host: 'Host',
15
+ ICPort: 'ICPort',
15
16
  NetworkHost: 'NetworkHost',
16
17
  Database: 'Database',
17
18
  NodeName: 'NodeName',
@@ -67,6 +68,9 @@ export const NODES_COLUMNS_TITLES = {
67
68
  get Host() {
68
69
  return i18n('host');
69
70
  },
71
+ get ICPort() {
72
+ return i18n('field_ic-port');
73
+ },
70
74
  get NetworkHost() {
71
75
  return i18n('host');
72
76
  },
@@ -219,6 +223,7 @@ export function getNodesGroupByFieldTitle(groupByField: NodesGroupByField) {
219
223
  export const NODES_COLUMNS_TO_DATA_FIELDS: Record<NodesColumnId, NodesRequiredField[]> = {
220
224
  NodeId: ['NodeId'],
221
225
  Host: ['Host', 'Rack', 'Database', 'SystemState'],
226
+ ICPort: ['SystemState'],
222
227
  NetworkHost: ['Host', 'Rack', 'Database', 'SystemState', 'ConnectStatus'],
223
228
  Database: ['Database'],
224
229
  NodeName: ['NodeName'],
@@ -253,6 +258,7 @@ export const NODES_COLUMNS_TO_DATA_FIELDS: Record<NodesColumnId, NodesRequiredFi
253
258
  const NODES_COLUMNS_TO_SORT_FIELDS: Record<NodesColumnId, NodesSortValue | undefined> = {
254
259
  NodeId: 'NodeId',
255
260
  Host: 'Host',
261
+ ICPort: undefined,
256
262
  NetworkHost: 'Host',
257
263
  Database: 'Database',
258
264
  NodeName: 'NodeName',
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "node-id": "Node ID",
3
3
  "host": "Host",
4
+ "field_ic-port": "IC port",
4
5
  "database": "Database",
5
6
  "node-name": "Node Name",
6
7
  "dc": "DC",
@@ -17,7 +18,7 @@
17
18
  "load": "Load",
18
19
  "sessions": "Sessions",
19
20
  "missing": "Missing",
20
- "pdisks": "PDisks",
21
+ "pdisks": "PDisks & VDisks",
21
22
  "field_memory-used": "Memory used",
22
23
  "field_memory-limit": "Memory limit",
23
24
  "field_pile-name": "Pile Name",
@@ -4,9 +4,9 @@ import type {Store} from '@reduxjs/toolkit';
4
4
  import type {History} from 'history';
5
5
  import {Helmet} from 'react-helmet-async';
6
6
 
7
- import {componentsRegistry} from '../../components/ComponentsProvider/componentsRegistry';
8
7
  import {FullscreenProvider} from '../../components/Fullscreen/FullscreenContext';
9
- import {useTypedSelector} from '../../utils/hooks';
8
+ import {uiFactory} from '../../uiFactory/uiFactory';
9
+ import {useTypedSelector} from '../../utils/hooks/useTypedSelector';
10
10
  import type {YDBEmbeddedUISettings} from '../UserSettings/settings';
11
11
 
12
12
  import {useAppTitle} from './AppTitleContext';
@@ -27,7 +27,7 @@ export interface AppProps {
27
27
  }
28
28
 
29
29
  function App({store, history, children, userSettings, appTitle = defaultAppTitle}: AppProps) {
30
- const ChatPanel = componentsRegistry.get('ChatPanel');
30
+ const ChatPanel = uiFactory.renderChatPanel;
31
31
 
32
32
  return (
33
33
  <Providers store={store} history={history} appTitle={appTitle}>
@@ -53,6 +53,14 @@
53
53
 
54
54
  &__storage-section {
55
55
  --g-card-border-radius: var(--g-border-radius-s);
56
+
57
+ width: 100%;
58
+
59
+ @container overview-wrapper (min-width: 804px) {
60
+ width: var(--cluster-overview-section);
61
+ min-width: var(--cluster-overview-section);
62
+ }
63
+
56
64
  @container overview-wrapper (min-width: 1104px) {
57
65
  grid-area: storage;
58
66
  }
@@ -15,6 +15,7 @@ import {BridgeInfoTable} from '../ClusterOverview/components/BridgeInfoTable';
15
15
  import i18n from '../i18n';
16
16
 
17
17
  import {StorageGroupStats} from './components/DiskGroupsStatsBars/DiskGroupsStats';
18
+ import {prepareClusterGroupsStats} from './components/DiskGroupsStatsBars/utils';
18
19
  import {b} from './shared';
19
20
 
20
21
  import './ClusterInfo.scss';
@@ -35,12 +36,16 @@ export const ClusterInfo = ({
35
36
  loading,
36
37
  error,
37
38
  additionalClusterProps = {},
38
- groupStats = {},
39
+ groupStats,
39
40
  bridgePiles,
40
41
  }: ClusterInfoProps) => {
41
42
  const {info = [], links = []} = additionalClusterProps;
42
43
 
43
44
  const clusterLinks = useClusterLinks(links);
45
+ const preparedGroupStats = React.useMemo(
46
+ () => prepareClusterGroupsStats(groupStats ?? {}),
47
+ [groupStats],
48
+ );
44
49
 
45
50
  const noDetails = (error && !cluster) || (!info.length && !clusterLinks.length);
46
51
 
@@ -106,17 +111,12 @@ export const ClusterInfo = ({
106
111
  };
107
112
 
108
113
  const renderStorageGroupsSection = () => {
109
- if (loading || Object.keys(groupStats).length === 0) {
114
+ if (loading || preparedGroupStats.disks.length === 0) {
110
115
  return null;
111
116
  }
112
117
  return (
113
- <InfoSection className={b('storage-section')}>
114
- <Text as="div" variant="subheader-2" className={b('section-title')}>
115
- {i18n('title_storage-groups')}
116
- </Text>
117
- <Card view="filled" className={b('section', {compact: true})}>
118
- <StorageGroupStats groupStats={groupStats} />
119
- </Card>
118
+ <InfoSection className={b('storage-section')} dataQa="cluster-storage-groups">
119
+ <StorageGroupStats stats={preparedGroupStats} />
120
120
  </InfoSection>
121
121
  );
122
122
  };
@@ -157,11 +157,12 @@ export const ClusterInfo = ({
157
157
  interface InfoSectionProps {
158
158
  children: React.ReactNode;
159
159
  className?: string;
160
+ dataQa?: string;
160
161
  }
161
162
 
162
- function InfoSection({children, className}: InfoSectionProps) {
163
+ function InfoSection({children, className, dataQa}: InfoSectionProps) {
163
164
  return (
164
- <Flex direction="column" gap={2} className={className}>
165
+ <Flex direction="column" gap={2} className={className} qa={dataQa}>
165
166
  {children}
166
167
  </Flex>
167
168
  );
@@ -0,0 +1,18 @@
1
+ .ydb-disk-groups-stats {
2
+ &__card {
3
+ padding: var(--g-spacing-3) var(--g-spacing-4);
4
+ }
5
+
6
+ &__available-help {
7
+ color: inherit;
8
+ }
9
+
10
+ &__legend-dot {
11
+ flex: 0 0 8px;
12
+
13
+ width: 8px;
14
+ height: 8px;
15
+
16
+ border-radius: 50%;
17
+ }
18
+ }