ydb-embedded-ui 22.0.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 (473) hide show
  1. package/dist/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.d.ts +2 -1
  2. package/dist/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.js +5 -2
  3. package/dist/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.js.map +1 -1
  4. package/dist/components/DiskStateProgressBar/AllModeIndicators.d.ts +2 -1
  5. package/dist/components/DiskStateProgressBar/AllModeIndicators.js +4 -2
  6. package/dist/components/DiskStateProgressBar/AllModeIndicators.js.map +1 -1
  7. package/dist/components/DiskStateProgressBar/DiskIndicator.d.ts +7 -2
  8. package/dist/components/DiskStateProgressBar/DiskIndicator.js +6 -6
  9. package/dist/components/DiskStateProgressBar/DiskIndicator.js.map +1 -1
  10. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js +1 -1
  11. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js.map +1 -1
  12. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.scss +53 -45
  13. package/dist/components/DiskStateProgressBar/PDiskAllModeIndicators.js +9 -1
  14. package/dist/components/DiskStateProgressBar/PDiskAllModeIndicators.js.map +1 -1
  15. package/dist/components/EvictVDiskButton/EvictVDiskButton.js +7 -3
  16. package/dist/components/EvictVDiskButton/EvictVDiskButton.js.map +1 -1
  17. package/dist/components/FullNodeViewer/FullNodeViewer.js +40 -17
  18. package/dist/components/FullNodeViewer/FullNodeViewer.js.map +1 -1
  19. package/dist/components/FullNodeViewer/FullNodeViewer.scss +3 -3
  20. package/dist/components/FullNodeViewer/i18n/en.json +2 -1
  21. package/dist/components/FullNodeViewer/i18n/index.d.ts +1 -1
  22. package/dist/components/HoverPopup/HoverPopup.js +9 -2
  23. package/dist/components/HoverPopup/HoverPopup.js.map +1 -1
  24. package/dist/components/InfoViewer/InfoViewer.js +1 -1
  25. package/dist/components/InfoViewer/InfoViewer.js.map +1 -1
  26. package/dist/components/InfoViewer/formatters/pqGroup.js +6 -1
  27. package/dist/components/InfoViewer/formatters/pqGroup.js.map +1 -1
  28. package/dist/components/InfoViewer/schemaInfo/i18n/en.json +1 -0
  29. package/dist/components/InfoViewer/schemaInfo/i18n/index.d.ts +1 -1
  30. package/dist/components/InfoViewer/schemaInfo/utils.js +6 -1
  31. package/dist/components/InfoViewer/schemaInfo/utils.js.map +1 -1
  32. package/dist/components/NodeHostWrapper/NodeHostWrapper.d.ts +4 -1
  33. package/dist/components/NodeHostWrapper/NodeHostWrapper.js +13 -9
  34. package/dist/components/NodeHostWrapper/NodeHostWrapper.js.map +1 -1
  35. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  36. package/dist/components/PaginatedTable/KeyboardNavigation.d.ts +9 -0
  37. package/dist/components/PaginatedTable/KeyboardNavigation.js +14 -0
  38. package/dist/components/PaginatedTable/KeyboardNavigation.js.map +1 -0
  39. package/dist/components/PaginatedTable/PaginatedTable.d.ts +4 -1
  40. package/dist/components/PaginatedTable/PaginatedTable.js +77 -4
  41. package/dist/components/PaginatedTable/PaginatedTable.js.map +1 -1
  42. package/dist/components/PaginatedTable/PaginatedTable.scss +10 -0
  43. package/dist/components/PaginatedTable/PaginatedTableWithLayout.d.ts +2 -1
  44. package/dist/components/PaginatedTable/PaginatedTableWithLayout.js +2 -2
  45. package/dist/components/PaginatedTable/PaginatedTableWithLayout.js.map +1 -1
  46. package/dist/components/PaginatedTable/ResizeablePaginatedTable.js +2 -1
  47. package/dist/components/PaginatedTable/ResizeablePaginatedTable.js.map +1 -1
  48. package/dist/components/PaginatedTable/TableChunk.js +6 -10
  49. package/dist/components/PaginatedTable/TableChunk.js.map +1 -1
  50. package/dist/components/PaginatedTable/TableChunksRenderer.d.ts +2 -1
  51. package/dist/components/PaginatedTable/TableChunksRenderer.js +6 -1
  52. package/dist/components/PaginatedTable/TableChunksRenderer.js.map +1 -1
  53. package/dist/components/PaginatedTable/TableRow.d.ts +3 -1
  54. package/dist/components/PaginatedTable/TableRow.js +24 -8
  55. package/dist/components/PaginatedTable/TableRow.js.map +1 -1
  56. package/dist/components/PaginatedTable/getTableChunkQueryParams.d.ts +23 -0
  57. package/dist/components/PaginatedTable/getTableChunkQueryParams.js +12 -0
  58. package/dist/components/PaginatedTable/getTableChunkQueryParams.js.map +1 -0
  59. package/dist/components/PaginatedTable/rowLookup.d.ts +8 -0
  60. package/dist/components/PaginatedTable/rowLookup.js +35 -0
  61. package/dist/components/PaginatedTable/rowLookup.js.map +1 -0
  62. package/dist/components/PaginatedTable/useKeyboardNavigation.d.ts +27 -0
  63. package/dist/components/PaginatedTable/useKeyboardNavigation.js +70 -0
  64. package/dist/components/PaginatedTable/useKeyboardNavigation.js.map +1 -0
  65. package/dist/components/ResizeableDataTable/DataTableKeyboardNavigation.d.ts +24 -0
  66. package/dist/components/ResizeableDataTable/DataTableKeyboardNavigation.js +144 -0
  67. package/dist/components/ResizeableDataTable/DataTableKeyboardNavigation.js.map +1 -0
  68. package/dist/components/ResizeableDataTable/ResizeableDataTable.d.ts +4 -1
  69. package/dist/components/ResizeableDataTable/ResizeableDataTable.js +28 -4
  70. package/dist/components/ResizeableDataTable/ResizeableDataTable.js.map +1 -1
  71. package/dist/components/ResizeableDataTable/ResizeableDataTable.scss +10 -0
  72. package/dist/components/ResizeableDataTable/getDataTableOrder.d.ts +2 -0
  73. package/dist/components/ResizeableDataTable/getDataTableOrder.js +12 -0
  74. package/dist/components/ResizeableDataTable/getDataTableOrder.js.map +1 -0
  75. package/dist/components/Search/Search.d.ts +2 -1
  76. package/dist/components/Search/Search.js +6 -2
  77. package/dist/components/Search/Search.js.map +1 -1
  78. package/dist/components/ShardsTable/columns.js +6 -3
  79. package/dist/components/ShardsTable/columns.js.map +1 -1
  80. package/dist/components/ShardsTable/i18n/en.json +1 -0
  81. package/dist/components/ShardsTable/i18n/index.d.ts +1 -1
  82. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.d.ts +54 -0
  83. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.js +389 -0
  84. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.js.map +1 -0
  85. package/dist/components/TableKeyboardNavigation/TableKeyboardNavigation.scss +16 -0
  86. package/dist/components/TableKeyboardNavigation/i18n/en.json +4 -0
  87. package/dist/components/TableKeyboardNavigation/i18n/index.d.ts +2 -0
  88. package/dist/components/TableKeyboardNavigation/i18n/index.js +4 -0
  89. package/dist/components/TableKeyboardNavigation/i18n/index.js.map +1 -0
  90. package/dist/components/TableKeyboardNavigation/utils.d.ts +3 -0
  91. package/dist/components/TableKeyboardNavigation/utils.js +24 -0
  92. package/dist/components/TableKeyboardNavigation/utils.js.map +1 -0
  93. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.d.ts +4 -1
  94. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js +4 -2
  95. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js.map +1 -1
  96. package/dist/components/TenantNameWrapper/TenantNameWrapper.d.ts +3 -1
  97. package/dist/components/TenantNameWrapper/TenantNameWrapper.js +8 -12
  98. package/dist/components/TenantNameWrapper/TenantNameWrapper.js.map +1 -1
  99. package/dist/components/TenantNameWrapper/utils.d.ts +10 -0
  100. package/dist/components/TenantNameWrapper/utils.js +11 -0
  101. package/dist/components/TenantNameWrapper/utils.js.map +1 -1
  102. package/dist/components/UptimeViewer/UptimeViewer.d.ts +2 -2
  103. package/dist/components/VDisk/VDisk.d.ts +5 -1
  104. package/dist/components/VDisk/VDisk.js +84 -29
  105. package/dist/components/VDisk/VDisk.js.map +1 -1
  106. package/dist/components/VDisk/VDiskWithDonorsStack.d.ts +4 -1
  107. package/dist/components/VDisk/VDiskWithDonorsStack.js +8 -4
  108. package/dist/components/VDisk/VDiskWithDonorsStack.js.map +1 -1
  109. package/dist/components/VDisk/i18n/en.json +11 -0
  110. package/dist/components/VDisk/i18n/index.d.ts +1 -1
  111. package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
  112. package/dist/components/nodesColumns/columns.d.ts +4 -1
  113. package/dist/components/nodesColumns/columns.js +13 -0
  114. package/dist/components/nodesColumns/columns.js.map +1 -1
  115. package/dist/components/nodesColumns/constants.d.ts +2 -0
  116. package/dist/components/nodesColumns/constants.js +6 -0
  117. package/dist/components/nodesColumns/constants.js.map +1 -1
  118. package/dist/components/nodesColumns/i18n/en.json +2 -1
  119. package/dist/components/nodesColumns/i18n/index.d.ts +1 -1
  120. package/dist/containers/Clusters/Clusters.js +11 -7
  121. package/dist/containers/Clusters/Clusters.js.map +1 -1
  122. package/dist/containers/Node/NodeNetwork/NodeNetworkControls/NodeNetworkControls.js +1 -1
  123. package/dist/containers/Node/NodeNetwork/NodeNetworkControls/NodeNetworkControls.js.map +1 -1
  124. package/dist/containers/Node/NodeNetwork/NodeNetworkTable.js +11 -1
  125. package/dist/containers/Node/NodeNetwork/NodeNetworkTable.js.map +1 -1
  126. package/dist/containers/Node/Threads/ThreadStatesBar/ThreadStatesBar.d.ts +1 -1
  127. package/dist/containers/Nodes/NodesControls/NodesControls.js +1 -1
  128. package/dist/containers/Nodes/NodesControls/NodesControls.js.map +1 -1
  129. package/dist/containers/Nodes/NodesTable.js +12 -1
  130. package/dist/containers/Nodes/NodesTable.js.map +1 -1
  131. package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js +1 -1
  132. package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js.map +1 -1
  133. package/dist/containers/Nodes/columns/columns.js +2 -1
  134. package/dist/containers/Nodes/columns/columns.js.map +1 -1
  135. package/dist/containers/Storage/Disks/Disks.d.ts +2 -1
  136. package/dist/containers/Storage/Disks/Disks.js +34 -23
  137. package/dist/containers/Storage/Disks/Disks.js.map +1 -1
  138. package/dist/containers/Storage/Disks/Disks.scss +5 -0
  139. package/dist/containers/Storage/PDisk/PDisk.d.ts +6 -9
  140. package/dist/containers/Storage/PDisk/PDisk.js +92 -37
  141. package/dist/containers/Storage/PDisk/PDisk.js.map +1 -1
  142. package/dist/containers/Storage/PDisk/PDisk.scss +79 -1
  143. package/dist/containers/Storage/PDisk/PDiskWithVDisks.d.ts +17 -0
  144. package/dist/containers/Storage/PDisk/PDiskWithVDisks.js +48 -0
  145. package/dist/containers/Storage/PDisk/PDiskWithVDisks.js.map +1 -0
  146. package/dist/containers/Storage/PDisk/i18n/en.json +8 -0
  147. package/dist/containers/Storage/PDisk/i18n/index.d.ts +1 -1
  148. package/dist/containers/Storage/PDisk/index.d.ts +1 -0
  149. package/dist/containers/Storage/PDisk/index.js +1 -0
  150. package/dist/containers/Storage/PDisk/index.js.map +1 -1
  151. package/dist/containers/Storage/PDisks/PDisks.d.ts +4 -1
  152. package/dist/containers/Storage/PDisks/PDisks.js +52 -6
  153. package/dist/containers/Storage/PDisks/PDisks.js.map +1 -1
  154. package/dist/containers/Storage/PaginatedStorage.js +3 -1
  155. package/dist/containers/Storage/PaginatedStorage.js.map +1 -1
  156. package/dist/containers/Storage/PaginatedStorageGroups/GroupedStorageGroupsComponent.js +1 -1
  157. package/dist/containers/Storage/PaginatedStorageGroups/GroupedStorageGroupsComponent.js.map +1 -1
  158. package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js +2 -2
  159. package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js.map +1 -1
  160. package/dist/containers/Storage/PaginatedStorageGroupsTable/PaginatedStorageGroupsTable.js +10 -1
  161. package/dist/containers/Storage/PaginatedStorageGroupsTable/PaginatedStorageGroupsTable.js.map +1 -1
  162. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
  163. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.d.ts +1 -0
  164. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.js +8 -5
  165. package/dist/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.js.map +1 -1
  166. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.js +6 -3
  167. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.js.map +1 -1
  168. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesControls.js +17 -5
  169. package/dist/containers/Storage/PaginatedStorageNodes/StorageNodesControls.js.map +1 -1
  170. package/dist/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.d.ts +16 -0
  171. package/dist/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.js +68 -0
  172. package/dist/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.js.map +1 -0
  173. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.d.ts +2 -1
  174. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.js +14 -2
  175. package/dist/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.js.map +1 -1
  176. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/columns.js +2 -2
  177. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/columns.js.map +1 -1
  178. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js +7 -2
  179. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js.map +1 -1
  180. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/types.d.ts +2 -0
  181. package/dist/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.d.ts +5 -0
  182. package/dist/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.js +31 -0
  183. package/dist/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.js.map +1 -0
  184. package/dist/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.d.ts +5 -0
  185. package/dist/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.js +31 -0
  186. package/dist/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.js.map +1 -0
  187. package/dist/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.d.ts +21 -0
  188. package/dist/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.js +13 -0
  189. package/dist/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.js.map +1 -0
  190. package/dist/containers/Storage/StorageExpertModePanel/components/FrontQueuesLegend.js +1 -0
  191. package/dist/containers/Storage/StorageExpertModePanel/components/FrontQueuesLegend.js.map +1 -1
  192. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDecommitLegend.js +1 -0
  193. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDecommitLegend.js.map +1 -1
  194. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDriveLegend.js +3 -2
  195. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskDriveLegend.js.map +1 -1
  196. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskMaintenanceLegend.js +1 -0
  197. package/dist/containers/Storage/StorageExpertModePanel/components/PDiskMaintenanceLegend.js.map +1 -1
  198. package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js +4 -4
  199. package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js.map +1 -1
  200. package/dist/containers/Storage/StorageExpertModePanel/components/StatusPairLegend.js +3 -3
  201. package/dist/containers/Storage/StorageExpertModePanel/components/StatusPairLegend.js.map +1 -1
  202. package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.d.ts +1 -1
  203. package/dist/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.d.ts +4 -0
  204. package/dist/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.js +49 -0
  205. package/dist/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.js.map +1 -0
  206. package/dist/containers/Storage/StorageExpertModePanel/constants.d.ts +20 -0
  207. package/dist/containers/Storage/StorageExpertModePanel/constants.js +22 -0
  208. package/dist/containers/Storage/StorageExpertModePanel/constants.js.map +1 -1
  209. package/dist/containers/Storage/StorageExpertModePanel/i18n/en.json +2 -2
  210. package/dist/containers/Storage/StorageExpertModePanel/i18n/index.d.ts +1 -1
  211. package/dist/containers/Storage/TableGroup/TableGroup.js +2 -1
  212. package/dist/containers/Storage/TableGroup/TableGroup.js.map +1 -1
  213. package/dist/containers/Storage/VDisks/VDisks.d.ts +2 -1
  214. package/dist/containers/Storage/VDisks/VDisks.js +11 -4
  215. package/dist/containers/Storage/VDisks/VDisks.js.map +1 -1
  216. package/dist/containers/Storage/VDisks/VDisks.scss +3 -0
  217. package/dist/containers/Storage/useStoragePDiskDisplayStateGetter.d.ts +1 -0
  218. package/dist/containers/Storage/useStoragePDiskDisplayStateGetter.js +73 -102
  219. package/dist/containers/Storage/useStoragePDiskDisplayStateGetter.js.map +1 -1
  220. package/dist/containers/Storage/useStorageQueryParams.d.ts +9 -1
  221. package/dist/containers/Storage/useStorageQueryParams.js +50 -2
  222. package/dist/containers/Storage/useStorageQueryParams.js.map +1 -1
  223. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.d.ts +1 -0
  224. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js +50 -13
  225. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js.map +1 -1
  226. package/dist/containers/Storage/utils/useStorageColumnsSettings.d.ts +4 -1
  227. package/dist/containers/Storage/utils/useStorageColumnsSettings.js +49 -39
  228. package/dist/containers/Storage/utils/useStorageColumnsSettings.js.map +1 -1
  229. package/dist/containers/Storage/utils/useVirtualizedDiskList.d.ts +10 -0
  230. package/dist/containers/Storage/utils/useVirtualizedDiskList.js +131 -0
  231. package/dist/containers/Storage/utils/useVirtualizedDiskList.js.map +1 -0
  232. package/dist/containers/Tablet/Tablet.js +4 -2
  233. package/dist/containers/Tablet/Tablet.js.map +1 -1
  234. package/dist/containers/Tablet/components/TabletControls/TabletControls.js +3 -1
  235. package/dist/containers/Tablet/components/TabletControls/TabletControls.js.map +1 -1
  236. package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js +9 -3
  237. package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js.map +1 -1
  238. package/dist/containers/Tablets/TabletsTable.js +25 -1
  239. package/dist/containers/Tablets/TabletsTable.js.map +1 -1
  240. package/dist/containers/Tablets/i18n/en.json +2 -1
  241. package/dist/containers/Tablets/i18n/index.d.ts +1 -1
  242. package/dist/containers/Tenant/Diagnostics/Overview/AsyncReplicationPaths/i18n/index.d.ts +1 -1
  243. package/dist/containers/Tenant/Diagnostics/Overview/Overview.js +2 -1
  244. package/dist/containers/Tenant/Diagnostics/Overview/Overview.js.map +1 -1
  245. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.d.ts +7 -0
  246. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.js +69 -0
  247. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.js.map +1 -0
  248. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/en.json +9 -0
  249. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.d.ts +2 -0
  250. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.js +5 -0
  251. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.js.map +1 -0
  252. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.d.ts +1 -0
  253. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.js +2 -0
  254. package/dist/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.js.map +1 -0
  255. package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.js +3 -3
  256. package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.js.map +1 -1
  257. package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.d.ts +2 -1
  258. package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.js +3 -2
  259. package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.js.map +1 -1
  260. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js +1 -1
  261. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js.map +1 -1
  262. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js +1 -1
  263. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js.map +1 -1
  264. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +1 -1
  265. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js.map +1 -1
  266. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.d.ts +3 -3
  267. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.js +2 -1
  268. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.js.map +1 -1
  269. package/dist/containers/Tenant/Query/SavedQueries/SavedQueries.js +1 -1
  270. package/dist/containers/Tenant/Query/SavedQueries/SavedQueries.js.map +1 -1
  271. package/dist/containers/Tenants/TenantsTable.js +37 -6
  272. package/dist/containers/Tenants/TenantsTable.js.map +1 -1
  273. package/dist/containers/VDiskPage/VDiskPage.js +1 -1
  274. package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
  275. package/dist/services/api/tablets.d.ts +6 -4
  276. package/dist/services/api/tablets.js +9 -8
  277. package/dist/services/api/tablets.js.map +1 -1
  278. package/dist/store/reducers/capabilities/capabilities.d.ts +4 -4
  279. package/dist/store/reducers/capabilities/hooks.d.ts +1 -0
  280. package/dist/store/reducers/capabilities/hooks.js +8 -0
  281. package/dist/store/reducers/capabilities/hooks.js.map +1 -1
  282. package/dist/store/reducers/nodesList.d.ts +3 -261
  283. package/dist/store/reducers/nodesList.js +1 -1
  284. package/dist/store/reducers/nodesList.js.map +1 -1
  285. package/dist/store/reducers/settings/constants.d.ts +4 -0
  286. package/dist/store/reducers/settings/constants.js +4 -0
  287. package/dist/store/reducers/settings/constants.js.map +1 -1
  288. package/dist/store/reducers/storage/prepareGroupsDisks.d.ts +1 -0
  289. package/dist/store/reducers/storage/prepareGroupsDisks.js +17 -13
  290. package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -1
  291. package/dist/store/reducers/storage/utils.js +11 -5
  292. package/dist/store/reducers/storage/utils.js.map +1 -1
  293. package/dist/store/reducers/tableData.d.ts +1 -1
  294. package/dist/store/reducers/tableData.js.map +1 -1
  295. package/dist/store/reducers/tablet.d.ts +3 -0
  296. package/dist/store/reducers/tablet.js +6 -6
  297. package/dist/store/reducers/tablet.js.map +1 -1
  298. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.js +1 -1
  299. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.js.map +1 -1
  300. package/dist/types/api/capabilities.d.ts +2 -2
  301. package/dist/types/api/pdisk.d.ts +2 -0
  302. package/dist/types/api/pdisk.js.map +1 -1
  303. package/dist/types/api/schema/persQueueGroup.d.ts +2 -2
  304. package/dist/types/api/schema/schema.d.ts +15 -0
  305. package/dist/types/api/schema/schema.js.map +1 -1
  306. package/dist/types/api/schema/tableIndex.d.ts +1 -0
  307. package/dist/types/api/storage.d.ts +4 -0
  308. package/dist/types/api/storage.js.map +1 -1
  309. package/dist/types/api/vdisk.d.ts +2 -0
  310. package/dist/types/api/vdisk.js.map +1 -1
  311. package/dist/utils/developerUI/tabletDevUi.d.ts +1 -0
  312. package/dist/utils/developerUI/tabletDevUi.js +4 -0
  313. package/dist/utils/developerUI/tabletDevUi.js.map +1 -0
  314. package/dist/utils/disks/displayState.d.ts +2 -0
  315. package/dist/utils/disks/displayState.js.map +1 -1
  316. package/dist/utils/disks/getDiskBarTone.d.ts +2 -1
  317. package/dist/utils/disks/getDiskBarTone.js +5 -1
  318. package/dist/utils/disks/getDiskBarTone.js.map +1 -1
  319. package/dist/utils/disks/pdiskState.js +2 -2
  320. package/dist/utils/disks/pdiskState.js.map +1 -1
  321. package/dist/utils/disks/prepareDisks.js +19 -9
  322. package/dist/utils/disks/prepareDisks.js.map +1 -1
  323. package/dist/utils/disks/types.d.ts +2 -1
  324. package/dist/utils/query.d.ts +1 -0
  325. package/dist/utils/query.js +6 -0
  326. package/dist/utils/query.js.map +1 -1
  327. package/package.json +1 -1
  328. package/src/components/DiskStateProgressBar/AllModeCapacityAlertIndicator.tsx +15 -2
  329. package/src/components/DiskStateProgressBar/AllModeIndicators.tsx +19 -6
  330. package/src/components/DiskStateProgressBar/DiskIndicator.tsx +19 -8
  331. package/src/components/DiskStateProgressBar/DiskStateProgressBar.scss +53 -45
  332. package/src/components/DiskStateProgressBar/DiskStateProgressBar.tsx +1 -1
  333. package/src/components/DiskStateProgressBar/PDiskAllModeIndicators.tsx +16 -3
  334. package/src/components/EvictVDiskButton/EvictVDiskButton.tsx +10 -3
  335. package/src/components/FullNodeViewer/FullNodeViewer.scss +3 -3
  336. package/src/components/FullNodeViewer/FullNodeViewer.tsx +81 -34
  337. package/src/components/FullNodeViewer/i18n/en.json +2 -1
  338. package/src/components/HoverPopup/HoverPopup.tsx +21 -16
  339. package/src/components/InfoViewer/InfoViewer.tsx +4 -2
  340. package/src/components/InfoViewer/formatters/pqGroup.ts +6 -2
  341. package/src/components/InfoViewer/schemaInfo/i18n/en.json +1 -0
  342. package/src/components/InfoViewer/schemaInfo/utils.tsx +9 -0
  343. package/src/components/NodeHostWrapper/NodeHostWrapper.tsx +23 -13
  344. package/src/components/PaginatedTable/KeyboardNavigation.tsx +30 -0
  345. package/src/components/PaginatedTable/PaginatedTable.scss +10 -0
  346. package/src/components/PaginatedTable/PaginatedTable.tsx +128 -4
  347. package/src/components/PaginatedTable/PaginatedTableWithLayout.tsx +6 -1
  348. package/src/components/PaginatedTable/ResizeablePaginatedTable.tsx +6 -1
  349. package/src/components/PaginatedTable/TableChunk.tsx +6 -14
  350. package/src/components/PaginatedTable/TableChunksRenderer.tsx +12 -0
  351. package/src/components/PaginatedTable/TableRow.tsx +54 -20
  352. package/src/components/PaginatedTable/getTableChunkQueryParams.ts +25 -0
  353. package/src/components/PaginatedTable/rowLookup.ts +63 -0
  354. package/src/components/PaginatedTable/useKeyboardNavigation.ts +115 -0
  355. package/src/components/ResizeableDataTable/DataTableKeyboardNavigation.tsx +194 -0
  356. package/src/components/ResizeableDataTable/ResizeableDataTable.scss +10 -0
  357. package/src/components/ResizeableDataTable/ResizeableDataTable.tsx +100 -5
  358. package/src/components/ResizeableDataTable/getDataTableOrder.ts +18 -0
  359. package/src/components/Search/Search.tsx +8 -1
  360. package/src/components/ShardsTable/columns.tsx +14 -5
  361. package/src/components/ShardsTable/i18n/en.json +1 -0
  362. package/src/components/TableKeyboardNavigation/TableKeyboardNavigation.scss +16 -0
  363. package/src/components/TableKeyboardNavigation/TableKeyboardNavigation.tsx +519 -0
  364. package/src/components/TableKeyboardNavigation/i18n/en.json +4 -0
  365. package/src/components/TableKeyboardNavigation/i18n/index.ts +5 -0
  366. package/src/components/TableKeyboardNavigation/utils.ts +36 -0
  367. package/src/components/TableWithControlsLayout/TableWithControlsLayout.tsx +26 -1
  368. package/src/components/TenantNameWrapper/TenantNameWrapper.tsx +14 -15
  369. package/src/components/TenantNameWrapper/utils.ts +26 -0
  370. package/src/components/VDisk/VDisk.tsx +115 -41
  371. package/src/components/VDisk/VDiskWithDonorsStack.tsx +18 -3
  372. package/src/components/VDisk/i18n/en.json +11 -0
  373. package/src/components/nodesColumns/columns.tsx +13 -1
  374. package/src/components/nodesColumns/constants.ts +6 -0
  375. package/src/components/nodesColumns/i18n/en.json +2 -1
  376. package/src/containers/Clusters/Clusters.tsx +47 -29
  377. package/src/containers/Node/NodeNetwork/NodeNetworkControls/NodeNetworkControls.tsx +1 -0
  378. package/src/containers/Node/NodeNetwork/NodeNetworkTable.tsx +17 -0
  379. package/src/containers/Nodes/NodesControls/NodesControls.tsx +1 -0
  380. package/src/containers/Nodes/NodesTable.tsx +17 -1
  381. package/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx +1 -0
  382. package/src/containers/Nodes/columns/columns.tsx +2 -0
  383. package/src/containers/Storage/Disks/Disks.scss +5 -0
  384. package/src/containers/Storage/Disks/Disks.tsx +156 -92
  385. package/src/containers/Storage/PDisk/PDisk.scss +79 -1
  386. package/src/containers/Storage/PDisk/PDisk.tsx +157 -81
  387. package/src/containers/Storage/PDisk/PDiskWithVDisks.tsx +181 -0
  388. package/src/containers/Storage/PDisk/i18n/en.json +8 -0
  389. package/src/containers/Storage/PDisk/index.ts +1 -0
  390. package/src/containers/Storage/PDisks/PDisks.tsx +157 -22
  391. package/src/containers/Storage/PaginatedStorage.tsx +4 -0
  392. package/src/containers/Storage/PaginatedStorageGroups/GroupedStorageGroupsComponent.tsx +1 -0
  393. package/src/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.tsx +3 -2
  394. package/src/containers/Storage/PaginatedStorageGroupsTable/PaginatedStorageGroupsTable.tsx +13 -0
  395. package/src/containers/Storage/PaginatedStorageNodes/GroupedStorageNodesComponent.tsx +10 -2
  396. package/src/containers/Storage/PaginatedStorageNodes/StorageNodesComponent.tsx +6 -2
  397. package/src/containers/Storage/PaginatedStorageNodes/StorageNodesControls.tsx +76 -41
  398. package/src/containers/Storage/PaginatedStorageNodes/nodeExpertModeLayout.ts +103 -0
  399. package/src/containers/Storage/PaginatedStorageNodesTable/PaginatedStorageNodesTable.tsx +24 -1
  400. package/src/containers/Storage/PaginatedStorageNodesTable/columns/columns.tsx +3 -1
  401. package/src/containers/Storage/PaginatedStorageNodesTable/columns/hooks.ts +8 -1
  402. package/src/containers/Storage/PaginatedStorageNodesTable/columns/types.ts +2 -0
  403. package/src/containers/Storage/StorageExpertModePanel/StorageGroupsExpertModePanel.tsx +63 -0
  404. package/src/containers/Storage/StorageExpertModePanel/StorageNodesExpertModePanel.tsx +67 -0
  405. package/src/containers/Storage/StorageExpertModePanel/components/ExpertModePanelLayout.tsx +63 -0
  406. package/src/containers/Storage/StorageExpertModePanel/components/FrontQueuesLegend.tsx +1 -0
  407. package/src/containers/Storage/StorageExpertModePanel/components/PDiskDecommitLegend.tsx +1 -0
  408. package/src/containers/Storage/StorageExpertModePanel/components/PDiskDriveLegend.tsx +3 -2
  409. package/src/containers/Storage/StorageExpertModePanel/components/PDiskMaintenanceLegend.tsx +1 -0
  410. package/src/containers/Storage/StorageExpertModePanel/components/SpaceLegend.tsx +3 -0
  411. package/src/containers/Storage/StorageExpertModePanel/components/StatusPairLegend.tsx +7 -9
  412. package/src/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.ts +1 -1
  413. package/src/containers/Storage/StorageExpertModePanel/components/renderExpertModeLegend.tsx +58 -0
  414. package/src/containers/Storage/StorageExpertModePanel/constants.ts +26 -0
  415. package/src/containers/Storage/StorageExpertModePanel/i18n/en.json +2 -2
  416. package/src/containers/Storage/TableGroup/TableGroup.tsx +6 -1
  417. package/src/containers/Storage/VDisks/VDisks.scss +3 -0
  418. package/src/containers/Storage/VDisks/VDisks.tsx +29 -7
  419. package/src/containers/Storage/useStoragePDiskDisplayStateGetter.ts +94 -135
  420. package/src/containers/Storage/useStorageQueryParams.ts +120 -1
  421. package/src/containers/Storage/useStorageVDiskDisplayStateGetter.ts +65 -10
  422. package/src/containers/Storage/utils/useStorageColumnsSettings.ts +77 -49
  423. package/src/containers/Storage/utils/useVirtualizedDiskList.ts +156 -0
  424. package/src/containers/Tablet/Tablet.tsx +4 -2
  425. package/src/containers/Tablet/components/TabletControls/TabletControls.tsx +7 -3
  426. package/src/containers/Tablet/components/TabletInfo/TabletInfo.tsx +13 -3
  427. package/src/containers/Tablets/TabletsTable.tsx +50 -10
  428. package/src/containers/Tablets/i18n/en.json +2 -1
  429. package/src/containers/Tenant/Diagnostics/Overview/Overview.tsx +2 -1
  430. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/ResourcePoolInfo.tsx +106 -0
  431. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/en.json +9 -0
  432. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/i18n/index.ts +7 -0
  433. package/src/containers/Tenant/Diagnostics/Overview/ResourcePoolInfo/index.ts +1 -0
  434. package/src/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.ts +3 -3
  435. package/src/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.tsx +6 -0
  436. package/src/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.tsx +4 -0
  437. package/src/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.tsx +7 -1
  438. package/src/containers/Tenant/Diagnostics/TopShards/TopShards.tsx +1 -1
  439. package/src/containers/Tenant/Query/QueriesHistory/QueriesHistory.tsx +5 -0
  440. package/src/containers/Tenant/Query/SavedQueries/SavedQueries.tsx +6 -0
  441. package/src/containers/Tenants/TenantsTable.tsx +70 -12
  442. package/src/containers/VDiskPage/VDiskPage.tsx +1 -1
  443. package/src/services/api/tablets.ts +16 -7
  444. package/src/store/reducers/capabilities/hooks.ts +9 -0
  445. package/src/store/reducers/nodesList.ts +2 -3
  446. package/src/store/reducers/settings/constants.ts +4 -0
  447. package/src/store/reducers/storage/prepareGroupsDisks.ts +16 -11
  448. package/src/store/reducers/storage/utils.ts +12 -5
  449. package/src/store/reducers/tableData.ts +1 -1
  450. package/src/store/reducers/tablet.ts +25 -6
  451. package/src/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.ts +1 -1
  452. package/src/types/api/capabilities.ts +2 -2
  453. package/src/types/api/pdisk.ts +2 -0
  454. package/src/types/api/schema/persQueueGroup.ts +2 -2
  455. package/src/types/api/schema/schema.ts +18 -0
  456. package/src/types/api/schema/tableIndex.ts +1 -0
  457. package/src/types/api/storage.ts +4 -0
  458. package/src/types/api/vdisk.ts +2 -0
  459. package/src/utils/developerUI/tabletDevUi.ts +3 -0
  460. package/src/utils/disks/displayState.ts +2 -0
  461. package/src/utils/disks/getDiskBarTone.ts +8 -0
  462. package/src/utils/disks/pdiskState.ts +2 -2
  463. package/src/utils/disks/prepareDisks.ts +25 -9
  464. package/src/utils/disks/types.ts +2 -1
  465. package/src/utils/query.ts +7 -0
  466. package/dist/containers/Storage/PDisk/PDiskVDisks.d.ts +0 -13
  467. package/dist/containers/Storage/PDisk/PDiskVDisks.js +0 -20
  468. package/dist/containers/Storage/PDisk/PDiskVDisks.js.map +0 -1
  469. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.d.ts +0 -6
  470. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js +0 -66
  471. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js.map +0 -1
  472. package/src/containers/Storage/PDisk/PDiskVDisks.tsx +0 -65
  473. package/src/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.tsx +0 -151
