@gravity-ui/querieskit 1.5.1 → 1.6.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 (338) hide show
  1. package/README.md +28 -0
  2. package/build/cjs/components/QueryGraph/QueryGraph.css +70 -0
  3. package/build/cjs/components/QueryGraph/QueryGraph.css.map +1 -0
  4. package/build/cjs/components/QueryGraph/QueryGraph.d.ts +4 -0
  5. package/build/cjs/components/QueryGraph/QueryGraph.js +517 -0
  6. package/build/cjs/components/QueryGraph/QueryGraph.js.map +1 -0
  7. package/build/cjs/components/QueryGraph/QueryGraph.stories.d.ts +16 -0
  8. package/build/cjs/components/QueryGraph/QueryGraph.stories.js +339 -0
  9. package/build/cjs/components/QueryGraph/QueryGraph.stories.js.map +1 -0
  10. package/build/cjs/components/QueryGraph/helpers/layout.d.ts +9 -0
  11. package/build/cjs/components/QueryGraph/helpers/layout.js +138 -0
  12. package/build/cjs/components/QueryGraph/helpers/layout.js.map +1 -0
  13. package/build/cjs/components/QueryGraph/helpers/presentation.d.ts +18 -0
  14. package/build/cjs/components/QueryGraph/helpers/presentation.js +44 -0
  15. package/build/cjs/components/QueryGraph/helpers/presentation.js.map +1 -0
  16. package/build/cjs/components/QueryGraph/i18n/dicts.d.ts +55 -0
  17. package/build/cjs/components/QueryGraph/i18n/dicts.js +14 -0
  18. package/build/cjs/components/QueryGraph/i18n/dicts.js.map +1 -0
  19. package/build/cjs/components/QueryGraph/i18n/en.json +26 -0
  20. package/build/cjs/components/QueryGraph/i18n/index.d.ts +6 -0
  21. package/build/cjs/components/QueryGraph/i18n/index.js +11 -0
  22. package/build/cjs/components/QueryGraph/i18n/index.js.map +1 -0
  23. package/build/cjs/components/QueryGraph/i18n/ru.json +26 -0
  24. package/build/cjs/components/QueryGraph/index.d.ts +2 -0
  25. package/build/cjs/components/QueryGraph/index.js +13 -0
  26. package/build/cjs/components/QueryGraph/index.js.map +1 -0
  27. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.d.ts +24 -0
  28. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js +307 -0
  29. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -0
  30. package/build/cjs/components/QueryGraph/internal/QueryGraphPopup.d.ts +5 -0
  31. package/build/cjs/components/QueryGraph/internal/QueryGraphPopup.js +242 -0
  32. package/build/cjs/components/QueryGraph/internal/QueryGraphPopup.js.map +1 -0
  33. package/build/cjs/components/QueryGraph/internal/queryGraphIcons.d.ts +12 -0
  34. package/build/cjs/components/QueryGraph/internal/queryGraphIcons.js +161 -0
  35. package/build/cjs/components/QueryGraph/internal/queryGraphIcons.js.map +1 -0
  36. package/build/cjs/components/QueryGraph/internal/useQueryGraphLayout.d.ts +22 -0
  37. package/build/cjs/components/QueryGraph/internal/useQueryGraphLayout.js +60 -0
  38. package/build/cjs/components/QueryGraph/internal/useQueryGraphLayout.js.map +1 -0
  39. package/build/cjs/components/QueryGraph/story/largeGraphData.d.ts +3 -0
  40. package/build/cjs/components/QueryGraph/story/largeGraphData.js +227 -0
  41. package/build/cjs/components/QueryGraph/story/largeGraphData.js.map +1 -0
  42. package/build/cjs/components/index.d.ts +2 -0
  43. package/build/cjs/components/index.js +9 -1
  44. package/build/cjs/components/index.js.map +1 -1
  45. package/build/cjs/helpers/buildColumnsFromKeys.d.ts +1 -1
  46. package/build/cjs/helpers/buildColumnsFromKeys.js.map +1 -1
  47. package/build/cjs/index.d.ts +1 -0
  48. package/build/cjs/index.js +11 -0
  49. package/build/cjs/index.js.map +1 -1
  50. package/build/cjs/modules/ClustersList/ClustersList.d.ts +1 -1
  51. package/build/cjs/modules/ClustersList/ClustersList.js +4 -3
  52. package/build/cjs/modules/ClustersList/ClustersList.js.map +1 -1
  53. package/build/cjs/modules/HistoryHeader/HistoryHeader.js +4 -3
  54. package/build/cjs/modules/HistoryHeader/HistoryHeader.js.map +1 -1
  55. package/build/cjs/modules/HistoryRow/HistoryRow.js +12 -7
  56. package/build/cjs/modules/HistoryRow/HistoryRow.js.map +1 -1
  57. package/build/cjs/modules/HistorySearchRow/HistorySearchRow.js +8 -5
  58. package/build/cjs/modules/HistorySearchRow/HistorySearchRow.js.map +1 -1
  59. package/build/cjs/modules/HistorySearchRow/helpers/resolveMonacoLanguage.d.ts +1 -1
  60. package/build/cjs/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js +5 -5
  61. package/build/cjs/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js.map +1 -1
  62. package/build/cjs/modules/NavigationDetail/NavigationDetail.d.ts +1 -1
  63. package/build/cjs/modules/NavigationDetail/NavigationDetail.js +2 -2
  64. package/build/cjs/modules/NavigationDetail/NavigationDetail.js.map +1 -1
  65. package/build/cjs/modules/NavigationHeader/NavigationHeader.d.ts +1 -1
  66. package/build/cjs/modules/NavigationHeader/NavigationHeader.js +2 -2
  67. package/build/cjs/modules/NavigationHeader/NavigationHeader.js.map +1 -1
  68. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.d.ts +1 -1
  69. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.js +4 -3
  70. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.js.map +1 -1
  71. package/build/cjs/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.d.ts +1 -1
  72. package/build/cjs/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js +2 -2
  73. package/build/cjs/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js.map +1 -1
  74. package/build/cjs/modules/NavigationMeta/NavigationMeta.js +4 -3
  75. package/build/cjs/modules/NavigationMeta/NavigationMeta.js.map +1 -1
  76. package/build/cjs/modules/NavigationMeta/i18n/index.d.ts +2 -2
  77. package/build/cjs/modules/NavigationPreview/NavigationPreview.d.ts +1 -1
  78. package/build/cjs/modules/NavigationPreview/NavigationPreview.js +6 -4
  79. package/build/cjs/modules/NavigationPreview/NavigationPreview.js.map +1 -1
  80. package/build/cjs/modules/NavigationPreview/helpers/buildPreviewColumns.d.ts +1 -1
  81. package/build/cjs/modules/NavigationPreview/helpers/buildPreviewColumns.js.map +1 -1
  82. package/build/cjs/modules/NavigationSchema/NavigationSchema.d.ts +1 -1
  83. package/build/cjs/modules/NavigationSchema/NavigationSchema.js +4 -3
  84. package/build/cjs/modules/NavigationSchema/NavigationSchema.js.map +1 -1
  85. package/build/cjs/modules/NavigationSchema/helpers/buildSchemaColumns.d.ts +1 -1
  86. package/build/cjs/modules/NavigationSchema/helpers/buildSchemaColumns.js.map +1 -1
  87. package/build/cjs/modules/NavigationView/NavigationView.d.ts +1 -1
  88. package/build/cjs/modules/NavigationView/NavigationView.js +4 -3
  89. package/build/cjs/modules/NavigationView/NavigationView.js.map +1 -1
  90. package/build/cjs/modules/NavigationView/helpers/buildViewColumns.d.ts +1 -1
  91. package/build/cjs/modules/NavigationView/helpers/buildViewColumns.js.map +1 -1
  92. package/build/cjs/modules/NavigationView/internal/NavigationViewSectionItem.d.ts +1 -1
  93. package/build/cjs/modules/NavigationView/internal/NavigationViewSectionItem.js +4 -3
  94. package/build/cjs/modules/NavigationView/internal/NavigationViewSectionItem.js.map +1 -1
  95. package/build/cjs/modules/QueriesList/QueriesList.js +2 -2
  96. package/build/cjs/modules/QueriesList/QueriesList.js.map +1 -1
  97. package/build/cjs/modules/QueryProgress/QueryProgress.css +64 -0
  98. package/build/cjs/modules/QueryProgress/QueryProgress.css.map +1 -0
  99. package/build/cjs/modules/QueryProgress/QueryProgress.d.ts +4 -0
  100. package/build/cjs/modules/QueryProgress/QueryProgress.js +135 -0
  101. package/build/cjs/modules/QueryProgress/QueryProgress.js.map +1 -0
  102. package/build/cjs/modules/QueryProgress/QueryProgress.stories.d.ts +7 -0
  103. package/build/cjs/modules/QueryProgress/QueryProgress.stories.js +38 -0
  104. package/build/cjs/modules/QueryProgress/QueryProgress.stories.js.map +1 -0
  105. package/build/cjs/modules/QueryProgress/i18n/dicts.d.ts +25 -0
  106. package/build/cjs/modules/QueryProgress/i18n/dicts.js +14 -0
  107. package/build/cjs/modules/QueryProgress/i18n/dicts.js.map +1 -0
  108. package/build/cjs/modules/QueryProgress/i18n/en.json +11 -0
  109. package/build/cjs/modules/QueryProgress/i18n/index.d.ts +6 -0
  110. package/build/cjs/modules/QueryProgress/i18n/index.js +11 -0
  111. package/build/cjs/modules/QueryProgress/i18n/index.js.map +1 -0
  112. package/build/cjs/modules/QueryProgress/i18n/ru.json +11 -0
  113. package/build/cjs/modules/QueryProgress/index.d.ts +2 -0
  114. package/build/cjs/modules/QueryProgress/index.js +13 -0
  115. package/build/cjs/modules/QueryProgress/index.js.map +1 -0
  116. package/build/cjs/modules/QueryStatistics/i18n/index.d.ts +2 -2
  117. package/build/cjs/modules/RowsList/RowsList.js +4 -3
  118. package/build/cjs/modules/RowsList/RowsList.js.map +1 -1
  119. package/build/cjs/modules/SavedQueryRow/SavedQueryRow.d.ts +2 -2
  120. package/build/cjs/modules/SavedQueryRow/SavedQueryRow.js +6 -4
  121. package/build/cjs/modules/SavedQueryRow/SavedQueryRow.js.map +1 -1
  122. package/build/cjs/modules/SavedQuerySearchRow/SavedQuerySearchRow.d.ts +2 -2
  123. package/build/cjs/modules/SavedQuerySearchRow/SavedQuerySearchRow.js +4 -3
  124. package/build/cjs/modules/SavedQuerySearchRow/SavedQuerySearchRow.js.map +1 -1
  125. package/build/cjs/modules/TutorialRow/TutorialRow.d.ts +1 -1
  126. package/build/cjs/modules/TutorialRow/TutorialRow.js +2 -2
  127. package/build/cjs/modules/TutorialRow/TutorialRow.js.map +1 -1
  128. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.d.ts +1 -1
  129. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js +4 -3
  130. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
  131. package/build/cjs/modules/index.d.ts +2 -0
  132. package/build/cjs/modules/index.js +8 -0
  133. package/build/cjs/modules/index.js.map +1 -1
  134. package/build/cjs/types/queryGraph.d.ts +87 -0
  135. package/build/cjs/types/queryGraph.js +6 -0
  136. package/build/cjs/types/queryGraph.js.map +1 -0
  137. package/build/cjs/widgets/DashboardCharts/DashboardCharts.js +8 -6
  138. package/build/cjs/widgets/DashboardCharts/DashboardCharts.js.map +1 -1
  139. package/build/cjs/widgets/DashboardCharts/types.d.ts +3 -3
  140. package/build/cjs/widgets/DashboardCharts/types.js.map +1 -1
  141. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js +2 -2
  142. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  143. package/build/cjs/widgets/QueriesHistory/internal/HistoryRowContent.js +6 -5
  144. package/build/cjs/widgets/QueriesHistory/internal/HistoryRowContent.js.map +1 -1
  145. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.d.ts +1 -1
  146. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.js +13 -9
  147. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.js.map +1 -1
  148. package/build/cjs/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js +2 -2
  149. package/build/cjs/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js.map +1 -1
  150. package/build/cjs/widgets/QueriesNavigation/helpers/createTableDetailConfig.js +8 -5
  151. package/build/cjs/widgets/QueriesNavigation/helpers/createTableDetailConfig.js.map +1 -1
  152. package/build/cjs/widgets/QueryResults/QueryResults.js +2 -2
  153. package/build/cjs/widgets/QueryResults/QueryResults.js.map +1 -1
  154. package/build/cjs/widgets/QueryResults/i18n/index.d.ts +2 -2
  155. package/build/cjs/widgets/QueryResults/internal/QueryResultsSchema.js +4 -3
  156. package/build/cjs/widgets/QueryResults/internal/QueryResultsSchema.js.map +1 -1
  157. package/build/cjs/widgets/SavedQueries/SavedQueries.d.ts +2 -2
  158. package/build/cjs/widgets/SavedQueries/SavedQueries.js +2 -2
  159. package/build/cjs/widgets/SavedQueries/SavedQueries.js.map +1 -1
  160. package/build/cjs/widgets/SavedQueries/SavedQueryRowContent.d.ts +2 -2
  161. package/build/cjs/widgets/SavedQueries/SavedQueryRowContent.js +6 -5
  162. package/build/cjs/widgets/SavedQueries/SavedQueryRowContent.js.map +1 -1
  163. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.d.ts +2 -2
  164. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js +6 -5
  165. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
  166. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.d.ts +2 -2
  167. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js +6 -4
  168. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  169. package/build/esm/components/QueryGraph/QueryGraph.css +70 -0
  170. package/build/esm/components/QueryGraph/QueryGraph.css.map +1 -0
  171. package/build/esm/components/QueryGraph/QueryGraph.d.ts +4 -0
  172. package/build/esm/components/QueryGraph/QueryGraph.js +510 -0
  173. package/build/esm/components/QueryGraph/QueryGraph.js.map +1 -0
  174. package/build/esm/components/QueryGraph/QueryGraph.scss +81 -0
  175. package/build/esm/components/QueryGraph/QueryGraph.stories.d.ts +16 -0
  176. package/build/esm/components/QueryGraph/QueryGraph.stories.js +331 -0
  177. package/build/esm/components/QueryGraph/QueryGraph.stories.js.map +1 -0
  178. package/build/esm/components/QueryGraph/helpers/layout.d.ts +9 -0
  179. package/build/esm/components/QueryGraph/helpers/layout.js +128 -0
  180. package/build/esm/components/QueryGraph/helpers/layout.js.map +1 -0
  181. package/build/esm/components/QueryGraph/helpers/presentation.d.ts +18 -0
  182. package/build/esm/components/QueryGraph/helpers/presentation.js +35 -0
  183. package/build/esm/components/QueryGraph/helpers/presentation.js.map +1 -0
  184. package/build/esm/components/QueryGraph/i18n/dicts.d.ts +55 -0
  185. package/build/esm/components/QueryGraph/i18n/dicts.js +7 -0
  186. package/build/esm/components/QueryGraph/i18n/dicts.js.map +1 -0
  187. package/build/esm/components/QueryGraph/i18n/en.json +26 -0
  188. package/build/esm/components/QueryGraph/i18n/index.d.ts +6 -0
  189. package/build/esm/components/QueryGraph/i18n/index.js +4 -0
  190. package/build/esm/components/QueryGraph/i18n/index.js.map +1 -0
  191. package/build/esm/components/QueryGraph/i18n/ru.json +26 -0
  192. package/build/esm/components/QueryGraph/index.d.ts +2 -0
  193. package/build/esm/components/QueryGraph/index.js +2 -0
  194. package/build/esm/components/QueryGraph/index.js.map +1 -0
  195. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.d.ts +24 -0
  196. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js +299 -0
  197. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -0
  198. package/build/esm/components/QueryGraph/internal/QueryGraphPopup.d.ts +5 -0
  199. package/build/esm/components/QueryGraph/internal/QueryGraphPopup.js +234 -0
  200. package/build/esm/components/QueryGraph/internal/QueryGraphPopup.js.map +1 -0
  201. package/build/esm/components/QueryGraph/internal/queryGraphIcons.d.ts +12 -0
  202. package/build/esm/components/QueryGraph/internal/queryGraphIcons.js +150 -0
  203. package/build/esm/components/QueryGraph/internal/queryGraphIcons.js.map +1 -0
  204. package/build/esm/components/QueryGraph/internal/useQueryGraphLayout.d.ts +22 -0
  205. package/build/esm/components/QueryGraph/internal/useQueryGraphLayout.js +53 -0
  206. package/build/esm/components/QueryGraph/internal/useQueryGraphLayout.js.map +1 -0
  207. package/build/esm/components/QueryGraph/story/largeGraphData.d.ts +3 -0
  208. package/build/esm/components/QueryGraph/story/largeGraphData.js +220 -0
  209. package/build/esm/components/QueryGraph/story/largeGraphData.js.map +1 -0
  210. package/build/esm/components/index.d.ts +2 -0
  211. package/build/esm/components/index.js +1 -0
  212. package/build/esm/components/index.js.map +1 -1
  213. package/build/esm/helpers/buildColumnsFromKeys.d.ts +1 -1
  214. package/build/esm/helpers/buildColumnsFromKeys.js.map +1 -1
  215. package/build/esm/index.d.ts +1 -0
  216. package/build/esm/index.js +1 -0
  217. package/build/esm/index.js.map +1 -1
  218. package/build/esm/modules/ClustersList/ClustersList.d.ts +1 -1
  219. package/build/esm/modules/ClustersList/ClustersList.js +2 -1
  220. package/build/esm/modules/ClustersList/ClustersList.js.map +1 -1
  221. package/build/esm/modules/HistoryHeader/HistoryHeader.js +2 -1
  222. package/build/esm/modules/HistoryHeader/HistoryHeader.js.map +1 -1
  223. package/build/esm/modules/HistoryRow/HistoryRow.js +6 -1
  224. package/build/esm/modules/HistoryRow/HistoryRow.js.map +1 -1
  225. package/build/esm/modules/HistorySearchRow/HistorySearchRow.js +4 -1
  226. package/build/esm/modules/HistorySearchRow/HistorySearchRow.js.map +1 -1
  227. package/build/esm/modules/HistorySearchRow/helpers/resolveMonacoLanguage.d.ts +1 -1
  228. package/build/esm/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js +1 -1
  229. package/build/esm/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js.map +1 -1
  230. package/build/esm/modules/NavigationDetail/NavigationDetail.d.ts +1 -1
  231. package/build/esm/modules/NavigationDetail/NavigationDetail.js +1 -1
  232. package/build/esm/modules/NavigationDetail/NavigationDetail.js.map +1 -1
  233. package/build/esm/modules/NavigationHeader/NavigationHeader.d.ts +1 -1
  234. package/build/esm/modules/NavigationHeader/NavigationHeader.js +1 -1
  235. package/build/esm/modules/NavigationHeader/NavigationHeader.js.map +1 -1
  236. package/build/esm/modules/NavigationItemsList/NavigationItemsList.d.ts +1 -1
  237. package/build/esm/modules/NavigationItemsList/NavigationItemsList.js +2 -1
  238. package/build/esm/modules/NavigationItemsList/NavigationItemsList.js.map +1 -1
  239. package/build/esm/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.d.ts +1 -1
  240. package/build/esm/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js +1 -1
  241. package/build/esm/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js.map +1 -1
  242. package/build/esm/modules/NavigationMeta/NavigationMeta.js +2 -1
  243. package/build/esm/modules/NavigationMeta/NavigationMeta.js.map +1 -1
  244. package/build/esm/modules/NavigationMeta/i18n/index.d.ts +2 -2
  245. package/build/esm/modules/NavigationPreview/NavigationPreview.d.ts +1 -1
  246. package/build/esm/modules/NavigationPreview/NavigationPreview.js +3 -1
  247. package/build/esm/modules/NavigationPreview/NavigationPreview.js.map +1 -1
  248. package/build/esm/modules/NavigationPreview/helpers/buildPreviewColumns.d.ts +1 -1
  249. package/build/esm/modules/NavigationPreview/helpers/buildPreviewColumns.js.map +1 -1
  250. package/build/esm/modules/NavigationSchema/NavigationSchema.d.ts +1 -1
  251. package/build/esm/modules/NavigationSchema/NavigationSchema.js +2 -1
  252. package/build/esm/modules/NavigationSchema/NavigationSchema.js.map +1 -1
  253. package/build/esm/modules/NavigationSchema/helpers/buildSchemaColumns.d.ts +1 -1
  254. package/build/esm/modules/NavigationSchema/helpers/buildSchemaColumns.js.map +1 -1
  255. package/build/esm/modules/NavigationView/NavigationView.d.ts +1 -1
  256. package/build/esm/modules/NavigationView/NavigationView.js +2 -1
  257. package/build/esm/modules/NavigationView/NavigationView.js.map +1 -1
  258. package/build/esm/modules/NavigationView/helpers/buildViewColumns.d.ts +1 -1
  259. package/build/esm/modules/NavigationView/helpers/buildViewColumns.js.map +1 -1
  260. package/build/esm/modules/NavigationView/internal/NavigationViewSectionItem.d.ts +1 -1
  261. package/build/esm/modules/NavigationView/internal/NavigationViewSectionItem.js +2 -1
  262. package/build/esm/modules/NavigationView/internal/NavigationViewSectionItem.js.map +1 -1
  263. package/build/esm/modules/QueriesList/QueriesList.js +1 -1
  264. package/build/esm/modules/QueriesList/QueriesList.js.map +1 -1
  265. package/build/esm/modules/QueryProgress/QueryProgress.css +64 -0
  266. package/build/esm/modules/QueryProgress/QueryProgress.css.map +1 -0
  267. package/build/esm/modules/QueryProgress/QueryProgress.d.ts +4 -0
  268. package/build/esm/modules/QueryProgress/QueryProgress.js +127 -0
  269. package/build/esm/modules/QueryProgress/QueryProgress.js.map +1 -0
  270. package/build/esm/modules/QueryProgress/QueryProgress.scss +72 -0
  271. package/build/esm/modules/QueryProgress/QueryProgress.stories.d.ts +7 -0
  272. package/build/esm/modules/QueryProgress/QueryProgress.stories.js +31 -0
  273. package/build/esm/modules/QueryProgress/QueryProgress.stories.js.map +1 -0
  274. package/build/esm/modules/QueryProgress/i18n/dicts.d.ts +25 -0
  275. package/build/esm/modules/QueryProgress/i18n/dicts.js +7 -0
  276. package/build/esm/modules/QueryProgress/i18n/dicts.js.map +1 -0
  277. package/build/esm/modules/QueryProgress/i18n/en.json +11 -0
  278. package/build/esm/modules/QueryProgress/i18n/index.d.ts +6 -0
  279. package/build/esm/modules/QueryProgress/i18n/index.js +4 -0
  280. package/build/esm/modules/QueryProgress/i18n/index.js.map +1 -0
  281. package/build/esm/modules/QueryProgress/i18n/ru.json +11 -0
  282. package/build/esm/modules/QueryProgress/index.d.ts +2 -0
  283. package/build/esm/modules/QueryProgress/index.js +2 -0
  284. package/build/esm/modules/QueryProgress/index.js.map +1 -0
  285. package/build/esm/modules/QueryStatistics/i18n/index.d.ts +2 -2
  286. package/build/esm/modules/RowsList/RowsList.js +2 -1
  287. package/build/esm/modules/RowsList/RowsList.js.map +1 -1
  288. package/build/esm/modules/SavedQueryRow/SavedQueryRow.d.ts +2 -2
  289. package/build/esm/modules/SavedQueryRow/SavedQueryRow.js +3 -1
  290. package/build/esm/modules/SavedQueryRow/SavedQueryRow.js.map +1 -1
  291. package/build/esm/modules/SavedQuerySearchRow/SavedQuerySearchRow.d.ts +2 -2
  292. package/build/esm/modules/SavedQuerySearchRow/SavedQuerySearchRow.js +2 -1
  293. package/build/esm/modules/SavedQuerySearchRow/SavedQuerySearchRow.js.map +1 -1
  294. package/build/esm/modules/TutorialRow/TutorialRow.d.ts +1 -1
  295. package/build/esm/modules/TutorialRow/TutorialRow.js +1 -1
  296. package/build/esm/modules/TutorialRow/TutorialRow.js.map +1 -1
  297. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.d.ts +1 -1
  298. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js +2 -1
  299. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
  300. package/build/esm/modules/index.d.ts +2 -0
  301. package/build/esm/modules/index.js +1 -0
  302. package/build/esm/modules/index.js.map +1 -1
  303. package/build/esm/types/queryGraph.d.ts +87 -0
  304. package/build/esm/types/queryGraph.js +2 -0
  305. package/build/esm/types/queryGraph.js.map +1 -0
  306. package/build/esm/widgets/DashboardCharts/DashboardCharts.js +4 -2
  307. package/build/esm/widgets/DashboardCharts/DashboardCharts.js.map +1 -1
  308. package/build/esm/widgets/DashboardCharts/types.d.ts +3 -3
  309. package/build/esm/widgets/DashboardCharts/types.js.map +1 -1
  310. package/build/esm/widgets/QueriesHistory/QueriesHistory.js +1 -1
  311. package/build/esm/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  312. package/build/esm/widgets/QueriesHistory/internal/HistoryRowContent.js +3 -2
  313. package/build/esm/widgets/QueriesHistory/internal/HistoryRowContent.js.map +1 -1
  314. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.d.ts +1 -1
  315. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.js +6 -2
  316. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.js.map +1 -1
  317. package/build/esm/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js +1 -1
  318. package/build/esm/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js.map +1 -1
  319. package/build/esm/widgets/QueriesNavigation/helpers/createTableDetailConfig.js +4 -1
  320. package/build/esm/widgets/QueriesNavigation/helpers/createTableDetailConfig.js.map +1 -1
  321. package/build/esm/widgets/QueryResults/QueryResults.js +1 -1
  322. package/build/esm/widgets/QueryResults/QueryResults.js.map +1 -1
  323. package/build/esm/widgets/QueryResults/i18n/index.d.ts +2 -2
  324. package/build/esm/widgets/QueryResults/internal/QueryResultsSchema.js +2 -1
  325. package/build/esm/widgets/QueryResults/internal/QueryResultsSchema.js.map +1 -1
  326. package/build/esm/widgets/SavedQueries/SavedQueries.d.ts +2 -2
  327. package/build/esm/widgets/SavedQueries/SavedQueries.js +1 -1
  328. package/build/esm/widgets/SavedQueries/SavedQueries.js.map +1 -1
  329. package/build/esm/widgets/SavedQueries/SavedQueryRowContent.d.ts +2 -2
  330. package/build/esm/widgets/SavedQueries/SavedQueryRowContent.js +3 -2
  331. package/build/esm/widgets/SavedQueries/SavedQueryRowContent.js.map +1 -1
  332. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.d.ts +2 -2
  333. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js +3 -2
  334. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
  335. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.d.ts +2 -2
  336. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js +3 -1
  337. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  338. package/package.json +84 -5
