ydb-embedded-ui 5.2.1 → 5.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (453) hide show
  1. package/dist/components/BasicNodeViewer/BasicNodeViewer.js +1 -1
  2. package/dist/components/ButtonWithConfirmDialog/ButtonWithConfirmDialog.d.ts +13 -0
  3. package/dist/components/ButtonWithConfirmDialog/ButtonWithConfirmDialog.js +32 -0
  4. package/dist/components/CellWithPopover/CellWithPopover.js +1 -11
  5. package/dist/components/ClipboardButton/ClipboardButton.js +1 -11
  6. package/dist/components/ComponentsProvider/ComponentsProvider.d.ts +2 -2
  7. package/dist/components/ComponentsProvider/componentsRegistry.d.ts +1 -1
  8. package/dist/components/ComponentsProvider/registry.d.ts +3 -3
  9. package/dist/components/ContentWithPopup/ContentWithPopup.js +1 -11
  10. package/dist/components/CriticalActionDialog/CriticalActionDialog.d.ts +6 -4
  11. package/dist/components/CriticalActionDialog/CriticalActionDialog.js +32 -7
  12. package/dist/components/CriticalActionDialog/CriticalActionDialog.scss +8 -19
  13. package/dist/components/CriticalActionDialog/i18n/en.json +7 -0
  14. package/dist/components/CriticalActionDialog/i18n/index.d.ts +1 -0
  15. package/dist/components/CriticalActionDialog/i18n/index.js +4 -0
  16. package/dist/components/EnableFullscreenButton/EnableFullscreenButton.js +2 -2
  17. package/dist/components/EntityStatus/EntityStatus.d.ts +20 -37
  18. package/dist/components/EntityStatus/EntityStatus.js +17 -66
  19. package/dist/components/EntityStatus/EntityStatus.scss +1 -57
  20. package/dist/components/Errors/403/AccessDenied.js +1 -11
  21. package/dist/components/FormattedBytes/FormattedBytes.d.ts +1 -1
  22. package/dist/components/FormattedBytes/FormattedBytes.js +1 -11
  23. package/dist/components/FormattedBytes/utils.d.ts +1 -1
  24. package/dist/components/Fullscreen/Fullscreen.js +11 -11
  25. package/dist/components/Illustration/Illustration.js +1 -11
  26. package/dist/components/InfoViewer/InfoViewer.d.ts +2 -2
  27. package/dist/components/InfoViewer/InfoViewer.js +1 -1
  28. package/dist/components/InfoViewer/formatters/cdcStream.d.ts +1 -1
  29. package/dist/components/InfoViewer/formatters/common.d.ts +1 -1
  30. package/dist/components/InfoViewer/formatters/pqGroup.d.ts +3 -3
  31. package/dist/components/InfoViewer/formatters/schema.d.ts +1 -1
  32. package/dist/components/InfoViewer/formatters/table.d.ts +4 -4
  33. package/dist/components/InfoViewer/utils.d.ts +3 -3
  34. package/dist/components/InfoViewerSkeleton/InfoViewerSkeleton.d.ts +7 -0
  35. package/dist/components/InfoViewerSkeleton/InfoViewerSkeleton.js +7 -0
  36. package/dist/{containers/Cluster/ClusterInfoSkeleton/ClusterInfoSkeleton.scss → components/InfoViewerSkeleton/InfoViewerSkeleton.scss} +1 -9
  37. package/dist/components/InternalLink/InternalLink.js +1 -11
  38. package/dist/components/LinkToSchemaObject/LinkToSchemaObject.js +1 -11
  39. package/dist/components/LinkWithIcon/LinkWithIcon.d.ts +8 -0
  40. package/dist/components/LinkWithIcon/LinkWithIcon.js +14 -0
  41. package/dist/components/{ExternalLinkWithIcon/ExternalLinkWithIcon.scss → LinkWithIcon/LinkWithIcon.scss} +1 -1
  42. package/dist/components/MetricChart/MetricChart.d.ts +2 -1
  43. package/dist/components/MetricChart/MetricChart.js +17 -7
  44. package/dist/components/MetricChart/colors.d.ts +2 -0
  45. package/dist/components/MetricChart/colors.js +21 -0
  46. package/dist/components/MetricChart/getChartData.d.ts +2 -1
  47. package/dist/components/MetricChart/getChartData.js +2 -2
  48. package/dist/components/MetricChart/getDefaultDataFormatter.d.ts +1 -1
  49. package/dist/components/MetricChart/getDefaultDataFormatter.js +9 -0
  50. package/dist/components/MetricChart/i18n/en.json +3 -0
  51. package/dist/components/MetricChart/i18n/index.d.ts +2 -0
  52. package/dist/components/MetricChart/i18n/index.js +4 -0
  53. package/dist/components/MetricChart/reducer.d.ts +1 -1
  54. package/dist/components/MetricChart/types.d.ts +10 -5
  55. package/dist/components/NodeHostWrapper/NodeHostWrapper.js +1 -1
  56. package/dist/components/PDiskInfo/PDiskInfo.d.ts +11 -0
  57. package/dist/components/PDiskInfo/PDiskInfo.js +71 -0
  58. package/dist/components/PDiskInfo/PDiskInfo.scss +8 -0
  59. package/dist/components/PDiskInfo/i18n/en.json +14 -0
  60. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -0
  61. package/dist/components/PDiskInfo/i18n/index.js +4 -0
  62. package/dist/components/PageMeta/PageMeta.d.ts +8 -0
  63. package/dist/components/PageMeta/PageMeta.js +7 -0
  64. package/dist/components/PageMeta/PageMeta.scss +10 -0
  65. package/dist/components/ProgressViewer/ProgressViewer.d.ts +1 -1
  66. package/dist/components/QueryResultTable/Cell/Cell.js +2 -2
  67. package/dist/components/QueryResultTable/QueryResultTable.js +1 -11
  68. package/dist/components/ShortyString/ShortyString.d.ts +1 -1
  69. package/dist/components/StatusIcon/StatusIcon.d.ts +12 -0
  70. package/dist/components/StatusIcon/StatusIcon.js +23 -0
  71. package/dist/components/StatusIcon/StatusIcon.scss +69 -0
  72. package/dist/components/Tablet/Tablet.scss +1 -1
  73. package/dist/components/TabletsOverall/TabletsOverall.js +6 -6
  74. package/dist/components/TabletsStatistic/TabletsStatistic.d.ts +1 -1
  75. package/dist/components/TabletsStatistic/TabletsStatistic.scss +1 -1
  76. package/dist/components/Tag/Tag.d.ts +1 -1
  77. package/dist/components/UsageLabel/UsageLabel.js +1 -11
  78. package/dist/components/VirtualTable/TableHead.js +2 -2
  79. package/dist/components/VirtualTable/reducer.d.ts +2 -2
  80. package/dist/components/VirtualTable/types.d.ts +13 -13
  81. package/dist/components/slots/types.d.ts +1 -1
  82. package/dist/containers/App/App.d.ts +1 -1
  83. package/dist/containers/App/Content.js +10 -4
  84. package/dist/containers/App/Providers.d.ts +1 -1
  85. package/dist/containers/App/appSlots.d.ts +6 -0
  86. package/dist/containers/App/appSlots.js +1 -0
  87. package/dist/containers/AppWithClusters/AppWithClusters.d.ts +1 -1
  88. package/dist/containers/AppWithClusters/AppWithClusters.js +1 -1
  89. package/dist/containers/AsideNavigation/YdbInternalUser/YdbInternalUser.js +2 -3
  90. package/dist/containers/Authentication/Authentication.js +2 -5
  91. package/dist/containers/Cluster/Cluster.js +4 -5
  92. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +4 -4
  93. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.scss +4 -0
  94. package/dist/containers/Cluster/ClusterInfo/utils.d.ts +1 -1
  95. package/dist/containers/Cluster/utils.d.ts +2 -2
  96. package/dist/containers/Clusters/Clusters.js +2 -4
  97. package/dist/containers/Clusters/Clusters.scss +1 -1
  98. package/dist/containers/Clusters/constants.d.ts +1 -1
  99. package/dist/containers/Clusters/useClustersList.js +2 -2
  100. package/dist/containers/Clusters/useSelectedColumns.d.ts +1 -1
  101. package/dist/containers/Header/Header.js +4 -5
  102. package/dist/containers/Header/breadcrumbs.js +28 -5
  103. package/dist/containers/Header/i18n/en.json +7 -0
  104. package/dist/containers/Header/i18n/index.d.ts +1 -0
  105. package/dist/containers/Header/i18n/index.js +4 -0
  106. package/dist/containers/Heatmap/Heatmap.js +3 -4
  107. package/dist/containers/Heatmap/HeatmapCanvas/HeatmapCanvas.js +1 -1
  108. package/dist/containers/Node/Node.js +2 -3
  109. package/dist/containers/Node/NodeStructure/NodeStructure.d.ts +0 -1
  110. package/dist/containers/Node/NodeStructure/NodeStructure.js +2 -6
  111. package/dist/containers/Node/NodeStructure/Pdisk.js +9 -65
  112. package/dist/containers/Node/NodeStructure/Vdisk.d.ts +1 -1
  113. package/dist/containers/Node/NodeStructure/Vdisk.js +5 -3
  114. package/dist/containers/Nodes/Nodes.js +2 -3
  115. package/dist/containers/Nodes/NodesWrapper.js +1 -11
  116. package/dist/containers/Nodes/getNodes.js +1 -11
  117. package/dist/containers/Nodes/getNodesColumns.d.ts +1 -1
  118. package/dist/containers/PDisk/PDisk.d.ts +3 -0
  119. package/dist/containers/PDisk/PDisk.js +86 -0
  120. package/dist/containers/PDisk/PDisk.scss +42 -0
  121. package/dist/containers/PDisk/PDiskGroups.d.ts +10 -0
  122. package/dist/containers/PDisk/PDiskGroups.js +20 -0
  123. package/dist/containers/PDisk/i18n/en.json +8 -0
  124. package/dist/containers/PDisk/i18n/index.d.ts +1 -0
  125. package/dist/containers/PDisk/i18n/index.js +4 -0
  126. package/dist/containers/PDisk/shared.d.ts +10 -0
  127. package/dist/containers/PDisk/shared.js +2 -0
  128. package/dist/containers/ReduxTooltip/ReduxTooltip.d.ts +1 -1
  129. package/dist/containers/ReduxTooltip/ReduxTooltip.js +3 -2
  130. package/dist/containers/Storage/DiskStateProgressBar/DiskStateProgressBar.d.ts +1 -9
  131. package/dist/containers/Storage/DiskStateProgressBar/DiskStateProgressBar.js +2 -12
  132. package/dist/containers/Storage/PDisk/PDisk.d.ts +3 -3
  133. package/dist/containers/Storage/PDisk/PDisk.js +6 -53
  134. package/dist/containers/Storage/PDiskPopup/PDiskPopup.d.ts +3 -3
  135. package/dist/containers/Storage/PDiskPopup/PDiskPopup.js +3 -14
  136. package/dist/containers/Storage/Storage.js +2 -3
  137. package/dist/containers/Storage/StorageGroups/getGroups.js +1 -11
  138. package/dist/containers/Storage/StorageGroups/getStorageGroupsColumns.d.ts +2 -1
  139. package/dist/containers/Storage/StorageGroups/getStorageGroupsColumns.js +22 -8
  140. package/dist/containers/Storage/StorageNodes/getNodes.js +1 -11
  141. package/dist/containers/Storage/StorageNodes/getStorageNodesColumns.js +1 -1
  142. package/dist/containers/Storage/StorageWrapper.js +1 -11
  143. package/dist/containers/Storage/UsageFilter/UsageFilter.js +1 -1
  144. package/dist/containers/Storage/VDisk/VDisk.d.ts +2 -3
  145. package/dist/containers/Storage/VDisk/VDisk.js +4 -64
  146. package/dist/containers/Storage/VDiskPopup/VDiskPopup.js +2 -12
  147. package/dist/containers/Storage/VirtualStorage.js +2 -3
  148. package/dist/containers/Storage/utils/index.d.ts +1 -3
  149. package/dist/containers/Storage/utils/index.js +0 -6
  150. package/dist/containers/Tablet/Tablet.js +4 -5
  151. package/dist/containers/Tablet/TabletControls/TabletControls.d.ts +3 -2
  152. package/dist/containers/Tablet/TabletControls/TabletControls.js +2 -49
  153. package/dist/containers/Tablet/TabletTable/TabletTable.js +1 -1
  154. package/dist/containers/Tablets/Tablets.js +2 -3
  155. package/dist/containers/TabletsFilters/TabletsFilters.d.ts +2 -2
  156. package/dist/containers/Tenant/Acl/Acl.js +2 -3
  157. package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.js +2 -3
  158. package/dist/containers/Tenant/Diagnostics/Describe/Describe.js +3 -3
  159. package/dist/containers/Tenant/Diagnostics/Diagnostics.js +6 -4
  160. package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.d.ts +2 -2
  161. package/dist/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +2 -3
  162. package/dist/containers/Tenant/Diagnostics/Network/Network.d.ts +2 -2
  163. package/dist/containers/Tenant/Diagnostics/Network/NodeNetwork/NodeNetwork.d.ts +1 -1
  164. package/dist/containers/Tenant/Diagnostics/Network/NodeNetwork/NodeNetwork.js +7 -5
  165. package/dist/containers/Tenant/Diagnostics/Network/NodeNetwork/NodeNetwork.scss +1 -1
  166. package/dist/containers/Tenant/Diagnostics/Overview/Overview.js +9 -5
  167. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/prepareTableInfo.d.ts +1 -1
  168. package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.d.ts +1 -1
  169. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js +2 -3
  170. package/dist/containers/Tenant/Diagnostics/Partitions/columns/columns.js +1 -1
  171. package/dist/containers/Tenant/Diagnostics/Partitions/utils/index.d.ts +1 -1
  172. package/dist/containers/Tenant/Diagnostics/TenantOverview/DefaultOverviewContent/DefaultOverviewContent.d.ts +5 -1
  173. package/dist/containers/Tenant/Diagnostics/TenantOverview/DefaultOverviewContent/DefaultOverviewContent.js +2 -2
  174. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/Healthcheck.scss +0 -1
  175. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.d.ts +2 -2
  176. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.js +3 -2
  177. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTree.d.ts +2 -2
  178. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTree.js +3 -12
  179. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTreeItem/IssueTreeItem.d.ts +2 -1
  180. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTreeItem/IssueTreeItem.js +1 -1
  181. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.js +1 -1
  182. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js +2 -3
  183. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js +2 -3
  184. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +2 -3
  185. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +2 -3
  186. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/cpuDashboardConfig.js +11 -6
  187. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.d.ts +2 -1
  188. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js +2 -2
  189. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.js +1 -1
  190. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js +2 -3
  191. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +6 -7
  192. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.js +1 -11
  193. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.js +1 -1
  194. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +2 -3
  195. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +2 -3
  196. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/en.json +1 -1
  197. package/dist/containers/Tenant/Diagnostics/TenantOverview/useHealthcheck.d.ts +2 -2
  198. package/dist/containers/Tenant/Diagnostics/TenantOverview/useHealthcheck.js +3 -4
  199. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +2 -5
  200. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +2 -3
  201. package/dist/containers/Tenant/Info/ExternalDataSource/ExternalDataSource.js +1 -1
  202. package/dist/containers/Tenant/Info/ExternalTable/ExternalTable.js +3 -3
  203. package/dist/containers/Tenant/ObjectGeneral/ObjectGeneral.d.ts +1 -0
  204. package/dist/containers/Tenant/ObjectGeneral/ObjectGeneral.js +3 -2
  205. package/dist/containers/Tenant/ObjectSummary/ObjectSummary.js +2 -3
  206. package/dist/containers/Tenant/Query/ExecuteResult/ExecuteResult.js +2 -3
  207. package/dist/containers/Tenant/Query/ExplainResult/ExplainResult.js +3 -3
  208. package/dist/containers/Tenant/Query/Issues/models.d.ts +1 -1
  209. package/dist/containers/Tenant/Query/Preview/Preview.js +2 -3
  210. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.js +2 -3
  211. package/dist/containers/Tenant/Query/Query.js +2 -3
  212. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +3 -8
  213. package/dist/containers/Tenant/Query/QueryEditor/helpers.d.ts +4 -0
  214. package/dist/containers/Tenant/Query/QueryEditor/helpers.js +17 -0
  215. package/dist/containers/Tenant/Query/SaveQuery/SaveQuery.js +4 -4
  216. package/dist/containers/Tenant/Query/SavedQueries/SavedQueries.js +2 -2
  217. package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.js +5 -3
  218. package/dist/containers/Tenant/Tenant.js +24 -8
  219. package/dist/containers/Tenant/utils/index.d.ts +1 -1
  220. package/dist/containers/Tenant/utils/schema.d.ts +12 -12
  221. package/dist/containers/Tenant/utils/schemaActions.d.ts +1 -1
  222. package/dist/containers/Tenants/Tenants.js +3 -4
  223. package/dist/containers/UserSettings/Setting.d.ts +1 -1
  224. package/dist/containers/UserSettings/i18n/en.json +4 -0
  225. package/dist/containers/UserSettings/i18n/index.d.ts +1 -1
  226. package/dist/containers/UserSettings/settings.d.ts +4 -1
  227. package/dist/containers/UserSettings/settings.js +21 -6
  228. package/dist/containers/Versions/NodesTable/NodesTable.js +1 -1
  229. package/dist/containers/Versions/Versions.js +2 -3
  230. package/dist/reportWebVitals.d.ts +1 -1
  231. package/dist/routes.d.ts +5 -2
  232. package/dist/routes.js +6 -1
  233. package/dist/services/api.d.ts +9 -7
  234. package/dist/services/api.js +16 -13
  235. package/dist/services/settings.d.ts +1 -1
  236. package/dist/services/settings.js +2 -1
  237. package/dist/store/configureStore.d.ts +310 -0
  238. package/dist/store/configureStore.js +56 -0
  239. package/dist/store/defaultStore.d.ts +168 -0
  240. package/dist/store/defaultStore.js +2 -0
  241. package/dist/store/getUrlData.d.ts +3 -3
  242. package/dist/store/getUrlData.js +4 -4
  243. package/dist/store/index.d.ts +3 -97
  244. package/dist/store/index.js +2 -49
  245. package/dist/store/reducers/authentication/authentication.d.ts +247 -4
  246. package/dist/store/reducers/authentication/types.d.ts +1 -1
  247. package/dist/store/reducers/cluster/cluster.d.ts +83 -2
  248. package/dist/store/reducers/cluster/types.d.ts +3 -3
  249. package/dist/store/reducers/clusterNodes/clusterNodes.d.ts +83 -2
  250. package/dist/store/reducers/clusterNodes/types.d.ts +1 -1
  251. package/dist/store/reducers/clusters/clusters.d.ts +83 -2
  252. package/dist/store/reducers/clusters/selectors.d.ts +20 -6
  253. package/dist/store/reducers/clusters/selectors.js +1 -1
  254. package/dist/store/reducers/clusters/types.d.ts +1 -1
  255. package/dist/store/reducers/describe.d.ts +165 -3
  256. package/dist/store/reducers/describe.js +4 -3
  257. package/dist/store/reducers/executeQuery.d.ts +83 -2
  258. package/dist/store/reducers/executeTopQueries/executeTopQueries.d.ts +3 -3
  259. package/dist/store/reducers/executeTopQueries/types.d.ts +1 -1
  260. package/dist/store/reducers/explainQuery.d.ts +165 -3
  261. package/dist/store/reducers/header/header.d.ts +1 -1
  262. package/dist/store/reducers/header/types.d.ts +7 -4
  263. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +101 -0
  264. package/dist/store/reducers/{healthcheckInfo.js → healthcheckInfo/healthcheckInfo.js} +2 -2
  265. package/dist/store/reducers/healthcheckInfo/types.d.ts +19 -0
  266. package/dist/store/reducers/healthcheckInfo/utils.d.ts +3 -0
  267. package/dist/store/reducers/healthcheckInfo/utils.js +11 -0
  268. package/dist/store/reducers/heatmap.d.ts +83 -2
  269. package/dist/store/reducers/heatmap.js +2 -2
  270. package/dist/store/reducers/host.d.ts +83 -2
  271. package/dist/store/reducers/hotKeys/hotKeys.d.ts +1 -1
  272. package/dist/store/reducers/hotKeys/types.d.ts +1 -1
  273. package/dist/store/reducers/index.d.ts +95 -45
  274. package/dist/store/reducers/index.js +4 -2
  275. package/dist/store/reducers/network/network.d.ts +83 -2
  276. package/dist/store/reducers/network/types.d.ts +1 -1
  277. package/dist/store/reducers/node/node.d.ts +165 -3
  278. package/dist/store/reducers/node/selectors.d.ts +1 -1
  279. package/dist/store/reducers/node/selectors.js +5 -4
  280. package/dist/store/reducers/node/types.d.ts +6 -6
  281. package/dist/store/reducers/nodes/nodes.d.ts +165 -3
  282. package/dist/store/reducers/nodes/nodes.js +1 -11
  283. package/dist/store/reducers/nodes/selectors.d.ts +1 -1
  284. package/dist/store/reducers/nodes/selectors.js +1 -1
  285. package/dist/store/reducers/nodes/types.d.ts +4 -3
  286. package/dist/store/reducers/nodes/utils.d.ts +1 -1
  287. package/dist/store/reducers/nodesList.d.ts +83 -2
  288. package/dist/store/reducers/olapStats.d.ts +83 -2
  289. package/dist/store/reducers/overview/overview.d.ts +166 -4
  290. package/dist/store/reducers/overview/overview.js +3 -3
  291. package/dist/store/reducers/overview/types.d.ts +6 -5
  292. package/dist/store/reducers/partitions/partitions.d.ts +83 -2
  293. package/dist/store/reducers/partitions/types.d.ts +1 -1
  294. package/dist/store/reducers/partitions/utils.d.ts +2 -2
  295. package/dist/store/reducers/pdisk/pdisk.d.ts +210 -0
  296. package/dist/store/reducers/pdisk/pdisk.js +64 -0
  297. package/dist/store/reducers/pdisk/types.d.ts +23 -0
  298. package/dist/store/reducers/pdisk/types.js +1 -0
  299. package/dist/store/reducers/pdisk/utils.d.ts +32 -0
  300. package/dist/store/reducers/pdisk/utils.js +32 -0
  301. package/dist/store/reducers/preview.d.ts +82 -1
  302. package/dist/store/reducers/saveQuery.d.ts +3 -3
  303. package/dist/store/reducers/schema/schema.d.ts +84 -4
  304. package/dist/store/reducers/schema/schema.js +4 -4
  305. package/dist/store/reducers/schema/types.d.ts +3 -3
  306. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +83 -2
  307. package/dist/store/reducers/schemaAcl/types.d.ts +1 -1
  308. package/dist/store/reducers/settings/settings.d.ts +2 -2
  309. package/dist/store/reducers/settings/types.d.ts +3 -3
  310. package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +83 -2
  311. package/dist/store/reducers/shardsWorkload/types.d.ts +1 -1
  312. package/dist/store/reducers/storage/selectors.d.ts +1 -1
  313. package/dist/store/reducers/storage/selectors.js +1 -1
  314. package/dist/store/reducers/storage/storage.d.ts +165 -3
  315. package/dist/store/reducers/storage/storage.js +1 -11
  316. package/dist/store/reducers/storage/types.d.ts +10 -10
  317. package/dist/store/reducers/storage/utils.d.ts +4 -2
  318. package/dist/store/reducers/storage/utils.js +21 -15
  319. package/dist/store/reducers/tablet.d.ts +165 -3
  320. package/dist/store/reducers/tablet.js +1 -1
  321. package/dist/store/reducers/tablets.d.ts +83 -2
  322. package/dist/store/reducers/tabletsFilters.d.ts +101 -2
  323. package/dist/store/reducers/tabletsFilters.js +1 -1
  324. package/dist/store/reducers/tenant/tenant.d.ts +83 -2
  325. package/dist/store/reducers/tenant/types.d.ts +6 -6
  326. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +83 -2
  327. package/dist/store/reducers/tenantOverview/executeTopTables/types.d.ts +1 -1
  328. package/dist/store/reducers/tenantOverview/topNodesByCpu/topNodesByCpu.d.ts +83 -2
  329. package/dist/store/reducers/tenantOverview/topNodesByCpu/topNodesByCpu.js +1 -11
  330. package/dist/store/reducers/tenantOverview/topNodesByCpu/types.d.ts +2 -2
  331. package/dist/store/reducers/tenantOverview/topNodesByLoad/topNodesByLoad.d.ts +83 -2
  332. package/dist/store/reducers/tenantOverview/topNodesByLoad/topNodesByLoad.js +1 -11
  333. package/dist/store/reducers/tenantOverview/topNodesByLoad/types.d.ts +2 -2
  334. package/dist/store/reducers/tenantOverview/topNodesByMemory/topNodesByMemory.d.ts +83 -2
  335. package/dist/store/reducers/tenantOverview/topNodesByMemory/topNodesByMemory.js +1 -11
  336. package/dist/store/reducers/tenantOverview/topNodesByMemory/types.d.ts +2 -2
  337. package/dist/store/reducers/tenantOverview/topQueries/tenantOverviewTopQueries.d.ts +83 -2
  338. package/dist/store/reducers/tenantOverview/topQueries/types.d.ts +1 -1
  339. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +83 -2
  340. package/dist/store/reducers/tenantOverview/topShards/types.d.ts +1 -1
  341. package/dist/store/reducers/tenantOverview/topStorageGroups/topStorageGroups.d.ts +83 -2
  342. package/dist/store/reducers/tenantOverview/topStorageGroups/topStorageGroups.js +1 -11
  343. package/dist/store/reducers/tenantOverview/topStorageGroups/types.d.ts +2 -2
  344. package/dist/store/reducers/tenants/selectors.d.ts +2 -2
  345. package/dist/store/reducers/tenants/selectors.js +1 -1
  346. package/dist/store/reducers/tenants/tenants.d.ts +83 -2
  347. package/dist/store/reducers/tenants/types.d.ts +2 -2
  348. package/dist/store/reducers/tenants/utils.d.ts +6 -6
  349. package/dist/store/reducers/tooltip.d.ts +4 -3
  350. package/dist/store/reducers/tooltip.js +2 -4
  351. package/dist/store/reducers/topic.d.ts +83 -3
  352. package/dist/store/reducers/topic.js +1 -1
  353. package/dist/store/state-url-mapping.d.ts +5 -3
  354. package/dist/store/state-url-mapping.js +9 -18
  355. package/dist/store/utils.d.ts +4 -4
  356. package/dist/types/additionalProps.d.ts +2 -2
  357. package/dist/types/api/enums.d.ts +1 -0
  358. package/dist/types/api/enums.js +1 -0
  359. package/dist/types/api/error.d.ts +1 -1
  360. package/dist/types/api/nodes.d.ts +1 -1
  361. package/dist/types/api/nodesList.d.ts +1 -1
  362. package/dist/types/api/query.d.ts +19 -19
  363. package/dist/types/api/render.d.ts +6 -3
  364. package/dist/types/api/storage.d.ts +1 -1
  365. package/dist/types/api/tablet.d.ts +1 -1
  366. package/dist/types/common.d.ts +1 -1
  367. package/dist/types/index.d.ts +1 -1
  368. package/dist/types/store/describe.d.ts +3 -3
  369. package/dist/types/store/executeQuery.d.ts +2 -2
  370. package/dist/types/store/explainQuery.d.ts +3 -3
  371. package/dist/types/store/heatmap.d.ts +3 -3
  372. package/dist/types/store/host.d.ts +1 -1
  373. package/dist/types/store/nodesList.d.ts +2 -2
  374. package/dist/types/store/olapStats.d.ts +1 -1
  375. package/dist/types/store/query.d.ts +5 -5
  376. package/dist/types/store/tablet.d.ts +3 -3
  377. package/dist/types/store/tablets.d.ts +2 -2
  378. package/dist/types/store/tooltip.d.ts +3 -5
  379. package/dist/types/store/topic.d.ts +1 -1
  380. package/dist/types/versions.d.ts +2 -2
  381. package/dist/utils/additionalProps.d.ts +1 -1
  382. package/dist/utils/additionalProps.js +1 -1
  383. package/dist/utils/bytesParsers/formatBytes.d.ts +2 -2
  384. package/dist/utils/bytesParsers/formatBytes.js +1 -11
  385. package/dist/utils/clusterVersionColors.d.ts +1 -1
  386. package/dist/utils/clusterVersionColors.js +2 -2
  387. package/dist/utils/constants.d.ts +2 -1
  388. package/dist/utils/constants.js +5 -4
  389. package/dist/utils/dataFormatters/dataFormatters.d.ts +12 -11
  390. package/dist/utils/developerUI/developerUI.d.ts +1 -1
  391. package/dist/utils/diagnostics.d.ts +2 -2
  392. package/dist/utils/disks/__test__/calculatePDiskSeverity.test.d.ts +1 -0
  393. package/dist/utils/disks/__test__/calculatePDiskSeverity.test.js +36 -0
  394. package/dist/utils/disks/__test__/calculateVDiskSeverity.test.d.ts +1 -0
  395. package/dist/utils/disks/__test__/calculateVDiskSeverity.test.js +142 -0
  396. package/dist/utils/disks/calculatePDiskSeverity.d.ts +2 -0
  397. package/dist/utils/disks/calculatePDiskSeverity.js +18 -0
  398. package/dist/utils/disks/calculateVDiskSeverity.d.ts +2 -0
  399. package/dist/utils/disks/calculateVDiskSeverity.js +36 -0
  400. package/dist/utils/disks/constants.d.ts +25 -0
  401. package/dist/utils/disks/constants.js +38 -0
  402. package/dist/utils/disks/getPDiskType.d.ts +7 -0
  403. package/dist/utils/{pdisk.js → disks/getPDiskType.js} +13 -15
  404. package/dist/utils/disks/helpers.d.ts +3 -0
  405. package/dist/utils/disks/helpers.js +10 -0
  406. package/dist/utils/disks/prepareDisks.d.ts +5 -0
  407. package/dist/utils/disks/prepareDisks.js +40 -0
  408. package/dist/utils/disks/types.d.ts +15 -0
  409. package/dist/utils/disks/types.js +1 -0
  410. package/dist/utils/hooks/index.d.ts +1 -0
  411. package/dist/utils/hooks/index.js +1 -0
  412. package/dist/utils/hooks/useSetting.js +2 -2
  413. package/dist/utils/hooks/useTableResize.d.ts +3 -3
  414. package/dist/utils/hooks/useTableSort.d.ts +1 -1
  415. package/dist/utils/hooks/useTypedDispatch.d.ts +2 -0
  416. package/dist/utils/hooks/useTypedDispatch.js +2 -0
  417. package/dist/utils/hooks/useTypedSelector.d.ts +1 -1
  418. package/dist/utils/index.d.ts +1 -0
  419. package/dist/utils/index.js +3 -0
  420. package/dist/utils/monaco.d.ts +1 -0
  421. package/dist/utils/monaco.js +14 -0
  422. package/dist/utils/monitoring.d.ts +3 -3
  423. package/dist/utils/nodes.d.ts +2 -2
  424. package/dist/utils/prepareBackend.d.ts +2 -2
  425. package/dist/utils/query.d.ts +2 -2
  426. package/dist/utils/query.js +1 -11
  427. package/dist/utils/storage.d.ts +1 -3
  428. package/dist/utils/storage.js +0 -1
  429. package/dist/utils/tablet.d.ts +1 -1
  430. package/dist/utils/timeframes.d.ts +1 -1
  431. package/dist/utils/typecheckers.d.ts +1 -0
  432. package/dist/utils/versions/getVersionsColors.d.ts +1 -1
  433. package/dist/utils/versions/getVersionsColors.js +2 -2
  434. package/dist/utils/versions/parseNodesToVersionsValues.d.ts +1 -1
  435. package/dist/utils/yqlSuggestions/constants.d.ts +7 -0
  436. package/dist/utils/yqlSuggestions/constants.js +696 -0
  437. package/dist/utils/yqlSuggestions/generateSuggestions.d.ts +27 -0
  438. package/dist/utils/yqlSuggestions/generateSuggestions.js +252 -0
  439. package/dist/utils/yqlSuggestions/yqlSuggestions.d.ts +4 -0
  440. package/dist/utils/yqlSuggestions/yqlSuggestions.js +76 -0
  441. package/package.json +16 -11
  442. package/dist/assets/icons/flask.svg +0 -3
  443. package/dist/assets/icons/star.svg +0 -1
  444. package/dist/components/ExternalLinkWithIcon/ExternalLinkWithIcon.d.ts +0 -7
  445. package/dist/components/ExternalLinkWithIcon/ExternalLinkWithIcon.js +0 -9
  446. package/dist/containers/Cluster/ClusterInfoSkeleton/ClusterInfoSkeleton.d.ts +0 -7
  447. package/dist/containers/Cluster/ClusterInfoSkeleton/ClusterInfoSkeleton.js +0 -7
  448. package/dist/containers/Storage/utils/constants.d.ts +0 -2
  449. package/dist/containers/Storage/utils/constants.js +0 -2
  450. package/dist/store/reducers/healthcheckInfo.d.ts +0 -21
  451. package/dist/types/store/healthcheck.d.ts +0 -20
  452. package/dist/utils/pdisk.d.ts +0 -17
  453. /package/dist/{types/store/healthcheck.js → store/reducers/healthcheckInfo/types.js} +0 -0