@@ -8,17 +8,19 @@ const b = cn('storage-disk-progress-bar');
8
8
 
9
9
  interface DiskIconGroupProps {
10
10
  icons: IconWithColor[];
11
+ size?: number;
12
+ className?: string;
11
13
  }
12
14
 
13
- export function DiskIconGroup({icons}: DiskIconGroupProps) {
15
+ export function DiskIconGroup({icons, size = 10, className}: DiskIconGroupProps) {
14
16
  return (
15
- <div className={b('icon-group')}>
17
+ <div className={b('icon-group', className)}>
16
18
  {icons.map(({icon, color}, index) => (
17
19
  <Icon
18
20
  key={index}
19
21
  className={b('icon', {overlapped: index > 0})}
20
22
  data={icon}
21
- size={10}
23
+ size={size}
22
24
  style={color ? {color} : undefined}
23
25
  />
24
26
  ))}
@@ -29,22 +31,31 @@ export function DiskIconGroup({icons}: DiskIconGroupProps) {
29
31
  interface DiskIndicatorProps {
30
32
  value: DiskIndicatorValue;
31
33
  placement?: 'inline' | 'overlap';
34
+ iconSize?: number;
35
+ iconGroupSize?: number;
36
+ className?: string;
32
37
  }
33
38
 
34
- export function DiskIndicator({value, placement = 'inline'}: DiskIndicatorProps) {
39
+ export function DiskIndicator({
40
+ value,
41
+ placement = 'inline',
42
+ iconSize = 12,
43
+ iconGroupSize,
44
+ className,
45
+ }: DiskIndicatorProps) {
35
46
  if (typeof value === 'string') {
36
- return <div className={b('text-label')}>{value}</div>;
47
+ return <div className={b('text-label', className)}>{value}</div>;
37
48
  }
38
49
 
39
50
  if (Array.isArray(value)) {
40
- return <DiskIconGroup icons={value} />;
51
+ return <DiskIconGroup icons={value} size={iconGroupSize} className={className} />;
41
52
  }
42
53
 
43
54
  return (
44
55
  <Icon
45
- className={b('icon', {'overlap-top-left': placement === 'overlap'})}
56
+ className={b('icon', {'overlap-top-left': placement === 'overlap'}, className)}
46
57
  data={value}
47
- size={12}
58
+ size={iconSize}
48
59
  />
49
60
  );
50
61
  }
@@ -51,28 +51,22 @@
51
51
  &_expert-mode {
52
52
  --entity-state-compact-background-color: var(--entity-state-background-color);
53
53
 
54
- &#{$block}_grey {
55
- --entity-state-background-color: var(--g-color-base-generic-medium);
56
- --entity-state-border-color: none;
57
- --entity-state-fill-color: var(--g-color-base-neutral-medium);
58
-
59
- border: none;
60
-
61
- &#{$block}_highlighted {
62
- --entity-state-background-color: var(--g-color-base-generic-medium-hover);
63
- --entity-state-fill-color: var(--g-color-base-neutral-medium-hover);
64
- }
65
- }
66
-
67
54
  &#{$block}_light-grey {
55
+ --entity-state-font-color: var(--g-color-text-secondary);
68
56
  --entity-state-border-color: var(--g-color-line-generic);
69
57
  --entity-state-background-color: var(--g-color-base-neutral-light);
58
+ --entity-state-fill-color: var(--g-color-base-neutral-light);
70
59
  --entity-state-icon-color: var(--g-color-text-secondary);
71
60
 
72
61
  border: $border-width solid var(--entity-state-border-color);
73
62
 
63
+ &#{$block}_striped {
64
+ border: none;
65
+ }
66
+
74
67
  &#{$block}_highlighted {
75
68
  --entity-state-background-color: var(--g-color-base-neutral-light-hover);
69
+ --entity-state-fill-color: var(--g-color-base-neutral-light-hover);
76
70
  }
77
71
 
78
72
  &#{$block}_mode-space {
@@ -104,7 +98,7 @@
104
98
  }
105
99
  }
