ydb-embedded-ui 18.3.2 → 18.4.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 (383) hide show
  1. package/README.md +5 -4
  2. package/dist/components/ConfirmationDialog/ConfirmationDialog.d.ts +1 -0
  3. package/dist/components/ConfirmationDialog/ConfirmationDialog.js +3 -2
  4. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  5. package/dist/components/DiskCapacityInfo/DiskCapacityInfo.d.ts +21 -0
  6. package/dist/components/DiskCapacityInfo/DiskCapacityInfo.js +129 -0
  7. package/dist/components/DiskCapacityInfo/DiskCapacityInfo.js.map +1 -0
  8. package/dist/components/DiskCapacityInfo/i18n/en.json +7 -0
  9. package/dist/components/DiskCapacityInfo/i18n/index.d.ts +2 -0
  10. package/dist/components/DiskCapacityInfo/i18n/index.js +5 -0
  11. package/dist/components/DiskCapacityInfo/i18n/index.js.map +1 -0
  12. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.d.ts +8 -1
  13. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js +24 -14
  14. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js.map +1 -1
  15. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.scss +144 -0
  16. package/dist/components/HelpMarkWithDocs/HelpMarkWithDocs.d.ts +9 -0
  17. package/dist/components/HelpMarkWithDocs/HelpMarkWithDocs.js +8 -0
  18. package/dist/components/HelpMarkWithDocs/HelpMarkWithDocs.js.map +1 -0
  19. package/dist/components/HelpMarkWithDocs/i18n/en.json +3 -0
  20. package/dist/components/HelpMarkWithDocs/i18n/index.d.ts +1 -0
  21. package/dist/components/HelpMarkWithDocs/i18n/index.js +5 -0
  22. package/dist/components/HelpMarkWithDocs/i18n/index.js.map +1 -0
  23. package/dist/components/PDiskInfo/PDiskInfo.d.ts +1 -0
  24. package/dist/components/PDiskInfo/PDiskInfo.js +51 -14
  25. package/dist/components/PDiskInfo/PDiskInfo.js.map +1 -1
  26. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  27. package/dist/components/PDiskPopup/PDiskPopup.d.ts +1 -1
  28. package/dist/components/PDiskPopup/PDiskPopup.js +13 -4
  29. package/dist/components/PDiskPopup/PDiskPopup.js.map +1 -1
  30. package/dist/components/StorageGroupInfo/StorageGroupInfo.js +120 -2
  31. package/dist/components/StorageGroupInfo/StorageGroupInfo.js.map +1 -1
  32. package/dist/components/StorageGroupInfo/i18n/en.json +2 -1
  33. package/dist/components/StorageGroupInfo/i18n/index.d.ts +1 -1
  34. package/dist/components/TitleWithHelpmark/TitleWithHelpmark.d.ts +5 -2
  35. package/dist/components/TitleWithHelpmark/TitleWithHelpmark.js +4 -3
  36. package/dist/components/TitleWithHelpmark/TitleWithHelpmark.js.map +1 -1
  37. package/dist/components/VDisk/VDisk.js +44 -10
  38. package/dist/components/VDisk/VDisk.js.map +1 -1
  39. package/dist/components/VDisk/i18n/en.json +6 -1
  40. package/dist/components/VDisk/i18n/index.d.ts +1 -1
  41. package/dist/components/VDiskInfo/VDiskInfo.js +117 -67
  42. package/dist/components/VDiskInfo/VDiskInfo.js.map +1 -1
  43. package/dist/components/VDiskInfo/getVDiskCapacityColumns.d.ts +11 -0
  44. package/dist/components/VDiskInfo/getVDiskCapacityColumns.js +52 -0
  45. package/dist/components/VDiskInfo/getVDiskCapacityColumns.js.map +1 -0
  46. package/dist/components/VDiskPopup/VDiskPopup.d.ts +5 -0
  47. package/dist/components/VDiskPopup/VDiskPopup.js +18 -7
  48. package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
  49. package/dist/components/YDBDefinitionList/YDBDefinitionList.d.ts +2 -1
  50. package/dist/components/YDBDefinitionList/YDBDefinitionList.js +2 -2
  51. package/dist/components/YDBDefinitionList/YDBDefinitionList.js.map +1 -1
  52. package/dist/components/capacityMetricsColumns/columns.js +19 -24
  53. package/dist/components/capacityMetricsColumns/columns.js.map +1 -1
  54. package/dist/components/capacityMetricsColumns/constants.d.ts +11 -0
  55. package/dist/components/capacityMetricsColumns/constants.js +25 -0
  56. package/dist/components/capacityMetricsColumns/constants.js.map +1 -1
  57. package/dist/components/capacityMetricsColumns/formatters.d.ts +1 -0
  58. package/dist/components/capacityMetricsColumns/formatters.js +9 -0
  59. package/dist/components/capacityMetricsColumns/formatters.js.map +1 -0
  60. package/dist/components/capacityMetricsColumns/i18n/en.json +9 -1
  61. package/dist/components/capacityMetricsColumns/i18n/index.d.ts +1 -1
  62. package/dist/components/nodesColumns/constants.js +1 -1
  63. package/dist/components/nodesColumns/constants.js.map +1 -1
  64. package/dist/containers/App/NavigationWrapper.js +1 -1
  65. package/dist/containers/App/NavigationWrapper.js.map +1 -1
  66. package/dist/containers/AsideNavigation/i18n/en.json +1 -1
  67. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +1 -1
  68. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js.map +1 -1
  69. package/dist/containers/Storage/Disks/Disks.d.ts +2 -2
  70. package/dist/containers/Storage/Disks/Disks.js +13 -10
  71. package/dist/containers/Storage/Disks/Disks.js.map +1 -1
  72. package/dist/containers/Storage/Disks/Disks.scss +20 -0
  73. package/dist/containers/Storage/Disks/calculateCompactVDiskWidths.d.ts +2 -0
  74. package/dist/containers/Storage/Disks/calculateCompactVDiskWidths.js +46 -0
  75. package/dist/containers/Storage/Disks/calculateCompactVDiskWidths.js.map +1 -0
  76. package/dist/containers/Storage/Disks/constants.d.ts +5 -0
  77. package/dist/containers/Storage/Disks/constants.js +11 -0
  78. package/dist/containers/Storage/Disks/constants.js.map +1 -0
  79. package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js +8 -15
  80. package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js.map +1 -1
  81. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.d.ts +2 -2
  82. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js +37 -9
  83. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js.map +1 -1
  84. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/constants.d.ts +5 -0
  85. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/constants.js +31 -1
  86. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/constants.js.map +1 -1
  87. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/hooks.js +39 -24
  88. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/hooks.js.map +1 -1
  89. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/en.json +1 -0
  90. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
  91. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/types.d.ts +1 -0
  92. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js +18 -9
  93. package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js.map +1 -1
  94. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js +1 -1
  95. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js.map +1 -1
  96. package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.scss +13 -0
  97. package/dist/containers/Storage/StorageExpertModePanel/components/AllLegend.js +96 -2
  98. package/dist/containers/Storage/StorageExpertModePanel/components/AllLegend.js.map +1 -1
  99. package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js +2 -5
  100. package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js.map +1 -1
  101. package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.d.ts +2 -0
  102. package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.js +6 -1
  103. package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.js.map +1 -1
  104. package/dist/containers/Storage/StorageExpertModePanel/components/useSpaceLegendSelection.js +3 -3
  105. package/dist/containers/Storage/StorageExpertModePanel/components/useSpaceLegendSelection.js.map +1 -1
  106. package/dist/containers/Storage/StorageExpertModePanel/i18n/en.json +13 -0
  107. package/dist/containers/Storage/StorageExpertModePanel/i18n/index.d.ts +1 -1
  108. package/dist/containers/Storage/useStorageQueryParams.js +9 -4
  109. package/dist/containers/Storage/useStorageQueryParams.js.map +1 -1
  110. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js +45 -5
  111. package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js.map +1 -1
  112. package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.js +1 -1
  113. package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.js.map +1 -1
  114. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/ManagePartitioningDialog.js +12 -13
  115. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/ManagePartitioningDialog.js.map +1 -1
  116. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/useManagePartitionForm.d.ts +1 -1
  117. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/utils.js +2 -2
  118. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/utils.js.map +1 -1
  119. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/PartitionsProgress.js +3 -3
  120. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/PartitionsProgress.js.map +1 -1
  121. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/i18n/en.json +1 -2
  122. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/i18n/index.d.ts +1 -1
  123. package/dist/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js +1 -1
  124. package/dist/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js.map +1 -1
  125. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js +1 -1
  126. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js.map +1 -1
  127. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +5 -2
  128. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js.map +1 -1
  129. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.d.ts +1 -1
  130. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.js +36 -15
  131. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.js.map +1 -1
  132. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageGroups.d.ts +14 -0
  133. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageGroups.js +38 -0
  134. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageGroups.js.map +1 -0
  135. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageNew.d.ts +1 -1
  136. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageNew.js +3 -2
  137. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageNew.js.map +1 -1
  138. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.d.ts +10 -1
  139. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +12 -8
  140. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js.map +1 -1
  141. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/i18n/en.json +15 -1
  142. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/i18n/index.d.ts +1 -1
  143. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/types.d.ts +3 -1
  144. package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js +1 -1
  145. package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js.map +1 -1
  146. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js +1 -1
  147. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js.map +1 -1
  148. package/dist/containers/Tenant/Diagnostics/TopicData/getData.js +1 -1
  149. package/dist/containers/Tenant/Diagnostics/TopicData/getData.js.map +1 -1
  150. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js +1 -1
  151. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js.map +1 -1
  152. package/dist/containers/Tenant/ObjectSummary/CreateDirectoryDialog/CreateDirectoryDialog.js +10 -6
  153. package/dist/containers/Tenant/ObjectSummary/CreateDirectoryDialog/CreateDirectoryDialog.js.map +1 -1
  154. package/dist/containers/Tenant/ObjectSummary/CreateDirectoryDialog/CreateDirectoryDialog.scss +57 -6
  155. package/dist/containers/Tenant/ObjectSummary/ObjectSummary.scss +31 -0
  156. package/dist/containers/Tenant/ObjectSummary/SchemaTree/SchemaTree.js +58 -0
  157. package/dist/containers/Tenant/ObjectSummary/SchemaTree/SchemaTree.js.map +1 -1
  158. package/dist/containers/Tenant/Query/Issues/Issues.js +3 -3
  159. package/dist/containers/Tenant/Query/Issues/Issues.js.map +1 -1
  160. package/dist/containers/Tenant/Query/Issues/helpers.d.ts +3 -0
  161. package/dist/containers/Tenant/Query/Issues/helpers.js +40 -0
  162. package/dist/containers/Tenant/Query/Issues/helpers.js.map +1 -1
  163. package/dist/containers/Tenant/Query/Issues/helpers.test.d.ts +1 -0
  164. package/dist/containers/Tenant/Query/Issues/helpers.test.js +94 -0
  165. package/dist/containers/Tenant/Query/Issues/helpers.test.js.map +1 -0
  166. package/dist/containers/Tenant/Query/NewSQL/NewSQL.js +1 -1
  167. package/dist/containers/Tenant/Query/NewSQL/NewSQL.js.map +1 -1
  168. package/dist/containers/Tenant/Query/Preview/components/TopicPreview.js +1 -1
  169. package/dist/containers/Tenant/Query/Preview/components/TopicPreview.js.map +1 -1
  170. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +141 -73
  171. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js.map +1 -1
  172. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.scss +8 -0
  173. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.d.ts +4 -2
  174. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.js +187 -20
  175. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.js.map +1 -1
  176. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.d.ts +9 -0
  177. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.js +154 -0
  178. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.js.map +1 -0
  179. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.d.ts +1 -0
  180. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.js +153 -0
  181. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.js.map +1 -0
  182. package/dist/containers/Tenant/Query/QueryEditor/types.d.ts +5 -0
  183. package/dist/containers/Tenant/Query/QueryEditor/types.js +2 -0
  184. package/dist/containers/Tenant/Query/QueryEditor/types.js.map +1 -0
  185. package/dist/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.d.ts +5 -0
  186. package/dist/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.js +13 -0
  187. package/dist/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.js.map +1 -0
  188. package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.d.ts +6 -3
  189. package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.js +10 -5
  190. package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.js.map +1 -1
  191. package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.scss +18 -5
  192. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +3 -2
  193. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +23 -12
  194. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js.map +1 -1
  195. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.scss +19 -0
  196. package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +14 -21
  197. package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
  198. package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.d.ts +6 -2
  199. package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js +6 -2
  200. package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js.map +1 -1
  201. package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.d.ts +2 -0
  202. package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js +1 -1
  203. package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js.map +1 -1
  204. package/dist/containers/Tenant/Query/QueryResult/constants.d.ts +3 -0
  205. package/dist/containers/Tenant/Query/QueryResult/constants.js +35 -0
  206. package/dist/containers/Tenant/Query/QueryResult/constants.js.map +1 -1
  207. package/dist/containers/Tenant/Query/i18n/en.json +5 -2
  208. package/dist/containers/Tenant/Query/i18n/index.d.ts +1 -1
  209. package/dist/containers/Tenant/Query/utils/isQueryCancelledError.d.ts +1 -1
  210. package/dist/containers/Tenant/Query/utils/isQueryCancelledError.js +1 -13
  211. package/dist/containers/Tenant/Query/utils/isQueryCancelledError.js.map +1 -1
  212. package/dist/containers/Tenant/TableFormDialog/TableFormDialog.d.ts +19 -0
  213. package/dist/containers/Tenant/TableFormDialog/TableFormDialog.js +225 -0
  214. package/dist/containers/Tenant/TableFormDialog/TableFormDialog.js.map +1 -0
  215. package/dist/containers/Tenant/TableFormDialog/TableFormDialog.scss +589 -0
  216. package/dist/containers/Tenant/TableFormDialog/columnValueValidation.d.ts +1 -0
  217. package/dist/containers/Tenant/TableFormDialog/columnValueValidation.js +179 -0
  218. package/dist/containers/Tenant/TableFormDialog/columnValueValidation.js.map +1 -0
  219. package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.d.ts +11 -0
  220. package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.js +84 -0
  221. package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.js.map +1 -0
  222. package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.scss +175 -0
  223. package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.d.ts +19 -0
  224. package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.js +115 -0
  225. package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.js.map +1 -0
  226. package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.scss +22 -0
  227. package/dist/containers/Tenant/TableFormDialog/components/layout.d.ts +15 -0
  228. package/dist/containers/Tenant/TableFormDialog/components/layout.js +32 -0
  229. package/dist/containers/Tenant/TableFormDialog/components/layout.js.map +1 -0
  230. package/dist/containers/Tenant/TableFormDialog/constants.d.ts +16 -0
  231. package/dist/containers/Tenant/TableFormDialog/constants.js +99 -0
  232. package/dist/containers/Tenant/TableFormDialog/constants.js.map +1 -0
  233. package/dist/containers/Tenant/TableFormDialog/i18n/en.json +143 -0
  234. package/dist/containers/Tenant/TableFormDialog/i18n/index.d.ts +2 -0
  235. package/dist/containers/Tenant/TableFormDialog/i18n/index.js +5 -0
  236. package/dist/containers/Tenant/TableFormDialog/i18n/index.js.map +1 -0
  237. package/dist/containers/Tenant/TableFormDialog/sections/GeneralSection.d.ts +8 -0
  238. package/dist/containers/Tenant/TableFormDialog/sections/GeneralSection.js +34 -0
  239. package/dist/containers/Tenant/TableFormDialog/sections/GeneralSection.js.map +1 -0
  240. package/dist/containers/Tenant/TableFormDialog/sections/PartitioningSection.d.ts +5 -0
  241. package/dist/containers/Tenant/TableFormDialog/sections/PartitioningSection.js +28 -0
  242. package/dist/containers/Tenant/TableFormDialog/sections/PartitioningSection.js.map +1 -0
  243. package/dist/containers/Tenant/TableFormDialog/sections/SettingsSection.d.ts +6 -0
  244. package/dist/containers/Tenant/TableFormDialog/sections/SettingsSection.js +141 -0
  245. package/dist/containers/Tenant/TableFormDialog/sections/SettingsSection.js.map +1 -0
  246. package/dist/containers/Tenant/TableFormDialog/sections/SplitPointDialog.d.ts +22 -0
  247. package/dist/containers/Tenant/TableFormDialog/sections/SplitPointDialog.js +97 -0
  248. package/dist/containers/Tenant/TableFormDialog/sections/SplitPointDialog.js.map +1 -0
  249. package/dist/containers/Tenant/TableFormDialog/sections/TTLSection.d.ts +6 -0
  250. package/dist/containers/Tenant/TableFormDialog/sections/TTLSection.js +70 -0
  251. package/dist/containers/Tenant/TableFormDialog/sections/TTLSection.js.map +1 -0
  252. package/dist/containers/Tenant/TableFormDialog/sections/YdbColumnsSection.d.ts +11 -0
  253. package/dist/containers/Tenant/TableFormDialog/sections/YdbColumnsSection.js +181 -0
  254. package/dist/containers/Tenant/TableFormDialog/sections/YdbColumnsSection.js.map +1 -0
  255. package/dist/containers/Tenant/TableFormDialog/sections/YdbIndexesSection.d.ts +1 -0
  256. package/dist/containers/Tenant/TableFormDialog/sections/YdbIndexesSection.js +42 -0
  257. package/dist/containers/Tenant/TableFormDialog/sections/YdbIndexesSection.js.map +1 -0
  258. package/dist/containers/Tenant/TableFormDialog/types.d.ts +26 -0
  259. package/dist/containers/Tenant/TableFormDialog/types.js +3 -0
  260. package/dist/containers/Tenant/TableFormDialog/types.js.map +1 -0
  261. package/dist/containers/Tenant/TableFormDialog/utils.d.ts +41 -0
  262. package/dist/containers/Tenant/TableFormDialog/utils.js +245 -0
  263. package/dist/containers/Tenant/TableFormDialog/utils.js.map +1 -0
  264. package/dist/containers/Tenant/TableFormDialog/validation.d.ts +8 -0
  265. package/dist/containers/Tenant/TableFormDialog/validation.js +308 -0
  266. package/dist/containers/Tenant/TableFormDialog/validation.js.map +1 -0
  267. package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.d.ts +19 -0
  268. package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.js +296 -0
  269. package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.js.map +1 -0
  270. package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.scss +182 -0
  271. package/dist/containers/Tenant/TopicFormDialog/i18n/en.json +51 -0
  272. package/dist/containers/Tenant/TopicFormDialog/i18n/index.d.ts +2 -0
  273. package/dist/containers/Tenant/TopicFormDialog/i18n/index.js +5 -0
  274. package/dist/containers/Tenant/TopicFormDialog/i18n/index.js.map +1 -0
  275. package/dist/containers/Tenant/TopicFormDialog/utils.d.ts +18 -0
  276. package/dist/containers/Tenant/TopicFormDialog/utils.js +100 -0
  277. package/dist/containers/Tenant/TopicFormDialog/utils.js.map +1 -0
  278. package/dist/containers/Tenant/TopicFormDialog/validation.d.ts +3 -0
  279. package/dist/containers/Tenant/TopicFormDialog/validation.js +88 -0
  280. package/dist/containers/Tenant/TopicFormDialog/validation.js.map +1 -0
  281. package/dist/containers/Tenant/i18n/en.json +5 -1
  282. package/dist/containers/Tenant/i18n/index.d.ts +1 -1
  283. package/dist/containers/Tenant/utils/pathSegmentValidation.d.ts +5 -0
  284. package/dist/containers/Tenant/utils/pathSegmentValidation.js +15 -0
  285. package/dist/containers/Tenant/utils/pathSegmentValidation.js.map +1 -0
  286. package/dist/containers/Tenant/utils/schemaActions.d.ts +4 -0
  287. package/dist/containers/Tenant/utils/schemaActions.js +103 -14
  288. package/dist/containers/Tenant/utils/schemaActions.js.map +1 -1
  289. package/dist/containers/VDiskPage/VDiskPage.js +3 -30
  290. package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
  291. package/dist/containers/VDiskPage/useVDiskQueryParams.d.ts +13 -0
  292. package/dist/containers/VDiskPage/useVDiskQueryParams.js +55 -0
  293. package/dist/containers/VDiskPage/useVDiskQueryParams.js.map +1 -0
  294. package/dist/store/reducers/pdisk/utils.js +4 -4
  295. package/dist/store/reducers/pdisk/utils.js.map +1 -1
  296. package/dist/store/reducers/query/api.d.ts +2 -1
  297. package/dist/store/reducers/query/api.js +107 -48
  298. package/dist/store/reducers/query/api.js.map +1 -1
  299. package/dist/store/reducers/query/parsers/preparePlanData.js +8 -1
  300. package/dist/store/reducers/query/parsers/preparePlanData.js.map +1 -1
  301. package/dist/store/reducers/query/slice.d.ts +8 -9
  302. package/dist/store/reducers/query/slice.js +5 -0
  303. package/dist/store/reducers/query/slice.js.map +1 -1
  304. package/dist/store/reducers/query/streaming/reducers.d.ts +3 -0
  305. package/dist/store/reducers/query/streaming/reducers.js +6 -6
  306. package/dist/store/reducers/query/streaming/reducers.js.map +1 -1
  307. package/dist/store/reducers/query/types.d.ts +8 -4
  308. package/dist/store/reducers/query/utils.d.ts +10 -2
  309. package/dist/store/reducers/query/utils.js +37 -6
  310. package/dist/store/reducers/query/utils.js.map +1 -1
  311. package/dist/store/reducers/storage/prepareGroupsDisks.d.ts +10 -3
  312. package/dist/store/reducers/storage/prepareGroupsDisks.js +43 -6
  313. package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -1
  314. package/dist/store/reducers/storage/types.d.ts +1 -0
  315. package/dist/store/reducers/storage/utils.js +4 -7
  316. package/dist/store/reducers/storage/utils.js.map +1 -1
  317. package/dist/store/reducers/table/constants.d.ts +6 -0
  318. package/dist/store/reducers/table/constants.js +36 -0
  319. package/dist/store/reducers/table/constants.js.map +1 -0
  320. package/dist/store/reducers/table/table.d.ts +19 -0
  321. package/dist/store/reducers/table/table.js +104 -0
  322. package/dist/store/reducers/table/table.js.map +1 -0
  323. package/dist/store/reducers/table/types.d.ts +193 -0
  324. package/dist/store/reducers/table/types.js +12 -0
  325. package/dist/store/reducers/table/types.js.map +1 -0
  326. package/dist/store/reducers/table/utils.d.ts +17 -0
  327. package/dist/store/reducers/table/utils.js +485 -0
  328. package/dist/store/reducers/table/utils.js.map +1 -0
  329. package/dist/store/reducers/topic/topic.d.ts +1762 -0
  330. package/dist/store/reducers/topic/topic.js +172 -0
  331. package/dist/store/reducers/topic/topic.js.map +1 -0
  332. package/dist/store/reducers/topic/utils.d.ts +23 -0
  333. package/dist/store/reducers/topic/utils.js +75 -0
  334. package/dist/store/reducers/topic/utils.js.map +1 -0
  335. package/dist/types/api/pdisk.d.ts +6 -1
  336. package/dist/types/api/pdisk.js.map +1 -1
  337. package/dist/types/api/storage.d.ts +3 -1
  338. package/dist/types/api/storage.js.map +1 -1
  339. package/dist/types/api/topic.d.ts +18 -0
  340. package/dist/types/api/topic.js +8 -0
  341. package/dist/types/api/topic.js.map +1 -1
  342. package/dist/types/api/vdisk.d.ts +8 -0
  343. package/dist/types/api/vdisk.js.map +1 -1
  344. package/dist/uiFactory/types.d.ts +5 -0
  345. package/dist/uiFactory/uiFactory.d.ts +4 -1
  346. package/dist/uiFactory/uiFactory.js +8 -1
  347. package/dist/uiFactory/uiFactory.js.map +1 -1
  348. package/dist/utils/capacityAlerts.d.ts +1 -0
  349. package/dist/utils/capacityAlerts.js +3 -0
  350. package/dist/utils/capacityAlerts.js.map +1 -1
  351. package/dist/utils/constants.d.ts +1 -1
  352. package/dist/utils/constants.js +1 -1
  353. package/dist/utils/constants.js.map +1 -1
  354. package/dist/utils/disks/displayState.d.ts +5 -0
  355. package/dist/utils/disks/displayState.js.map +1 -1
  356. package/dist/utils/disks/iconCalculators.d.ts +1 -3
  357. package/dist/utils/disks/iconCalculators.js +5 -6
  358. package/dist/utils/disks/iconCalculators.js.map +1 -1
  359. package/dist/utils/disks/prepareDisks.d.ts +1 -1
  360. package/dist/utils/disks/prepareDisks.js +44 -3
  361. package/dist/utils/disks/prepareDisks.js.map +1 -1
  362. package/dist/utils/disks/severityCalculators.d.ts +1 -4
  363. package/dist/utils/disks/severityCalculators.js +2 -6
  364. package/dist/utils/disks/severityCalculators.js.map +1 -1
  365. package/dist/utils/disks/types.d.ts +8 -0
  366. package/dist/utils/emptyDataPlaceholder.d.ts +1 -0
  367. package/dist/utils/emptyDataPlaceholder.js +2 -0
  368. package/dist/utils/emptyDataPlaceholder.js.map +1 -0
  369. package/dist/utils/hooks/useSelectedColumns.d.ts +3 -0
  370. package/dist/utils/hooks/useSelectedColumns.js +18 -0
  371. package/dist/utils/hooks/useSelectedColumns.js.map +1 -1
  372. package/dist/utils/query.d.ts +4 -1
  373. package/dist/utils/query.js +34 -1
  374. package/dist/utils/query.js.map +1 -1
  375. package/dist/utils/storageMetrics.d.ts +5 -1
  376. package/dist/utils/storageMetrics.js +35 -4
  377. package/dist/utils/storageMetrics.js.map +1 -1
  378. package/dist/utils/utils.js +2 -1
  379. package/dist/utils/utils.js.map +1 -1
  380. package/package.json +1 -1
  381. package/dist/store/reducers/topic.d.ts +0 -1291
  382. package/dist/store/reducers/topic.js +0 -83
  383. package/dist/store/reducers/topic.js.map +0 -1
