@ytsaurus/ui 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/build/cjs/server/ServerFactory.js +2 -1
  2. package/build/cjs/server/ServerFactory.js.map +1 -1
  3. package/build/cjs/server/config.localcluster.js +1 -1
  4. package/build/cjs/server/config.localcluster.js.map +1 -1
  5. package/build/cjs/server/configs/local.d.ts +3 -0
  6. package/build/cjs/server/configs/local.js +33 -0
  7. package/build/cjs/server/configs/local.js.map +1 -0
  8. package/build/cjs/server/utils/default-settings.js +1 -1
  9. package/build/cjs/server/utils/default-settings.js.map +1 -1
  10. package/build/cjs/shared/ui-settings.d.ts +1 -0
  11. package/build/cjs/shared/ui-settings.js.map +1 -1
  12. package/build/cjs/ui/common/utils/url-encoder.js +1 -0
  13. package/build/cjs/ui/common/utils/url-encoder.js.map +1 -1
  14. package/build/cjs/ui/common/yt-api-init.js +7 -12
  15. package/build/cjs/ui/common/yt-api-init.js.map +1 -1
  16. package/build/cjs/ui/components/EditableAsText/EditableAsText.js +8 -6
  17. package/build/cjs/ui/components/EditableAsText/EditableAsText.js.map +1 -1
  18. package/build/cjs/ui/components/SchemaDataType/SchemaDataType.js +3 -59
  19. package/build/cjs/ui/components/SchemaDataType/SchemaDataType.js.map +1 -1
  20. package/build/cjs/ui/components/SchemaDataType/dateTypesV3.d.ts +48 -0
  21. package/build/cjs/ui/components/SchemaDataType/dateTypesV3.js +65 -0
  22. package/build/cjs/ui/components/SchemaDataType/dateTypesV3.js.map +1 -0
  23. package/build/cjs/ui/config/index.d.ts +1 -0
  24. package/build/cjs/ui/config/index.js +4 -0
  25. package/build/cjs/ui/config/index.js.map +1 -1
  26. package/build/cjs/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
  27. package/build/cjs/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.d.ts +7 -0
  28. package/build/cjs/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.js +78 -0
  29. package/build/cjs/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.js.map +1 -0
  30. package/build/cjs/ui/pages/navigation/content/Table/TableOverview/TableOverview.d.ts +3 -1
  31. package/build/cjs/ui/pages/navigation/content/Table/TableOverview/TableOverview.js +10 -2
  32. package/build/cjs/ui/pages/navigation/content/Table/TableOverview/TableOverview.js.map +1 -1
  33. package/build/cjs/ui/pages/query-tracker/QueriesHistoryList/index.js +3 -3
  34. package/build/cjs/ui/pages/query-tracker/QueriesHistoryList/index.js.map +1 -1
  35. package/build/cjs/ui/pages/query-tracker/QueryDuration/index.js +13 -2
  36. package/build/cjs/ui/pages/query-tracker/QueryDuration/index.js.map +1 -1
  37. package/build/cjs/ui/pages/query-tracker/QueryEditor/QueryEditor.d.ts +3 -1
  38. package/build/cjs/ui/pages/query-tracker/QueryEditor/QueryEditor.js +19 -10
  39. package/build/cjs/ui/pages/query-tracker/QueryEditor/QueryEditor.js.map +1 -1
  40. package/build/cjs/ui/pages/query-tracker/QueryResults/index.d.ts +2 -0
  41. package/build/cjs/ui/pages/query-tracker/QueryResults/index.js +2 -3
  42. package/build/cjs/ui/pages/query-tracker/QueryResults/index.js.map +1 -1
  43. package/build/cjs/ui/pages/query-tracker/QueryResultsView/index.js +4 -9
  44. package/build/cjs/ui/pages/query-tracker/QueryResultsView/index.js.map +1 -1
  45. package/build/cjs/ui/pages/query-tracker/QueryStatus/index.js +2 -1
  46. package/build/cjs/ui/pages/query-tracker/QueryStatus/index.js.map +1 -1
  47. package/build/cjs/ui/pages/query-tracker/QueryTracker/QueryTracker.js +14 -2
  48. package/build/cjs/ui/pages/query-tracker/QueryTracker/QueryTracker.js.map +1 -1
  49. package/build/cjs/ui/pages/query-tracker/QueryTrackerNewButton/index.d.ts +18 -0
  50. package/build/cjs/ui/pages/query-tracker/QueryTrackerNewButton/index.js +89 -0
  51. package/build/cjs/ui/pages/query-tracker/QueryTrackerNewButton/index.js.map +1 -0
  52. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.d.ts +4 -0
  53. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.js +88 -0
  54. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.js.map +1 -0
  55. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/index.d.ts +1 -0
  56. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/index.js +18 -131
  57. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/index.js.map +1 -1
  58. package/build/cjs/ui/pages/query-tracker/QueryWidget/index.d.ts +5 -0
  59. package/build/cjs/ui/pages/query-tracker/QueryWidget/index.js +78 -0
  60. package/build/cjs/ui/pages/query-tracker/QueryWidget/index.js.map +1 -0
  61. package/build/cjs/ui/pages/query-tracker/module/api.d.ts +15 -13
  62. package/build/cjs/ui/pages/query-tracker/module/api.js +175 -63
  63. package/build/cjs/ui/pages/query-tracker/module/api.js.map +1 -1
  64. package/build/cjs/ui/pages/query-tracker/module/query/actions.d.ts +3 -2
  65. package/build/cjs/ui/pages/query-tracker/module/query/actions.js +83 -23
  66. package/build/cjs/ui/pages/query-tracker/module/query/actions.js.map +1 -1
  67. package/build/cjs/ui/pages/query-tracker/module/query/reducer.d.ts +2 -1
  68. package/build/cjs/ui/pages/query-tracker/module/query/reducer.js.map +1 -1
  69. package/build/cjs/ui/pages/query-tracker/module/query/selectors.d.ts +2 -1
  70. package/build/cjs/ui/pages/query-tracker/module/query/url_mapping.js +7 -3
  71. package/build/cjs/ui/pages/query-tracker/module/query/url_mapping.js.map +1 -1
  72. package/build/cjs/ui/pages/query-tracker/module/query_result/actions.js +48 -41
  73. package/build/cjs/ui/pages/query-tracker/module/query_result/actions.js.map +1 -1
  74. package/build/cjs/ui/pages/query-tracker/utils/navigation.d.ts +4 -1
  75. package/build/cjs/ui/pages/query-tracker/utils/navigation.js +8 -3
  76. package/build/cjs/ui/pages/query-tracker/utils/navigation.js.map +1 -1
  77. package/build/cjs/ui/pages/query-tracker/utils/query.d.ts +1 -0
  78. package/build/cjs/ui/pages/query-tracker/utils/query.js +4 -0
  79. package/build/cjs/ui/pages/query-tracker/utils/query.js.map +1 -1
  80. package/build/cjs/ui/pages/query-tracker/utils/query_generate.d.ts +13 -0
  81. package/build/cjs/ui/pages/query-tracker/utils/query_generate.js +84 -0
  82. package/build/cjs/ui/pages/query-tracker/utils/query_generate.js.map +1 -0
  83. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +19 -36
  84. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
  85. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.d.ts +0 -1
  86. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.js +15 -41
  87. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.js.map +1 -1
  88. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.d.ts +1 -2
  89. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.js +1 -5
  90. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.js.map +1 -1
  91. package/build/cjs/ui/store/selectors/global/index.d.ts +3 -0
  92. package/build/cjs/ui/store/selectors/global/index.js +20 -1
  93. package/build/cjs/ui/store/selectors/global/index.js.map +1 -1
  94. package/build/esm/server/ServerFactory.js +2 -1
  95. package/build/esm/server/ServerFactory.js.map +1 -1
  96. package/build/esm/server/config.localcluster.js +1 -1
  97. package/build/esm/server/config.localcluster.js.map +1 -1
  98. package/build/esm/server/configs/local.d.ts +3 -0
  99. package/build/esm/server/configs/local.js +28 -0
  100. package/build/esm/server/configs/local.js.map +1 -0
  101. package/build/esm/server/utils/default-settings.js +1 -1
  102. package/build/esm/server/utils/default-settings.js.map +1 -1
  103. package/build/esm/shared/ui-settings.d.ts +1 -0
  104. package/build/esm/shared/ui-settings.js.map +1 -1
  105. package/build/esm/ui/common/utils/url-encoder.js +1 -0
  106. package/build/esm/ui/common/utils/url-encoder.js.map +1 -1
  107. package/build/esm/ui/common/yt-api-init.js +4 -9
  108. package/build/esm/ui/common/yt-api-init.js.map +1 -1
  109. package/build/esm/ui/components/Dialog/Dialog.css +1 -1
  110. package/build/esm/ui/components/Dialog/Dialog.css.map +1 -1
  111. package/build/esm/ui/components/Dialog/Dialog.scss +1 -1
  112. package/build/esm/ui/components/EditableAsText/EditableAsText.js +8 -6
  113. package/build/esm/ui/components/EditableAsText/EditableAsText.js.map +1 -1
  114. package/build/esm/ui/components/SchemaDataType/SchemaDataType.js +2 -57
  115. package/build/esm/ui/components/SchemaDataType/SchemaDataType.js.map +1 -1
  116. package/build/esm/ui/components/SchemaDataType/dateTypesV3.d.ts +48 -0
  117. package/build/esm/ui/components/SchemaDataType/dateTypesV3.js +57 -0
  118. package/build/esm/ui/components/SchemaDataType/dateTypesV3.js.map +1 -0
  119. package/build/esm/ui/config/index.d.ts +1 -0
  120. package/build/esm/ui/config/index.js +3 -0
  121. package/build/esm/ui/config/index.js.map +1 -1
  122. package/build/esm/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
  123. package/build/esm/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.css +8 -0
  124. package/build/esm/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.css.map +1 -0
  125. package/build/esm/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.d.ts +7 -0
  126. package/build/esm/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.js +72 -0
  127. package/build/esm/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.js.map +1 -0
  128. package/build/esm/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.scss +7 -0
  129. package/build/esm/ui/pages/navigation/content/Table/TableOverview/TableOverview.css +3 -0
  130. package/build/esm/ui/pages/navigation/content/Table/TableOverview/TableOverview.css.map +1 -1
  131. package/build/esm/ui/pages/navigation/content/Table/TableOverview/TableOverview.d.ts +3 -1
  132. package/build/esm/ui/pages/navigation/content/Table/TableOverview/TableOverview.js +11 -3
  133. package/build/esm/ui/pages/navigation/content/Table/TableOverview/TableOverview.js.map +1 -1
  134. package/build/esm/ui/pages/navigation/content/Table/TableOverview/TableOverview.scss +4 -0
  135. package/build/esm/ui/pages/query-tracker/QueriesHistoryList/index.js +4 -4
  136. package/build/esm/ui/pages/query-tracker/QueriesHistoryList/index.js.map +1 -1
  137. package/build/esm/ui/pages/query-tracker/QueryDuration/index.js +13 -2
  138. package/build/esm/ui/pages/query-tracker/QueryDuration/index.js.map +1 -1
  139. package/build/esm/ui/pages/query-tracker/QueryEditor/QueryEditor.d.ts +3 -1
  140. package/build/esm/ui/pages/query-tracker/QueryEditor/QueryEditor.js +19 -10
  141. package/build/esm/ui/pages/query-tracker/QueryEditor/QueryEditor.js.map +1 -1
  142. package/build/esm/ui/pages/query-tracker/QueryResults/index.d.ts +2 -0
  143. package/build/esm/ui/pages/query-tracker/QueryResults/index.js +2 -3
  144. package/build/esm/ui/pages/query-tracker/QueryResults/index.js.map +1 -1
  145. package/build/esm/ui/pages/query-tracker/QueryResultsView/index.css +3 -10
  146. package/build/esm/ui/pages/query-tracker/QueryResultsView/index.css.map +1 -1
  147. package/build/esm/ui/pages/query-tracker/QueryResultsView/index.js +4 -9
  148. package/build/esm/ui/pages/query-tracker/QueryResultsView/index.js.map +1 -1
  149. package/build/esm/ui/pages/query-tracker/QueryResultsView/index.scss +3 -11
  150. package/build/esm/ui/pages/query-tracker/QueryStatus/index.css +4 -0
  151. package/build/esm/ui/pages/query-tracker/QueryStatus/index.css.map +1 -1
  152. package/build/esm/ui/pages/query-tracker/QueryStatus/index.js +2 -1
  153. package/build/esm/ui/pages/query-tracker/QueryStatus/index.js.map +1 -1
  154. package/build/esm/ui/pages/query-tracker/QueryStatus/index.scss +4 -0
  155. package/build/esm/ui/pages/query-tracker/QueryTracker/QueryTracker.js +16 -4
  156. package/build/esm/ui/pages/query-tracker/QueryTracker/QueryTracker.js.map +1 -1
  157. package/build/esm/ui/pages/query-tracker/QueryTrackerNewButton/index.css +19 -0
  158. package/build/esm/ui/pages/query-tracker/QueryTrackerNewButton/index.css.map +1 -0
  159. package/build/esm/ui/pages/query-tracker/QueryTrackerNewButton/index.d.ts +18 -0
  160. package/build/esm/ui/pages/query-tracker/QueryTrackerNewButton/index.js +82 -0
  161. package/build/esm/ui/pages/query-tracker/QueryTrackerNewButton/index.js.map +1 -0
  162. package/build/esm/ui/pages/query-tracker/QueryTrackerNewButton/index.scss +20 -0
  163. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.css +13 -0
  164. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.css.map +1 -0
  165. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.d.ts +4 -0
  166. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.js +82 -0
  167. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.js.map +1 -0
  168. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/QueryMetaForm/index.scss +13 -0
  169. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.css +6 -16
  170. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.css.map +1 -1
  171. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.d.ts +1 -0
  172. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.js +19 -133
  173. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.js.map +1 -1
  174. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.scss +4 -20
  175. package/build/esm/ui/pages/query-tracker/QueryWidget/index.css +28 -0
  176. package/build/esm/ui/pages/query-tracker/QueryWidget/index.css.map +1 -0
  177. package/build/esm/ui/pages/query-tracker/QueryWidget/index.d.ts +5 -0
  178. package/build/esm/ui/pages/query-tracker/QueryWidget/index.js +73 -0
  179. package/build/esm/ui/pages/query-tracker/QueryWidget/index.js.map +1 -0
  180. package/build/esm/ui/pages/query-tracker/QueryWidget/index.scss +31 -0
  181. package/build/esm/ui/pages/query-tracker/module/api.d.ts +15 -13
  182. package/build/esm/ui/pages/query-tracker/module/api.js +175 -63
  183. package/build/esm/ui/pages/query-tracker/module/api.js.map +1 -1
  184. package/build/esm/ui/pages/query-tracker/module/query/actions.d.ts +3 -2
  185. package/build/esm/ui/pages/query-tracker/module/query/actions.js +83 -24
  186. package/build/esm/ui/pages/query-tracker/module/query/actions.js.map +1 -1
  187. package/build/esm/ui/pages/query-tracker/module/query/reducer.d.ts +2 -1
  188. package/build/esm/ui/pages/query-tracker/module/query/reducer.js.map +1 -1
  189. package/build/esm/ui/pages/query-tracker/module/query/selectors.d.ts +2 -1
  190. package/build/esm/ui/pages/query-tracker/module/query/url_mapping.js +7 -3
  191. package/build/esm/ui/pages/query-tracker/module/query/url_mapping.js.map +1 -1
  192. package/build/esm/ui/pages/query-tracker/module/query_result/actions.js +48 -41
  193. package/build/esm/ui/pages/query-tracker/module/query_result/actions.js.map +1 -1
  194. package/build/esm/ui/pages/query-tracker/utils/navigation.d.ts +4 -1
  195. package/build/esm/ui/pages/query-tracker/utils/navigation.js +8 -3
  196. package/build/esm/ui/pages/query-tracker/utils/navigation.js.map +1 -1
  197. package/build/esm/ui/pages/query-tracker/utils/query.d.ts +1 -0
  198. package/build/esm/ui/pages/query-tracker/utils/query.js +4 -1
  199. package/build/esm/ui/pages/query-tracker/utils/query.js.map +1 -1
  200. package/build/esm/ui/pages/query-tracker/utils/query_generate.d.ts +13 -0
  201. package/build/esm/ui/pages/query-tracker/utils/query_generate.js +73 -0
  202. package/build/esm/ui/pages/query-tracker/utils/query_generate.js.map +1 -0
  203. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.css +3 -15
  204. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.css.map +1 -1
  205. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +19 -36
  206. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
  207. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.scss +5 -21
  208. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.css +1 -1
  209. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.css.map +1 -1
  210. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.d.ts +0 -1
  211. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.js +16 -42
  212. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.js.map +1 -1
  213. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleInput/BundleInput.scss +1 -1
  214. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.css +0 -9
  215. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.css.map +1 -1
  216. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.d.ts +1 -2
  217. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.js +1 -5
  218. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.js.map +1 -1
  219. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/components/BundleTitle/BundleTitle.scss +0 -11
  220. package/build/esm/ui/store/selectors/global/index.d.ts +3 -0
  221. package/build/esm/ui/store/selectors/global/index.js +16 -1
  222. package/build/esm/ui/store/selectors/global/index.js.map +1 -1
  223. package/build/img/svg/page-query-tracker.svg +3 -3
  224. package/package.json +3 -3