106
100
 
107
- &_legend-inactive {
101
+ &_borderless {
108
102
  border: none;
109
103
  }
110
104
 
@@ -193,22 +187,6 @@
193
187
  }
194
188
  }
195
189
 
196
- &#{$block}_grey {
197
- --entity-state-background-color: var(--g-color-base-neutral-medium);
198
- --entity-state-border-color: none;
199
- --entity-state-fill-color: var(--g-color-base-neutral-medium);
200
-
201
- border: none;
202
-
203
- &#{$block}_highlighted {
204
- --entity-state-background-color: var(--g-color-base-neutral-medium-hover);
205
- --entity-state-border-color: none;
206
- --entity-state-fill-color: var(--g-color-base-neutral-medium-hover);
207
-
208
- border: none;
209
- }
210
- }
211
-
212
190
  #{$block}__fill-bar {
213
191
  border-radius: calc(var(--disk-border-radius, var(--g-border-radius-m)) - 1px) 0 0
214
192
  calc(var(--disk-border-radius, var(--g-border-radius-m)) - 1px);
@@ -224,7 +202,9 @@
224
202
  }
225
203
 
226
204
  &_mode-space {
227
- &:not(#{$block}_legend-inactive):not(#{$block}_darkgrey) {
205
+ --entity-state-font-color: var(--ydb-progress-bar-font-color);
206
+
207
+ &:not(#{$block}_borderless):not(#{$block}_darkgrey) {
228
208
  --entity-state-stripe-border-color: var(--entity-state-border-color);
229
209
  }
230
210
 
@@ -315,16 +295,6 @@
315
295
  }
316
296
  }