@@ -2,7 +2,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
2
2
  import cn from 'bem-cn-lite';
3
3
  import './InfoViewer.scss';
4
4
  const b = cn('info-viewer');
5
- const InfoViewer = ({ title, info, dots = true, size, className, multilineLabels, renderEmptyState, }) => {
5
+ export const InfoViewer = ({ title, info, dots = true, size, className, multilineLabels, renderEmptyState, }) => {
6
6
  if ((!info || !info.length) && renderEmptyState) {
7
7
  return _jsx(_Fragment, { children: renderEmptyState({ title, size }) });
8
8
  }
@@ -1,5 +1,5 @@
1
1
  import { TCdcStreamDescription } from '../../../types/api/schema';
2
2
  export declare const formatCdcStreamItem: <Key extends keyof TCdcStreamDescription>(label: Key, value: TCdcStreamDescription[Key]) => {
3
3
  label: string;
4
- value: import("react").ReactNode;
4
+ value: {} | TCdcStreamDescription[Key] | null | undefined;
5
5
  };
@@ -1,5 +1,5 @@
1
1
  import type { TDirEntry } from '../../../types/api/schema';
2
2
  export declare const formatCommonItem: <Key extends keyof TDirEntry>(label: Key, value: TDirEntry[Key]) => {
3
3
  label: string;
4
- value: import("react").ReactNode;
4
+ value: {} | TDirEntry[Key] | null | undefined;
5
5
  };
@@ -1,13 +1,13 @@
1
1
  import { TPersQueueGroupDescription, TPQPartitionConfig, TPQTabletConfig } from '../../../types/api/schema';
2
2
  export declare const formatPQGroupItem: <Key extends keyof TPersQueueGroupDescription>(label: Key, value: TPersQueueGroupDescription[Key]) => {
3
3
  label: string;
4
- value: import("react").ReactNode;
4
+ value: {} | TPersQueueGroupDescription[Key] | null | undefined;
5
5
  };
6
6
  export declare const formatPQTabletConfig: <Key extends keyof TPQTabletConfig>(label: Key, value: TPQTabletConfig[Key]) => {
7
7
  label: string;
8
- value: import("react").ReactNode;
8
+ value: {} | TPQTabletConfig[Key] | null | undefined;
9
9
  };
10
10
  export declare const formatPQPartitionConfig: <Key extends keyof TPQPartitionConfig>(label: Key, value: TPQPartitionConfig[Key]) => {
11
11
  label: string;
12
- value: import("react").ReactNode;
12
+ value: {} | TPQPartitionConfig[Key] | null | undefined;
13
13
  };
@@ -1,5 +1,5 @@
1
1
  import type { TIndexDescription } from '../../../types/api/schema';
2
2
  export declare const formatTableIndexItem: <Key extends keyof TIndexDescription>(label: Key, value: TIndexDescription[Key]) => {
3
3
  label: string;
4
- value: import("react").ReactNode;
4
+ value: {} | TIndexDescription[Key] | null | undefined;
5
5
  };
@@ -2,17 +2,17 @@ import type { TFollowerGroup, TPartitionConfig, TTableStats } from '../../../typ
2
2
  import type { TMetrics } from '../../../types/api/tenant';
3
3
  export declare const formatTabletMetricsItem: <Key extends keyof TMetrics>(label: Key, value: TMetrics[Key]) => {
4
4
  label: string;
5
- value: import("react").ReactNode;
5
+ value: {} | TMetrics[Key] | null | undefined;
6
6
  };
7
7
  export declare const formatFollowerGroupItem: <Key extends keyof TFollowerGroup>(label: Key, value: TFollowerGroup[Key]) => {
8
8
  label: string;
9
- value: import("react").ReactNode;
9
+ value: {} | TFollowerGroup[Key] | null | undefined;
10
10
  };
11
11
  export declare const formatPartitionConfigItem: <Key extends keyof TPartitionConfig>(label: Key, value: TPartitionConfig[Key]) => {
12
12
  label: string;
13
- value: import("react").ReactNode;
13
+ value: {} | TPartitionConfig[Key] | null | undefined;
14
14
  };
15
15
  export declare const formatTableStatsItem: <Key extends keyof TTableStats>(label: Key, value: TTableStats[Key]) => {
16
16
  label: string;
17
- value: import("react").ReactNode;
17
+ value: {} | TTableStats[Key] | null | undefined;
18
18
  };
@@ -1,9 +1,9 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import { InfoViewerItem } from './InfoViewer';
3
- declare type LabelMap<T> = {
3
+ type LabelMap<T> = {
4
4
  [label in keyof T]?: string;
5
5
  };
6
- declare type ValueFormatters<T> = {
6
+ type ValueFormatters<T> = {
7
7
  [label in keyof T]?: (value: T[label]) => ReactNode;
8
8
  };
9
9
  interface CreateInfoFormatterOptions<Shape> {
@@ -13,7 +13,7 @@ interface CreateInfoFormatterOptions<Shape> {
13
13
  }
14
14
  export declare function createInfoFormatter<Shape extends Record<string, any>>({ values: valueFormatters, labels: labelMap, defaultValueFormatter, }: CreateInfoFormatterOptions<Shape>): <Key extends keyof Shape>(label: Key, value: Shape[Key]) => {
15
15
  label: keyof Shape | NonNullable<LabelMap<Shape>[keyof Shape]>;
16
- value: ReactNode;
16
+ value: {} | Shape[Key] | null | undefined;
17
17
  };
18
18
  export declare const formatObject: <Shape extends Record<string, any>>(formatter: <Key extends keyof Shape>(value: Key, label: Shape[Key]) => InfoViewerItem, obj?: Partial<Shape> | undefined) => InfoViewerItem[];
19
19
  export {};
@@ -0,0 +1,7 @@
1
+ import './InfoViewerSkeleton.scss';
2
+ interface InfoViewerSkeletonProps {
3
+ className?: string;
4
+ rows?: number;
5
+ }
6
+ export declare const InfoViewerSkeleton: ({ rows, className }: InfoViewerSkeletonProps) => JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import block from 'bem-cn-lite';
3
+ import { Skeleton } from '@gravity-ui/uikit';
4
+ import './InfoViewerSkeleton.scss';
5
+ const b = block('ydb-info-viewer-skeleton');
6
+ const SkeletonLabel = () => (_jsxs("div", Object.assign({ className: b('label') }, { children: [_jsx(Skeleton, { className: b('label__text') }), _jsx("div", { className: b('label__dots') })] })));
7
+ export const InfoViewerSkeleton = ({ rows = 8, className }) => (_jsx("div", Object.assign({ className: b(null, className) }, { children: [...new Array(rows)].map((_, index) => (_jsxs("div", Object.assign({ className: b('row') }, { children: [_jsx(SkeletonLabel, {}), _jsx(Skeleton, { className: b('value') })] }), `skeleton-row-${index}`))) })));
@@ -1,10 +1,8 @@
1
- .ydb-cluster-info-skeleton {
1
+ .ydb-info-viewer-skeleton {
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  gap: 16px;
5
5
 
6
- margin-top: 5px;
7
-
8
6
  &__row {
9
7
  display: flex;
10
8
  align-items: flex-start;
@@ -39,10 +37,4 @@
39
37
  min-width: 200px;
40
38
  max-width: 20%;
41
39
  }
42
-
43
- &__versions {
44
- min-width: 400px;
45
- max-width: 40%;
46
- height: 36px;
47
- }
48
40
  }
@@ -1,14 +1,4 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
1
+ import { __rest } from "tslib";
12
2
  import { jsx as _jsx } from "react/jsx-runtime";
13
3
  import { Link } from 'react-router-dom';
14
4
  import cn from 'bem-cn-lite';
@@ -1,14 +1,4 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
1
+ import { __rest } from "tslib";
12
2
  import { jsx as _jsx } from "react/jsx-runtime";
13
3
  import { Link } from '@gravity-ui/uikit';
14
4
  import { createExternalUILink, parseQuery } from '../../routes';
@@ -0,0 +1,8 @@
1
+ import './LinkWithIcon.scss';
2
+ interface ExternalLinkWithIconProps {
3
+ title: string;
4
+ url: string;
5
+ external?: boolean;
6
+ }
7
+ export declare const LinkWithIcon: ({ title, url, external }: ExternalLinkWithIconProps) => JSX.Element;
8
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import block from 'bem-cn-lite';
3
+ import { Link } from '@gravity-ui/uikit';
4
+ import { ArrowUpRightFromSquare } from '@gravity-ui/icons';
5
+ import { InternalLink } from '../InternalLink';
6
+ import './LinkWithIcon.scss';
7
+ const b = block('ydb-link-with-icon');
8
+ export const LinkWithIcon = ({ title, url, external = true }) => {
9
+ const linkContent = (_jsxs(_Fragment, { children: [title, '\u00a0', _jsx(ArrowUpRightFromSquare, {})] }));
10
+ if (external) {
11
+ return (_jsx(Link, Object.assign({ href: url, target: "_blank", className: b() }, { children: linkContent })));
12
+ }
13
+ return (_jsx(InternalLink, Object.assign({ to: url, className: b() }, { children: linkContent })));
14
+ };
@@ -1,4 +1,4 @@
1
- .ydb-external-link-with-icon {
1
+ .ydb-link-with-icon {
2
2
  display: flex;
3
3
  flex-wrap: nowrap;
4
4
  align-items: center;
@@ -2,6 +2,7 @@ import type { TimeFrame } from '../../utils/timeframes';
2
2
  import type { ChartOptions, MetricDescription, OnChartDataStatusChange } from './types';
3
3
  import './MetricChart.scss';
4
4
  interface DiagnosticsChartProps {
5
+ database: string;
5
6
  title?: string;
6
7
  metrics: MetricDescription[];
7
8
  timeFrame?: TimeFrame;
@@ -17,5 +18,5 @@ interface DiagnosticsChartProps {
17
18
  */
18
19
  isChartVisible?: boolean;
19
20
  }
20
- export declare const MetricChart: ({ title, metrics, timeFrame, autorefresh, width, height, chartOptions, onChartDataStatusChange, isChartVisible, }: DiagnosticsChartProps) => JSX.Element;
21
+ export declare const MetricChart: ({ database, title, metrics, timeFrame, autorefresh, width, height, chartOptions, onChartDataStatusChange, isChartVisible, }: DiagnosticsChartProps) => JSX.Element;
21
22
  export {};
@@ -3,7 +3,6 @@ import { useCallback, useEffect, useReducer, useRef } from 'react';
3
3
  import { YagrPlugin } from '@gravity-ui/chartkit/yagr';
4
4
  import ChartKit, { settings } from '@gravity-ui/chartkit';
5
5
  import { useAutofetcher } from '../../utils/hooks';
6
- import { COLORS } from '../../utils/versions';
7
6
  import { cn } from '../../utils/cn';
8
7
  import { Loader } from '../Loader';
9
8
  import { ResponseError } from '../Errors/ResponseError';
@@ -11,6 +10,8 @@ import { convertResponse } from './convertReponse';
11
10
  import { getDefaultDataFormatter } from './getDefaultDataFormatter';
12
11
  import { getChartData } from './getChartData';
13
12
  import { chartReducer, initialChartState, setChartData, setChartDataLoading, setChartDataWasNotLoaded, setChartError, } from './reducer';
13
+ import { colorToRGBA, colors } from './colors';
14
+ import i18n from './i18n';
14
15
  import './MetricChart.scss';
15
16
  const b = cn('ydb-metric-chart');
16
17
  settings.set({ plugins: [YagrPlugin] });
@@ -19,12 +20,16 @@ const prepareWidgetData = (data, options = {}) => {
19
20
  const defaultDataFormatter = getDefaultDataFormatter(dataType);
20
21
  const isDataEmpty = !data.metrics.length;
21
22
  const graphs = data.metrics.map((metric, index) => {
23
+ const lineColor = metric.color || colors[index];
24
+ const color = colorToRGBA(lineColor, 0.1);
22
25
  return {
23
26
  id: metric.target,
24
27
  name: metric.title || metric.target,
25
- color: metric.color || COLORS[index],
26
28
  data: metric.data,
27
29
  formatter: defaultDataFormatter,
30
+ lineColor,
31
+ color,
32
+ legendColorKey: 'lineColor',
28
33
  };
29
34
  });
30
35
  return {
@@ -40,7 +45,8 @@ const prepareWidgetData = (data, options = {}) => {
40
45
  padding: isDataEmpty ? [10, 0, 10, 0] : undefined,
41
46
  },
42
47
  series: {
43
- type: 'line',
48
+ type: 'area',
49
+ lineWidth: 1.5,
44
50
  },
45
51
  select: {
46
52
  zoom: false,
@@ -66,7 +72,7 @@ const prepareWidgetData = (data, options = {}) => {
66
72
  },
67
73
  };
68
74
  };
69
- export const MetricChart = ({ title, metrics, timeFrame = '1h', autorefresh, width = 400, height = width / 1.5, chartOptions, onChartDataStatusChange, isChartVisible, }) => {
75
+ export const MetricChart = ({ database, title, metrics, timeFrame = '1h', autorefresh, width = 400, height = width / 1.5, chartOptions, onChartDataStatusChange, isChartVisible, }) => {
70
76
  const mounted = useRef(false);
71
77
  useEffect(() => {
72
78
  mounted.current = true;
@@ -97,6 +103,7 @@ export const MetricChart = ({ title, metrics, timeFrame = '1h', autorefresh, wid
97
103
  // should be width > maxDataPoints to prevent points that cannot be selected
98
104
  // more px per dataPoint - easier to select, less - chart is smoother
99
105
  const response = await getChartData({
106
+ database,
100
107
  metrics,
101
108
  timeFrame,
102
109
  maxDataPoints: width / 2,
@@ -105,7 +112,8 @@ export const MetricChart = ({ title, metrics, timeFrame = '1h', autorefresh, wid
105
112
  if (!mounted.current) {
106
113
  return;
107
114
  }
108
- // In some cases error could be in response with 200 status code
115
+ // Response could be a plain html for ydb versions without charts support
116
+ // Or there could be an error in response with 200 status code
109
117
  // It happens when request is OK, but chart data cannot be returned due to some reason
110
118
  // Example: charts are not enabled in the DB ('GraphShard is not enabled' error)
111
119
  if (Array.isArray(response)) {
@@ -113,7 +121,9 @@ export const MetricChart = ({ title, metrics, timeFrame = '1h', autorefresh, wid
113
121
  dispatch(setChartData(preparedData));
114
122
  }
115
123
  else {
116
- const err = { statusText: response.error };
124
+ const err = {
125
+ statusText: typeof response === 'string' ? i18n('not-supported') : response.error,
126
+ };
117
127
  throw err;
118
128
  }
119
129
  }
@@ -123,7 +133,7 @@ export const MetricChart = ({ title, metrics, timeFrame = '1h', autorefresh, wid
123
133
  }
124
134
  dispatch(setChartError(err));
125
135
  }
126
- }, [metrics, timeFrame, width]);
136
+ }, [database, metrics, timeFrame, width]);
127
137
  useAutofetcher(fetchChartData, [fetchChartData], autorefresh);
128
138
  const convertedData = prepareWidgetData(data, chartOptions);
129
139
  const renderContent = () => {
@@ -0,0 +1,2 @@
1
+ export declare const colors: string[];
2
+ export declare function colorToRGBA(initialColor: string, opacity: number): string;
@@ -0,0 +1,21 @@
1
+ import { colord } from 'colord';
2
+ // Grafana classic palette
3
+ export const colors = [
4
+ '#7EB26D',
5
+ '#EAB839',
6
+ '#6ED0E0',
7
+ '#EF843C',
8
+ '#E24D42',
9
+ '#1F78C1',
10
+ '#BA43A9',
11
+ '#705DA0',
12
+ '#508642',
13
+ '#CCA300', // 9: dark sand
14
+ ];
15
+ export function colorToRGBA(initialColor, opacity) {
16
+ const color = colord(initialColor);
17
+ if (!color.isValid()) {
18
+ throw new Error('Invalid color is passed');
19
+ }
20
+ return color.alpha(opacity).toRgbString();
21
+ }
@@ -1,9 +1,10 @@
1
1
  import { type TimeFrame } from '../../utils/timeframes';
2
2
  import type { MetricDescription } from './types';
3
3
  interface GetChartDataParams {
4
+ database: string;
4
5
  metrics: MetricDescription[];
5
6
  timeFrame: TimeFrame;
6
7
  maxDataPoints: number;
7
8
  }
8
- export declare const getChartData: ({ metrics, timeFrame, maxDataPoints }: GetChartDataParams) => Promise<import("../../types/api/render").JsonRenderResponse>;
9
+ export declare const getChartData: ({ database, metrics, timeFrame, maxDataPoints, }: GetChartDataParams) => Promise<import("../../types/api/render").JsonRenderResponse>;
9
10
  export {};
@@ -1,7 +1,7 @@
1
1
  import { TIMEFRAMES } from '../../utils/timeframes';
2
- export const getChartData = async ({ metrics, timeFrame, maxDataPoints }) => {
2
+ export const getChartData = async ({ database, metrics, timeFrame, maxDataPoints, }) => {
3
3
  const targetString = metrics.map((metric) => `target=${metric.target}`).join('&');
4
4
  const until = Math.round(Date.now() / 1000);
5
5
  const from = until - TIMEFRAMES[timeFrame];
6
- return window.api.getChartData({ target: targetString, from, until, maxDataPoints }, { concurrentId: `getChartData|${targetString}` });
6
+ return window.api.getChartData({ target: targetString, from, until, maxDataPoints, database }, { concurrentId: `getChartData|${targetString}` });
7
7
  };
@@ -1,4 +1,4 @@
1
1
  import type { ChartDataType, ChartValue } from './types';
2
- export declare const getDefaultDataFormatter: (dataType?: ChartDataType | undefined) => typeof formatChartValueToMs | undefined;
2
+ export declare const getDefaultDataFormatter: (dataType?: ChartDataType) => typeof formatChartValueToMs | undefined;
3
3
  declare function formatChartValueToMs(value: ChartValue): string;
4
4
  export {};
@@ -11,6 +11,9 @@ export const getDefaultDataFormatter = (dataType) => {
11
11
  case 'size': {
12
12
  return formatChartValueToSize;
13
13
  }
14
+ case 'percent': {
15
+ return formatChartValueToPercent;
16
+ }
14
17
  default:
15
18
  return undefined;
16
19
  }
@@ -29,6 +32,12 @@ function formatChartValueToSize(value) {
29
32
  }
30
33
  return formatBytes({ value: convertToNumber(value), precision: 3 });
31
34
  }
35
+ function formatChartValueToPercent(value) {
36
+ if (value === null) {
37
+ return EMPTY_DATA_PLACEHOLDER;
38
+ }
39
+ return Math.round(convertToNumber(value) * 100) + '%';
40
+ }
32
41
  // Numeric values expected, not numeric value should be displayd as 0
33
42
  function convertToNumber(value) {
34
43
  if (isNumeric(value)) {
@@ -0,0 +1,3 @@
1
+ {
2
+ "not-supported": "Charts are not supported on current ydb version"
3
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: (key: "not-supported", params?: import("@gravity-ui/i18n").Params | undefined) => string;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { registerKeysets } from '../../../utils/i18n';
2
+ import en from './en.json';
3
+ const COMPONENT = 'ydb-metric-chart';
4
+ export default registerKeysets(COMPONENT, { en });
@@ -14,7 +14,7 @@ export declare const setChartError: (error: IResponseError) => {
14
14
  export declare const setChartDataWasNotLoaded: () => {
15
15
  readonly type: "chart/SET_DATA_WAS_NOT_LOADED";
16
16
  };
17
- declare type ChartAction = ReturnType<typeof setChartDataLoading> | ReturnType<typeof setChartData> | ReturnType<typeof setChartError> | ReturnType<typeof setChartDataWasNotLoaded>;
17
+ type ChartAction = ReturnType<typeof setChartDataLoading> | ReturnType<typeof setChartData> | ReturnType<typeof setChartError> | ReturnType<typeof setChartDataWasNotLoaded>;
18
18
  interface ChartState {
19
19
  loading: boolean;
20
20
  wasLoaded: boolean;
@@ -1,4 +1,8 @@
1
- export declare type Metric = 'queries.requests' | 'queries.latencies.p50' | 'queries.latencies.p75' | 'queries.latencies.p90' | 'queries.latencies.p99' | 'resources.cpu.usage' | 'resources.memory.used_bytes' | 'resources.storage.used_bytes';
1
+ import type { PoolName } from '../../types/api/nodes';
2
+ type Percentile = 'p50' | 'p75' | 'p90' | 'p99';
3
+ type QueriesLatenciesMetric = `queries.latencies.${Percentile}`;
4
+ type PoolUsageMetric = `resources.cpu.${PoolName}.usage`;
5
+ export type Metric = 'queries.requests' | 'resources.memory.used_bytes' | 'resources.storage.used_bytes' | 'resources.cpu.usage' | PoolUsageMetric | QueriesLatenciesMetric;
2
6
  export interface MetricDescription {
3
7
  target: Metric;
4
8
  title?: string;
@@ -11,10 +15,11 @@ export interface PreparedMetricsData {
11
15
  timeline: number[];
12
16
  metrics: PreparedMetric[];
13
17
  }
14
- export declare type ChartValue = number | string | null;
15
- export declare type ChartDataType = 'ms' | 'size';
18
+ export type ChartValue = number | string | null;
19
+ export type ChartDataType = 'ms' | 'size' | 'percent';
16
20
  export interface ChartOptions {
17
21
  dataType?: ChartDataType;
18
22
  }
19
- export declare type ChartDataStatus = 'loading' | 'success' | 'error';
20
- export declare type OnChartDataStatusChange = (newStatus: ChartDataStatus) => void;
23
+ export type ChartDataStatus = 'loading' | 'success' | 'error';
24
+ export type OnChartDataStatusChange = (newStatus: ChartDataStatus) => void;
25
+ export {};
@@ -3,7 +3,7 @@ import block from 'bem-cn-lite';
3
3
  import { Button, PopoverBehavior } from '@gravity-ui/uikit';
4
4
  import { getDefaultNodePath } from '../../containers/Node/NodePages';
5
5
  import { isUnavailableNode } from '../../utils/nodes';
6
- import EntityStatus from '../EntityStatus/EntityStatus';
6
+ import { EntityStatus } from '../EntityStatus/EntityStatus';
7
7
  import { NodeEndpointsTooltipContent } from '../TooltipsContent';
8
8
  import { Icon } from '../Icon';
9
9
  import { CellWithPopover } from '../CellWithPopover/CellWithPopover';
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import type { PreparedPDisk } from '../../utils/disks/types';
3
+ import { type InfoViewerProps } from '../InfoViewer/InfoViewer';
4
+ import './PDiskInfo.scss';
5
+ interface PDiskInfoProps<T extends PreparedPDisk> extends Omit<InfoViewerProps, 'info'> {
6
+ pDisk: T;
7
+ nodeId?: number | string | null;
8
+ isPDiskPage?: boolean;
9
+ }
10
+ export declare function PDiskInfo<T extends PreparedPDisk>({ pDisk, nodeId, isPDiskPage, ...infoViewerProps }: PDiskInfoProps<T>): JSX.Element;
11
+ export {};
@@ -0,0 +1,71 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { createPDiskDeveloperUILink } from '../../utils/developerUI/developerUI';
4
+ import { cn } from '../../utils/cn';
5
+ import { formatStorageValuesToGb } from '../../utils/dataFormatters/dataFormatters';
6
+ import { valueIsDefined } from '../../utils';
7
+ import { EMPTY_DATA_PLACEHOLDER } from '../../utils/constants';
8
+ import { getPDiskPagePath } from '../../routes';
9
+ import { InfoViewer } from '../InfoViewer/InfoViewer';
10
+ import { EntityStatus } from '../EntityStatus/EntityStatus';
11
+ import { LinkWithIcon } from '../LinkWithIcon/LinkWithIcon';
12
+ import { ProgressViewer } from '../ProgressViewer/ProgressViewer';
13
+ import { pDiskInfoKeyset } from './i18n';
14
+ import './PDiskInfo.scss';
15
+ const b = cn('ydb-pdisk-info');
16
+ export function PDiskInfo(_a) {
17
+ var { pDisk, nodeId, isPDiskPage = false } = _a, infoViewerProps = __rest(_a, ["pDisk", "nodeId", "isPDiskPage"]);
18
+ const { PDiskId, Path, Guid, Category, Type, Device, Realtime, State, SerialNumber, TotalSize, AvailableSize, } = pDisk;
19
+ const total = Number(TotalSize);
20
+ const available = Number(AvailableSize);
21
+ const pdiskInfo = [];
22
+ if (valueIsDefined(Path)) {
23
+ pdiskInfo.push({ label: pDiskInfoKeyset('path'), value: Path });
24
+ }
25
+ if (valueIsDefined(Guid)) {
26
+ pdiskInfo.push({ label: pDiskInfoKeyset('guid'), value: Guid });
27
+ }
28
+ if (valueIsDefined(Category)) {
29
+ pdiskInfo.push({ label: pDiskInfoKeyset('category'), value: Category });
30
+ pdiskInfo.push({ label: pDiskInfoKeyset('type'), value: Type });
31
+ }
32
+ if (total >= 0 && available >= 0) {
33
+ pdiskInfo.push({
34
+ label: pDiskInfoKeyset('size'),
35
+ value: (_jsx(ProgressViewer, { value: total - available, capacity: total, formatValues: formatStorageValuesToGb, colorizeProgress: true })),
36
+ });
37
+ }
38
+ if (valueIsDefined(State)) {
39
+ pdiskInfo.push({ label: pDiskInfoKeyset('state'), value: State });
40
+ }
41
+ if (valueIsDefined(Device)) {
42
+ pdiskInfo.push({
43
+ label: pDiskInfoKeyset('device'),
44
+ value: _jsx(EntityStatus, { status: Device }),
45
+ });
46
+ }
47
+ if (valueIsDefined(Realtime)) {
48
+ pdiskInfo.push({
49
+ label: pDiskInfoKeyset('realtime'),
50
+ value: _jsx(EntityStatus, { status: Realtime }),
51
+ });
52
+ }
53
+ if (valueIsDefined(SerialNumber)) {
54
+ pdiskInfo.push({
55
+ label: pDiskInfoKeyset('serial-number'),
56
+ value: SerialNumber || EMPTY_DATA_PLACEHOLDER,
57
+ });
58
+ }
59
+ if (valueIsDefined(PDiskId) && valueIsDefined(nodeId)) {
60
+ const pDiskPagePath = getPDiskPagePath(PDiskId, nodeId);
61
+ const pDiskInternalViewerPath = createPDiskDeveloperUILink({
62
+ nodeId,
63
+ pDiskId: PDiskId,
64
+ });
65
+ pdiskInfo.push({
66
+ label: pDiskInfoKeyset('links'),
67
+ value: (_jsxs("span", Object.assign({ className: b('links') }, { children: [!isPDiskPage && (_jsx(LinkWithIcon, { title: pDiskInfoKeyset('pdisk-page'), url: pDiskPagePath, external: false })), _jsx(LinkWithIcon, { title: pDiskInfoKeyset('developer-ui'), url: pDiskInternalViewerPath })] }))),
68
+ });
69
+ }
70
+ return _jsx(InfoViewer, Object.assign({ info: pdiskInfo }, infoViewerProps));
71
+ }
@@ -0,0 +1,8 @@
1
+ .ydb-pdisk-info {
2
+ &__links {
3
+ display: flex;
4
+ flex-flow: row wrap;
5
+
6
+ gap: 12px;
7
+ }
8
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "path": "Path",
3
+ "guid": "GUID",
4
+ "category": "Category",
5
+ "type": "Type",
6
+ "size": "Size",
7
+ "state": "State",
8
+ "device": "Device",
9
+ "realtime": "Realtime",
10
+ "serial-number": "SerialNumber",
11
+ "links": "Links",
12
+ "developer-ui": "Developer UI",
13
+ "pdisk-page": "PDisk page"
14
+ }
@@ -0,0 +1 @@
1
+ export declare const pDiskInfoKeyset: (key: "path" | "type" | "state" | "size" | "links" | "guid" | "category" | "device" | "realtime" | "serial-number" | "developer-ui" | "pdisk-page", params?: import("@gravity-ui/i18n").Params | undefined) => string;
@@ -0,0 +1,4 @@
1
+ import { registerKeysets } from '../../../utils/i18n';
2
+ import en from './en.json';
3
+ const COMPONENT = 'ydb-pDisk-info';
4
+ export const pDiskInfoKeyset = registerKeysets(COMPONENT, { en });
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import './PageMeta.scss';
3
+ interface PageMetaProps {
4
+ items: (string | undefined)[];
5
+ className?: string;
6
+ }
7
+ export declare function PageMeta({ items, className }: PageMetaProps): JSX.Element;
8
+ export {};
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../utils/cn';
3
+ import './PageMeta.scss';
4
+ const b = cn('ydb-page-meta');
5
+ export function PageMeta({ items, className }) {
6
+ return (_jsx("div", Object.assign({ className: b(null, className) }, { children: items.filter((item) => Boolean(item)).join('\u00a0\u00a0\u00B7\u00a0\u00a0') })));
7
+ }
@@ -0,0 +1,10 @@
1
+ @import '../../styles//mixins.scss';
2
+
3
+ .ydb-page-meta {
4
+ display: flex;
5
+ flex-flow: row nowrap;
6
+
7
+ color: var(--g-color-text-primary);
8
+
9
+ @include body-2-typography();
10
+ }
@@ -10,7 +10,7 @@ export declare const PROGRESS_VIEWER_SIZE_IDS: {
10
10
  readonly l: "l";
11
11
  readonly head: "head";
12
12
  };
13
- declare type ProgressViewerSize = ValueOf<typeof PROGRESS_VIEWER_SIZE_IDS>;
13
+ type ProgressViewerSize = ValueOf<typeof PROGRESS_VIEWER_SIZE_IDS>;
14
14
  interface ProgressViewerProps {
15
15
  value?: number | string;
16
16
  capacity?: number | string;
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React, { useEffect } from 'react';
3
- import { useDispatch } from 'react-redux';
3
+ import { useTypedDispatch } from '../../../utils/hooks';
4
4
  import { showTooltip, hideTooltip } from '../../../store/reducers/tooltip';
5
5
  import { b } from '../QueryResultTable';
6
6
  export const Cell = React.memo(function Cell(props) {
7
7
  const { className, value } = props;
8
- const dispatch = useDispatch();
8
+ const dispatch = useTypedDispatch();
9
9
  useEffect(() => () => {
10
10
  dispatch(hideTooltip());
11
11
  }, [dispatch]);