@@ -0,0 +1,299 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _callSuper from "@babel/runtime/helpers/callSuper";
5
+ import _inherits from "@babel/runtime/helpers/inherits";
6
+ import "core-js/modules/es.array.concat.js";
7
+ import "core-js/modules/es.array.fill.js";
8
+ import "core-js/modules/es.array.for-each.js";
9
+ import "core-js/modules/es.array.iterator.js";
10
+ import "core-js/modules/es.array.join.js";
11
+ import "core-js/modules/es.function.name.js";
12
+ import "core-js/modules/es.iterator.constructor.js";
13
+ import "core-js/modules/es.iterator.for-each.js";
14
+ import "core-js/modules/es.map.js";
15
+ import "core-js/modules/es.object.to-string.js";
16
+ import "core-js/modules/es.set.js";
17
+ import "core-js/modules/es.set.difference.v2.js";
18
+ import "core-js/modules/es.set.intersection.v2.js";
19
+ import "core-js/modules/es.set.is-disjoint-from.v2.js";
20
+ import "core-js/modules/es.set.is-subset-of.v2.js";
21
+ import "core-js/modules/es.set.is-superset-of.v2.js";
22
+ import "core-js/modules/es.set.symmetric-difference.v2.js";
23
+ import "core-js/modules/es.set.union.v2.js";
24
+ import "core-js/modules/es.string.iterator.js";
25
+ import "core-js/modules/es.string.trim.js";
26
+ import "core-js/modules/esnext.map.get-or-insert.js";
27
+ import "core-js/modules/esnext.map.get-or-insert-computed.js";
28
+ import "core-js/modules/web.dom-collections.for-each.js";
29
+ import "core-js/modules/web.dom-collections.iterator.js";
30
+ /* eslint-disable no-param-reassign -- CanvasRenderingContext2D exposes drawing state as mutable properties. */
31
+ import { CanvasBlock } from '@gravity-ui/graph';
32
+ import { getQueryGraphProgress } from "../helpers/layout";
33
+ import { fitCanvasFontSize, fitCanvasText, getQueryGraphNodeContent, getScaleAdjustedFontSize } from "../helpers/presentation";
34
+ import { getQueryGraphStatusIconSvg } from "./queryGraphIcons";
35
+ var imageCache = new Map();
36
+ var statusTokens = {
37
+ 'not-started': ['--g-color-line-generic', '--g-color-base-float'],
38
+ waiting: ['--g-color-text-misc-heavy', '--g-color-base-misc-light'],
39
+ running: ['--g-color-line-generic', '--g-color-line-generic'],
40
+ completed: ['--g-color-text-positive-heavy', '--g-color-base-positive-light'],
41
+ failed: ['--g-color-text-danger-heavy', '--g-color-base-danger-light'],
42
+ aborted: ['--g-color-text-complementary', '--g-color-base-generic']
43
+ };
44
+ var statusIconTokens = {
45
+ running: '--g-color-text-info',
46
+ completed: '--g-color-text-positive-heavy',
47
+ failed: '--g-color-text-danger-heavy',
48
+ aborted: '--g-color-text-complementary'
49
+ };
50
+ var resourceTokens = ['--g-color-line-generic', '--g-color-base-float'];
51
+ var START_ANGLE = -Math.PI / 2;
52
+ var STATUS_ICON_SIZE_RATIO = 1 / 4;
53
+ var STATUS_ICON_BACKGROUND_RADIUS_RATIO = 1 / 6;
54
+ var PROGRESS_WIDTH_RATIO = 1 / 9;
55
+ var INNER_BORDER_WIDTH_RATIO = 1 / 25;
56
+ var COUNTER_MAX_WIDTH_RATIO = 7 / 9;
57
+ var LABEL_MAX_WIDTH_RATIO = 2;
58
+ var COUNTER_FONT_SIZE = 11;
59
+ var LABEL_FONT_SIZE = 9;
60
+ var LABEL_GAP = 4;
61
+ var RESOURCE_ICON_SIZE = 16;
62
+ function cssValue(token, element) {
63
+ if (typeof document === 'undefined') return '';
64
+ return getComputedStyle(element !== null && element !== void 0 ? element : document.documentElement).getPropertyValue(token).trim();
65
+ }
66
+ function coloredSvgDataUrl(svg, color) {
67
+ var markup = svg.split('currentColor').join(color || '#000');
68
+ return "data:image/svg+xml;charset=utf-8,".concat(encodeURIComponent(markup));
69
+ }
70
+ function getCanvasImage(svg, color, onSettled) {
71
+ if (typeof Image === 'undefined') return undefined;
72
+ var key = "".concat(color, "\n").concat(svg);
73
+ var entry = imageCache.get(key);
74
+ if (!entry) {
75
+ var image = new Image();
76
+ entry = {
77
+ image: image,
78
+ state: 'loading',
79
+ listeners: new Set()
80
+ };
81
+ imageCache.set(key, entry);
82
+ image.onload = function () {
83
+ if (!entry) return;
84
+ entry.state = 'loaded';
85
+ entry.listeners.forEach(function (listener) {
86
+ return listener();
87
+ });
88
+ entry.listeners.clear();
89
+ };
90
+ image.onerror = function () {
91
+ if (!entry) return;
92
+ entry.state = 'failed';
93
+ entry.listeners.forEach(function (listener) {
94
+ return listener();
95
+ });
96
+ entry.listeners.clear();
97
+ };
98
+ image.src = coloredSvgDataUrl(svg, color);
99
+ }
100
+ if (entry.state === 'loading') entry.listeners.add(onSettled);
101
+ return entry;
102
+ }
103
+ export var QueryGraphCanvasBlock = /*#__PURE__*/function (_CanvasBlock) {
104
+ function QueryGraphCanvasBlock() {
105
+ var _this;
106
+ _classCallCheck(this, QueryGraphCanvasBlock);
107
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
108
+ args[_key] = arguments[_key];
109
+ }
110
+ _this = _callSuper(this, QueryGraphCanvasBlock, [].concat(args));
111
+ _this.redrawAfterImageLoad = function () {
112
+ return _this.performRender();
113
+ };
114
+ return _this;
115
+ }
116
+ _inherits(QueryGraphCanvasBlock, _CanvasBlock);
117
+ return _createClass(QueryGraphCanvasBlock, [{
118
+ key: "renderMinimalisticBlock",
119
+ value: function renderMinimalisticBlock(ctx) {
120
+ this.renderQueryNode(ctx);
121
+ }
122
+ }, {
123
+ key: "renderSchematicView",
124
+ value: function renderSchematicView(ctx) {
125
+ this.renderQueryNode(ctx);
126
+ }
127
+ }, {
128
+ key: "renderDetailedView",
129
+ value: function renderDetailedView(ctx) {
130
+ this.renderQueryNode(ctx);
131
+ }
132
+ }, {
133
+ key: "renderQueryNode",
134
+ value: function renderQueryNode(context) {
135
+ var _node$status, _node$label;
136
+ var meta = this.state.meta;
137
+ if (!(meta !== null && meta !== void 0 && meta.node)) return;
138
+ var node = meta.node;
139
+ var status = (_node$status = node.status) !== null && _node$status !== void 0 ? _node$status : 'not-started';
140
+ var _ref = node.kind === 'operation' ? statusTokens[status] : resourceTokens,
141
+ _ref2 = _slicedToArray(_ref, 2),
142
+ lineToken = _ref2[0],
143
+ baseToken = _ref2[1];
144
+ context.save();
145
+ if (node.kind === 'operation' && status === 'running') {
146
+ this.drawRunningOperation(context, getQueryGraphProgress(node));
147
+ } else {
148
+ this.drawNodeShape(context, lineToken, baseToken);
149
+ }
150
+ var content = getQueryGraphNodeContent(node);
151
+ if (content.kind === 'icon') {
152
+ var _this$state = this.state,
153
+ x = _this$state.x,
154
+ y = _this$state.y,
155
+ width = _this$state.width,
156
+ height = _this$state.height;
157
+ var side = node.kind === 'operation' ? width / 2 : RESOURCE_ICON_SIZE;
158
+ this.drawIcon(context, meta.iconSvg, meta.fallbackIconSvg, x + (width - side) / 2, y + (height - side) / 2, side, cssValue(meta.iconColorToken, context.canvas), cssValue(meta.fallbackIconColorToken, context.canvas));
159
+ } else if (content.kind === 'counter') {
160
+ this.drawCounter(context, content.value);
161
+ }
162
+ if (node.kind === 'operation') this.drawStatusIcon(context, status);
163
+ this.drawLabel(context, (_node$label = node.label) !== null && _node$label !== void 0 ? _node$label : node.name, node.kind !== 'operation');
164
+ context.restore();
165
+ }
166
+ }, {
167
+ key: "drawNodeShape",
168
+ value: function drawNodeShape(context, lineToken, baseToken) {
169
+ var _this$state2 = this.state,
170
+ x = _this$state2.x,
171
+ y = _this$state2.y,
172
+ width = _this$state2.width,
173
+ height = _this$state2.height,
174
+ meta = _this$state2.meta;
175
+ context.beginPath();
176
+ if ((meta === null || meta === void 0 ? void 0 : meta.node.kind) === 'operation') {
177
+ context.arc(x + width / 2, y + height / 2, width / 2 - 1, 0, Math.PI * 2);
178
+ } else {
179
+ context.roundRect(x + 1, y + 1, width - 2, height - 2, 12);
180
+ }
181
+ context.fillStyle = cssValue(baseToken, context.canvas);
182
+ context.fill();
183
+ context.lineWidth = 2;
184
+ context.strokeStyle = cssValue(lineToken, context.canvas);
185
+ context.stroke();
186
+ }
187
+ }, {
188
+ key: "drawRunningOperation",
189
+ value: function drawRunningOperation(context, progress) {
190
+ var _this$state3 = this.state,
191
+ x = _this$state3.x,
192
+ y = _this$state3.y,
193
+ width = _this$state3.width,
194
+ height = _this$state3.height;
195
+ var centerX = x + width / 2;
196
+ var centerY = y + height / 2;
197
+ var radius = width / 2;
198
+ var progressWidth = width * PROGRESS_WIDTH_RATIO;
199
+ var endAngle = START_ANGLE + Math.PI * 2 * progress;
200
+ var runningBase = cssValue('--g-color-line-generic', context.canvas);
201
+ var runningLine = cssValue('--g-color-line-generic', context.canvas);
202
+ var progressBase = cssValue('--g-color-base-info-light', context.canvas);
203
+ var progressLine = cssValue('--g-color-text-info', context.canvas);
204
+ var background = cssValue('--g-color-base-background', context.canvas);
205
+ context.beginPath();
206
+ context.arc(centerX, centerY, radius - progressWidth / 2, 0, Math.PI * 2);
207
+ context.fillStyle = runningBase;
208
+ context.fill();
209
+ context.lineWidth = progressWidth;
210
+ context.strokeStyle = runningLine;
211
+ context.stroke();
212
+ if (progress > 0) {
213
+ context.beginPath();
214
+ context.moveTo(centerX, centerY);
215
+ context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);
216
+ context.closePath();
217
+ context.fillStyle = progressBase;
218
+ context.fill();
219
+ context.beginPath();
220
+ context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);
221
+ context.lineWidth = progressWidth;
222
+ context.strokeStyle = progressLine;
223
+ context.stroke();
224
+ }
225
+ context.beginPath();
226
+ context.arc(centerX, centerY, radius - progressWidth, 0, Math.PI * 2);
227
+ context.lineWidth = width * INNER_BORDER_WIDTH_RATIO;
228
+ context.strokeStyle = background;
229
+ context.stroke();
230
+ }
231
+ }, {
232
+ key: "drawCounter",
233
+ value: function drawCounter(context, value) {
234
+ var _this$state4 = this.state,
235
+ x = _this$state4.x,
236
+ y = _this$state4.y,
237
+ width = _this$state4.width,
238
+ height = _this$state4.height;
239
+ var maxFontSize = getScaleAdjustedFontSize(COUNTER_FONT_SIZE, this.context.graph.cameraService.getCameraScale());
240
+ var fontFamily = cssValue('--g-font-family-sans', context.canvas);
241
+ context.fillStyle = cssValue('--g-color-text-primary', context.canvas);
242
+ context.textAlign = 'center';
243
+ context.textBaseline = 'middle';
244
+ context.font = "500 ".concat(maxFontSize, "px ").concat(fontFamily);
245
+ var fontSize = fitCanvasFontSize(maxFontSize, context.measureText(value).width, width * COUNTER_MAX_WIDTH_RATIO);
246
+ context.font = "500 ".concat(fontSize, "px ").concat(fontFamily);
247
+ context.fillText(value, x + width / 2, y + height / 2);
248
+ }
249
+ }, {
250
+ key: "drawStatusIcon",
251
+ value: function drawStatusIcon(context, status) {
252
+ var iconSvg = getQueryGraphStatusIconSvg(status);
253
+ var colorToken = statusIconTokens[status];
254
+ if (!iconSvg || !colorToken) return;
255
+ var _this$state5 = this.state,
256
+ x = _this$state5.x,
257
+ y = _this$state5.y,
258
+ width = _this$state5.width;
259
+ var side = width * STATUS_ICON_SIZE_RATIO;
260
+ var backgroundRadius = width * STATUS_ICON_BACKGROUND_RADIUS_RATIO;
261
+ var iconX = x + width - side;
262
+ var iconY = y;
263
+ context.beginPath();
264
+ context.arc(iconX + side / 2, iconY + side / 2, backgroundRadius, 0, Math.PI * 2);
265
+ context.fillStyle = cssValue('--g-color-base-background', context.canvas);
266
+ context.fill();
267
+ this.drawIcon(context, iconSvg, iconSvg, iconX, iconY, side, cssValue(colorToken, context.canvas), cssValue(colorToken, context.canvas));
268
+ }
269
+ }, {
270
+ key: "drawIcon",
271
+ value: function drawIcon(context, svg, fallbackSvg, x, y, side, color, fallbackColor) {
272
+ var _entry, _entry2;
273
+ var entry = getCanvasImage(svg, color, this.redrawAfterImageLoad);
274
+ if (((_entry = entry) === null || _entry === void 0 ? void 0 : _entry.state) === 'failed' && fallbackSvg !== svg) {
275
+ entry = getCanvasImage(fallbackSvg, fallbackColor, this.redrawAfterImageLoad);
276
+ }
277
+ if (((_entry2 = entry) === null || _entry2 === void 0 ? void 0 : _entry2.state) === 'loaded') context.drawImage(entry.image, x, y, side, side);
278
+ }
279
+ }, {
280
+ key: "drawLabel",
281
+ value: function drawLabel(context, label, trimStart) {
282
+ var _this$state6 = this.state,
283
+ x = _this$state6.x,
284
+ y = _this$state6.y,
285
+ width = _this$state6.width,
286
+ height = _this$state6.height;
287
+ var cameraScale = this.context.graph.cameraService.getCameraScale();
288
+ var fontSize = getScaleAdjustedFontSize(LABEL_FONT_SIZE, cameraScale);
289
+ var labelGap = getScaleAdjustedFontSize(LABEL_GAP, cameraScale);
290
+ context.fillStyle = cssValue('--g-color-text-primary', context.canvas);
291
+ context.textAlign = 'center';
292
+ context.textBaseline = 'top';
293
+ context.font = "400 ".concat(fontSize, "px ").concat(cssValue('--g-font-family-sans', context.canvas));
294
+ var fitted = fitCanvasText(context, label, width * LABEL_MAX_WIDTH_RATIO, trimStart);
295
+ context.fillText(fitted, x + width / 2, y + height + labelGap);
296
+ }
297
+ }]);
298
+ }(CanvasBlock);
299
+ // #sourceMappingURL=QueryGraphCanvasBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CanvasBlock","getQueryGraphProgress","fitCanvasFontSize","fitCanvasText","getQueryGraphNodeContent","getScaleAdjustedFontSize","getQueryGraphStatusIconSvg","imageCache","Map","statusTokens","waiting","running","completed","failed","aborted","statusIconTokens","resourceTokens","START_ANGLE","Math","PI","STATUS_ICON_SIZE_RATIO","STATUS_ICON_BACKGROUND_RADIUS_RATIO","PROGRESS_WIDTH_RATIO","INNER_BORDER_WIDTH_RATIO","COUNTER_MAX_WIDTH_RATIO","LABEL_MAX_WIDTH_RATIO","COUNTER_FONT_SIZE","LABEL_FONT_SIZE","LABEL_GAP","RESOURCE_ICON_SIZE","cssValue","token","element","document","getComputedStyle","documentElement","getPropertyValue","trim","coloredSvgDataUrl","svg","color","markup","split","join","concat","encodeURIComponent","getCanvasImage","onSettled","Image","undefined","key","entry","get","image","state","listeners","Set","set","onload","forEach","listener","clear","onerror","src","add","QueryGraphCanvasBlock","_CanvasBlock","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","redrawAfterImageLoad","performRender","_inherits","_createClass","value","renderMinimalisticBlock","ctx","renderQueryNode","renderSchematicView","renderDetailedView","context","_node$status","_node$label","meta","node","status","_ref","kind","_ref2","_slicedToArray","lineToken","baseToken","save","drawRunningOperation","drawNodeShape","content","_this$state","x","y","width","height","side","drawIcon","iconSvg","fallbackIconSvg","iconColorToken","canvas","fallbackIconColorToken","drawCounter","drawStatusIcon","drawLabel","label","name","restore","_this$state2","beginPath","arc","roundRect","fillStyle","fill","lineWidth","strokeStyle","stroke","progress","_this$state3","centerX","centerY","radius","progressWidth","endAngle","runningBase","runningLine","progressBase","progressLine","background","moveTo","closePath","_this$state4","maxFontSize","graph","cameraService","getCameraScale","fontFamily","textAlign","textBaseline","font","fontSize","measureText","fillText","colorToken","_this$state5","backgroundRadius","iconX","iconY","fallbackSvg","fallbackColor","_entry","_entry2","drawImage","trimStart","_this$state6","cameraScale","labelGap","fitted"],"sources":["QueryGraphCanvasBlock.ts"],"sourcesContent":["/* eslint-disable no-param-reassign -- CanvasRenderingContext2D exposes drawing state as mutable properties. */\nimport {CanvasBlock, type TBlock} from '@gravity-ui/graph';\n\nimport type {QueryGraphNode, QueryGraphNodeStatus} from '../../../types/queryGraph';\nimport {getQueryGraphProgress} from '../helpers/layout';\nimport {\n fitCanvasFontSize,\n fitCanvasText,\n getQueryGraphNodeContent,\n getScaleAdjustedFontSize,\n} from '../helpers/presentation';\nimport {getQueryGraphStatusIconSvg} from './queryGraphIcons';\n\ntype QueryGraphBlockMeta = {\n node: QueryGraphNode;\n iconSvg: string;\n fallbackIconSvg: string;\n iconColorToken: string;\n fallbackIconColorToken: string;\n};\n\nexport type QueryGraphBlock = TBlock<QueryGraphBlockMeta>;\n\ntype ImageCacheEntry = {\n image: HTMLImageElement;\n state: 'loading' | 'loaded' | 'failed';\n listeners: Set<() => void>;\n};\n\nconst imageCache = new Map<string, ImageCacheEntry>();\nconst statusTokens = {\n 'not-started': ['--g-color-line-generic', '--g-color-base-float'],\n waiting: ['--g-color-text-misc-heavy', '--g-color-base-misc-light'],\n running: ['--g-color-line-generic', '--g-color-line-generic'],\n completed: ['--g-color-text-positive-heavy', '--g-color-base-positive-light'],\n failed: ['--g-color-text-danger-heavy', '--g-color-base-danger-light'],\n aborted: ['--g-color-text-complementary', '--g-color-base-generic'],\n} as const;\nconst statusIconTokens: Partial<Record<QueryGraphNodeStatus, string>> = {\n running: '--g-color-text-info',\n completed: '--g-color-text-positive-heavy',\n failed: '--g-color-text-danger-heavy',\n aborted: '--g-color-text-complementary',\n};\nconst resourceTokens = ['--g-color-line-generic', '--g-color-base-float'] as const;\nconst START_ANGLE = -Math.PI / 2;\nconst STATUS_ICON_SIZE_RATIO = 1 / 4;\nconst STATUS_ICON_BACKGROUND_RADIUS_RATIO = 1 / 6;\nconst PROGRESS_WIDTH_RATIO = 1 / 9;\nconst INNER_BORDER_WIDTH_RATIO = 1 / 25;\nconst COUNTER_MAX_WIDTH_RATIO = 7 / 9;\nconst LABEL_MAX_WIDTH_RATIO = 2;\nconst COUNTER_FONT_SIZE = 11;\nconst LABEL_FONT_SIZE = 9;\nconst LABEL_GAP = 4;\nconst RESOURCE_ICON_SIZE = 16;\n\nfunction cssValue(token: string, element?: Element) {\n if (typeof document === 'undefined') return '';\n return getComputedStyle(element ?? document.documentElement)\n .getPropertyValue(token)\n .trim();\n}\n\nfunction coloredSvgDataUrl(svg: string, color: string) {\n const markup = svg.split('currentColor').join(color || '#000');\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(markup)}`;\n}\n\nfunction getCanvasImage(svg: string, color: string, onSettled: () => void) {\n if (typeof Image === 'undefined') return undefined;\n const key = `${color}\\n${svg}`;\n let entry = imageCache.get(key);\n if (!entry) {\n const image = new Image();\n entry = {image, state: 'loading', listeners: new Set()};\n imageCache.set(key, entry);\n image.onload = () => {\n if (!entry) return;\n entry.state = 'loaded';\n entry.listeners.forEach((listener) => listener());\n entry.listeners.clear();\n };\n image.onerror = () => {\n if (!entry) return;\n entry.state = 'failed';\n entry.listeners.forEach((listener) => listener());\n entry.listeners.clear();\n };\n image.src = coloredSvgDataUrl(svg, color);\n }\n if (entry.state === 'loading') entry.listeners.add(onSettled);\n return entry;\n}\n\nexport class QueryGraphCanvasBlock extends CanvasBlock<QueryGraphBlock> {\n public override renderMinimalisticBlock(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n public override renderSchematicView(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n public override renderDetailedView(ctx: CanvasRenderingContext2D) {\n this.renderQueryNode(ctx);\n }\n\n private readonly redrawAfterImageLoad = () => this.performRender();\n\n private renderQueryNode(context: CanvasRenderingContext2D) {\n const {meta} = this.state;\n if (!meta?.node) return;\n const {node} = meta;\n const status = node.status ?? 'not-started';\n const [lineToken, baseToken] =\n node.kind === 'operation' ? statusTokens[status] : resourceTokens;\n\n context.save();\n if (node.kind === 'operation' && status === 'running') {\n this.drawRunningOperation(context, getQueryGraphProgress(node));\n } else {\n this.drawNodeShape(context, lineToken, baseToken);\n }\n\n const content = getQueryGraphNodeContent(node);\n if (content.kind === 'icon') {\n const {x, y, width, height} = this.state;\n const side = node.kind === 'operation' ? width / 2 : RESOURCE_ICON_SIZE;\n this.drawIcon(\n context,\n meta.iconSvg,\n meta.fallbackIconSvg,\n x + (width - side) / 2,\n y + (height - side) / 2,\n side,\n cssValue(meta.iconColorToken, context.canvas),\n cssValue(meta.fallbackIconColorToken, context.canvas),\n );\n } else if (content.kind === 'counter') {\n this.drawCounter(context, content.value);\n }\n\n if (node.kind === 'operation') this.drawStatusIcon(context, status);\n this.drawLabel(context, node.label ?? node.name, node.kind !== 'operation');\n context.restore();\n }\n\n private drawNodeShape(context: CanvasRenderingContext2D, lineToken: string, baseToken: string) {\n const {x, y, width, height, meta} = this.state;\n context.beginPath();\n if (meta?.node.kind === 'operation') {\n context.arc(x + width / 2, y + height / 2, width / 2 - 1, 0, Math.PI * 2);\n } else {\n context.roundRect(x + 1, y + 1, width - 2, height - 2, 12);\n }\n context.fillStyle = cssValue(baseToken, context.canvas);\n context.fill();\n context.lineWidth = 2;\n context.strokeStyle = cssValue(lineToken, context.canvas);\n context.stroke();\n }\n\n private drawRunningOperation(context: CanvasRenderingContext2D, progress: number) {\n const {x, y, width, height} = this.state;\n const centerX = x + width / 2;\n const centerY = y + height / 2;\n const radius = width / 2;\n const progressWidth = width * PROGRESS_WIDTH_RATIO;\n const endAngle = START_ANGLE + Math.PI * 2 * progress;\n const runningBase = cssValue('--g-color-line-generic', context.canvas);\n const runningLine = cssValue('--g-color-line-generic', context.canvas);\n const progressBase = cssValue('--g-color-base-info-light', context.canvas);\n const progressLine = cssValue('--g-color-text-info', context.canvas);\n const background = cssValue('--g-color-base-background', context.canvas);\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth / 2, 0, Math.PI * 2);\n context.fillStyle = runningBase;\n context.fill();\n context.lineWidth = progressWidth;\n context.strokeStyle = runningLine;\n context.stroke();\n\n if (progress > 0) {\n context.beginPath();\n context.moveTo(centerX, centerY);\n context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);\n context.closePath();\n context.fillStyle = progressBase;\n context.fill();\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth / 2, START_ANGLE, endAngle);\n context.lineWidth = progressWidth;\n context.strokeStyle = progressLine;\n context.stroke();\n }\n\n context.beginPath();\n context.arc(centerX, centerY, radius - progressWidth, 0, Math.PI * 2);\n context.lineWidth = width * INNER_BORDER_WIDTH_RATIO;\n context.strokeStyle = background;\n context.stroke();\n }\n\n private drawCounter(context: CanvasRenderingContext2D, value: string) {\n const {x, y, width, height} = this.state;\n const maxFontSize = getScaleAdjustedFontSize(\n COUNTER_FONT_SIZE,\n this.context.graph.cameraService.getCameraScale(),\n );\n const fontFamily = cssValue('--g-font-family-sans', context.canvas);\n context.fillStyle = cssValue('--g-color-text-primary', context.canvas);\n context.textAlign = 'center';\n context.textBaseline = 'middle';\n context.font = `500 ${maxFontSize}px ${fontFamily}`;\n const fontSize = fitCanvasFontSize(\n maxFontSize,\n context.measureText(value).width,\n width * COUNTER_MAX_WIDTH_RATIO,\n );\n context.font = `500 ${fontSize}px ${fontFamily}`;\n context.fillText(value, x + width / 2, y + height / 2);\n }\n\n private drawStatusIcon(context: CanvasRenderingContext2D, status: QueryGraphNodeStatus) {\n const iconSvg = getQueryGraphStatusIconSvg(status);\n const colorToken = statusIconTokens[status];\n if (!iconSvg || !colorToken) return;\n const {x, y, width} = this.state;\n const side = width * STATUS_ICON_SIZE_RATIO;\n const backgroundRadius = width * STATUS_ICON_BACKGROUND_RADIUS_RATIO;\n const iconX = x + width - side;\n const iconY = y;\n\n context.beginPath();\n context.arc(iconX + side / 2, iconY + side / 2, backgroundRadius, 0, Math.PI * 2);\n context.fillStyle = cssValue('--g-color-base-background', context.canvas);\n context.fill();\n this.drawIcon(\n context,\n iconSvg,\n iconSvg,\n iconX,\n iconY,\n side,\n cssValue(colorToken, context.canvas),\n cssValue(colorToken, context.canvas),\n );\n }\n\n private drawIcon(\n context: CanvasRenderingContext2D,\n svg: string,\n fallbackSvg: string,\n x: number,\n y: number,\n side: number,\n color: string,\n fallbackColor: string,\n ) {\n let entry = getCanvasImage(svg, color, this.redrawAfterImageLoad);\n if (entry?.state === 'failed' && fallbackSvg !== svg) {\n entry = getCanvasImage(fallbackSvg, fallbackColor, this.redrawAfterImageLoad);\n }\n if (entry?.state === 'loaded') context.drawImage(entry.image, x, y, side, side);\n }\n\n private drawLabel(context: CanvasRenderingContext2D, label: string, trimStart: boolean) {\n const {x, y, width, height} = this.state;\n const cameraScale = this.context.graph.cameraService.getCameraScale();\n const fontSize = getScaleAdjustedFontSize(LABEL_FONT_SIZE, cameraScale);\n const labelGap = getScaleAdjustedFontSize(LABEL_GAP, cameraScale);\n context.fillStyle = cssValue('--g-color-text-primary', context.canvas);\n context.textAlign = 'center';\n context.textBaseline = 'top';\n context.font = `400 ${fontSize}px ${cssValue('--g-font-family-sans', context.canvas)}`;\n const fitted = fitCanvasText(context, label, width * LABEL_MAX_WIDTH_RATIO, trimStart);\n context.fillText(fitted, x + width / 2, y + height + labelGap);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { QueryGraphNode } from '../../../types/queryGraph';
3
+ export declare function QueryGraphPopup({ node }: {
4
+ node: QueryGraphNode;
5
+ }): React.JSX.Element;
@@ -0,0 +1,234 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import "core-js/modules/es.array.concat.js";
4
+ import "core-js/modules/es.array.includes.js";
5
+ import "core-js/modules/es.array.is-array.js";
6
+ import "core-js/modules/es.array.join.js";
7
+ import "core-js/modules/es.array.map.js";
8
+ import "core-js/modules/es.array.push.js";
9
+ import "core-js/modules/es.function.name.js";
10
+ import "core-js/modules/es.iterator.constructor.js";
11
+ import "core-js/modules/es.iterator.map.js";
12
+ import "core-js/modules/es.number.to-fixed.js";
13
+ import "core-js/modules/es.object.to-string.js";
14
+ import "core-js/modules/es.string.includes.js";
15
+ import React, { useEffect, useMemo, useState } from 'react';
16
+ import { Progress, SegmentedRadioGroup, Table, Text } from '@gravity-ui/uikit';
17
+ import i18n from "../i18n";
18
+ import { getQueryGraphNodeIcon } from "./queryGraphIcons";
19
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
+ var jobStatuses = ['pending', 'running', 'completed', 'failed', 'aborted'];
21
+ var jobStatusLabels = {
22
+ pending: 'status_pending',
23
+ running: 'status_running',
24
+ completed: 'status_completed',
25
+ failed: 'status_failed',
26
+ aborted: 'status_aborted'
27
+ };
28
+ export function QueryGraphPopup(_ref) {
29
+ var _node$popup$details, _node$popup6, _ref2, _node$popup$jobs, _node$popup7;
30
+ var node = _ref.node;
31
+ var sections = useMemo(function () {
32
+ var _node$popup, _node$popup2, _node$popup3, _node$popup4, _node$popup5;
33
+ var items = [];
34
+ if ((_node$popup = node.popup) !== null && _node$popup !== void 0 && (_node$popup = _node$popup.stages) !== null && _node$popup !== void 0 && _node$popup.length) items.push('stages');
35
+ if ((_node$popup2 = node.popup) !== null && _node$popup2 !== void 0 && (_node$popup2 = _node$popup2.details) !== null && _node$popup2 !== void 0 && _node$popup2.length) items.push('details');
36
+ if ((_node$popup3 = node.popup) !== null && _node$popup3 !== void 0 && _node$popup3.jobs || node.progress) items.push('jobs');
37
+ if ((_node$popup4 = node.popup) !== null && _node$popup4 !== void 0 && (_node$popup4 = _node$popup4.inputs) !== null && _node$popup4 !== void 0 && _node$popup4.length || (_node$popup5 = node.popup) !== null && _node$popup5 !== void 0 && (_node$popup5 = _node$popup5.outputs) !== null && _node$popup5 !== void 0 && _node$popup5.length) items.push('schemas');
38
+ return items;
39
+ }, [node.popup, node.progress]);
40
+ var _useState = useState(sections[0]),
41
+ _useState2 = _slicedToArray(_useState, 2),
42
+ section = _useState2[0],
43
+ setSection = _useState2[1];
44
+ useEffect(function () {
45
+ if (!section || !sections.includes(section)) setSection(sections[0]);
46
+ }, [section, sections]);
47
+ var labels = {
48
+ stages: i18n('value_stages'),
49
+ details: i18n('value_details'),
50
+ jobs: i18n('value_jobs'),
51
+ schemas: i18n('value_schemas')
52
+ };
53
+ return /*#__PURE__*/_jsxs("div", {
54
+ className: "qp-query-graph__popup-content",
55
+ children: [/*#__PURE__*/_jsxs("div", {
56
+ className: "qp-query-graph__popup-title",
57
+ children: [getQueryGraphNodeIcon(node), /*#__PURE__*/_jsxs("div", {
58
+ children: [/*#__PURE__*/_jsx(Text, {
59
+ variant: "subheader-1",
60
+ children: node.name
61
+ }), node.label && /*#__PURE__*/_jsx(Text, {
62
+ color: "secondary",
63
+ children: node.label
64
+ })]
65
+ })]
66
+ }), sections.length > 1 && /*#__PURE__*/_jsx(SegmentedRadioGroup, {
67
+ size: "s",
68
+ width: "max",
69
+ value: section,
70
+ onUpdate: function onUpdate(value) {
71
+ return setSection(value);
72
+ },
73
+ children: sections.map(function (item) {
74
+ return /*#__PURE__*/_jsx(SegmentedRadioGroup.Option, {
75
+ value: item,
76
+ children: labels[item]
77
+ }, item);
78
+ })
79
+ }), section === 'stages' && /*#__PURE__*/_jsx(Stages, {
80
+ node: node
81
+ }), section === 'details' && /*#__PURE__*/_jsx(Details, {
82
+ items: (_node$popup$details = (_node$popup6 = node.popup) === null || _node$popup6 === void 0 ? void 0 : _node$popup6.details) !== null && _node$popup$details !== void 0 ? _node$popup$details : []
83
+ }), section === 'jobs' && /*#__PURE__*/_jsx(Jobs, {
84
+ jobs: (_ref2 = (_node$popup$jobs = (_node$popup7 = node.popup) === null || _node$popup7 === void 0 ? void 0 : _node$popup7.jobs) !== null && _node$popup$jobs !== void 0 ? _node$popup$jobs : node.progress) !== null && _ref2 !== void 0 ? _ref2 : {}
85
+ }), section === 'schemas' && /*#__PURE__*/_jsx(Schemas, {
86
+ node: node
87
+ }), !sections.length && node.label && /*#__PURE__*/_jsx(Text, {
88
+ color: "secondary",
89
+ children: node.label
90
+ })]
91
+ });
92
+ }
93
+ function Stages(_ref3) {
94
+ var _node$popup$stages, _node$popup8;
95
+ var node = _ref3.node;
96
+ var data = (_node$popup$stages = (_node$popup8 = node.popup) === null || _node$popup8 === void 0 ? void 0 : _node$popup8.stages) !== null && _node$popup$stages !== void 0 ? _node$popup$stages : [];
97
+ return /*#__PURE__*/_jsx(Table, {
98
+ data: data,
99
+ columns: [{
100
+ id: 'name',
101
+ name: i18n('field_stage')
102
+ }, {
103
+ id: 'duration',
104
+ name: i18n('field_duration'),
105
+ align: 'end',
106
+ template: function template(item) {
107
+ return formatDuration(item.duration);
108
+ }
109
+ }]
110
+ });
111
+ }
112
+ function Details(_ref4) {
113
+ var items = _ref4.items;
114
+ return /*#__PURE__*/_jsx("div", {
115
+ className: "qp-query-graph__details",
116
+ children: items.map(function (item, index) {
117
+ return /*#__PURE__*/_jsx(Detail, {
118
+ item: item
119
+ }, "".concat(item.name, "-").concat(index));
120
+ })
121
+ });
122
+ }
123
+ function Detail(_ref5) {
124
+ var _item$children;
125
+ var item = _ref5.item;
126
+ var content = item.value === undefined ? null : formatValue(item.value);
127
+ if ((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) {
128
+ return /*#__PURE__*/_jsxs("details", {
129
+ open: true,
130
+ children: [/*#__PURE__*/_jsx("summary", {
131
+ children: item.name
132
+ }), content && /*#__PURE__*/_jsx(Text, {
133
+ color: "secondary",
134
+ children: content
135
+ }), /*#__PURE__*/_jsx(Details, {
136
+ items: item.children
137
+ })]
138
+ });
139
+ }
140
+ return /*#__PURE__*/_jsxs("div", {
141
+ className: "qp-query-graph__detail-row",
142
+ children: [/*#__PURE__*/_jsx(Text, {
143
+ color: "secondary",
144
+ children: item.name
145
+ }), /*#__PURE__*/_jsx(Text, {
146
+ children: content
147
+ })]
148
+ });
149
+ }
150
+ function Jobs(_ref6) {
151
+ var _jobs$total, _jobs$completed;
152
+ var jobs = _ref6.jobs;
153
+ var rows = jobStatuses.map(function (status) {
154
+ var _jobs$status;
155
+ return {
156
+ status: i18n(jobStatusLabels[status]),
157
+ count: (_jobs$status = jobs[status]) !== null && _jobs$status !== void 0 ? _jobs$status : 0
158
+ };
159
+ });
160
+ var total = (_jobs$total = jobs.total) !== null && _jobs$total !== void 0 ? _jobs$total : 0;
161
+ var completed = (_jobs$completed = jobs.completed) !== null && _jobs$completed !== void 0 ? _jobs$completed : 0;
162
+ return /*#__PURE__*/_jsxs("div", {
163
+ className: "qp-query-graph__jobs",
164
+ children: [/*#__PURE__*/_jsx(Progress, {
165
+ size: "xs",
166
+ value: total > 0 ? completed / total * 100 : 0
167
+ }), /*#__PURE__*/_jsx(Table, {
168
+ data: [].concat(_toConsumableArray(rows), [{
169
+ status: i18n('value_total'),
170
+ count: total
171
+ }]),
172
+ columns: [{
173
+ id: 'status',
174
+ name: i18n('field_status')
175
+ }, {
176
+ id: 'count',
177
+ name: i18n('field_count'),
178
+ align: 'end'
179
+ }]
180
+ })]
181
+ });
182
+ }
183
+ function Schemas(_ref7) {
184
+ var _node$popup$inputs, _node$popup9, _node$popup$outputs, _node$popup0;
185
+ var node = _ref7.node;
186
+ return /*#__PURE__*/_jsxs("div", {
187
+ className: "qp-query-graph__schemas",
188
+ children: [/*#__PURE__*/_jsx(SchemaGroup, {
189
+ title: i18n('value_inputs'),
190
+ schemas: (_node$popup$inputs = (_node$popup9 = node.popup) === null || _node$popup9 === void 0 ? void 0 : _node$popup9.inputs) !== null && _node$popup$inputs !== void 0 ? _node$popup$inputs : []
191
+ }), /*#__PURE__*/_jsx(SchemaGroup, {
192
+ title: i18n('value_outputs'),
193
+ schemas: (_node$popup$outputs = (_node$popup0 = node.popup) === null || _node$popup0 === void 0 ? void 0 : _node$popup0.outputs) !== null && _node$popup$outputs !== void 0 ? _node$popup$outputs : []
194
+ })]
195
+ });
196
+ }
197
+ function SchemaGroup(_ref8) {
198
+ var title = _ref8.title,
199
+ schemas = _ref8.schemas;
200
+ if (!schemas.length) return null;
201
+ return /*#__PURE__*/_jsxs("details", {
202
+ open: true,
203
+ children: [/*#__PURE__*/_jsx("summary", {
204
+ children: title
205
+ }), schemas.map(function (schema) {
206
+ return /*#__PURE__*/_jsxs("details", {
207
+ open: schemas.length === 1,
208
+ children: [/*#__PURE__*/_jsx("summary", {
209
+ children: schema.name
210
+ }), /*#__PURE__*/_jsx(Table, {
211
+ data: schema.columns,
212
+ columns: [{
213
+ id: 'name',
214
+ name: i18n('field_name')
215
+ }, {
216
+ id: 'type',
217
+ name: i18n('field_type'),
218
+ align: 'end'
219
+ }]
220
+ })]
221
+ }, schema.name);
222
+ })]
223
+ });
224
+ }
225
+ function formatDuration(value) {
226
+ if (value < 1000) return "".concat(value, " ms");
227
+ return "".concat((value / 1000).toFixed(value < 10000 ? 1 : 0), " s");
228
+ }
229
+ function formatValue(value) {
230
+ if (Array.isArray(value)) return value.map(formatValue).join(', ');
231
+ if (value === null) return 'null';
232
+ return String(value);
233
+ }
234
+ // #sourceMappingURL=QueryGraphPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useMemo","useState","Progress","SegmentedRadioGroup","Table","Text","i18n","getQueryGraphNodeIcon","jsx","_jsx","jsxs","_jsxs","jobStatuses","jobStatusLabels","pending","running","completed","failed","aborted","QueryGraphPopup","_ref","_node$popup$details","_node$popup6","_ref2","_node$popup$jobs","_node$popup7","node","sections","_node$popup","_node$popup2","_node$popup3","_node$popup4","_node$popup5","items","popup","stages","length","push","details","jobs","progress","inputs","outputs","_useState","_useState2","_slicedToArray","section","setSection","includes","labels","schemas","className","children","variant","name","label","color","size","width","value","onUpdate","map","item","Option","Stages","Details","Jobs","Schemas","_ref3","_node$popup$stages","_node$popup8","data","columns","id","align","template","formatDuration","duration","_ref4","index","Detail","concat","_ref5","_item$children","content","undefined","formatValue","open","_ref6","_jobs$total","_jobs$completed","rows","status","_jobs$status","count","total","_toConsumableArray","_ref7","_node$popup$inputs","_node$popup9","_node$popup$outputs","_node$popup0","SchemaGroup","title","_ref8","schema","toFixed","Array","isArray","join","String"],"sources":["QueryGraphPopup.tsx"],"sourcesContent":["import React, {useEffect, useMemo, useState} from 'react';\nimport {Progress, SegmentedRadioGroup, Table, Text} from '@gravity-ui/uikit';\n\nimport type {\n QueryGraphDetail,\n QueryGraphJobCounts,\n QueryGraphNode,\n QueryGraphSchema,\n} from '../../../types/queryGraph';\nimport i18n from '../i18n';\nimport {getQueryGraphNodeIcon} from './queryGraphIcons';\n\ntype Section = 'stages' | 'details' | 'jobs' | 'schemas';\nconst jobStatuses = ['pending', 'running', 'completed', 'failed', 'aborted'] as const;\nconst jobStatusLabels = {\n pending: 'status_pending',\n running: 'status_running',\n completed: 'status_completed',\n failed: 'status_failed',\n aborted: 'status_aborted',\n} as const;\n\nexport function QueryGraphPopup({node}: {node: QueryGraphNode}) {\n const sections = useMemo(() => {\n const items: Section[] = [];\n if (node.popup?.stages?.length) items.push('stages');\n if (node.popup?.details?.length) items.push('details');\n if (node.popup?.jobs || node.progress) items.push('jobs');\n if (node.popup?.inputs?.length || node.popup?.outputs?.length) items.push('schemas');\n return items;\n }, [node.popup, node.progress]);\n const [section, setSection] = useState<Section | undefined>(sections[0]);\n\n useEffect(() => {\n if (!section || !sections.includes(section)) setSection(sections[0]);\n }, [section, sections]);\n\n const labels: Record<Section, string> = {\n stages: i18n('value_stages'),\n details: i18n('value_details'),\n jobs: i18n('value_jobs'),\n schemas: i18n('value_schemas'),\n };\n\n return (\n <div className=\"qp-query-graph__popup-content\">\n <div className=\"qp-query-graph__popup-title\">\n {getQueryGraphNodeIcon(node)}\n <div>\n <Text variant=\"subheader-1\">{node.name}</Text>\n {node.label && <Text color=\"secondary\">{node.label}</Text>}\n </div>\n </div>\n {sections.length > 1 && (\n <SegmentedRadioGroup\n size=\"s\"\n width=\"max\"\n value={section}\n onUpdate={(value) => setSection(value as Section)}\n >\n {sections.map((item) => (\n <SegmentedRadioGroup.Option key={item} value={item}>\n {labels[item]}\n </SegmentedRadioGroup.Option>\n ))}\n </SegmentedRadioGroup>\n )}\n {section === 'stages' && <Stages node={node} />}\n {section === 'details' && <Details items={node.popup?.details ?? []} />}\n {section === 'jobs' && <Jobs jobs={node.popup?.jobs ?? node.progress ?? {}} />}\n {section === 'schemas' && <Schemas node={node} />}\n {!sections.length && node.label && <Text color=\"secondary\">{node.label}</Text>}\n </div>\n );\n}\n\nfunction Stages({node}: {node: QueryGraphNode}) {\n const data = node.popup?.stages ?? [];\n return (\n <Table\n data={data}\n columns={[\n {id: 'name', name: i18n('field_stage')},\n {\n id: 'duration',\n name: i18n('field_duration'),\n align: 'end',\n template: (item) => formatDuration(item.duration),\n },\n ]}\n />\n );\n}\n\nfunction Details({items}: {items: QueryGraphDetail[]}) {\n return (\n <div className=\"qp-query-graph__details\">\n {items.map((item, index) => (\n <Detail key={`${item.name}-${index}`} item={item} />\n ))}\n </div>\n );\n}\n\nfunction Detail({item}: {item: QueryGraphDetail}) {\n const content = item.value === undefined ? null : formatValue(item.value);\n if (item.children?.length) {\n return (\n <details open>\n <summary>{item.name}</summary>\n {content && <Text color=\"secondary\">{content}</Text>}\n <Details items={item.children} />\n </details>\n );\n }\n return (\n <div className=\"qp-query-graph__detail-row\">\n <Text color=\"secondary\">{item.name}</Text>\n <Text>{content}</Text>\n </div>\n );\n}\n\nfunction Jobs({jobs}: {jobs: QueryGraphJobCounts}) {\n const rows = jobStatuses.map((status) => ({\n status: i18n(jobStatusLabels[status]),\n count: jobs[status] ?? 0,\n }));\n const total = jobs.total ?? 0;\n const completed = jobs.completed ?? 0;\n return (\n <div className=\"qp-query-graph__jobs\">\n <Progress size=\"xs\" value={total > 0 ? (completed / total) * 100 : 0} />\n <Table\n data={[...rows, {status: i18n('value_total'), count: total}]}\n columns={[\n {id: 'status', name: i18n('field_status')},\n {id: 'count', name: i18n('field_count'), align: 'end'},\n ]}\n />\n </div>\n );\n}\n\nfunction Schemas({node}: {node: QueryGraphNode}) {\n return (\n <div className=\"qp-query-graph__schemas\">\n <SchemaGroup title={i18n('value_inputs')} schemas={node.popup?.inputs ?? []} />\n <SchemaGroup title={i18n('value_outputs')} schemas={node.popup?.outputs ?? []} />\n </div>\n );\n}\n\nfunction SchemaGroup({title, schemas}: {title: string; schemas: QueryGraphSchema[]}) {\n if (!schemas.length) return null;\n return (\n <details open>\n <summary>{title}</summary>\n {schemas.map((schema) => (\n <details key={schema.name} open={schemas.length === 1}>\n <summary>{schema.name}</summary>\n <Table\n data={schema.columns}\n columns={[\n {id: 'name', name: i18n('field_name')},\n {id: 'type', name: i18n('field_type'), align: 'end'},\n ]}\n />\n </details>\n ))}\n </details>\n );\n}\n\nfunction formatDuration(value: number) {\n if (value < 1000) return `${value} ms`;\n return `${(value / 1000).toFixed(value < 10000 ? 1 : 0)} s`;\n}\n\nfunction formatValue(value: QueryGraphDetail['value']): string {\n if (Array.isArray(value)) return value.map(formatValue).join(', ');\n if (value === null) return 'null';\n return String(value);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { QueryGraphNode, QueryGraphNodeStatus } from '../../../types/queryGraph';
3
+ export declare function getDefaultQueryGraphNodeIcon(node: QueryGraphNode): React.ReactElement;
4
+ export declare function getQueryGraphNodeIcon(node: QueryGraphNode): React.ReactElement;
5
+ export declare function getQueryGraphNodeIconSvgs(node: QueryGraphNode): {
6
+ iconSvg: string;
7
+ fallbackIconSvg: string;
8
+ iconColorToken: string;
9
+ fallbackIconColorToken: string;
10
+ };
11
+ export declare function queryGraphIconToSvg(icon: React.ReactNode): string | undefined;
12
+ export declare function getQueryGraphStatusIconSvg(status: QueryGraphNodeStatus): string | undefined;