317
297
 
318
- &#{$block}_grey {
319
- --entity-state-background-color: var(--ydb-space-no-data-bg);
320
- --entity-state-fill-color: var(--ydb-space-no-data-fill-color);
321
-
322
- &#{$block}_highlighted {
323
- --entity-state-background-color: var(--ydb-space-no-data-bg-hover);
324
- --entity-state-fill-color: var(--ydb-space-no-data-fill-color-hover);
325
- }
326
- }
327
-
328
298
  &#{$block}_light-grey {
329
299
  --entity-state-icon-color: var(--ydb-progress-bar-font-color);
330
300
  }
@@ -386,6 +356,23 @@
386
356
  }
387
357
  }
388
358
 
359
+ // Keep N/D colors independent from expert mode-specific backgrounds.
360
+ &_grey {
361
+ --ydb-progress-bar-font-color: var(--g-color-text-secondary);
362
+ --entity-state-icon-color: var(--g-color-text-secondary);
363
+ --entity-state-border-color: none;
364
+ --entity-state-background-color: var(--g-color-base-neutral-light);
365
+ --entity-state-fill-color: var(--g-color-base-neutral-light);
366
+
367
+ color: var(--g-color-text-secondary);
368
+ border: none;
369
+
370
+ &#{$block}_highlighted {
371
+ --entity-state-background-color: var(--g-color-base-neutral-light-hover);
372
+ --entity-state-fill-color: var(--g-color-base-neutral-light-hover);
373
+ }
374
+ }
375
+
389
376
  &_compact {
390
377
  min-width: 8px;
391
378
  height: var(--progress-bar-compact-height);
@@ -478,6 +465,8 @@
478
465
  }