@@ -0,0 +1,153 @@
1
+ import * as yqlAutocomplete from '@gravity-ui/websql-autocomplete/yql';
2
+ import { extractYqlStatements, findYqlStatementAtOffset } from './currentStatement';
3
+ jest.mock('@gravity-ui/websql-autocomplete/yql', () => {
4
+ const actual = jest.requireActual('@gravity-ui/websql-autocomplete/yql');
5
+ return {
6
+ ...actual,
7
+ tokenizeYqlQuery: jest.fn(actual.tokenizeYqlQuery),
8
+ };
9
+ });
10
+ describe('current YQL statement', () => {
11
+ test.each([
12
+ ['; SELECT 1;', ['SELECT 1;']],
13
+ ['SELECT 1;;; SELECT 2;', ['SELECT 1;', 'SELECT 2;']],
14
+ ])('filters empty separator statements from %s', (query, expectedStatements) => {
15
+ const statements = extractYqlStatements(query);
16
+ expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(expectedStatements);
17
+ });
18
+ test('finds each statement and excludes whitespace between statements', () => {
19
+ var _a, _b;
20
+ const query = 'SELECT 1;\n\nSELECT 2;';
21
+ const statements = extractYqlStatements(query);
22
+ expect((_a = findYqlStatementAtOffset(query, 2, statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 1;');
23
+ expect((_b = findYqlStatementAtOffset(query, query.indexOf('SELECT 2'), statements)) === null || _b === void 0 ? void 0 : _b.text).toBe('SELECT 2;');
24
+ expect(findYqlStatementAtOffset(query, query.indexOf('\n\n') + 1, statements)).toBeUndefined();
25
+ });
26
+ test('does not split semicolons inside strings and comments', () => {
27
+ const query = '/* ignored; */ SELECT "a;b";\n-- gap;\nSELECT 2;';
28
+ const statements = extractYqlStatements(query);
29
+ expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(['SELECT "a;b";', 'SELECT 2;']);
30
+ });
31
+ test.each([
32
+ [
33
+ 'anonymous action',
34
+ 'SELECT 0;\nDO BEGIN\n SELECT 1;\n SELECT 2;\nEND DO;\nSELECT 3;',
35
+ ['SELECT 0;', 'DO BEGIN\n SELECT 1;\n SELECT 2;\nEND DO;', 'SELECT 3;'],
36
+ ],
37
+ [
38
+ 'action definition',
39
+ 'DEFINE ACTION $a() AS DO BEGIN SELECT 1; SELECT 2; END DO; END DEFINE;\nDO $a();',
40
+ ['DEFINE ACTION $a() AS DO BEGIN SELECT 1; SELECT 2; END DO; END DEFINE;', 'DO $a();'],
41
+ ],
42
+ [
43
+ 'subquery definition',
44
+ 'DEFINE SUBQUERY $s() AS SELECT 1; SELECT 2; END DEFINE;\nSELECT 3;',
45
+ ['DEFINE SUBQUERY $s() AS SELECT 1; SELECT 2; END DEFINE;', 'SELECT 3;'],
46
+ ],
47
+ [
48
+ 'streaming query body',
49
+ 'CREATE STREAMING QUERY q AS DO BEGIN INSERT INTO sink SELECT * FROM source; END DO;',
50
+ ['CREATE STREAMING QUERY q AS DO BEGIN INSERT INTO sink SELECT * FROM source; END DO;'],
51
+ ],
52
+ ])('keeps each %s intact', (_name, query, expectedStatements) => {
53
+ const statements = extractYqlStatements(query);
54
+ expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(expectedStatements);
55
+ });
56
+ test('keeps a lambda definition separate from the following statement', () => {
57
+ const query = `$l = ($x) -> {
58
+ return [
59
+ <|
60
+ offset:$x._offset,
61
+ message:$x._data
62
+ |>
63
+ ];
64
+ };
65
+
66
+ ALTER TRANSFER transfer
67
+ SET USING $l;`;
68
+ const statements = extractYqlStatements(query);
69
+ expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual([
70
+ `$l = ($x) -> {
71
+ return [
72
+ <|
73
+ offset:$x._offset,
74
+ message:$x._data
75
+ |>
76
+ ];
77
+ };`,
78
+ `ALTER TRANSFER transfer
79
+ SET USING $l;`,
80
+ ]);
81
+ });
82
+ test('extracts a large flat script without the YQL tokenizer', () => {
83
+ const tokenizeYqlQueryMock = jest.mocked(yqlAutocomplete.tokenizeYqlQuery);
84
+ tokenizeYqlQueryMock.mockClear();
85
+ const query = new Array(400).fill('SELECT 1;').join('');
86
+ const statements = extractYqlStatements(query);
87
+ expect(statements).toHaveLength(400);
88
+ expect(query.slice(statements[0].startIndex, statements[0].endIndex)).toBe('SELECT 1;');
89
+ expect(query.slice(statements[399].startIndex, statements[399].endIndex)).toBe('SELECT 1;');
90
+ expect(tokenizeYqlQueryMock).not.toHaveBeenCalled();
91
+ });
92
+ test('uses the YQL tokenizer for unsupported lexer characters', () => {
93
+ const tokenizeYqlQueryMock = jest.mocked(yqlAutocomplete.tokenizeYqlQuery);
94
+ tokenizeYqlQueryMock.mockClear();
95
+ const query = '# SELECT 1;';
96
+ const statements = extractYqlStatements(query);
97
+ expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(['SELECT 1;']);
98
+ expect(tokenizeYqlQueryMock).toHaveBeenCalledTimes(1);
99
+ });
100
+ test('distinguishes statements on the same line', () => {
101
+ var _a, _b;
102
+ const query = 'SELECT 1; SELECT 2;';
103
+ const statements = extractYqlStatements(query);
104
+ expect((_a = findYqlStatementAtOffset(query, query.indexOf('1'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 1;');
105
+ expect((_b = findYqlStatementAtOffset(query, query.indexOf('2'), statements)) === null || _b === void 0 ? void 0 : _b.text).toBe('SELECT 2;');
106
+ });
107
+ test('prefers a statement starting at an adjacent statement boundary', () => {
108
+ var _a;
109
+ const query = 'SELECT 1;SELECT 2;';
110
+ const statements = extractYqlStatements(query);
111
+ expect((_a = findYqlStatementAtOffset(query, query.indexOf('SELECT 2'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 2;');
112
+ });
113
+ test('uses JavaScript offsets correctly with Unicode', () => {
114
+ var _a;
115
+ const query = 'SELECT "😀;";\nSELECT 2;';
116
+ const statements = extractYqlStatements(query);
117
+ expect((_a = findYqlStatementAtOffset(query, query.indexOf('SELECT 2'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 2;');
118
+ });
119
+ test('returns the recoverable incomplete statement', () => {
120
+ var _a;
121
+ const query = 'SELECT 1;\nSEL';
122
+ const statements = extractYqlStatements(query);
123
+ expect((_a = findYqlStatementAtOffset(query, query.length - 1, statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SEL');
124
+ });
125
+ test('finds a multiline statement', () => {
126
+ var _a;
127
+ const query = 'SELECT\n 1;\n\nSELECT 2;';
128
+ const statements = extractYqlStatements(query);
129
+ expect((_a = findYqlStatementAtOffset(query, query.indexOf('1'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT\n 1;');
130
+ });
131
+ test('returns no statement for standalone comments', () => {
132
+ const query = '-- comment only\n/* another comment */';
133
+ const statements = extractYqlStatements(query);
134
+ expect(findYqlStatementAtOffset(query, query.indexOf('comment'), statements)).toBeUndefined();
135
+ });
136
+ test('includes the exact end of a semicolon-terminated statement', () => {
137
+ var _a;
138
+ const query = 'SELECT 1;';
139
+ const statements = extractYqlStatements(query);
140
+ expect((_a = findYqlStatementAtOffset(query, query.length, statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 1;');
141
+ });
142
+ test('does not skip whitespace after the terminating semicolon', () => {
143
+ const query = 'SELECT 1; ';
144
+ const statements = extractYqlStatements(query);
145
+ expect(findYqlStatementAtOffset(query, query.length, statements)).toBeUndefined();
146
+ });
147
+ test('keeps an unterminated statement end exclusive', () => {
148
+ const query = 'SELECT 1';
149
+ const statements = extractYqlStatements(query);
150
+ expect(findYqlStatementAtOffset(query, query.length, statements)).toBeUndefined();
151
+ });
152
+ });
153
+ //# sourceMappingURL=currentStatement.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currentStatement.test.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type Monaco from 'monaco-editor';
2
+ export interface QueryExecution {
3
+ text: string;
4
+ range?: Monaco.IRange;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditor/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { QueryAction } from '../../../../../types/store/query';
2
+ import { reachMetricaGoal } from '../../../../../utils/yaMetrica';
3
+ type MetricaParams = NonNullable<Parameters<typeof reachMetricaGoal>[1]>;
4
+ export declare function reachExplainQueryMetricaGoals(actionType: QueryAction, params: MetricaParams): void;
5
+ export {};
@@ -0,0 +1,13 @@
1
+ import { QUERY_ACTIONS } from '../../../../../utils/query';
2
+ import { reachMetricaGoal } from '../../../../../utils/yaMetrica';
3
+ export function reachExplainQueryMetricaGoals(actionType, params) {
4
+ const metricaParams = {
5
+ ...params,
6
+ actionType: actionType === QUERY_ACTIONS.explainAnalyze ? 'explainAnalyze' : actionType,
7
+ };
8
+ reachMetricaGoal('runQuery', metricaParams);
9
+ if (actionType === QUERY_ACTIONS.explainAnalyze) {
10
+ reachMetricaGoal('explainAnalyzeQuery', metricaParams);
11
+ }
12
+ }
13
+ //# sourceMappingURL=reachExplainQueryMetricaGoals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reachExplainQueryMetricaGoals.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,gCAAgC,CAAC;AAIhE,MAAM,UAAU,6BAA6B,CAAC,UAAuB,EAAE,MAAqB;IACxF,MAAM,aAAa,GAAG;QAClB,GAAG,MAAM;QACT,UAAU,EAAE,UAAU,KAAK,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU;KAC1F,CAAC;IAEF,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAE5C,IAAI,UAAU,KAAK,aAAa,CAAC,cAAc,EAAE,CAAC;QAC9C,gBAAgB,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;IAC3D,CAAC;AACL,CAAC"}
@@ -1,15 +1,18 @@
1
1
  import type { ButtonProps } from '@gravity-ui/uikit';
2
2
  import './EditorButton.scss';
3
+ type StopButtonProps = ButtonProps & {
4
+ error?: boolean;
5
+ replacedAction?: 'run' | 'explain' | 'explainAnalyze';
6
+ };
3
7
  interface SettingsButtonProps {
4
8
  onClick: () => void;
5
9
  isLoading: boolean;
6
10
  }
7
11
  export declare const EditorButton: {
8
12
  Run: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
9
- Stop: ({ error, ...props }: ButtonProps & {
10
- error?: boolean;
11
- }) => import("react/jsx-runtime").JSX.Element;
13
+ Stop: ({ error, replacedAction, ...props }: StopButtonProps) => import("react/jsx-runtime").JSX.Element;
12
14
  Explain: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
15
+ ExplainAnalyze: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
13
16
  Settings: ({ onClick, isLoading }: SettingsButtonProps) => import("react/jsx-runtime").JSX.Element;
14
17
  };
15
18
  export {};
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Binoculars, Gear, PlayFill, StopFill } from '@gravity-ui/icons';
3
- import { Button, Icon, Tooltip } from '@gravity-ui/uikit';
2
+ import { Gear, PlayFill, StopFill } from '@gravity-ui/icons';
3
+ import { ActionTooltip, Button, Icon } from '@gravity-ui/uikit';
4
4
  import QuerySettingsDescription from '../../../../components/QuerySettingsDescription/QuerySettingsDescription';
5
5
  import { cn } from '../../../../utils/cn';
6
6
  import { useChangedQuerySettings } from '../../../../utils/hooks/useChangedQuerySettings';
@@ -8,19 +8,24 @@ import i18n from '../i18n';
8
8
  import './EditorButton.scss';
9
9
  const b = cn('ydb-query-editor-button');
10
10
  const Run = (props) => (_jsxs(Button, { ...props, className: b('run-button'), children: [_jsx(Icon, { data: PlayFill, size: 16 }), i18n('action.run')] }));
11
- const Stop = ({ error, ...props }) => (_jsxs(Button, { ...props, className: b('stop-button', { error }), children: [_jsx(Icon, { data: StopFill, size: 16 }), i18n('action.stop')] }));
12
- const Explain = (props) => (_jsxs(Button, { ...props, className: b('explain-button'), children: [_jsx(Icon, { data: Binoculars, size: 16 }), i18n('action.explain')] }));
11
+ const Stop = ({ error, replacedAction, ...props }) => (_jsxs(Button, { ...props, className: b('stop-button', {
12
+ error,
13
+ 'explain-analyze': replacedAction === 'explainAnalyze',
14
+ }), children: [_jsx(Icon, { data: StopFill, size: 16 }), i18n('action.stop')] }));
15
+ const Explain = (props) => (_jsx(Button, { ...props, className: b('explain-button'), children: i18n('action.explain') }));
16
+ const ExplainAnalyze = (props) => (_jsx(ActionTooltip, { title: i18n('explain-analyze.tooltip.title'), description: i18n('explain-analyze.tooltip.description'), openDelay: 0, placement: ['top-start'], children: _jsx(Button, { ...props, className: b('explain-analyze-button'), children: i18n('action.explain-analyze') }) }));
13
17
  const Settings = ({ onClick, isLoading }) => {
14
18
  const { changedCurrentSettings, changedCurrentSettingsDescriptions } = useChangedQuerySettings();
15
19
  const extraGearProps = changedCurrentSettings.length > 0
16
20
  ? { view: 'outlined-info', selected: true }
17
21
  : null;
18
- return (_jsx(Tooltip, { disabled: changedCurrentSettings.length === 0, content: _jsx(QuerySettingsDescription, { prefix: i18n('gear.tooltip'), querySettings: changedCurrentSettingsDescriptions }), openDelay: 0, placement: ['top-start'], children: _jsxs(Button, { onClick: onClick, loading: isLoading, className: b('gear-button'), ...extraGearProps, children: [_jsx(Icon, { data: Gear, size: 16 }), extraGearProps ? (_jsxs("div", { className: b('changed-settings'), children: ["(", changedCurrentSettings.length, ")"] })) : null] }) }));
22
+ return (_jsx(ActionTooltip, { disabled: changedCurrentSettings.length === 0, title: i18n('gear.tooltip'), description: _jsx(QuerySettingsDescription, { prefix: "", querySettings: changedCurrentSettingsDescriptions }), openDelay: 0, placement: ['top-start'], children: _jsxs(Button, { onClick: onClick, loading: isLoading, className: b('gear-button'), ...extraGearProps, children: [_jsx(Icon, { data: Gear, size: 16 }), extraGearProps ? (_jsxs("div", { className: b('changed-settings'), children: ["(", changedCurrentSettings.length, ")"] })) : null] }) }));
19
23
  };
20
24
  export const EditorButton = {
21
25
  Run,
22
26
  Stop,
23
27
  Explain,
28
+ ExplainAnalyze,
24
29
  Settings,
25
30
  };
26
31
  //# sourceMappingURL=EditorButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorButton.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/EditorButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAExD,OAAO,wBAAwB,MAAM,0EAA0E,CAAC;AAChH,OAAO,EAAC,EAAE,EAAC,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAC,uBAAuB,EAAC,MAAM,iDAAiD,CAAC;AACxF,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,qBAAqB,CAAC;AAE7B,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC;AAExC,MAAM,GAAG,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,CAChC,MAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,EACjC,IAAI,CAAC,YAAY,CAAC,IACd,CACZ,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,EAAC,KAAK,EAAE,GAAG,KAAK,EAAkC,EAAE,EAAE,CAAC,CACjE,MAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,aAAa,EAAE,EAAC,KAAK,EAAC,CAAC,aACnD,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,EACjC,IAAI,CAAC,aAAa,CAAC,IACf,CACZ,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,CACpC,MAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,aAC7C,KAAC,IAAI,IAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,GAAI,EACnC,IAAI,CAAC,gBAAgB,CAAC,IAClB,CACZ,CAAC;AAOF,MAAM,QAAQ,GAAG,CAAC,EAAC,OAAO,EAAE,SAAS,EAAsB,EAAE,EAAE;IAC3D,MAAM,EAAC,sBAAsB,EAAE,kCAAkC,EAAC,GAAG,uBAAuB,EAAE,CAAC;IAE/F,MAAM,cAAc,GAChB,sBAAsB,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAE,EAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAW;QACpD,CAAC,CAAC,IAAI,CAAC;IAEf,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAC7C,OAAO,EACH,KAAC,wBAAwB,IACrB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,EAC5B,aAAa,EAAE,kCAAkC,GACnD,EAEN,SAAS,EAAE,CAAC,EACZ,SAAS,EAAE,CAAC,WAAW,CAAC,YAExB,MAAC,MAAM,IACH,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,KACvB,cAAc,aAElB,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,EAC7B,cAAc,CAAC,CAAC,CAAC,CACd,eAAK,SAAS,EAAE,CAAC,CAAC,kBAAkB,CAAC,kBAAI,sBAAsB,CAAC,MAAM,SAAQ,CACjF,CAAC,CAAC,CAAC,IAAI,IACH,GACH,CACb,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,GAAG;IACH,IAAI;IACJ,OAAO;IACP,QAAQ;CACX,CAAC"}
1
+ {"version":3,"file":"EditorButton.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/EditorButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE9D,OAAO,wBAAwB,MAAM,0EAA0E,CAAC;AAChH,OAAO,EAAC,EAAE,EAAC,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAC,uBAAuB,EAAC,MAAM,iDAAiD,CAAC;AACxF,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,qBAAqB,CAAC;AAE7B,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC;AAExC,MAAM,GAAG,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,CAChC,MAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,EACjC,IAAI,CAAC,YAAY,CAAC,IACd,CACZ,CAAC;AAOF,MAAM,IAAI,GAAG,CAAC,EAAC,KAAK,EAAE,cAAc,EAAE,GAAG,KAAK,EAAkB,EAAE,EAAE,CAAC,CACjE,MAAC,MAAM,OACC,KAAK,EACT,SAAS,EAAE,CAAC,CAAC,aAAa,EAAE;QACxB,KAAK;QACL,iBAAiB,EAAE,cAAc,KAAK,gBAAgB;KACzD,CAAC,aAEF,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,EACjC,IAAI,CAAC,aAAa,CAAC,IACf,CACZ,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,CACpC,KAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAC5C,IAAI,CAAC,gBAAgB,CAAC,GAClB,CACZ,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,CAC3C,KAAC,aAAa,IACV,KAAK,EAAE,IAAI,CAAC,+BAA+B,CAAC,EAC5C,WAAW,EAAE,IAAI,CAAC,qCAAqC,CAAC,EACxD,SAAS,EAAE,CAAC,EACZ,SAAS,EAAE,CAAC,WAAW,CAAC,YAExB,KAAC,MAAM,OAAK,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,wBAAwB,CAAC,YACpD,IAAI,CAAC,wBAAwB,CAAC,GAC1B,GACG,CACnB,CAAC;AAOF,MAAM,QAAQ,GAAG,CAAC,EAAC,OAAO,EAAE,SAAS,EAAsB,EAAE,EAAE;IAC3D,MAAM,EAAC,sBAAsB,EAAE,kCAAkC,EAAC,GAAG,uBAAuB,EAAE,CAAC;IAE/F,MAAM,cAAc,GAChB,sBAAsB,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAE,EAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAW;QACpD,CAAC,CAAC,IAAI,CAAC;IAEf,OAAO,CACH,KAAC,aAAa,IACV,QAAQ,EAAE,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAC7C,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,EAC3B,WAAW,EACP,KAAC,wBAAwB,IACrB,MAAM,EAAC,EAAE,EACT,aAAa,EAAE,kCAAkC,GACnD,EAEN,SAAS,EAAE,CAAC,EACZ,SAAS,EAAE,CAAC,WAAW,CAAC,YAExB,MAAC,MAAM,IACH,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,KACvB,cAAc,aAElB,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,EAC7B,cAAc,CAAC,CAAC,CAAC,CACd,eAAK,SAAS,EAAE,CAAC,CAAC,kBAAkB,CAAC,kBAAI,sBAAsB,CAAC,MAAM,SAAQ,CACjF,CAAC,CAAC,CAAC,IAAI,IACH,GACG,CACnB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,GAAG;IACH,IAAI;IACJ,OAAO;IACP,cAAc;IACd,QAAQ;CACX,CAAC"}
@@ -1,16 +1,29 @@
1
1
  @use '../../../../styles/mixins.scss';
2
2
 
3
3
  .ydb-query-editor-button {
4
- &__explain-button {
5
- width: 92px;
4
+ &__run-button {
5
+ width: 76px;
6
+ min-width: 76px;
7
+ max-width: 76px;
6
8
  }
7
9
 
8
- &__run-button,
9
- &__stop-button {
10
- width: 76px;
10
+ &__explain-analyze-button {
11
+ width: 111px;
12
+ min-width: 111px;
13
+ max-width: 111px;
11
14
  }
12
15
 
13
16
  &__stop-button {
17
+ width: 76px;
18
+ min-width: 76px;
19
+ max-width: 76px;
20
+
21
+ &_explain-analyze {
22
+ width: 111px;
23
+ min-width: 111px;
24
+ max-width: 111px;
25
+ }
26
+
14
27
  .g-root_theme_dark &,
15
28
  .g-root_theme_dark-hc & {
16
29
  --g-button-text-color: var(--g-color-text-dark-primary);
@@ -7,10 +7,11 @@ interface QueryEditorControlsProps {
7
7
  highlightedAction: QueryAction;
8
8
  queryId?: string;
9
9
  database: string;
10
- isStreamingEnabled?: boolean;
10
+ isCurrentQueryStreaming?: boolean;
11
11
  handleGetExplainQueryClick: (text: string) => void;
12
+ handleGetExplainAnalyzeQueryClick: (text: string) => void;
12
13
  handleSendExecuteClick: (text: string) => void;
13
14
  onSettingsButtonClick: () => void;
14
15
  }
15
- export declare const QueryEditorControls: ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database, isStreamingEnabled, handleSendExecuteClick, onSettingsButtonClick, handleGetExplainQueryClick, }: QueryEditorControlsProps) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const QueryEditorControls: ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database, isCurrentQueryStreaming, handleSendExecuteClick, onSettingsButtonClick, handleGetExplainQueryClick, handleGetExplainAnalyzeQueryClick, }: QueryEditorControlsProps) => import("react/jsx-runtime").JSX.Element;
16
17
  export {};
@@ -5,6 +5,7 @@ import { selectActiveTabId, selectUserInput } from '../../../../store/reducers/q
5
5
  import { cn } from '../../../../utils/cn';
6
6
  import createToast from '../../../../utils/createToast';
7
7
  import { useTypedSelector } from '../../../../utils/hooks';
8
+ import { QUERY_ACTIONS } from '../../../../utils/query';
8
9
  import { reachMetricaGoal } from '../../../../utils/yaMetrica';
9
10
  import { NewSQL } from '../NewSQL/NewSQL';
10
11
  import { queryExecutionManagerInstance } from '../QueryEditor/utils/queryExecutionManager';
@@ -14,15 +15,21 @@ import { EditorButton } from './EditorButton';
14
15
  import './QueryEditorControls.scss';
15
16
  const b = cn('ydb-query-editor-controls');
16
17
  const STOP_AUTO_HIDE_TIMEOUT = 5000;
18
+ const actionButtonComponents = {
19
+ run: EditorButton.Run,
20
+ explain: EditorButton.Explain,
21
+ explainAnalyze: EditorButton.ExplainAnalyze,
22
+ };
17
23
  const ActionButton = ({ type, isHighlighted, isLoading, isStoppable, controlsDisabled, onActionClick, renderStopButton, }) => {
18
- if (isStoppable && isLoading && isHighlighted) {
19
- return renderStopButton();
20
- }
21
- const ButtonComponent = type === 'run' ? EditorButton.Run : EditorButton.Explain;
22
- return (_jsx(ButtonComponent, { onClick: onActionClick, disabled: controlsDisabled, loading: isLoading, view: isHighlighted ? 'action' : undefined }));
24
+ const ButtonComponent = actionButtonComponents[type];
25
+ const button = isStoppable && isLoading && isHighlighted ? (renderStopButton(type)) : (_jsx(ButtonComponent, { onClick: onActionClick, disabled: controlsDisabled, loading: isLoading, view: isHighlighted ? 'action' : undefined }));
26
+ return (_jsx("div", { className: b('action-button', {
27
+ run: type === 'run',
28
+ 'explain-analyze': type === 'explainAnalyze',
29
+ }), children: button }));
23
30
  };
24
31
  const CANCEL_ERROR_ANIMATION_DURATION = 500;
25
- export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database, isStreamingEnabled, handleSendExecuteClick, onSettingsButtonClick, handleGetExplainQueryClick, }) => {
32
+ export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database, isCurrentQueryStreaming, handleSendExecuteClick, onSettingsButtonClick, handleGetExplainQueryClick, handleGetExplainAnalyzeQueryClick, }) => {
26
33
  const input = useTypedSelector(selectUserInput);
27
34
  const activeTabId = useTypedSelector(selectActiveTabId);
28
35
  const [sendCancelQuery, cancelQueryResponse] = cancelQueryApi.useCancelQueryMutation();
@@ -31,7 +38,7 @@ export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highligh
31
38
  const onStopButtonClick = React.useCallback(async () => {
32
39
  reachMetricaGoal('stopQuery');
33
40
  try {
34
- if (isStreamingEnabled) {
41
+ if (isCurrentQueryStreaming) {
35
42
  if (!activeTabId) {
36
43
  return;
37
44
  }
@@ -57,15 +64,19 @@ export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highligh
57
64
  setCancelQueryError(false);
58
65
  }, CANCEL_ERROR_ANIMATION_DURATION);
59
66
  }
60
- }, [isStreamingEnabled, queryId, sendCancelQuery, database, activeTabId]);
61
- const isRunHighlighted = highlightedAction === 'execute';
62
- const isExplainHighlighted = highlightedAction === 'explain';
67
+ }, [isCurrentQueryStreaming, queryId, sendCancelQuery, database, activeTabId]);
68
+ const isRunHighlighted = highlightedAction === QUERY_ACTIONS.execute;
69
+ const isExplainHighlighted = highlightedAction === QUERY_ACTIONS.explain;
70
+ const isExplainAnalyzeHighlighted = highlightedAction === QUERY_ACTIONS.explainAnalyze;
63
71
  const onRunButtonClick = React.useCallback(() => {
64
72
  handleSendExecuteClick(input);
65
73
  }, [handleSendExecuteClick, input]);
66
74
  const onExplainButtonClick = React.useCallback(() => {
67
75
  handleGetExplainQueryClick(input);
68
76
  }, [handleGetExplainQueryClick, input]);
77
+ const onExplainAnalyzeButtonClick = React.useCallback(() => {
78
+ handleGetExplainAnalyzeQueryClick(input);
79
+ }, [handleGetExplainAnalyzeQueryClick, input]);
69
80
  React.useEffect(() => {
70
81
  return () => {
71
82
  if (cancelErrorAnimationRef.current) {
@@ -74,7 +85,7 @@ export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highligh
74
85
  };
75
86
  }, []);
76
87
  const controlsDisabled = disabled || !input;
77
- const renderStopButton = () => (_jsx(EditorButton.Stop, { loading: cancelQueryResponse.isLoading, error: cancelQueryError, onClick: onStopButtonClick }));
78
- return (_jsxs("div", { className: b(), children: [_jsxs("div", { className: b('left'), children: [_jsx(ActionButton, { type: "run", isHighlighted: isRunHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onRunButtonClick, renderStopButton: renderStopButton }), _jsx(ActionButton, { type: "explain", isHighlighted: isExplainHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onExplainButtonClick, renderStopButton: renderStopButton }), _jsx(EditorButton.Settings, { onClick: onSettingsButtonClick, isLoading: isLoading })] }), _jsxs("div", { className: b('right'), children: [_jsx(NewSQL, { database: database }), _jsx(SaveQuery, { buttonProps: { disabled } })] })] }));
88
+ const renderStopButton = (replacedAction) => (_jsx(EditorButton.Stop, { loading: cancelQueryResponse.isLoading, error: cancelQueryError, replacedAction: replacedAction, onClick: onStopButtonClick }));
89
+ return (_jsxs("div", { className: b(), children: [_jsxs("div", { className: b('left'), children: [_jsx(ActionButton, { type: "run", isHighlighted: isRunHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onRunButtonClick, renderStopButton: renderStopButton }), _jsx(ActionButton, { type: "explain", isHighlighted: isExplainHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onExplainButtonClick, renderStopButton: renderStopButton }), _jsx(ActionButton, { type: "explainAnalyze", isHighlighted: isExplainAnalyzeHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onExplainAnalyzeButtonClick, renderStopButton: renderStopButton }), _jsx(EditorButton.Settings, { onClick: onSettingsButtonClick, isLoading: isLoading })] }), _jsxs("div", { className: b('right'), children: [_jsx(NewSQL, { database: database }), _jsx(SaveQuery, { buttonProps: { disabled } })] })] }));
79
90
  };
80
91
  //# sourceMappingURL=QueryEditorControls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryEditorControls.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAC,MAAM,wCAAwC,CAAC;AAE1F,OAAO,EAAC,EAAE,EAAC,MAAM,sBAAsB,CAAC;AACxC,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAC,6BAA6B,EAAC,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,4BAA4B,CAAC;AAEpC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,CAAC;AAgB1C,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAYpC,MAAM,YAAY,GAAG,CAAC,EAClB,IAAI,EACJ,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GACA,EAAE,EAAE;IACpB,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QAC5C,OAAO,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;IAEjF,OAAO,CACH,KAAC,eAAe,IACZ,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAC5C,CACL,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAE5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,kBAAkB,EAElB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,GACH,EAAE,EAAE;IAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACxD,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC,GAAG,cAAc,CAAC,sBAAsB,EAAE,CAAC;IACvF,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE/E,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QACnD,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,IAAI,CAAC;YACD,IAAI,kBAAkB,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,EAAE,CAAC;oBACf,OAAO;gBACX,CAAC;gBAED,6BAA6B,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACjB,MAAM,eAAe,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACxD,CAAC;QACL,CAAC;QAAC,WAAM,CAAC;YACL,WAAW,CAAC;gBACR,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC;gBACnC,KAAK,EAAE,QAAQ;gBACf,UAAU,EAAE,sBAAsB;aACrC,CAAC,CAAC;YACH,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAE1B,IAAI,uBAAuB,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,uBAAuB,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACrD,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACxC,CAAC;IACL,CAAC,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,iBAAiB,KAAK,SAAS,CAAC;IACzD,MAAM,oBAAoB,GAAG,iBAAiB,KAAK,SAAS,CAAC;IAE7D,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC5C,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpC,MAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAChD,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EAAE,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC;IAExC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,OAAO,GAAG,EAAE;YACR,IAAI,uBAAuB,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;QACL,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC;IAE5C,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAC3B,KAAC,YAAY,CAAC,IAAI,IACd,OAAO,EAAE,mBAAmB,CAAC,SAAS,EACtC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,iBAAiB,GAC5B,CACL,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,EAAE,aACf,eAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aACrB,KAAC,YAAY,IACT,IAAI,EAAC,KAAK,EACV,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,gBAAgB,EAC/B,gBAAgB,EAAE,gBAAgB,GACpC,EACF,KAAC,YAAY,IACT,IAAI,EAAC,SAAS,EACd,aAAa,EAAE,oBAAoB,EACnC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,oBAAoB,EACnC,gBAAgB,EAAE,gBAAgB,GACpC,EACF,KAAC,YAAY,CAAC,QAAQ,IAAC,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,GAAI,IAC7E,EACN,eAAK,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,aACtB,KAAC,MAAM,IAAC,QAAQ,EAAE,QAAQ,GAAI,EAC9B,KAAC,SAAS,IAAC,WAAW,EAAE,EAAC,QAAQ,EAAC,GAAI,IACpC,IACJ,CACT,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"QueryEditorControls.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.tsx"],"names":[],"mappings":"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"}
@@ -13,6 +13,25 @@
13
13
  gap: 12px;
14
14
  }
15
15
 
16
+ &__action-button {
17
+ display: flex;
18
+ flex: none;
19
+
20
+ &_run {
21
+ width: 76px;
22
+ }
23
+
24
+ &_explain-analyze {
25
+ width: 111px;
26
+ }
27
+
28
+ > .g-button {
29
+ width: 100%;
30
+ min-width: 0;
31
+ max-width: 100%;
32
+ }
33
+ }
34
+
16
35
  &__mode-selector {
17
36
  $b: &;
18
37
 
@@ -11,6 +11,7 @@ import { SETTING_KEYS } from '../../../../store/reducers/settings/constants';
11
11
  import { cn } from '../../../../utils/cn';
12
12
  import { useSetting, useTypedDispatch, useTypedSelector } from '../../../../utils/hooks';
13
13
  import { getIllustration } from '../../../../utils/illustrations';
14
+ import { isExecutionQueryAction } from '../../../../utils/query';
14
15
  import { PaneVisibilityToggleButtons } from '../../utils/paneVisibilityToggleHelpers';
15
16
  import { QuerySettingsBanner } from '../QuerySettingsBanner/QuerySettingsBanner';
16
17
  import { QueryStoppedBanner } from '../QueryStoppedBanner/QueryStoppedBanner';
@@ -21,7 +22,7 @@ import { QueryInfoDropdown } from './components/QueryInfoDropdown/QueryInfoDropd
21
22
  import { QueryResultError } from './components/QueryResultError/QueryResultError';
22
23
  import { ResultSetsViewer } from './components/ResultSetsViewer/ResultSetsViewer';
23
24
  import { TraceButton } from './components/TraceButton/TraceButton';
24
- import { RESULT_OPTIONS_IDS } from './constants';
25
+ import { RESULT_OPTIONS_IDS, getDefaultResultSection, getResultSections } from './constants';
25
26
  import i18n from './i18n';
26
27
  import './QueryResultViewer.scss';
27
28
  const b = cn('ydb-query-result');
@@ -46,15 +47,13 @@ const RESULT_OPTIONS_TITLES = {
46
47
  return i18n('action.ast');
47
48
  },
48
49
  };
49
- const EXECUTE_SECTIONS = ['result', 'schema', 'simplified', 'stats'];
50
- const EXPLAIN_SECTIONS = ['schema', 'simplified', 'json', 'ast'];
51
50
  export function QueryResultViewer({ result, resultType = 'execute', isResultsCollapsed, theme, database, queryText, tableSettings, onCollapseResults, onExpandResults, }) {
52
51
  var _a;
53
52
  const InternalErrorImage = getIllustration('InternalError');
54
53
  const dispatch = useTypedDispatch();
55
54
  const selectedTabs = useTypedSelector(selectResultTab);
56
- const isExecute = resultType === 'execute';
57
- const isExplain = resultType === 'explain';
55
+ const isExecutionResult = isExecutionQueryAction(resultType);
56
+ const hasResultSection = getResultSections(resultType).includes(RESULT_OPTIONS_IDS.result);
58
57
  const [selectedResultSet, setSelectedResultSet] = React.useState(0);
59
58
  const [useShowPlanToSvg] = useSetting(SETTING_KEYS.USE_SHOW_PLAN_SVG);
60
59
  const [copyStatus, setCopyStatus] = React.useState('pending');
@@ -62,13 +61,13 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
62
61
  const activeSection = React.useMemo(() => {
63
62
  const savedTab = selectedTabs === null || selectedTabs === void 0 ? void 0 : selectedTabs[resultType];
64
63
  if (savedTab) {
65
- const validSections = isExecute ? EXECUTE_SECTIONS : EXPLAIN_SECTIONS;
64
+ const validSections = getResultSections(resultType);
66
65
  if (validSections.includes(savedTab)) {
67
66
  return savedTab;
68
67
  }
69
68
  }
70
- return isExecute ? RESULT_OPTIONS_IDS.result : RESULT_OPTIONS_IDS.schema;
71
- }, [selectedTabs, resultType, isExecute]);
69
+ return getDefaultResultSection(resultType);
70
+ }, [selectedTabs, resultType]);
72
71
  const { error, isLoading, streamingStatus, data = {} } = result;
73
72
  const { preparedPlan, simplifiedPlan, stats, resultSets, ast } = data;
74
73
  React.useEffect(() => {
@@ -83,18 +82,12 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
83
82
  window.clearTimeout(copyTimeoutRef.current);
84
83
  };
85
84
  const radioButtonOptions = React.useMemo(() => {
86
- let sections = [];
87
- if (isExecute) {
88
- sections = EXECUTE_SECTIONS;
89
- }
90
- else if (isExplain) {
91
- sections = EXPLAIN_SECTIONS;
92
- }
85
+ const sections = getResultSections(resultType);
93
86
  return sections.map((section) => ({
94
87
  value: section,
95
88
  content: RESULT_OPTIONS_TITLES[section],
96
89
  }));
97
- }, [isExecute, isExplain]);
90
+ }, [resultType]);
98
91
  const hasCopyableData = React.useCallback(() => {
99
92
  var _a, _b, _c;
100
93
  switch (activeSection) {
@@ -180,7 +173,7 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
180
173
  ast: data.ast,
181
174
  stats: data.stats,
182
175
  plan: data.plan,
183
- }, error: error, database: database, hasPlanToSvg: Boolean((data === null || data === void 0 ? void 0 : data.plan) && useShowPlanToSvg && isExecute) }));
176
+ }, error: error, database: database, hasPlanToSvg: Boolean((data === null || data === void 0 ? void 0 : data.plan) && useShowPlanToSvg && isExecutionResult) }));
184
177
  };
185
178
  const renderCommonErrorView = (isStopped) => {
186
179
  return (_jsxs(Flex, { justifyContent: "center", alignItems: "center", width: "100%", gap: 8, children: [_jsx(InternalErrorImage, { width: 230, height: 230, className: b('illustration') }), _jsxs(Flex, { direction: "column", gap: 2, children: [_jsx(Text, { variant: "subheader-2", children: isStopped ? i18n('stopped.title') : i18n('error.title') }), _jsx(Text, { color: "complementary", children: isStopped ? i18n('stopped.description') : i18n('error.description') })] })] }));
@@ -191,18 +184,18 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
191
184
  if (error && isStopped && !(resultSets === null || resultSets === void 0 ? void 0 : resultSets.length)) {
192
185
  return renderCommonErrorView(isStopped);
193
186
  }
194
- return (_jsx(ResultSetsViewer, { resultSets: resultSets, error: error, selectedResultSet: selectedResultSet, tableSettings: tableSettings, setSelectedResultSet: setSelectedResultSet }));
187
+ return (_jsx(ResultSetsViewer, { resultSets: resultSets, error: error, selectedResultSet: selectedResultSet, tableSettings: tableSettings, setSelectedResultSet: setSelectedResultSet, sourcePosition: result.sourcePosition }));
195
188
  }
196
189
  if (error) {
197
- if (isExecute || isStopped) {
190
+ if ((isExecutionResult && hasResultSection) || isStopped) {
198
191
  return renderCommonErrorView(isStopped);
199
192
  }
200
- return _jsx(QueryResultError, { error: error });
193
+ return _jsx(QueryResultError, { error: error, sourcePosition: result.sourcePosition });
201
194
  }
202
195
  return (_jsx(PlanSection, { activeSection: activeSection, sectionTitle: RESULT_OPTIONS_TITLES[activeSection], preparedPlan: preparedPlan, simplifiedPlan: simplifiedPlan, stats: stats, ast: ast, theme: theme }));
203
196
  };
204
197
  const renderLeftControls = () => {
205
- return (_jsxs("div", { className: b('controls-left'), children: [radioButtonOptions.length && activeSection ? (_jsx(SegmentedRadioGroup, { options: radioButtonOptions, value: activeSection, onUpdate: onSelectSection })) : null, _jsx(QueryExecutionStatus, { error: error, loading: isLoading, streamingStatus: streamingStatus }), (data === null || data === void 0 ? void 0 : data.traceId) && isExecute ? _jsx(TraceButton, { traceId: data.traceId }) : null] }));
198
+ return (_jsxs("div", { className: b('controls-left'), children: [radioButtonOptions.length && activeSection ? (_jsx(SegmentedRadioGroup, { options: radioButtonOptions, value: activeSection, onUpdate: onSelectSection })) : null, _jsx(QueryExecutionStatus, { error: error, loading: isLoading, streamingStatus: streamingStatus }), (data === null || data === void 0 ? void 0 : data.traceId) && isExecutionResult ? _jsx(TraceButton, { traceId: data.traceId }) : null] }));
206
199
  };
207
200
  const renderRightControls = () => {
208
201
  return (_jsxs("div", { className: b('controls-right'), children: [renderQueryInfoDropdown(), renderCopyButton(), _jsx(EnableFullscreenButton, {}), _jsx(PaneVisibilityToggleButtons, { onCollapse: onCollapseResults, onExpand: onExpandResults, isCollapsed: isResultsCollapsed, initialDirection: "bottom" })] }));