@@ -1,11 +1,10 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import _map from "lodash/map";
3
- import _capitalize from "lodash/capitalize";
4
2
  import React from 'react';
5
3
  import { getPrimitiveTypesMap } from '../../store/selectors/global/supported-features';
6
4
  import { useSelector } from 'react-redux';
7
5
  import { getType } from './dataTypes';
8
6
  import DataType from './DataType/DataType';
7
+ import { parseV3Type } from './dateTypesV3';
9
8
  import { jsx as _jsx } from "react/jsx-runtime";
10
9
  import { Fragment as _Fragment } from "react/jsx-runtime";
11
10
  function SchemaDataType(_ref) {
@@ -13,7 +12,7 @@ function SchemaDataType(_ref) {
13
12
  var primitiveTypes = useSelector(getPrimitiveTypesMap);
14
13
  var dataTypeProps = React.useMemo(function () {
15
14
  try {
16
- return getType(parseType(type_v3, primitiveTypes));
15
+ return getType(parseV3Type(type_v3, primitiveTypes));
17
16
  } catch (_unused) {
18
17
  return undefined;
19
18
  }
@@ -23,58 +22,4 @@ function SchemaDataType(_ref) {
23
22
  });
24
23
  }
25
24
  export default /*#__PURE__*/React.memo(SchemaDataType);
26
- function parseType(initialType, primitiveTypes) {
27
- function ysonTypeToYql(ysonType) {
28
- return typeof ysonType === 'string' ? stringToYql(ysonType, primitiveTypes) : objectToYql(ysonType);
29
- }
30
- function stringToYql(ysonType, typesMap) {
31
- if (typesMap.has(ysonType)) {
32
- return ['DataType', _capitalize(ysonType)];
33
- } else {
34
- return ['UnknownType'];
35
- }
36
- }
37
- function objectToYql(ysonType) {
38
- switch (ysonType.type_name) {
39
- case 'decimal':
40
- return decimalToYql(ysonType);
41
- case 'dict':
42
- return ['DictType', ysonTypeToYql(ysonType.key), ysonTypeToYql(ysonType.value)];
43
- case 'optional':
44
- return ['OptionalType', ysonTypeToYql(ysonType.item)];
45
- case 'tuple':
46
- return tupleToYql(ysonType);
47
- case 'list':
48
- return ['ListType', ysonTypeToYql(ysonType.item)];
49
- case 'struct':
50
- return structToYql(ysonType);
51
- case 'variant':
52
- return ['VariantType', 'elements' in ysonType ? tupleToYql(ysonType) : structToYql(ysonType)];
53
- case 'tagged':
54
- return ['TaggedType', ysonType.tag, ysonTypeToYql(ysonType.item)];
55
- default:
56
- // let it be a fallback for now
57
- return ['UnknownType'];
58
- }
59
- }
60
- function tupleToYql(ysonType) {
61
- return ['TupleType', _map(ysonType.elements, function (_ref2) {
62
- var type = _ref2.type;
63
- return ysonTypeToYql(type);
64
- })];
65
- }
66
- function structToYql(ysonType) {
67
- return ['StructType', _map(ysonType.members, function (_ref3) {
68
- var name = _ref3.name,
69
- type = _ref3.type;
70
- return [name, ysonTypeToYql(type)];
71
- })];
72
- }
73
- function decimalToYql(ysonType) {
74
- var precision = ysonType.precision,
75
- scale = ysonType.scale;
76
- return ['DataType', 'Decimal', precision, scale];
77
- }
78
- return ysonTypeToYql(initialType);
79
- }
80
25
  // #sourceMappingURL=SchemaDataType.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","getPrimitiveTypesMap","useSelector","getType","DataType","jsx","_jsx","Fragment","_Fragment","SchemaDataType","_ref","type_v3","primitiveTypes","dataTypeProps","useMemo","parseType","_unused","undefined","_objectSpread","children","memo","initialType","ysonTypeToYql","ysonType","stringToYql","objectToYql","typesMap","has","_capitalize","type_name","decimalToYql","key","value","item","tupleToYql","structToYql","tag","_map","elements","_ref2","type","members","_ref3","name","precision","scale"],"sources":["SchemaDataType.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\n\nimport {getPrimitiveTypesMap} from '../../store/selectors/global/supported-features';\nimport {useSelector} from 'react-redux';\nimport {getType} from './dataTypes';\nimport DataType from './DataType/DataType';\n\ninterface Props {\n type_v3: any;\n}\n\nfunction SchemaDataType({type_v3}: Props) {\n const primitiveTypes = useSelector(getPrimitiveTypesMap);\n\n const dataTypeProps = React.useMemo(() => {\n try {\n return getType(parseType(type_v3, primitiveTypes));\n } catch {\n return undefined;\n }\n }, [type_v3, primitiveTypes]);\n\n return dataTypeProps ? (\n <DataType {...dataTypeProps} />\n ) : (\n <>There is no type description in the schema</>\n );\n}\n\nexport default React.memo(SchemaDataType);\n\ntype Type = string | ComplexType;\n\ninterface Decimal {\n type_name: 'decimal';\n precision: number;\n scale: number;\n}\n\ninterface Dict {\n type_name: 'dict';\n key: Type;\n value: Type;\n}\n\ntype Variant = {type_name: 'variant'} & VariantData;\ntype VariantData = VariantElements | VariantMembers;\ntype VariantElements = {elements: Array<{type: Type}>};\ntype VariantMembers = {members: Array<{name: string; type: Type}>};\n\ninterface Optional {\n type_name: 'optional';\n item: Type;\n}\n\ntype Tuple = {type_name: 'tuple'} & VariantElements;\n\ninterface List {\n type_name: 'list';\n item: Type;\n}\n\ntype Struct = {type_name: 'struct'} & VariantMembers;\n\ninterface Tagged {\n type_name: 'tagged';\n tag: string;\n item: Type;\n}\n\ntype ComplexType = Decimal | Dict | Variant | Optional | Tuple | List | Struct | Tagged;\n\nfunction parseType(initialType: Type, primitiveTypes: Set<string>) {\n function ysonTypeToYql(ysonType: Type) {\n return typeof ysonType === 'string'\n ? stringToYql(ysonType, primitiveTypes)\n : objectToYql(ysonType);\n }\n\n function stringToYql(ysonType: string, typesMap: Set<string>) {\n if (typesMap.has(ysonType)) {\n return ['DataType', _.capitalize(ysonType)] as const;\n } else {\n return ['UnknownType'] as const;\n }\n }\n\n function objectToYql(ysonType: ComplexType): any {\n switch (ysonType.type_name) {\n case 'decimal':\n return decimalToYql(ysonType);\n case 'dict':\n return [\n 'DictType',\n ysonTypeToYql(ysonType.key),\n ysonTypeToYql(ysonType.value),\n ] as const;\n case 'optional':\n return ['OptionalType' as const, ysonTypeToYql(ysonType.item)] as const;\n case 'tuple':\n return tupleToYql(ysonType);\n case 'list':\n return ['ListType', ysonTypeToYql(ysonType.item)] as const;\n case 'struct':\n return structToYql(ysonType);\n case 'variant':\n return [\n 'VariantType',\n 'elements' in ysonType ? tupleToYql(ysonType) : structToYql(ysonType),\n ] as const;\n case 'tagged':\n return ['TaggedType', ysonType.tag, ysonTypeToYql(ysonType.item)] as const;\n default:\n // let it be a fallback for now\n return ['UnknownType'] as const;\n }\n }\n\n function tupleToYql(ysonType: VariantElements) {\n return ['TupleType', _.map(ysonType.elements, ({type}) => ysonTypeToYql(type))] as const;\n }\n\n function structToYql(ysonType: VariantMembers) {\n return [\n 'StructType',\n _.map(ysonType.members, ({name, type}) => [name, ysonTypeToYql(type)]),\n ] as const;\n }\n\n function decimalToYql(ysonType: {precision: number; scale: number}) {\n const {precision, scale} = ysonType;\n return ['DataType', 'Decimal', precision, scale] as const;\n }\n\n return ysonTypeToYql(initialType);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","getPrimitiveTypesMap","useSelector","getType","DataType","parseV3Type","jsx","_jsx","Fragment","_Fragment","SchemaDataType","_ref","type_v3","primitiveTypes","dataTypeProps","useMemo","_unused","undefined","_objectSpread","children","memo"],"sources":["SchemaDataType.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\n\nimport {getPrimitiveTypesMap} from '../../store/selectors/global/supported-features';\nimport {useSelector} from 'react-redux';\nimport {getType} from './dataTypes';\nimport DataType from './DataType/DataType';\nimport {parseV3Type} from './dateTypesV3';\n\ninterface Props {\n type_v3: any;\n}\n\nfunction SchemaDataType({type_v3}: Props) {\n const primitiveTypes = useSelector(getPrimitiveTypesMap);\n\n const dataTypeProps = React.useMemo(() => {\n try {\n return getType(parseV3Type(type_v3, primitiveTypes));\n } catch {\n return undefined;\n }\n }, [type_v3, primitiveTypes]);\n\n return dataTypeProps ? (\n <DataType {...dataTypeProps} />\n ) : (\n <>There is no type description in the schema</>\n );\n}\n\nexport default React.memo(SchemaDataType);\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,SAAQC,oBAAoB,QAAO,iDAAiD;AACpF,SAAQC,WAAW,QAAO,aAAa;AACvC,SAAQC,OAAO,QAAO,aAAa;AACnC,OAAOC,QAAQ,MAAM,qBAAqB;AAC1C,SAAQC,WAAW,QAAO,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAM1C,SAASC,cAAcA,CAAAC,IAAA,EAAmB;EAAA,IAAjBC,OAAO,GAAAD,IAAA,CAAPC,OAAO;EAC5B,IAAMC,cAAc,GAAGX,WAAW,CAACD,oBAAoB,CAAC;EAExD,IAAMa,aAAa,GAAGd,KAAK,CAACe,OAAO,CAAC,YAAM;IACtC,IAAI;MACA,OAAOZ,OAAO,CAACE,WAAW,CAACO,OAAO,EAAEC,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC,OAAAG,OAAA,EAAM;MACJ,OAAOC,SAAS;IACpB;EACJ,CAAC,EAAE,CAACL,OAAO,EAAEC,cAAc,CAAC,CAAC;EAE7B,OAAOC,aAAa,gBAChBP,IAAA,CAACH,QAAQ,EAAAc,aAAA,KAAKJ,aAAa,EAAI,gBAE/BP,IAAA,CAAAE,SAAA;IAAAU,QAAA,EAAE;EAA0C,EAC/C;AACL;AAEA,4BAAenB,KAAK,CAACoB,IAAI,CAACV,cAAc,CAAC"}
@@ -0,0 +1,48 @@
1
+ export type Type = string | ComplexType;
2
+ interface Decimal {
3
+ type_name: 'decimal';
4
+ precision: number;
5
+ scale: number;
6
+ }
7
+ interface Dict {
8
+ type_name: 'dict';
9
+ key: Type;
10
+ value: Type;
11
+ }
12
+ type Variant = {
13
+ type_name: 'variant';
14
+ } & VariantData;
15
+ type VariantData = VariantElements | VariantMembers;
16
+ type VariantElements = {
17
+ elements: Array<{
18
+ type: Type;
19
+ }>;
20
+ };
21
+ type VariantMembers = {
22
+ members: Array<{
23
+ name: string;
24
+ type: Type;
25
+ }>;
26
+ };
27
+ interface Optional {
28
+ type_name: 'optional';
29
+ item: Type;
30
+ }
31
+ type Tuple = {
32
+ type_name: 'tuple';
33
+ } & VariantElements;
34
+ interface List {
35
+ type_name: 'list';
36
+ item: Type;
37
+ }
38
+ type Struct = {
39
+ type_name: 'struct';
40
+ } & VariantMembers;
41
+ interface Tagged {
42
+ type_name: 'tagged';
43
+ tag: string;
44
+ item: Type;
45
+ }
46
+ type ComplexType = Decimal | Dict | Variant | Optional | Tuple | List | Struct | Tagged;
47
+ export declare function parseV3Type(initialType: Type, primitiveTypes: Set<string>): any;
48
+ export {};
@@ -0,0 +1,57 @@
1
+ import _map from "lodash/map";
2
+ import _capitalize from "lodash/capitalize";
3
+ export function parseV3Type(initialType, primitiveTypes) {
4
+ function ysonTypeToYql(ysonType) {
5
+ return typeof ysonType === 'string' ? stringToYql(ysonType, primitiveTypes) : objectToYql(ysonType);
6
+ }
7
+ function stringToYql(ysonType, typesMap) {
8
+ if (typesMap.has(ysonType)) {
9
+ return ['DataType', _capitalize(ysonType)];
10
+ } else {
11
+ return ['UnknownType'];
12
+ }
13
+ }
14
+ function objectToYql(ysonType) {
15
+ switch (ysonType.type_name) {
16
+ case 'decimal':
17
+ return decimalToYql(ysonType);
18
+ case 'dict':
19
+ return ['DictType', ysonTypeToYql(ysonType.key), ysonTypeToYql(ysonType.value)];
20
+ case 'optional':
21
+ return ['OptionalType', ysonTypeToYql(ysonType.item)];
22
+ case 'tuple':
23
+ return tupleToYql(ysonType);
24
+ case 'list':
25
+ return ['ListType', ysonTypeToYql(ysonType.item)];
26
+ case 'struct':
27
+ return structToYql(ysonType);
28
+ case 'variant':
29
+ return ['VariantType', 'elements' in ysonType ? tupleToYql(ysonType) : structToYql(ysonType)];
30
+ case 'tagged':
31
+ return ['TaggedType', ysonType.tag, ysonTypeToYql(ysonType.item)];
32
+ default:
33
+ // let it be a fallback for now
34
+ return ['UnknownType'];
35
+ }
36
+ }
37
+ function tupleToYql(ysonType) {
38
+ return ['TupleType', _map(ysonType.elements, function (_ref) {
39
+ var type = _ref.type;
40
+ return ysonTypeToYql(type);
41
+ })];
42
+ }
43
+ function structToYql(ysonType) {
44
+ return ['StructType', _map(ysonType.members, function (_ref2) {
45
+ var name = _ref2.name,
46
+ type = _ref2.type;
47
+ return [name, ysonTypeToYql(type)];
48
+ })];
49
+ }
50
+ function decimalToYql(ysonType) {
51
+ var precision = ysonType.precision,
52
+ scale = ysonType.scale;
53
+ return ['DataType', 'Decimal', precision, scale];
54
+ }
55
+ return ysonTypeToYql(initialType);
56
+ }
57
+ // #sourceMappingURL=dateTypesV3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["parseV3Type","initialType","primitiveTypes","ysonTypeToYql","ysonType","stringToYql","objectToYql","typesMap","has","_capitalize","type_name","decimalToYql","key","value","item","tupleToYql","structToYql","tag","_map","elements","_ref","type","members","_ref2","name","precision","scale"],"sources":["dateTypesV3.ts"],"sourcesContent":["import _ from 'lodash';\n\nexport type Type = string | ComplexType;\n\ninterface Decimal {\n type_name: 'decimal';\n precision: number;\n scale: number;\n}\n\ninterface Dict {\n type_name: 'dict';\n key: Type;\n value: Type;\n}\n\ntype Variant = {type_name: 'variant'} & VariantData;\ntype VariantData = VariantElements | VariantMembers;\ntype VariantElements = {elements: Array<{type: Type}>};\ntype VariantMembers = {members: Array<{name: string; type: Type}>};\n\ninterface Optional {\n type_name: 'optional';\n item: Type;\n}\n\ntype Tuple = {type_name: 'tuple'} & VariantElements;\n\ninterface List {\n type_name: 'list';\n item: Type;\n}\n\ntype Struct = {type_name: 'struct'} & VariantMembers;\n\ninterface Tagged {\n type_name: 'tagged';\n tag: string;\n item: Type;\n}\n\ntype ComplexType = Decimal | Dict | Variant | Optional | Tuple | List | Struct | Tagged;\n\nexport function parseV3Type(initialType: Type, primitiveTypes: Set<string>) {\n function ysonTypeToYql(ysonType: Type) {\n return typeof ysonType === 'string'\n ? stringToYql(ysonType, primitiveTypes)\n : objectToYql(ysonType);\n }\n\n function stringToYql(ysonType: string, typesMap: Set<string>) {\n if (typesMap.has(ysonType)) {\n return ['DataType', _.capitalize(ysonType)] as const;\n } else {\n return ['UnknownType'] as const;\n }\n }\n\n function objectToYql(ysonType: ComplexType): any {\n switch (ysonType.type_name) {\n case 'decimal':\n return decimalToYql(ysonType);\n case 'dict':\n return [\n 'DictType',\n ysonTypeToYql(ysonType.key),\n ysonTypeToYql(ysonType.value),\n ] as const;\n case 'optional':\n return ['OptionalType' as const, ysonTypeToYql(ysonType.item)] as const;\n case 'tuple':\n return tupleToYql(ysonType);\n case 'list':\n return ['ListType', ysonTypeToYql(ysonType.item)] as const;\n case 'struct':\n return structToYql(ysonType);\n case 'variant':\n return [\n 'VariantType',\n 'elements' in ysonType ? tupleToYql(ysonType) : structToYql(ysonType),\n ] as const;\n case 'tagged':\n return ['TaggedType', ysonType.tag, ysonTypeToYql(ysonType.item)] as const;\n default:\n // let it be a fallback for now\n return ['UnknownType'] as const;\n }\n }\n\n function tupleToYql(ysonType: VariantElements) {\n return ['TupleType', _.map(ysonType.elements, ({type}) => ysonTypeToYql(type))] as const;\n }\n\n function structToYql(ysonType: VariantMembers) {\n return [\n 'StructType',\n _.map(ysonType.members, ({name, type}) => [name, ysonTypeToYql(type)]),\n ] as const;\n }\n\n function decimalToYql(ysonType: {precision: number; scale: number}) {\n const {precision, scale} = ysonType;\n return ['DataType', 'Decimal', precision, scale] as const;\n }\n\n return ysonTypeToYql(initialType);\n}\n"],"mappings":";;AA2CA,OAAO,SAASA,WAAWA,CAACC,WAAiB,EAAEC,cAA2B,EAAE;EACxE,SAASC,aAAaA,CAACC,QAAc,EAAE;IACnC,OAAO,OAAOA,QAAQ,KAAK,QAAQ,GAC7BC,WAAW,CAACD,QAAQ,EAAEF,cAAc,CAAC,GACrCI,WAAW,CAACF,QAAQ,CAAC;EAC/B;EAEA,SAASC,WAAWA,CAACD,QAAgB,EAAEG,QAAqB,EAAE;IAC1D,IAAIA,QAAQ,CAACC,GAAG,CAACJ,QAAQ,CAAC,EAAE;MACxB,OAAO,CAAC,UAAU,EAAEK,WAAA,CAAaL,QAAQ,CAAC,CAAC;IAC/C,CAAC,MAAM;MACH,OAAO,CAAC,aAAa,CAAC;IAC1B;EACJ;EAEA,SAASE,WAAWA,CAACF,QAAqB,EAAO;IAC7C,QAAQA,QAAQ,CAACM,SAAS;MACtB,KAAK,SAAS;QACV,OAAOC,YAAY,CAACP,QAAQ,CAAC;MACjC,KAAK,MAAM;QACP,OAAO,CACH,UAAU,EACVD,aAAa,CAACC,QAAQ,CAACQ,GAAG,CAAC,EAC3BT,aAAa,CAACC,QAAQ,CAACS,KAAK,CAAC,CAChC;MACL,KAAK,UAAU;QACX,OAAO,CAAC,cAAc,EAAWV,aAAa,CAACC,QAAQ,CAACU,IAAI,CAAC,CAAC;MAClE,KAAK,OAAO;QACR,OAAOC,UAAU,CAACX,QAAQ,CAAC;MAC/B,KAAK,MAAM;QACP,OAAO,CAAC,UAAU,EAAED,aAAa,CAACC,QAAQ,CAACU,IAAI,CAAC,CAAC;MACrD,KAAK,QAAQ;QACT,OAAOE,WAAW,CAACZ,QAAQ,CAAC;MAChC,KAAK,SAAS;QACV,OAAO,CACH,aAAa,EACb,UAAU,IAAIA,QAAQ,GAAGW,UAAU,CAACX,QAAQ,CAAC,GAAGY,WAAW,CAACZ,QAAQ,CAAC,CACxE;MACL,KAAK,QAAQ;QACT,OAAO,CAAC,YAAY,EAAEA,QAAQ,CAACa,GAAG,EAAEd,aAAa,CAACC,QAAQ,CAACU,IAAI,CAAC,CAAC;MACrE;QACI;QACA,OAAO,CAAC,aAAa,CAAC;IAAU;EAE5C;EAEA,SAASC,UAAUA,CAACX,QAAyB,EAAE;IAC3C,OAAO,CAAC,WAAW,EAAEc,IAAA,CAAMd,QAAQ,CAACe,QAAQ,EAAE,UAAAC,IAAA;MAAA,IAAEC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAA,OAAMlB,aAAa,CAACkB,IAAI,CAAC;IAAA,EAAC,CAAC;EACnF;EAEA,SAASL,WAAWA,CAACZ,QAAwB,EAAE;IAC3C,OAAO,CACH,YAAY,EACZc,IAAA,CAAMd,QAAQ,CAACkB,OAAO,EAAE,UAAAC,KAAA;MAAA,IAAEC,IAAI,GAAAD,KAAA,CAAJC,IAAI;QAAEH,IAAI,GAAAE,KAAA,CAAJF,IAAI;MAAA,OAAM,CAACG,IAAI,EAAErB,aAAa,CAACkB,IAAI,CAAC,CAAC;IAAA,EAAC,CACzE;EACL;EAEA,SAASV,YAAYA,CAACP,QAA4C,EAAE;IAChE,IAAOqB,SAAS,GAAWrB,QAAQ,CAA5BqB,SAAS;MAAEC,KAAK,GAAItB,QAAQ,CAAjBsB,KAAK;IACvB,OAAO,CAAC,UAAU,EAAE,SAAS,EAAED,SAAS,EAAEC,KAAK,CAAC;EACpD;EAEA,OAAOvB,aAAa,CAACF,WAAW,CAAC;AACrC"}
@@ -12,6 +12,7 @@ export declare function docsUrl<T, K = string>(url: T, alt?: K): "" | T | NonNul
12
12
  export declare function getDocsBaseUrl(): string | undefined;
13
13
  export declare function getNewTableReplicasCount(): number;
14
14
  export declare function getQueryTrackerStage(): string | undefined;
15
+ export declare function getQueryTrackerCluster(): string | undefined;
15
16
  export declare function getConfigUploadTable(): {
16
17
  uploadTableMaxSize: number;
17
18
  uploadTableUseLocalmode: boolean | undefined;
@@ -37,6 +37,9 @@ export function getNewTableReplicasCount() {
37
37
  export function getQueryTrackerStage() {
38
38
  return uiSettings.queryTrackerStage;
39
39
  }
40
+ export function getQueryTrackerCluster() {
41
+ return uiSettings.queryTrackerCluster;
42
+ }
40
43
  export function getConfigUploadTable() {
41
44
  var _uiSettings$uploadTab;
42
45
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["UIFactory","getConfigData","window","__DATA__","uiSettings","_getConfigData","getSettingsDataFromInitialConfig","settings","ytApiUseCORS","isIdmAclAvailable","getAclApi","isAllowed","getAccessLogBasePath","accessLogBasePath","getAccountsUsageBasePath","accountsUsageBasePath","getJupyterBasePath","jupyterBasePath","isDocsAllowed","Boolean","docsBaseUrl","docsUrl","url","alt","getDocsBaseUrl","getNewTableReplicasCount","newTableReplicasCount","getQueryTrackerStage","queryTrackerStage","getConfigUploadTable","_uiSettings$uploadTab","uploadTableMaxSize","uploadTableUseLocalmode","uploadTableExcelBaseUrl","allowDirectDownload","directDownload","createAdminReqTicketUrl","params","arguments","length","undefined","trackerBaseUrl","queue","trackerAdminRequestQueue","createTrackerUrl","createQuotaReqTicketUrl","trackerQuoteRequestQueue","search","URLSearchParams","Object","assign","toString","concat"],"sources":["index.ts"],"sourcesContent":["import _ from 'lodash';\nimport {ConfigData} from '../../shared/yt-types';\nimport UIFactory from '../UIFactory';\n\nexport function getConfigData(): ConfigData {\n return (window as any).__DATA__;\n}\n\nexport const uiSettings: Partial<Required<ConfigData>['uiSettings']> =\n getConfigData()?.uiSettings || {};\n\nexport function getSettingsDataFromInitialConfig() {\n return getConfigData().settings;\n}\n\nexport function ytApiUseCORS() {\n return getConfigData().ytApiUseCORS;\n}\nexport function isIdmAclAvailable() {\n return UIFactory.getAclApi().isAllowed;\n}\n\nexport function getAccessLogBasePath() {\n return uiSettings.accessLogBasePath;\n}\n\nexport function getAccountsUsageBasePath() {\n return uiSettings.accountsUsageBasePath;\n}\n\nexport function getJupyterBasePath() {\n return uiSettings.jupyterBasePath;\n}\n\nexport function isDocsAllowed() {\n return Boolean(uiSettings.docsBaseUrl);\n}\n\nexport function docsUrl<T, K = string>(url: T, alt?: K) {\n return isDocsAllowed() ? url : alt ?? '';\n}\n\nexport function getDocsBaseUrl() {\n return uiSettings.docsBaseUrl;\n}\n\nexport function getNewTableReplicasCount() {\n return uiSettings.newTableReplicasCount || 3;\n}\n\nexport function getQueryTrackerStage() {\n return uiSettings.queryTrackerStage;\n}\n\nexport function getConfigUploadTable() {\n return {\n uploadTableMaxSize: uiSettings.uploadTableMaxSize ?? 1024 * 1024 * 1024,\n uploadTableUseLocalmode: uiSettings.uploadTableUseLocalmode,\n uploadTableExcelBaseUrl: uiSettings.uploadTableExcelBaseUrl,\n };\n}\n\nexport function allowDirectDownload() {\n return uiSettings.directDownload;\n}\n\nexport function createAdminReqTicketUrl(params: Record<string, string> = {}) {\n const {trackerBaseUrl, trackerAdminRequestQueue: queue} = uiSettings;\n return createTrackerUrl(trackerBaseUrl, queue, params);\n}\n\nexport function createQuotaReqTicketUrl(params: Record<string, string> = {}) {\n const {trackerBaseUrl, trackerQuoteRequestQueue: queue} = uiSettings;\n return createTrackerUrl(trackerBaseUrl, queue, params);\n}\n\nfunction createTrackerUrl(\n trackerBaseUrl?: string,\n queue?: string,\n params: Record<string, string> = {},\n) {\n if (!queue || !trackerBaseUrl) {\n return {};\n }\n\n const search = new URLSearchParams(Object.assign(params, {queue})).toString();\n const url = `${trackerBaseUrl}/createTicket?${search}`;\n return {url, queue};\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["UIFactory","getConfigData","window","__DATA__","uiSettings","_getConfigData","getSettingsDataFromInitialConfig","settings","ytApiUseCORS","isIdmAclAvailable","getAclApi","isAllowed","getAccessLogBasePath","accessLogBasePath","getAccountsUsageBasePath","accountsUsageBasePath","getJupyterBasePath","jupyterBasePath","isDocsAllowed","Boolean","docsBaseUrl","docsUrl","url","alt","getDocsBaseUrl","getNewTableReplicasCount","newTableReplicasCount","getQueryTrackerStage","queryTrackerStage","getQueryTrackerCluster","queryTrackerCluster","getConfigUploadTable","_uiSettings$uploadTab","uploadTableMaxSize","uploadTableUseLocalmode","uploadTableExcelBaseUrl","allowDirectDownload","directDownload","createAdminReqTicketUrl","params","arguments","length","undefined","trackerBaseUrl","queue","trackerAdminRequestQueue","createTrackerUrl","createQuotaReqTicketUrl","trackerQuoteRequestQueue","search","URLSearchParams","Object","assign","toString","concat"],"sources":["index.ts"],"sourcesContent":["import _ from 'lodash';\nimport {ConfigData} from '../../shared/yt-types';\nimport UIFactory from '../UIFactory';\n\nexport function getConfigData(): ConfigData {\n return (window as any).__DATA__;\n}\n\nexport const uiSettings: Partial<Required<ConfigData>['uiSettings']> =\n getConfigData()?.uiSettings || {};\n\nexport function getSettingsDataFromInitialConfig() {\n return getConfigData().settings;\n}\n\nexport function ytApiUseCORS() {\n return getConfigData().ytApiUseCORS;\n}\nexport function isIdmAclAvailable() {\n return UIFactory.getAclApi().isAllowed;\n}\n\nexport function getAccessLogBasePath() {\n return uiSettings.accessLogBasePath;\n}\n\nexport function getAccountsUsageBasePath() {\n return uiSettings.accountsUsageBasePath;\n}\n\nexport function getJupyterBasePath() {\n return uiSettings.jupyterBasePath;\n}\n\nexport function isDocsAllowed() {\n return Boolean(uiSettings.docsBaseUrl);\n}\n\nexport function docsUrl<T, K = string>(url: T, alt?: K) {\n return isDocsAllowed() ? url : alt ?? '';\n}\n\nexport function getDocsBaseUrl() {\n return uiSettings.docsBaseUrl;\n}\n\nexport function getNewTableReplicasCount() {\n return uiSettings.newTableReplicasCount || 3;\n}\n\nexport function getQueryTrackerStage() {\n return uiSettings.queryTrackerStage;\n}\n\nexport function getQueryTrackerCluster() {\n return uiSettings.queryTrackerCluster;\n}\n\nexport function getConfigUploadTable() {\n return {\n uploadTableMaxSize: uiSettings.uploadTableMaxSize ?? 1024 * 1024 * 1024,\n uploadTableUseLocalmode: uiSettings.uploadTableUseLocalmode,\n uploadTableExcelBaseUrl: uiSettings.uploadTableExcelBaseUrl,\n };\n}\n\nexport function allowDirectDownload() {\n return uiSettings.directDownload;\n}\n\nexport function createAdminReqTicketUrl(params: Record<string, string> = {}) {\n const {trackerBaseUrl, trackerAdminRequestQueue: queue} = uiSettings;\n return createTrackerUrl(trackerBaseUrl, queue, params);\n}\n\nexport function createQuotaReqTicketUrl(params: Record<string, string> = {}) {\n const {trackerBaseUrl, trackerQuoteRequestQueue: queue} = uiSettings;\n return createTrackerUrl(trackerBaseUrl, queue, params);\n}\n\nfunction createTrackerUrl(\n trackerBaseUrl?: string,\n queue?: string,\n params: Record<string, string> = {},\n) {\n if (!queue || !trackerBaseUrl) {\n return {};\n }\n\n const search = new URLSearchParams(Object.assign(params, {queue})).toString();\n const url = `${trackerBaseUrl}/createTicket?${search}`;\n return {url, queue};\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Fragment","Redirect","Route","Switch","useLocation","connect","useSelector","cn","BanPage","MaintenancePage","HandleMaintenanceRedirect","Components","Operations","Accounts","Dashboard","System","Navigation","PathViewer","Tablet","TabletCellBundles","GroupsPage","UsersPage","Scheduling","QueryTracker","Job","ClusterPageHeader","PageTracker","PageHeadByCluster","ConnectionErrorRegion","GeneralErrorRegion","FlexSplitPane","ErrorBlock","Page","SPLIT_PANE_ID","LOADING_STATUS","LOAD_ERROR","trackVisit","splitMenuItemsAction","joinMenuItemsAction","setSetting","updateCluster","initClusterParams","updateTitle","getAdminPages","isDeveloper","getClusterConfig","NAMESPACES","SettingName","isRedirectToBetaSwitched","isRecentClustersFirst","isRecentPagesFirst","getClusterPagePaneSizes","getStartingPage","SupportedFeaturesUpdater","useRumMeasureStart","useRumMeasureStop","RumMeasureTypes","useClusterFromLocation","makeExtraPageRoutes","jsx","_jsx","jsxs","_jsxs","b","RedirectToBanIfNeededMemo","memo","RedirectToBanIfNeeded","ClusterPage","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","state","width","contentPaneRef","createRef","_onUpdateEnd","_this$props","props","cluster","Promise","resolve","then","DEVELOPMENT","REDIRECT_TO_BETA_SWITCHED","REDIRECT_TO_BETA","_initMenuCollection","onResize","splitScreen","toolbar","document","querySelector","isSplit","gutterWidth","offset","getElementById","clientWidth","style","right","window","dispatchEvent","Event","handleSplit","updateWidthModifier","onResizeEnd","sizes","NAVIGATION","CLUSTER_PAGE_PANE_SIZES","getInitialSizes","clusterPagePaneSizes","_createClass","key","value","componentDidMount","getSnapshotBeforeUpdate","prevProps","pageYOffset","current","scrollTop","componentDidUpdate","prevState","prevScroll","scrollBy","prevCluster","componentWillUnmount","path","page","itemName","_this$props2","settingsMap","_this$contentPaneRef$","currentWidth","Infinity","setState","renderError","clusterConfig","_ref","error","errorType","CONNECTION","id","AUTHENTICATION","message","GENERAL","isParamsLoading","_this$props3","paramsCluster","renderContent","_this$props4","startingPage","isLoaded","hasError","paramsError","adminPages","isAdmin","children","to","BAN","component","MAINTENANCE","COMPONENTS","OPERATIONS","JOB","DASHBOARD","SYSTEM","ACCOUNTS","TABLET_CELL_BUNDLES","CHAOS_CELL_BUNDLES","PATH_VIEWER","TABLET","USERS","GROUPS","SCHEDULING","includes","QUERIES","from","VERSIONS","className","render","_this$props5","clusters","ClusterPageStopRumMeasure","paneClassNames","direction","HORIZONTAL","onSplit","onUnSplit","minSize","ref","split","mapStateToProps","_state$global","global","login","maintenancePageEvent","loadState","paramsLoading","clustersMenu","LOADED","ERROR","mapDispatchToProps","_ref2","_useSelector","blocked","banned","_useLocation","pathname","enableRedirect","endsWith","type","CLUSTER_PARAMS","subPage","allowStop","_ref3","_ref4","_slicedToArray","startDeps","_ref5","_ref6","stopDeps"],"sources":["ClusterPage.js"],"sourcesContent":["import React, {Component, Fragment} from 'react';\nimport {Redirect, Route, Switch, useLocation} from 'react-router';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport BanPage from '../BanPage/BanPage';\nimport MaintenancePage from '../MaintenancePage/MaintenancePage';\nimport HandleMaintenanceRedirect from '../MaintenancePage/HandleRedirect';\nimport Components from '../../pages/components/Components/Components';\nimport Operations from '../../pages/operations/Operations/Operations';\nimport Accounts from '../../pages/accounts/Accounts/Accounts';\nimport Dashboard from '../../pages/dashboard/Dashboard/Dashboard';\nimport System from '../../pages/system/System/System';\nimport Navigation from '../../pages/navigation/Navigation/Navigation';\nimport PathViewer from '../../pages/path-viewer/PathViewer';\nimport Tablet from '../../pages/tablet/Tablet';\nimport TabletCellBundles from '../../pages/tablet_cell_bundles/TabletCellBundles';\nimport GroupsPage from '../../pages/groups/GroupsPage';\nimport UsersPage from '../../pages/users/UsersPage';\nimport Scheduling from '../../pages/scheduling/Scheduling/Scheduling';\nimport {QueryTracker} from '../../pages/query-tracker/QueryTracker/QueryTracker';\nimport Job from '../../pages/job/Job';\n\nimport ClusterPageHeader from '../ClusterPageHeader/ClusterPageHeader';\nimport PageTracker from './PageTracker';\n\nimport {PageHeadByCluster} from '../../components/PageHead/PageHead';\nimport ConnectionErrorRegion from '../../components/PreloaderErrors/ConnectionErrorRegion';\nimport GeneralErrorRegion from '../../components/PreloaderErrors/GeneralErrorRegion';\nimport FlexSplitPane from '../../components/FlexSplitPane/FlexSplitPane';\nimport ErrorBlock from '../../components/Error/Error';\n\nimport {Page, SPLIT_PANE_ID, LOADING_STATUS, LOAD_ERROR} from '../../constants/index';\nimport {trackVisit, splitMenuItemsAction, joinMenuItemsAction} from '../../store/actions/menu';\nimport {setSetting} from '../../store/actions/settings';\nimport {updateCluster, initClusterParams} from '../../store/actions/cluster-params';\nimport {updateTitle} from '../../store/actions/global';\nimport {getAdminPages, isDeveloper} from '../../store/selectors/global';\nimport {getClusterConfig} from '../../utils';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {\n isRedirectToBetaSwitched,\n isRecentClustersFirst,\n isRecentPagesFirst,\n getClusterPagePaneSizes,\n getStartingPage,\n} from '../../store/selectors/settings';\nimport SupportedFeaturesUpdater from './SupportedFeaturesUpdater';\nimport {useRumMeasureStart, useRumMeasureStop} from '../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../rum/rum-measure-types';\nimport {useClusterFromLocation} from '../../hooks/use-cluster';\nimport {makeExtraPageRoutes} from './ExtraClusterPageRoutes';\n\nimport './ClusterPage.scss';\n\nconst b = cn('cluster-page');\n\nconst RedirectToBanIfNeededMemo = React.memo(RedirectToBanIfNeeded);\n\nclass ClusterPage extends Component {\n static propTypes = {\n cluster: PropTypes.string,\n\n // from connect\n clusters: PropTypes.object.isRequired,\n clusterPagePaneSizes: PropTypes.array,\n login: PropTypes.string,\n queriesPageAllowed: PropTypes.bool,\n isAdmin: PropTypes.bool,\n adminPages: PropTypes.array,\n maintenancePageEvent: PropTypes.object,\n startingPage: PropTypes.string.isRequired,\n isLoaded: PropTypes.bool.isRequired,\n hasError: PropTypes.bool.isRequired,\n error: PropTypes.shape({\n errorType: PropTypes.string,\n }).isRequired,\n paramsError: PropTypes.any,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n }).isRequired,\n\n splitMenuItemsAction: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n joinMenuItemsAction: PropTypes.func.isRequired,\n initClusterParams: PropTypes.func.isRequired,\n updateCluster: PropTypes.func.isRequired,\n updateTitle: PropTypes.func.isRequired,\n trackVisit: PropTypes.func.isRequired,\n };\n\n state = {\n width: 'large',\n };\n\n componentDidMount() {\n const {cluster} = this.props;\n this.props.updateCluster(cluster, this._onUpdateEnd);\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n if (prevProps.splitScreen.isSplit !== this.props.splitScreen.isSplit) {\n return this.props.splitScreen.isSplit\n ? window.pageYOffset\n : this.contentPaneRef.current.scrollTop;\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState, prevScroll) {\n if (prevScroll !== null) {\n if (this.props.splitScreen.isSplit) {\n this.contentPaneRef.current.scrollTop = prevScroll;\n }\n\n window.scrollBy(0, prevScroll);\n }\n\n const {cluster: prevCluster} = prevProps;\n const {cluster} = this.props;\n\n if (cluster !== prevCluster) {\n this.props.updateCluster(cluster, this._onUpdateEnd);\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: '', page: ''});\n }\n\n contentPaneRef = React.createRef();\n\n _onUpdateEnd = () => {\n const {\n cluster,\n trackVisit,\n updateTitle,\n initClusterParams,\n isRedirectToBetaSwitched,\n setSetting,\n } = this.props;\n\n return Promise.resolve().then(() => {\n // todo: get rid of redirectToBetaSwitched setting.\n // It`s exist for set default value of redirectToBeta setting, when settings document is empty yet.\n // Set redirectToBeta on server after get all user settings (home.js). Or get rid of this logic at all.\n if (!isRedirectToBetaSwitched) {\n setSetting(\n SettingName.DEVELOPMENT.REDIRECT_TO_BETA_SWITCHED,\n NAMESPACES.DEVELOPMENT,\n true,\n );\n setSetting(SettingName.DEVELOPMENT.REDIRECT_TO_BETA, NAMESPACES.DEVELOPMENT, true);\n }\n\n initClusterParams(cluster);\n this._initMenuCollection('cluster');\n this._initMenuCollection('page');\n trackVisit('cluster', cluster);\n updateTitle({cluster});\n });\n };\n\n _initMenuCollection(itemName) {\n const {splitMenuItemsAction, joinMenuItemsAction} = this.props;\n\n const settingsMap = {\n cluster: 'isRecentClustersFirst',\n page: 'isRecentPagesFirst',\n };\n\n if (this.props[settingsMap[itemName]]) {\n splitMenuItemsAction(itemName);\n } else {\n joinMenuItemsAction(`${itemName}s`);\n }\n }\n\n onResize = () => {\n const {splitScreen} = this.props;\n const toolbar = document.querySelector('#elements-toolbar');\n\n if (splitScreen.isSplit && toolbar) {\n const gutterWidth = 10;\n const offset = document.getElementById(SPLIT_PANE_ID).clientWidth + gutterWidth;\n toolbar.style.right = `${offset}px`;\n } else if (toolbar) {\n toolbar.style.right = '0';\n }\n\n window.dispatchEvent(new Event('resize'));\n };\n\n handleSplit = () => {\n this.onResize();\n // fight the table toolbar becoming invisible after toggling YQLWidget and before first scroll\n window.dispatchEvent(new Event('scroll'));\n this.updateWidthModifier();\n };\n\n updateWidthModifier() {\n const currentWidth = this.contentPaneRef.current?.clientWidth || Infinity;\n if (currentWidth <= 720) {\n this.setState({width: 'small'});\n } else if (currentWidth <= 1024) {\n this.setState({width: 'medium'});\n } else {\n this.setState({width: 'large'});\n }\n }\n\n onResizeEnd = (sizes) => {\n this.props.setSetting(\n SettingName.NAVIGATION.CLUSTER_PAGE_PANE_SIZES,\n NAMESPACES.NAVIGATION,\n sizes,\n );\n this.updateWidthModifier();\n };\n\n getInitialSizes = () => {\n return this.props.clusterPagePaneSizes;\n };\n\n renderError(clusterConfig) {\n const {errorType} = this.props.error || {};\n\n switch (errorType) {\n case LOAD_ERROR.CONNECTION:\n return <ConnectionErrorRegion cluster={clusterConfig.id} />;\n case LOAD_ERROR.AUTHENTICATION:\n return (\n <GeneralErrorRegion\n cluster={clusterConfig.id}\n message={\n 'Could not fetch the XSRF token, therefore preventing further operations. Sometimes ' +\n 'token fetching fails due to the network issues. If the problem persists, please report it ' +\n 'via Bug Reporter.'\n }\n />\n );\n case LOAD_ERROR.GENERAL:\n return (\n <GeneralErrorRegion message=\"Unexpected error occurred. If problem persists please report it via Bug Reporter.\" />\n );\n }\n }\n\n isParamsLoading() {\n const {cluster, paramsCluster} = this.props;\n return cluster !== paramsCluster;\n }\n\n renderContent(clusterConfig) {\n const {cluster, startingPage, isLoaded, hasError, paramsError, adminPages, isAdmin} =\n this.props;\n\n return isLoaded && !this.isParamsLoading() ? (\n <Fragment>\n <SupportedFeaturesUpdater />\n <HandleMaintenanceRedirect />\n <RedirectToBanIfNeededMemo to={`/${cluster}/${Page.BAN}`} />\n <Switch>\n <Route path={`/:cluster/${Page.BAN}`} component={BanPage} />\n <Route path={`/:cluster/${Page.MAINTENANCE}`} component={MaintenancePage} />\n <Route path={`/:cluster/${Page.COMPONENTS}`} component={Components} />\n <Route path={`/:cluster/${Page.OPERATIONS}`} component={Operations} />\n <Route path={`/:cluster/${Page.JOB}`} component={Job} />\n <Route path={`/:cluster/${Page.DASHBOARD}`} component={Dashboard} />\n <Route path={`/:cluster/${Page.SYSTEM}`} component={System} />\n <Route path={`/:cluster/${Page.ACCOUNTS}`} component={Accounts} />\n <Route\n path={[\n `/:cluster/${Page.TABLET_CELL_BUNDLES}`,\n `/:cluster/${Page.CHAOS_CELL_BUNDLES}`,\n ]}\n component={TabletCellBundles}\n />\n <Route path={`/:cluster/${Page.NAVIGATION}`} component={Navigation} />\n <Route path={`/:cluster/${Page.PATH_VIEWER}`} component={PathViewer} />\n <Route path={`/:cluster/${Page.TABLET}`} component={Tablet} />\n <Route path={`/:cluster/${Page.USERS}`} component={UsersPage} />\n <Route path={`/:cluster/${Page.GROUPS}`} component={GroupsPage} />\n <Route path={`/:cluster/${Page.SCHEDULING}`} component={Scheduling} />\n {(!adminPages.includes(Page.QUERIES) || isAdmin) && (\n <Route path={`/:cluster/${Page.QUERIES}`} component={QueryTracker} />\n )}\n <Redirect\n from={`/:cluster/${Page.VERSIONS}`}\n to={`/:cluster/${Page.COMPONENTS}/versions`}\n />\n {\n // https://a.yandex-team.ru/review/3534811/details#comment-5045335\n // move route there\n }\n {makeExtraPageRoutes()}\n <Redirect from={`/${cluster}/`} to={`/${cluster}/${startingPage}`} />\n </Switch>\n\n <Route path=\"/:cluster/:page/:tab?\" component={PageTracker} />\n </Fragment>\n ) : (\n <React.Fragment>\n <div className=\"preloader\">\n {hasError ? (\n this.renderError(clusterConfig)\n ) : (\n <p className=\"preloader__loading\">Loading {clusterConfig?.id}...</p>\n )}\n </div>\n <div className={b('error')}>\n {paramsError && <ErrorBlock error={paramsError} />}\n </div>\n </React.Fragment>\n );\n }\n\n render() {\n const {cluster, splitScreen, clusters} = this.props;\n\n // TODO: put current cluster config into redux state to avoid doing things like these here\n const clusterConfig = getClusterConfig(clusters, cluster);\n\n // FIXME: handle case when clusterConfig is undefined due to wrong cluster name\n return (\n <Fragment>\n <ClusterPageStopRumMeasure />\n <PageHeadByCluster cluster={cluster} />\n\n <ClusterPageHeader />\n\n <FlexSplitPane\n className={b('panes-wrapper', {\n 'with-pane': splitScreen.isSplit,\n })}\n paneClassNames={splitScreen.paneClassNames}\n direction={FlexSplitPane.HORIZONTAL}\n onResize={this.onResize}\n onResizeEnd={this.onResizeEnd}\n onSplit={this.handleSplit}\n onUnSplit={this.handleSplit}\n minSize={600}\n getInitialSizes={this.getInitialSizes}\n id={SPLIT_PANE_ID}\n >\n <div\n ref={this.contentPaneRef}\n className={b('content-pane', {\n split: splitScreen.isSplit && 'yes',\n width: this.state.width,\n })}\n >\n {this.renderContent(clusterConfig)}\n </div>\n\n {null}\n </FlexSplitPane>\n </Fragment>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const {\n login,\n maintenancePageEvent,\n splitScreen,\n loadState,\n error,\n paramsCluster,\n paramsLoading,\n paramsError,\n } = state.global;\n\n const clusters = state.clustersMenu.clusters;\n\n return {\n clusters,\n isLoaded: !paramsLoading && loadState === LOADING_STATUS.LOADED,\n hasError: loadState === LOADING_STATUS.ERROR,\n error,\n paramsError,\n login,\n splitScreen,\n maintenancePageEvent,\n isRedirectToBetaSwitched: isRedirectToBetaSwitched(state),\n isRecentClustersFirst: isRecentClustersFirst(state),\n isRecentPagesFirst: isRecentPagesFirst(state),\n clusterPagePaneSizes: getClusterPagePaneSizes(state),\n startingPage: getStartingPage(state),\n isAdmin: isDeveloper(state),\n paramsCluster,\n adminPages: getAdminPages(),\n };\n}\n\nconst mapDispatchToProps = {\n setSetting,\n trackVisit,\n splitMenuItemsAction,\n joinMenuItemsAction,\n updateTitle,\n initClusterParams,\n updateCluster,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ClusterPage);\n\nfunction RedirectToBanIfNeeded({to}) {\n const {blocked, banned} = useSelector((state) => state.global);\n const {pathname} = useLocation();\n const enableRedirect = (banned || blocked) && !pathname.endsWith('/ban');\n\n if (!enableRedirect) {\n return null;\n }\n\n return <Redirect to={to} />;\n}\n\nfunction ClusterPageStopRumMeasure() {\n const loadState = useSelector((state) => state.global.loadState);\n const paramsLoading = useSelector((state) => state.global.paramsLoading);\n\n const isLoaded =\n loadState === LOADING_STATUS.ERROR ||\n (!paramsLoading && loadState === LOADING_STATUS.LOADED);\n\n const cluster = useClusterFromLocation();\n\n useRumMeasureStart({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n subPage: `ui.${cluster}`,\n allowStop: ([isLoaded]) => !isLoaded,\n startDeps: [isLoaded],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n allowStop: ([isLoaded]) => isLoaded,\n stopDeps: [isLoaded],\n });\n return null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Component","Fragment","Redirect","Route","Switch","useLocation","connect","useSelector","cn","BanPage","MaintenancePage","HandleMaintenanceRedirect","Components","Operations","Accounts","Dashboard","System","Navigation","PathViewer","Tablet","TabletCellBundles","GroupsPage","UsersPage","Scheduling","QueryTracker","Job","ClusterPageHeader","PageTracker","PageHeadByCluster","ConnectionErrorRegion","GeneralErrorRegion","FlexSplitPane","ErrorBlock","Page","SPLIT_PANE_ID","LOADING_STATUS","LOAD_ERROR","trackVisit","splitMenuItemsAction","joinMenuItemsAction","setSetting","updateCluster","initClusterParams","updateTitle","getAdminPages","isDeveloper","getClusterConfig","NAMESPACES","SettingName","isRedirectToBetaSwitched","isRecentClustersFirst","isRecentPagesFirst","getClusterPagePaneSizes","getStartingPage","SupportedFeaturesUpdater","useRumMeasureStart","useRumMeasureStop","RumMeasureTypes","useClusterFromLocation","makeExtraPageRoutes","jsx","_jsx","jsxs","_jsxs","b","RedirectToBanIfNeededMemo","memo","RedirectToBanIfNeeded","ClusterPage","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","state","width","contentPaneRef","createRef","_onUpdateEnd","_this$props","props","cluster","Promise","resolve","then","DEVELOPMENT","REDIRECT_TO_BETA_SWITCHED","REDIRECT_TO_BETA","_initMenuCollection","onResize","splitScreen","toolbar","document","querySelector","isSplit","gutterWidth","offset","getElementById","clientWidth","style","right","window","dispatchEvent","Event","handleSplit","updateWidthModifier","onResizeEnd","sizes","NAVIGATION","CLUSTER_PAGE_PANE_SIZES","getInitialSizes","clusterPagePaneSizes","_createClass","key","value","componentDidMount","getSnapshotBeforeUpdate","prevProps","pageYOffset","current","scrollTop","componentDidUpdate","prevState","prevScroll","scrollBy","prevCluster","componentWillUnmount","path","page","itemName","_this$props2","settingsMap","_this$contentPaneRef$","currentWidth","Infinity","setState","renderError","clusterConfig","_ref","error","errorType","CONNECTION","id","AUTHENTICATION","message","GENERAL","isParamsLoading","_this$props3","paramsCluster","renderContent","_this$props4","startingPage","isLoaded","hasError","paramsError","adminPages","isAdmin","children","to","BAN","component","MAINTENANCE","COMPONENTS","OPERATIONS","JOB","DASHBOARD","SYSTEM","ACCOUNTS","TABLET_CELL_BUNDLES","CHAOS_CELL_BUNDLES","PATH_VIEWER","TABLET","USERS","GROUPS","SCHEDULING","includes","QUERIES","from","VERSIONS","className","render","_this$props5","clusters","ClusterPageStopRumMeasure","paneClassNames","direction","HORIZONTAL","onSplit","onUnSplit","minSize","ref","split","mapStateToProps","_state$global","global","login","maintenancePageEvent","loadState","paramsLoading","clustersMenu","LOADED","ERROR","mapDispatchToProps","_ref2","_useSelector","blocked","banned","_useLocation","pathname","enableRedirect","endsWith","type","CLUSTER_PARAMS","subPage","allowStop","_ref3","_ref4","_slicedToArray","startDeps","_ref5","_ref6","stopDeps"],"sources":["ClusterPage.js"],"sourcesContent":["import React, {Component, Fragment} from 'react';\nimport {Redirect, Route, Switch, useLocation} from 'react-router';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport BanPage from '../BanPage/BanPage';\nimport MaintenancePage from '../MaintenancePage/MaintenancePage';\nimport HandleMaintenanceRedirect from '../MaintenancePage/HandleRedirect';\nimport Components from '../../pages/components/Components/Components';\nimport Operations from '../../pages/operations/Operations/Operations';\nimport Accounts from '../../pages/accounts/Accounts/Accounts';\nimport Dashboard from '../../pages/dashboard/Dashboard/Dashboard';\nimport System from '../../pages/system/System/System';\nimport Navigation from '../../pages/navigation/Navigation/Navigation';\nimport PathViewer from '../../pages/path-viewer/PathViewer';\nimport Tablet from '../../pages/tablet/Tablet';\nimport TabletCellBundles from '../../pages/tablet_cell_bundles/TabletCellBundles';\nimport GroupsPage from '../../pages/groups/GroupsPage';\nimport UsersPage from '../../pages/users/UsersPage';\nimport Scheduling from '../../pages/scheduling/Scheduling/Scheduling';\nimport {QueryTracker} from '../../pages/query-tracker/QueryTracker/QueryTracker';\nimport Job from '../../pages/job/Job';\n\nimport ClusterPageHeader from '../ClusterPageHeader/ClusterPageHeader';\nimport PageTracker from './PageTracker';\n\nimport {PageHeadByCluster} from '../../components/PageHead/PageHead';\nimport ConnectionErrorRegion from '../../components/PreloaderErrors/ConnectionErrorRegion';\nimport GeneralErrorRegion from '../../components/PreloaderErrors/GeneralErrorRegion';\nimport FlexSplitPane from '../../components/FlexSplitPane/FlexSplitPane';\nimport ErrorBlock from '../../components/Error/Error';\n\nimport {Page, SPLIT_PANE_ID, LOADING_STATUS, LOAD_ERROR} from '../../constants/index';\nimport {trackVisit, splitMenuItemsAction, joinMenuItemsAction} from '../../store/actions/menu';\nimport {setSetting} from '../../store/actions/settings';\nimport {updateCluster, initClusterParams} from '../../store/actions/cluster-params';\nimport {updateTitle} from '../../store/actions/global';\nimport {getAdminPages, isDeveloper} from '../../store/selectors/global';\nimport {getClusterConfig} from '../../utils';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {\n isRedirectToBetaSwitched,\n isRecentClustersFirst,\n isRecentPagesFirst,\n getClusterPagePaneSizes,\n getStartingPage,\n} from '../../store/selectors/settings';\nimport SupportedFeaturesUpdater from './SupportedFeaturesUpdater';\nimport {useRumMeasureStart, useRumMeasureStop} from '../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../rum/rum-measure-types';\nimport {useClusterFromLocation} from '../../hooks/use-cluster';\nimport {makeExtraPageRoutes} from './ExtraClusterPageRoutes';\n\nimport './ClusterPage.scss';\n\nconst b = cn('cluster-page');\n\nconst RedirectToBanIfNeededMemo = React.memo(RedirectToBanIfNeeded);\n\nclass ClusterPage extends Component {\n static propTypes = {\n cluster: PropTypes.string,\n\n // from connect\n clusters: PropTypes.object.isRequired,\n clusterPagePaneSizes: PropTypes.array,\n login: PropTypes.string,\n queriesPageAllowed: PropTypes.bool,\n isAdmin: PropTypes.bool,\n adminPages: PropTypes.array,\n maintenancePageEvent: PropTypes.object,\n startingPage: PropTypes.string.isRequired,\n isLoaded: PropTypes.bool.isRequired,\n hasError: PropTypes.bool.isRequired,\n error: PropTypes.shape({\n errorType: PropTypes.string,\n }).isRequired,\n paramsError: PropTypes.any,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n }).isRequired,\n\n splitMenuItemsAction: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n joinMenuItemsAction: PropTypes.func.isRequired,\n initClusterParams: PropTypes.func.isRequired,\n updateCluster: PropTypes.func.isRequired,\n updateTitle: PropTypes.func.isRequired,\n trackVisit: PropTypes.func.isRequired,\n };\n\n state = {\n width: 'large',\n };\n\n componentDidMount() {\n const {cluster} = this.props;\n this.props.updateCluster(cluster, this._onUpdateEnd);\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n if (prevProps.splitScreen.isSplit !== this.props.splitScreen.isSplit) {\n return this.props.splitScreen.isSplit\n ? window.pageYOffset\n : this.contentPaneRef.current.scrollTop;\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState, prevScroll) {\n if (prevScroll !== null) {\n if (this.props.splitScreen.isSplit) {\n this.contentPaneRef.current.scrollTop = prevScroll;\n }\n\n window.scrollBy(0, prevScroll);\n }\n\n const {cluster: prevCluster} = prevProps;\n const {cluster} = this.props;\n\n if (cluster !== prevCluster) {\n this.props.updateCluster(cluster, this._onUpdateEnd);\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: '', page: ''});\n }\n\n contentPaneRef = React.createRef();\n\n _onUpdateEnd = () => {\n const {\n cluster,\n trackVisit,\n updateTitle,\n initClusterParams,\n isRedirectToBetaSwitched,\n setSetting,\n } = this.props;\n\n return Promise.resolve().then(() => {\n // todo: get rid of redirectToBetaSwitched setting.\n // It`s exist for set default value of redirectToBeta setting, when settings document is empty yet.\n // Set redirectToBeta on server after get all user settings (home.js). Or get rid of this logic at all.\n if (!isRedirectToBetaSwitched) {\n setSetting(\n SettingName.DEVELOPMENT.REDIRECT_TO_BETA_SWITCHED,\n NAMESPACES.DEVELOPMENT,\n true,\n );\n setSetting(SettingName.DEVELOPMENT.REDIRECT_TO_BETA, NAMESPACES.DEVELOPMENT, true);\n }\n\n initClusterParams(cluster);\n this._initMenuCollection('cluster');\n this._initMenuCollection('page');\n trackVisit('cluster', cluster);\n updateTitle({cluster});\n });\n };\n\n _initMenuCollection(itemName) {\n const {splitMenuItemsAction, joinMenuItemsAction} = this.props;\n\n const settingsMap = {\n cluster: 'isRecentClustersFirst',\n page: 'isRecentPagesFirst',\n };\n\n if (this.props[settingsMap[itemName]]) {\n splitMenuItemsAction(itemName);\n } else {\n joinMenuItemsAction(`${itemName}s`);\n }\n }\n\n onResize = () => {\n const {splitScreen} = this.props;\n const toolbar = document.querySelector('#elements-toolbar');\n\n if (splitScreen.isSplit && toolbar) {\n const gutterWidth = 10;\n const offset = document.getElementById(SPLIT_PANE_ID).clientWidth + gutterWidth;\n toolbar.style.right = `${offset}px`;\n } else if (toolbar) {\n toolbar.style.right = '0';\n }\n\n window.dispatchEvent(new Event('resize'));\n };\n\n handleSplit = () => {\n this.onResize();\n // fight the table toolbar becoming invisible after toggling YQLWidget and before first scroll\n window.dispatchEvent(new Event('scroll'));\n this.updateWidthModifier();\n };\n\n updateWidthModifier() {\n const currentWidth = this.contentPaneRef.current?.clientWidth || Infinity;\n if (currentWidth <= 720) {\n this.setState({width: 'small'});\n } else if (currentWidth <= 1024) {\n this.setState({width: 'medium'});\n } else {\n this.setState({width: 'large'});\n }\n }\n\n onResizeEnd = (sizes) => {\n this.props.setSetting(\n SettingName.NAVIGATION.CLUSTER_PAGE_PANE_SIZES,\n NAMESPACES.NAVIGATION,\n sizes,\n );\n this.updateWidthModifier();\n };\n\n getInitialSizes = () => {\n return this.props.clusterPagePaneSizes;\n };\n\n renderError(clusterConfig) {\n const {errorType} = this.props.error || {};\n\n switch (errorType) {\n case LOAD_ERROR.CONNECTION:\n return <ConnectionErrorRegion cluster={clusterConfig.id} />;\n case LOAD_ERROR.AUTHENTICATION:\n return (\n <GeneralErrorRegion\n cluster={clusterConfig.id}\n message={\n 'Could not fetch the XSRF token, therefore preventing further operations. Sometimes ' +\n 'token fetching fails due to the network issues. If the problem persists, please report it ' +\n 'via Bug Reporter.'\n }\n />\n );\n case LOAD_ERROR.GENERAL:\n return (\n <GeneralErrorRegion message=\"Unexpected error occurred. If problem persists please report it via Bug Reporter.\" />\n );\n }\n }\n\n isParamsLoading() {\n const {cluster, paramsCluster} = this.props;\n return cluster !== paramsCluster;\n }\n\n renderContent(clusterConfig) {\n const {cluster, startingPage, isLoaded, hasError, paramsError, adminPages, isAdmin} =\n this.props;\n\n return isLoaded && !this.isParamsLoading() ? (\n <Fragment>\n <SupportedFeaturesUpdater />\n <HandleMaintenanceRedirect />\n <RedirectToBanIfNeededMemo to={`/${cluster}/${Page.BAN}`} />\n <Switch>\n <Route path={`/:cluster/${Page.BAN}`} component={BanPage} />\n <Route path={`/:cluster/${Page.MAINTENANCE}`} component={MaintenancePage} />\n <Route path={`/:cluster/${Page.COMPONENTS}`} component={Components} />\n <Route path={`/:cluster/${Page.OPERATIONS}`} component={Operations} />\n <Route path={`/:cluster/${Page.JOB}`} component={Job} />\n <Route path={`/:cluster/${Page.DASHBOARD}`} component={Dashboard} />\n <Route path={`/:cluster/${Page.SYSTEM}`} component={System} />\n <Route path={`/:cluster/${Page.ACCOUNTS}`} component={Accounts} />\n <Route\n path={[\n `/:cluster/${Page.TABLET_CELL_BUNDLES}`,\n `/:cluster/${Page.CHAOS_CELL_BUNDLES}`,\n ]}\n component={TabletCellBundles}\n />\n <Route path={`/:cluster/${Page.NAVIGATION}`} component={Navigation} />\n <Route path={`/:cluster/${Page.PATH_VIEWER}`} component={PathViewer} />\n <Route path={`/:cluster/${Page.TABLET}`} component={Tablet} />\n <Route path={`/:cluster/${Page.USERS}`} component={UsersPage} />\n <Route path={`/:cluster/${Page.GROUPS}`} component={GroupsPage} />\n <Route path={`/:cluster/${Page.SCHEDULING}`} component={Scheduling} />\n {(!adminPages.includes(Page.QUERIES) || isAdmin) && (\n <Route path={`/:cluster/${Page.QUERIES}`} component={QueryTracker} />\n )}\n <Redirect\n from={`/:cluster/${Page.VERSIONS}`}\n to={`/:cluster/${Page.COMPONENTS}/versions`}\n />\n {makeExtraPageRoutes()}\n <Redirect from={`/${cluster}/`} to={`/${cluster}/${startingPage}`} />\n </Switch>\n\n <Route path=\"/:cluster/:page/:tab?\" component={PageTracker} />\n </Fragment>\n ) : (\n <React.Fragment>\n <div className=\"preloader\">\n {hasError ? (\n this.renderError(clusterConfig)\n ) : (\n <p className=\"preloader__loading\">Loading {clusterConfig?.id}...</p>\n )}\n </div>\n <div className={b('error')}>\n {paramsError && <ErrorBlock error={paramsError} />}\n </div>\n </React.Fragment>\n );\n }\n\n render() {\n const {cluster, splitScreen, clusters} = this.props;\n\n // TODO: put current cluster config into redux state to avoid doing things like these here\n const clusterConfig = getClusterConfig(clusters, cluster);\n\n // FIXME: handle case when clusterConfig is undefined due to wrong cluster name\n return (\n <Fragment>\n <ClusterPageStopRumMeasure />\n <PageHeadByCluster cluster={cluster} />\n\n <ClusterPageHeader />\n\n <FlexSplitPane\n className={b('panes-wrapper', {\n 'with-pane': splitScreen.isSplit,\n })}\n paneClassNames={splitScreen.paneClassNames}\n direction={FlexSplitPane.HORIZONTAL}\n onResize={this.onResize}\n onResizeEnd={this.onResizeEnd}\n onSplit={this.handleSplit}\n onUnSplit={this.handleSplit}\n minSize={600}\n getInitialSizes={this.getInitialSizes}\n id={SPLIT_PANE_ID}\n >\n <div\n ref={this.contentPaneRef}\n className={b('content-pane', {\n split: splitScreen.isSplit && 'yes',\n width: this.state.width,\n })}\n >\n {this.renderContent(clusterConfig)}\n </div>\n\n {null}\n </FlexSplitPane>\n </Fragment>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const {\n login,\n maintenancePageEvent,\n splitScreen,\n loadState,\n error,\n paramsCluster,\n paramsLoading,\n paramsError,\n } = state.global;\n\n const clusters = state.clustersMenu.clusters;\n\n return {\n clusters,\n isLoaded: !paramsLoading && loadState === LOADING_STATUS.LOADED,\n hasError: loadState === LOADING_STATUS.ERROR,\n error,\n paramsError,\n login,\n splitScreen,\n maintenancePageEvent,\n isRedirectToBetaSwitched: isRedirectToBetaSwitched(state),\n isRecentClustersFirst: isRecentClustersFirst(state),\n isRecentPagesFirst: isRecentPagesFirst(state),\n clusterPagePaneSizes: getClusterPagePaneSizes(state),\n startingPage: getStartingPage(state),\n isAdmin: isDeveloper(state),\n paramsCluster,\n adminPages: getAdminPages(),\n };\n}\n\nconst mapDispatchToProps = {\n setSetting,\n trackVisit,\n splitMenuItemsAction,\n joinMenuItemsAction,\n updateTitle,\n initClusterParams,\n updateCluster,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ClusterPage);\n\nfunction RedirectToBanIfNeeded({to}) {\n const {blocked, banned} = useSelector((state) => state.global);\n const {pathname} = useLocation();\n const enableRedirect = (banned || blocked) && !pathname.endsWith('/ban');\n\n if (!enableRedirect) {\n return null;\n }\n\n return <Redirect to={to} />;\n}\n\nfunction ClusterPageStopRumMeasure() {\n const loadState = useSelector((state) => state.global.loadState);\n const paramsLoading = useSelector((state) => state.global.paramsLoading);\n\n const isLoaded =\n loadState === LOADING_STATUS.ERROR ||\n (!paramsLoading && loadState === LOADING_STATUS.LOADED);\n\n const cluster = useClusterFromLocation();\n\n useRumMeasureStart({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n subPage: `ui.${cluster}`,\n allowStop: ([isLoaded]) => !isLoaded,\n startDeps: [isLoaded],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n allowStop: ([isLoaded]) => isLoaded,\n stopDeps: [isLoaded],\n });\n return null;\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ .create-query-btn {
2
+ display: inline-flex;
3
+ flex-wrap: nowrap;
4
+ }
5
+ .create-query-btn__btn + .create-query-btn__btn {
6
+ margin-left: 1px;
7
+ }
8
+ /*# sourceMappingURL=CreateQueryFromTable.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["CreateQueryFromTable.scss","CreateQueryFromTable.css"],"names":[],"mappings":"AAAA;EACI,oBAAA;EACA,iBAAA;ACCJ;ADAI;EACI,gBAAA;ACER","file":"CreateQueryFromTable.css","sourcesContent":[".create-query-btn {\n display: inline-flex;\n flex-wrap: nowrap;\n &__btn + &__btn {\n margin-left: 1px;\n }\n}\n",".create-query-btn {\n display: inline-flex;\n flex-wrap: nowrap;\n}\n.create-query-btn__btn + .create-query-btn__btn {\n margin-left: 1px;\n}\n\n/*# sourceMappingURL=CreateQueryFromTable.css.map */"]}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { QueryWidgetProps } from '../../../../query-tracker/QueryWidget';
3
+ import './CreateQueryFromTable.scss';
4
+ export declare const QueryWidgetPortal: React.ReactElement<QueryWidgetProps, string | React.JSXElementConstructor<any>>;
5
+ export declare function CreateQueryFromTable({ className }: {
6
+ className: string;
7
+ }): JSX.Element;
@@ -0,0 +1,72 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import React, { useCallback, useState } from 'react';
3
+ import { useDispatch, useSelector } from 'react-redux';
4
+ import cn from 'bem-cn-lite';
5
+ import { Button } from '@gravity-ui/uikit';
6
+ import { QueryEngine } from '../../../../query-tracker/module/api';
7
+ import { getPath } from '../../../../../store/selectors/navigation';
8
+ import { getCluster } from '../../../../../store/selectors/global';
9
+ import { QueryWidget } from '../../../../query-tracker/QueryWidget';
10
+ import { createQueryFromTablePath } from '../../../../query-tracker/module/query/actions';
11
+ import Icon from '../../../../../components/Icon/Icon';
12
+ import { createNewQueryUrl } from '../../../../query-tracker/utils/navigation';
13
+ import withSplit from '../../../../../hocs/withSplit';
14
+ import { mergeScreen, splitScreen } from '../../../../../store/actions/global';
15
+ import { SPLIT_TYPE } from '../../../../../constants/components/nodes/nodes';
16
+ import './CreateQueryFromTable.css';
17
+ import { jsx as _jsx } from "react/jsx-runtime";
18
+ import { jsxs as _jsxs } from "react/jsx-runtime";
19
+ import { Fragment as _Fragment } from "react/jsx-runtime";
20
+ var b = cn('create-query-btn');
21
+ export var QueryWidgetPortal = withSplit(QueryWidget);
22
+ export function CreateQueryFromTable(_ref) {
23
+ var className = _ref.className;
24
+ var _useState = useState(false),
25
+ _useState2 = _slicedToArray(_useState, 2),
26
+ widgetOpened = _useState2[0],
27
+ setWidgetOpened = _useState2[1];
28
+ var dispatch = useDispatch();
29
+ var cluster = useSelector(getCluster);
30
+ var path = useSelector(getPath);
31
+ var openWidget = useCallback(function () {
32
+ dispatch(createQueryFromTablePath(QueryEngine.YQL, cluster, path));
33
+ dispatch(splitScreen(SPLIT_TYPE));
34
+ setWidgetOpened(true);
35
+ }, [setWidgetOpened, dispatch, path, cluster]);
36
+ var onClose = useCallback(function () {
37
+ setWidgetOpened(false);
38
+ dispatch(mergeScreen());
39
+ }, [setWidgetOpened, dispatch]);
40
+ return /*#__PURE__*/_jsxs(_Fragment, {
41
+ children: [/*#__PURE__*/_jsxs("div", {
42
+ className: b(null, className),
43
+ children: [/*#__PURE__*/_jsx(Button, {
44
+ onClick: openWidget,
45
+ pin: "round-clear",
46
+ view: "action",
47
+ className: b('btn'),
48
+ disabled: widgetOpened,
49
+ title: "Open Queries widget",
50
+ children: "YQL query"
51
+ }), /*#__PURE__*/_jsx(Button, {
52
+ className: b('btn'),
53
+ pin: "clear-round",
54
+ view: "action",
55
+ href: createNewQueryUrl(cluster, QueryEngine.YQL, {
56
+ path: path
57
+ }),
58
+ target: "_blank",
59
+ title: "Open Queries page",
60
+ children: /*#__PURE__*/_jsx(Icon, {
61
+ awesome: "table"
62
+ })
63
+ })]
64
+ }), widgetOpened &&
65
+ /*#__PURE__*/
66
+ // @ts-ignore
67
+ _jsx(QueryWidgetPortal, {
68
+ onClose: onClose
69
+ })]
70
+ });
71
+ }
72
+ // #sourceMappingURL=CreateQueryFromTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useState","useDispatch","useSelector","cn","Button","QueryEngine","getPath","getCluster","QueryWidget","createQueryFromTablePath","Icon","createNewQueryUrl","withSplit","mergeScreen","splitScreen","SPLIT_TYPE","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","b","QueryWidgetPortal","CreateQueryFromTable","_ref","className","_useState","_useState2","_slicedToArray","widgetOpened","setWidgetOpened","dispatch","cluster","path","openWidget","YQL","onClose","children","onClick","pin","view","disabled","title","href","target","awesome"],"sources":["CreateQueryFromTable.tsx"],"sourcesContent":["import React, {ReactElement, useCallback, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {Button} from '@gravity-ui/uikit';\nimport {QueryEngine} from '../../../../query-tracker/module/api';\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {QueryWidget, QueryWidgetProps} from '../../../../query-tracker/QueryWidget';\nimport {createQueryFromTablePath} from '../../../../query-tracker/module/query/actions';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {createNewQueryUrl} from '../../../../query-tracker/utils/navigation';\nimport withSplit from '../../../../../hocs/withSplit';\nimport {mergeScreen, splitScreen} from '../../../../../store/actions/global';\nimport {SPLIT_TYPE} from '../../../../../constants/components/nodes/nodes';\nimport './CreateQueryFromTable.scss';\n\nconst b = cn('create-query-btn');\n\nexport const QueryWidgetPortal = withSplit(\n QueryWidget,\n) as unknown as ReactElement<QueryWidgetProps>;\n\nexport function CreateQueryFromTable({className}: {className: string}) {\n const [widgetOpened, setWidgetOpened] = useState(false);\n const dispatch = useDispatch();\n\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n\n const openWidget = useCallback(() => {\n dispatch(createQueryFromTablePath(QueryEngine.YQL, cluster, path));\n dispatch(splitScreen(SPLIT_TYPE));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch, path, cluster]);\n\n const onClose = useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return (\n <>\n <div className={b(null, className)}>\n <Button\n onClick={openWidget}\n pin=\"round-clear\"\n view=\"action\"\n className={b('btn')}\n disabled={widgetOpened}\n title=\"Open Queries widget\"\n >\n YQL query\n </Button>\n <Button\n className={b('btn')}\n pin=\"clear-round\"\n view=\"action\"\n href={createNewQueryUrl(cluster, QueryEngine.YQL, {path})}\n target=\"_blank\"\n title=\"Open Queries page\"\n >\n <Icon awesome=\"table\" />\n </Button>\n </div>\n {widgetOpened && (\n // @ts-ignore\n <QueryWidgetPortal onClose={onClose} />\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ .create-query-btn {
2
+ display: inline-flex;
3
+ flex-wrap: nowrap;
4
+ &__btn + &__btn {
5
+ margin-left: 1px;
6
+ }
7
+ }
@@ -92,6 +92,9 @@
92
92
  .navigation-table-overview__settings-modal {
93
93
  padding: 10px 15px;
94
94
  }
95
+ .navigation-table-overview__query {
96
+ margin-right: 10px;
97
+ }
95
98
  .navigation-table-overview__yql {
96
99
  margin-left: 10px;
97
100
  margin-right: 10px;