479
466
 
480
467
  &__all-mode-indicators {
468
+ --all-mode-indicators-padding: var(--g-spacing-1);
469
+
481
470
  position: absolute;
482
471
  z-index: 2;
483
472
  inset: 0;
@@ -488,13 +477,20 @@
488
477
  column-gap: var(--g-spacing-1);
489
478
 
490
479
  box-sizing: border-box;
491
- padding-inline: calc(var(--g-spacing-1) - $border-width);
480
+ padding-inline: calc(var(--all-mode-indicators-padding) - $border-width);
492
481
 
493
482
  pointer-events: none;
494
483
 
495
484
  #{$block}_grey &,
496
485
  #{$block}_striped & {
497
- padding-inline: var(--g-spacing-1);
486
+ padding-inline: var(--all-mode-indicators-padding);
487
+ }
488
+
489
+ &_size_s {
490
+ --all-mode-indicators-padding: var(--g-spacing-half);
491
+
492
+ grid-template-columns: 14px 8px 13px;
493
+ column-gap: var(--g-spacing-half);
498
494
  }
499
495
  }
500
496
 
@@ -524,9 +520,14 @@
524
520
  display: inline-flex;
525
521
  justify-content: center;
526
522
  align-items: center;
523
+
524
+ &_size_s {
525
+ font-size: 10px;
526
+ line-height: 12px;
527
+ }
527
528
  }
528
529
 
529
- &__all-mode-capacity-alert-indicator-icon {
530
+ &__all-mode-missing-data-indicator-icon {
530
531
  color: rgba(162, 162, 162, 1);
531
532
  }
532
533
 
@@ -580,8 +581,11 @@
580
581
  }
581
582
 
582
583
  &_compact {
584
+ overflow: hidden;
585
+
586
+ min-width: 0;
583
587
  margin-right: auto;
584
- margin-left: var(--g-spacing-1);
588
+ margin-left: var(--progress-bar-compact-placeholder-margin-left, var(--g-spacing-1));
585
589
  }
586
590
  }
587
591
 
@@ -605,6 +609,10 @@
605
609
  }
606
610
  }
607
611
 
612
+ &__all-mode-compaction-icons_size_s {
613
+ margin-left: 0;
614
+ }
615
+
608
616
  &__icon {
609
617
  position: relative;
610
618
  z-index: 2;
@@ -67,8 +67,8 @@ export function DiskStateProgressBar({
67
67
  striped,
68
68
  filled,
69
69
  highlighted,
70
+ borderless,
70
71
  'all-mode-has-issues': mode === 'all' && strongFill,
71
- 'legend-inactive': borderless,
72
72
  'overlap-icon-at-top-left': overflowVisible,
73
73
  [getToneModifier(tone)]: true,
74
74
  };
@@ -1,4 +1,6 @@
1
+ import {CircleQuestionFill} from '@gravity-ui/icons';
1
2
  import {Icon, Text} from '@gravity-ui/uikit';
3
+ import type {IconData} from '@gravity-ui/uikit';
2
4
 
3
5
  import {cn} from '../../utils/cn';
4
6
  import type {PDiskAllModeIndicatorsState} from '../../utils/disks/displayState';
@@ -12,6 +14,17 @@ interface PDiskAllModeIndicatorsProps {
12
14
  indicators: PDiskAllModeIndicatorsState;
13
15
  }
14
16
 
17
+ function PDiskAllModeStatusIndicator({indicator}: {indicator?: IconData}) {
18
+ if (!indicator) {
19
+ return null;
20
+ }
21
+
22
+ const className =
23
+ indicator === CircleQuestionFill ? b('all-mode-missing-data-indicator-icon') : undefined;
24
+
25
+ return <Icon className={className} data={indicator} size={12} />;
26
+ }
27
+
15
28
  export function PDiskAllModeIndicators({indicators}: PDiskAllModeIndicatorsProps) {
16
29
  return (
17
30
  <div className={b('pdisk-all-mode-indicators')}>
@@ -24,13 +37,13 @@ export function PDiskAllModeIndicators({indicators}: PDiskAllModeIndicatorsProps
24
37
  <AllModeCapacityAlertIndicator indicator={indicators.capacityAlert} />
25
38
  </Text>
26
39
  <span className={b('pdisk-all-mode-drive-indicator-slot')}>
27
- {indicators.drive && <Icon data={indicators.drive} size={12} />}
40
+ <PDiskAllModeStatusIndicator indicator={indicators.drive} />
28
41
  </span>
29
42
  <span className={b('pdisk-all-mode-decommit-indicator-slot')}>
30
- {indicators.decommit && <Icon data={indicators.decommit} size={12} />}
43
+ <PDiskAllModeStatusIndicator indicator={indicators.decommit} />
31
44
  </span>
32
45
  <span className={b('pdisk-all-mode-maintenance-indicator-slot')}>
33
- {indicators.maintenance && <Icon data={indicators.maintenance} size={12} />}
46
+ <PDiskAllModeStatusIndicator indicator={indicators.maintenance} />
34
47
  </span>
35
48
  <span className={b('pdisk-all-mode-device-indicator-slot')}>
36
49
  {indicators.device && <DiskIconGroup icons={indicators.device} />}
@@ -4,7 +4,10 @@ import {ArrowsOppositeToDots} from '@gravity-ui/icons';
4
4
  import {Icon} from '@gravity-ui/uikit';
5
5
  import {isNil} from 'lodash';
6
6
 
7
- import {useDiskPagesAvailable} from '../../store/reducers/capabilities/hooks';
7
+ import {
8
+ useDiskPagesAvailable,
9
+ useTabletDevUiSecurePath,
10
+ } from '../../store/reducers/capabilities/hooks';
8
11
  import type {ModifyDiskResponse} from '../../types/api/modifyDisk';
9
12
  import type {TVDiskID} from '../../types/api/vdisk';
10
13
  import {useIsUserAllowedToMakeChanges} from '../../utils/hooks/useIsUserAllowedToMakeChanges';
@@ -37,6 +40,7 @@ export const EvictVDiskButton = ({
37
40
  }: EvictVDiskButtonProps) => {
38
41
  const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
39
42
  const newDiskApiAvailable = useDiskPagesAvailable();
43
+ const useSecurePath = useTabletDevUiSecurePath();
40
44
 
41
45
  const handleEvictVDisk = React.useCallback(
42
46
  async (isRetry?: boolean) => {
@@ -54,7 +58,10 @@ export const EvictVDiskButton = ({
54
58
  if (newDiskApiAvailable) {
55
59
  response = await window.api.vdisk.evictVDisk(requestParams);
56
60
  } else {
57
- response = await window.api.tablets.evictVDiskOld(requestParams);
61
+ response = await window.api.tablets.evictVDiskOld({
62
+ ...requestParams,
63
+ useSecurePath,
64
+ });
58
65
  }
59
66
 
60
67
  if (response?.result === false) {
@@ -65,7 +72,7 @@ export const EvictVDiskButton = ({
65
72
  throw err;
66
73
  }
67
74
  },
68
- [vDiskId, newDiskApiAvailable],
75
+ [vDiskId, newDiskApiAvailable, useSecurePath],
69
76
  );
70
77
 
71
78
  return (
@@ -17,10 +17,10 @@
17
17
 
18
18
  grid-template-columns: 110px 110px;
19
19
  }
20
- }
21
20
 
22
- .info-viewer__label {
23
- min-width: 100px;
21
+ &_ram {
22
+ align-items: flex-start;
23
+ }
24
24
  }
25
25
 
26
26
  &__section-title {
@@ -2,13 +2,16 @@ import {Flex} from '@gravity-ui/uikit';
2
2
 
3
3
  import type {PreparedNode} from '../../store/reducers/node/types';
4
4
  import {cn} from '../../utils/cn';
5
+ import {EMPTY_DATA_PLACEHOLDER} from '../../utils/constants';
6
+ import {formatStorageValues} from '../../utils/dataFormatters/dataFormatters';
5
7
  import {useNodeDeveloperUIHref} from '../../utils/hooks/useNodeDeveloperUIHref';
6
- import {InfoViewer} from '../InfoViewer/InfoViewer';
7
- import type {InfoViewerItem} from '../InfoViewer/InfoViewer';
8
+ import {isNumeric} from '../../utils/utils';
8
9
  import {LinkWithIcon} from '../LinkWithIcon/LinkWithIcon';
9
10
  import {PoolUsage} from '../PoolUsage/PoolUsage';
10
11
  import {ProgressViewer} from '../ProgressViewer/ProgressViewer';
11
12
  import {NodeUptime} from '../UptimeViewer/UptimeViewer';
13
+ import type {YDBDefinitionListItem} from '../YDBDefinitionList/YDBDefinitionList';
14
+ import {YDBDefinitionList} from '../YDBDefinitionList/YDBDefinitionList';
12
15
 
13
16
  import i18n from './i18n';
14
17
 
@@ -24,68 +27,108 @@ const getLoadAverageIntervalTitle = (index: number) => {
24
27
  return [i18n('la-interval-1m'), i18n('la-interval-5m'), i18n('la-interval-15m')][index];
25
28
  };
26
29
 
30
+ const formatMemoryValues = (value?: number, total?: number) =>
31
+ formatStorageValues(value, total, 'gb', undefined, true);
32
+
27
33
  // eslint-disable-next-line complexity
28
34
  export const FullNodeViewer = ({node, className}: FullNodeViewerProps) => {
29
35
  const developerUIHref = useNodeDeveloperUIHref(node);
30
36
 
31
- const commonInfo: InfoViewerItem[] = [];
37
+ const commonInfo: YDBDefinitionListItem[] = [];
32
38
 
33
39
  if (node?.Tenants?.length) {
34
- commonInfo.push({label: i18n('database'), value: node.Tenants[0]});
40
+ commonInfo.push({
41
+ name: i18n('database'),
42
+ content: node.Tenants[0] || EMPTY_DATA_PLACEHOLDER,
43
+ });
35
44
  }
36
45
 
37
46
  commonInfo.push(
38
- {label: i18n('version'), value: node?.Version},
47
+ {name: i18n('version'), content: node?.Version || EMPTY_DATA_PLACEHOLDER},
39
48
  {
40
- label: i18n('uptime'),
41
- value: <NodeUptime StartTime={node?.StartTime} DisconnectTime={node?.DisconnectTime} />,
49
+ name: i18n('uptime'),
50
+ content: (
51
+ <NodeUptime StartTime={node?.StartTime} DisconnectTime={node?.DisconnectTime} />
52
+ ),
53
+ },
54
+ {
55
+ name: i18n('dc'),
56
+ content: node?.DataCenterDescription || node?.DC || EMPTY_DATA_PLACEHOLDER,
42
57
  },
43
- {label: i18n('dc'), value: node?.DataCenterDescription || node?.DC},
44
58
  );
45
59
 
46
60
  if (node?.Rack) {
47
- commonInfo.push({label: i18n('rack'), value: node?.Rack});
61
+ commonInfo.push({name: i18n('rack'), content: node.Rack});
48
62
  }
49
63
 
50
64
  if (developerUIHref) {
51
65
  commonInfo.push({
52
- label: i18n('links'),
53
- value: <LinkWithIcon url={developerUIHref} title={i18n('developer-ui')} />,
66
+ name: i18n('links'),
67
+ content: <LinkWithIcon url={developerUIHref} title={i18n('developer-ui')} />,
54
68
  });
55
69
  }
56
70
 
57
71
  const endpointsInfo = node?.Endpoints?.map(({Name, Address}) => ({
58
- label: Name,
59
- value: Address,
72
+ name: Name || EMPTY_DATA_PLACEHOLDER,
73
+ content: Address || EMPTY_DATA_PLACEHOLDER,
60
74
  }));
61
75
 
62
- const averageInfo = node?.LoadAveragePercents?.map((load, loadIndex) => ({
63
- label: getLoadAverageIntervalTitle(loadIndex),
64
- value: (
65
- <ProgressViewer value={load} percents={true} colorizeProgress={true} capacity={100} />
66
- ),
67
- }));
76
+ const averageInfo =
77
+ node?.LoadAveragePercents?.map((load, loadIndex) => ({
78
+ name: getLoadAverageIntervalTitle(loadIndex),
79
+ content: (
80
+ <ProgressViewer
81
+ value={load}
82
+ percents={true}
83
+ colorizeProgress={true}
84
+ capacity={100}
85
+ />
86
+ ),
87
+ })) ?? [];
68
88
 
69
89
  if (!node) {
70
90
  return <div className="error">{i18n('no-data')}</div>;
71
91
  }
72
92
 
93
+ const memoryUsed = isNumeric(node.MemoryUsed) ? Number(node.MemoryUsed) : undefined;
94
+ const memoryLimit = isNumeric(node.MemoryLimit) ? Number(node.MemoryLimit) : undefined;
95
+ const hasMemoryUsed =
96
+ memoryUsed !== undefined && Number.isFinite(memoryUsed) && memoryUsed >= 0;
97
+ const hasMemoryLimit =
98
+ memoryLimit !== undefined && Number.isFinite(memoryLimit) && memoryLimit > 0;
99
+
100
+ const renderMemory = () => {
101
+ if (!hasMemoryUsed) {
102
+ return EMPTY_DATA_PLACEHOLDER;
103
+ }
104
+ if (!hasMemoryLimit) {
105
+ return formatMemoryValues(memoryUsed)[0];
106
+ }
107
+
108
+ return (
109
+ <ProgressViewer
110
+ value={memoryUsed}
111
+ capacity={memoryLimit}
112
+ formatValues={formatMemoryValues}
113
+ colorizeProgress
114
+ />
115
+ );
116
+ };
117
+
73
118
  return (
74
119
  <div className={b(null, className)}>
75
120
  <Flex wrap gap={4}>
76
121
  <Flex direction="column" gap={2}>
77
- <InfoViewer
78
- title={i18n('title.common-info')}
79
- className={b('section')}
80
- info={commonInfo}
81
- />
122
+ <div className={b('section')}>
123
+ <div className={b('section-title')}>{i18n('title.common-info')}</div>
124
+ <YDBDefinitionList items={commonInfo} nameMaxWidth={100} compact />
125
+ </div>
82
126
 
83
127
  {endpointsInfo && endpointsInfo.length ? (
84
- <InfoViewer
85
- title={i18n('title.endpoints')}
86
- className={b('section')}
87
- info={endpointsInfo}
88
- />
128
+ <div className={b('section')}>
129
+ <div className={b('section-title')}>{i18n('title.endpoints')}</div>
130
+ <YDBDefinitionList items={endpointsInfo} nameMaxWidth={100} compact />
131
+ </div>
89
132
  ) : null}
90
133
  </Flex>
91
134
 
@@ -99,11 +142,15 @@ export const FullNodeViewer = ({node, className}: FullNodeViewerProps) => {
99
142
  </div>
100
143
  </div>
101
144
 
102
- <InfoViewer
103
- title={i18n('title.load-average')}
104
- className={b('section', {average: true})}
105
- info={averageInfo}
106
- />
145
+ <div className={b('section', {average: true})}>
146
+ <div className={b('section-title')}>{i18n('title.load-average')}</div>
147
+ <YDBDefinitionList items={averageInfo} nameMaxWidth={100} compact />
148
+ </div>
149
+
150
+ <div className={b('section', {ram: true})} data-qa="node-ram">
151
+ <div className={b('section-title')}>{i18n('title_ram')}</div>
152
+ {renderMemory()}
153
+ </div>
107
154
  </Flex>
108
155
 
109
156
  {node.Roles && node.Roles.length ? (
@@ -17,5 +17,6 @@
17
17
  "title.endpoints": "Endpoints",
18
18
  "title.roles": "Roles",
19
19
  "title.pools": "Pools",
20
- "title.load-average": "Load average"
20
+ "title.load-average": "Load average",
21
+ "title_ram": "RAM"
21
22
  }
@@ -5,6 +5,7 @@ import {Popup} from '@gravity-ui/uikit';
5
5
  import debounce from 'lodash/debounce';
6
6
 
7
7
  import {YDB_POPOVER_CLASS_NAME} from '../../utils/constants';
8
+ import {useEventHandler} from '../../utils/hooks/useEventHandler';
8
9
 
9
10
  import {getPopupScrollContainer} from './getPopupScrollContainer';
10
11
 
@@ -62,22 +63,19 @@ export const HoverPopup = ({
62
63
 
63
64
  const reportedOpenRef = React.useRef(false);
64
65
 
65
- const reportOpen = React.useCallback(
66
- (nextOpen: boolean, force = false) => {
67
- if (!force && reportedOpenRef.current === nextOpen) {
68
- return;
69
- }
70
-
71
- reportedOpenRef.current = nextOpen;
72
-
73
- if (nextOpen) {
74
- onShowPopup?.();
75
- } else {
76
- onHidePopup?.();
77
- }
78
- },
79
- [onShowPopup, onHidePopup],
80
- );
66
+ const reportOpen = useEventHandler((nextOpen: boolean, force = false) => {
67
+ if (!force && reportedOpenRef.current === nextOpen) {
68
+ return;
69
+ }
70
+
71
+ reportedOpenRef.current = nextOpen;
72
+
73
+ if (nextOpen) {
74
+ onShowPopup?.();
75
+ } else {
76
+ onHidePopup?.();
77
+ }
78
+ });
81
79
 
82
80
  const debouncedHandleShowPopup = React.useMemo(
83
81
  () =>
@@ -101,6 +99,13 @@ export const HoverPopup = ({
101
99
  [delayClose, reportOpen, hidePopup],
102
100
  );
103
101
 
102
+ React.useEffect(() => {
103
+ return () => {
104
+ debouncedHandleShowPopup.cancel();
105
+ debouncedHandleHidePopup.cancel();
106
+ };
107
+ }, [debouncedHandleShowPopup, debouncedHandleHidePopup]);
108
+
104
109
  const closePopup = React.useCallback(() => {
105
110
  debouncedHandleShowPopup.cancel();
106
111
  debouncedHandleHidePopup.cancel();
@@ -47,7 +47,7 @@ export const InfoViewer = ({
47
47
  {info && info.length > 0 ? (
48
48
  <div className={b('items')}>
49
49
  {info.map((data, infoIndex) => (
50
- <div className={b('row')} key={infoIndex}>
50
+ <div className={b('row')} key={infoIndex} data-qa="info-viewer-row">
51
51
  <div className={b('label')}>
52
52
  <div className={b('label-text', {multiline: multilineLabels})}>
53
53
  {data.label}
@@ -55,7 +55,9 @@ export const InfoViewer = ({
55
55
  {dots && <div className={b('dots')} />}
56
56
  </div>
57
57
 
58
- <div className={b('value')}>{data.value}</div>
58
+ <div className={b('value')} data-qa="info-viewer-value">
59
+ {data.value}
60
+ </div>
59
61
  </div>
60
62
  ))}
61
63
  </div>
@@ -26,8 +26,12 @@ export const formatPQGroupItem = createInfoFormatter<TPersQueueGroupDescription>
26
26
  values: {
27
27
  Partitions: (value) => formatNumber(value?.length || 0),
28
28
  PQTabletConfig: (value) => {
29
- const hours =
30
- Math.round((value.PartitionConfig.LifetimeSeconds / HOUR_IN_SECONDS) * 100) / 100;
29
+ const lifetimeSeconds = value?.PartitionConfig?.LifetimeSeconds;
30
+ if (typeof lifetimeSeconds !== 'number' || !Number.isFinite(lifetimeSeconds)) {
31
+ return EMPTY_DATA_PLACEHOLDER;
32
+ }
33
+
34
+ const hours = Math.round((lifetimeSeconds / HOUR_IN_SECONDS) * 100) / 100;
31
35
  return `${formatNumber(hours)} hours`;
32
36
  },
33
37
  },
@@ -34,6 +34,7 @@
34
34
  "field_filter_length_min": "Filter Length Min",
35
35
  "field_filter_length_max": "Filter Length Max",
36
36
  "field_use_filter_snowball": "Filter Snowball",
37
+ "field_use_filter_superlemmer": "Filter Superlemmer",
37
38
  "filter_enabled": "Enabled",
38
39
  "filter_disabled": "Disabled",
39
40