@grafana/sql 0.0.0 → 13.0.0-23483592685

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 (323) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/README.md +10 -0
  3. package/dist/cjs/ResponseParser.cjs +29 -0
  4. package/dist/cjs/ResponseParser.cjs.map +1 -0
  5. package/dist/cjs/SQLVariableEditor.cjs +86 -0
  6. package/dist/cjs/SQLVariableEditor.cjs.map +1 -0
  7. package/dist/cjs/SQLVariableSupport.cjs +40 -0
  8. package/dist/cjs/SQLVariableSupport.cjs.map +1 -0
  9. package/dist/cjs/SQLVariableUtils.cjs +75 -0
  10. package/dist/cjs/SQLVariableUtils.cjs.map +1 -0
  11. package/dist/cjs/components/ConfirmModal.cjs +56 -0
  12. package/dist/cjs/components/ConfirmModal.cjs.map +1 -0
  13. package/dist/cjs/components/DatasetSelector.cjs +48 -0
  14. package/dist/cjs/components/DatasetSelector.cjs.map +1 -0
  15. package/dist/cjs/components/QueryEditor.cjs +124 -0
  16. package/dist/cjs/components/QueryEditor.cjs.map +1 -0
  17. package/dist/cjs/components/QueryEditorLazy.cjs +44 -0
  18. package/dist/cjs/components/QueryEditorLazy.cjs.map +1 -0
  19. package/dist/cjs/components/QueryHeader.cjs +294 -0
  20. package/dist/cjs/components/QueryHeader.cjs.map +1 -0
  21. package/dist/cjs/components/TableSelector.cjs +41 -0
  22. package/dist/cjs/components/TableSelector.cjs.map +1 -0
  23. package/dist/cjs/components/configuration/ConnectionLimits.cjs +162 -0
  24. package/dist/cjs/components/configuration/ConnectionLimits.cjs.map +1 -0
  25. package/dist/cjs/components/configuration/Divider.cjs +25 -0
  26. package/dist/cjs/components/configuration/Divider.cjs.map +1 -0
  27. package/dist/cjs/components/configuration/MaxLifetimeField.cjs +41 -0
  28. package/dist/cjs/components/configuration/MaxLifetimeField.cjs.map +1 -0
  29. package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs +53 -0
  30. package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs.map +1 -0
  31. package/dist/cjs/components/configuration/NumberInput.cjs +37 -0
  32. package/dist/cjs/components/configuration/NumberInput.cjs.map +1 -0
  33. package/dist/cjs/components/configuration/TLSSecretsConfig.cjs +106 -0
  34. package/dist/cjs/components/configuration/TLSSecretsConfig.cjs.map +1 -0
  35. package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs +52 -0
  36. package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs.map +1 -0
  37. package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs +40 -0
  38. package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs.map +1 -0
  39. package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs +108 -0
  40. package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs.map +1 -0
  41. package/dist/cjs/components/query-editor-raw/QueryValidator.cjs +100 -0
  42. package/dist/cjs/components/query-editor-raw/QueryValidator.cjs.map +1 -0
  43. package/dist/cjs/components/query-editor-raw/RawEditor.cjs +116 -0
  44. package/dist/cjs/components/query-editor-raw/RawEditor.cjs.map +1 -0
  45. package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs +273 -0
  46. package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs.map +1 -0
  47. package/dist/cjs/components/visual-query-builder/GroupByRow.cjs +69 -0
  48. package/dist/cjs/components/visual-query-builder/GroupByRow.cjs.map +1 -0
  49. package/dist/cjs/components/visual-query-builder/OrderByRow.cjs +82 -0
  50. package/dist/cjs/components/visual-query-builder/OrderByRow.cjs.map +1 -0
  51. package/dist/cjs/components/visual-query-builder/Preview.cjs +55 -0
  52. package/dist/cjs/components/visual-query-builder/Preview.cjs.map +1 -0
  53. package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs +18 -0
  54. package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs.map +1 -0
  55. package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs +18 -0
  56. package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs.map +1 -0
  57. package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs +56 -0
  58. package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs.map +1 -0
  59. package/dist/cjs/components/visual-query-builder/SelectColumn.cjs +30 -0
  60. package/dist/cjs/components/visual-query-builder/SelectColumn.cjs.map +1 -0
  61. package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs +135 -0
  62. package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs.map +1 -0
  63. package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs +142 -0
  64. package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs.map +1 -0
  65. package/dist/cjs/components/visual-query-builder/SelectRow.cjs +184 -0
  66. package/dist/cjs/components/visual-query-builder/SelectRow.cjs.map +1 -0
  67. package/dist/cjs/components/visual-query-builder/VisualEditor.cjs +43 -0
  68. package/dist/cjs/components/visual-query-builder/VisualEditor.cjs.map +1 -0
  69. package/dist/cjs/components/visual-query-builder/WhereRow.cjs +84 -0
  70. package/dist/cjs/components/visual-query-builder/WhereRow.cjs.map +1 -0
  71. package/dist/cjs/constants.cjs +77 -0
  72. package/dist/cjs/constants.cjs.map +1 -0
  73. package/dist/cjs/datasource/SqlDatasource.cjs +188 -0
  74. package/dist/cjs/datasource/SqlDatasource.cjs.map +1 -0
  75. package/dist/cjs/defaults.cjs +32 -0
  76. package/dist/cjs/defaults.cjs.map +1 -0
  77. package/dist/cjs/expressions.cjs +23 -0
  78. package/dist/cjs/expressions.cjs.map +1 -0
  79. package/dist/cjs/index.cjs +48 -0
  80. package/dist/cjs/index.cjs.map +1 -0
  81. package/dist/cjs/loadResources.cjs +49 -0
  82. package/dist/cjs/loadResources.cjs.map +1 -0
  83. package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs +165 -0
  84. package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs.map +1 -0
  85. package/dist/cjs/locales/de-DE/grafana-sql.json.cjs +165 -0
  86. package/dist/cjs/locales/de-DE/grafana-sql.json.cjs.map +1 -0
  87. package/dist/cjs/locales/en-US/grafana-sql.json.cjs +165 -0
  88. package/dist/cjs/locales/en-US/grafana-sql.json.cjs.map +1 -0
  89. package/dist/cjs/locales/es-ES/grafana-sql.json.cjs +165 -0
  90. package/dist/cjs/locales/es-ES/grafana-sql.json.cjs.map +1 -0
  91. package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs +165 -0
  92. package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs.map +1 -0
  93. package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs +165 -0
  94. package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs.map +1 -0
  95. package/dist/cjs/locales/id-ID/grafana-sql.json.cjs +165 -0
  96. package/dist/cjs/locales/id-ID/grafana-sql.json.cjs.map +1 -0
  97. package/dist/cjs/locales/it-IT/grafana-sql.json.cjs +165 -0
  98. package/dist/cjs/locales/it-IT/grafana-sql.json.cjs.map +1 -0
  99. package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs +165 -0
  100. package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs.map +1 -0
  101. package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs +165 -0
  102. package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs.map +1 -0
  103. package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs +165 -0
  104. package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs.map +1 -0
  105. package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs +165 -0
  106. package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs.map +1 -0
  107. package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs +165 -0
  108. package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs.map +1 -0
  109. package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs +165 -0
  110. package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs.map +1 -0
  111. package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs +165 -0
  112. package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs.map +1 -0
  113. package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs +165 -0
  114. package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs.map +1 -0
  115. package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs +165 -0
  116. package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs.map +1 -0
  117. package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs +165 -0
  118. package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs.map +1 -0
  119. package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs +165 -0
  120. package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs.map +1 -0
  121. package/dist/cjs/types.cjs +24 -0
  122. package/dist/cjs/types.cjs.map +1 -0
  123. package/dist/cjs/utils/formatSQL.cjs +19 -0
  124. package/dist/cjs/utils/formatSQL.cjs.map +1 -0
  125. package/dist/cjs/utils/getColumnsWithIndices.cjs +33 -0
  126. package/dist/cjs/utils/getColumnsWithIndices.cjs.map +1 -0
  127. package/dist/cjs/utils/logging.cjs +11 -0
  128. package/dist/cjs/utils/logging.cjs.map +1 -0
  129. package/dist/cjs/utils/migration.cjs +24 -0
  130. package/dist/cjs/utils/migration.cjs.map +1 -0
  131. package/dist/cjs/utils/sql.utils.cjs +75 -0
  132. package/dist/cjs/utils/sql.utils.cjs.map +1 -0
  133. package/dist/cjs/utils/testHelpers.cjs +31 -0
  134. package/dist/cjs/utils/testHelpers.cjs.map +1 -0
  135. package/dist/cjs/utils/useSqlChange.cjs +22 -0
  136. package/dist/cjs/utils/useSqlChange.cjs.map +1 -0
  137. package/dist/esm/ResponseParser.mjs +25 -0
  138. package/dist/esm/ResponseParser.mjs.map +1 -0
  139. package/dist/esm/SQLVariableEditor.mjs +82 -0
  140. package/dist/esm/SQLVariableEditor.mjs.map +1 -0
  141. package/dist/esm/SQLVariableSupport.mjs +36 -0
  142. package/dist/esm/SQLVariableSupport.mjs.map +1 -0
  143. package/dist/esm/SQLVariableUtils.mjs +68 -0
  144. package/dist/esm/SQLVariableUtils.mjs.map +1 -0
  145. package/dist/esm/components/ConfirmModal.mjs +52 -0
  146. package/dist/esm/components/ConfirmModal.mjs.map +1 -0
  147. package/dist/esm/components/DatasetSelector.mjs +44 -0
  148. package/dist/esm/components/DatasetSelector.mjs.map +1 -0
  149. package/dist/esm/components/QueryEditor.mjs +122 -0
  150. package/dist/esm/components/QueryEditor.mjs.map +1 -0
  151. package/dist/esm/components/QueryEditorLazy.mjs +38 -0
  152. package/dist/esm/components/QueryEditorLazy.mjs.map +1 -0
  153. package/dist/esm/components/QueryHeader.mjs +290 -0
  154. package/dist/esm/components/QueryHeader.mjs.map +1 -0
  155. package/dist/esm/components/TableSelector.mjs +37 -0
  156. package/dist/esm/components/TableSelector.mjs.map +1 -0
  157. package/dist/esm/components/configuration/ConnectionLimits.mjs +158 -0
  158. package/dist/esm/components/configuration/ConnectionLimits.mjs.map +1 -0
  159. package/dist/esm/components/configuration/Divider.mjs +21 -0
  160. package/dist/esm/components/configuration/Divider.mjs.map +1 -0
  161. package/dist/esm/components/configuration/MaxLifetimeField.mjs +37 -0
  162. package/dist/esm/components/configuration/MaxLifetimeField.mjs.map +1 -0
  163. package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs +49 -0
  164. package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs.map +1 -0
  165. package/dist/esm/components/configuration/NumberInput.mjs +33 -0
  166. package/dist/esm/components/configuration/NumberInput.mjs.map +1 -0
  167. package/dist/esm/components/configuration/TLSSecretsConfig.mjs +102 -0
  168. package/dist/esm/components/configuration/TLSSecretsConfig.mjs.map +1 -0
  169. package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs +48 -0
  170. package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs.map +1 -0
  171. package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs +36 -0
  172. package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs.map +1 -0
  173. package/dist/esm/components/query-editor-raw/QueryToolbox.mjs +104 -0
  174. package/dist/esm/components/query-editor-raw/QueryToolbox.mjs.map +1 -0
  175. package/dist/esm/components/query-editor-raw/QueryValidator.mjs +96 -0
  176. package/dist/esm/components/query-editor-raw/QueryValidator.mjs.map +1 -0
  177. package/dist/esm/components/query-editor-raw/RawEditor.mjs +108 -0
  178. package/dist/esm/components/query-editor-raw/RawEditor.mjs.map +1 -0
  179. package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs +266 -0
  180. package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs.map +1 -0
  181. package/dist/esm/components/visual-query-builder/GroupByRow.mjs +65 -0
  182. package/dist/esm/components/visual-query-builder/GroupByRow.mjs.map +1 -0
  183. package/dist/esm/components/visual-query-builder/OrderByRow.mjs +78 -0
  184. package/dist/esm/components/visual-query-builder/OrderByRow.mjs.map +1 -0
  185. package/dist/esm/components/visual-query-builder/Preview.mjs +51 -0
  186. package/dist/esm/components/visual-query-builder/Preview.mjs.map +1 -0
  187. package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs +14 -0
  188. package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs.map +1 -0
  189. package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs +14 -0
  190. package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs.map +1 -0
  191. package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs +51 -0
  192. package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs.map +1 -0
  193. package/dist/esm/components/visual-query-builder/SelectColumn.mjs +26 -0
  194. package/dist/esm/components/visual-query-builder/SelectColumn.mjs.map +1 -0
  195. package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs +131 -0
  196. package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs.map +1 -0
  197. package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs +138 -0
  198. package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs.map +1 -0
  199. package/dist/esm/components/visual-query-builder/SelectRow.mjs +180 -0
  200. package/dist/esm/components/visual-query-builder/SelectRow.mjs.map +1 -0
  201. package/dist/esm/components/visual-query-builder/VisualEditor.mjs +39 -0
  202. package/dist/esm/components/visual-query-builder/VisualEditor.mjs.map +1 -0
  203. package/dist/esm/components/visual-query-builder/WhereRow.mjs +80 -0
  204. package/dist/esm/components/visual-query-builder/WhereRow.mjs.map +1 -0
  205. package/dist/esm/constants.mjs +71 -0
  206. package/dist/esm/constants.mjs.map +1 -0
  207. package/dist/esm/datasource/SqlDatasource.mjs +184 -0
  208. package/dist/esm/datasource/SqlDatasource.mjs.map +1 -0
  209. package/dist/esm/defaults.mjs +28 -0
  210. package/dist/esm/defaults.mjs.map +1 -0
  211. package/dist/esm/expressions.mjs +18 -0
  212. package/dist/esm/expressions.mjs.map +1 -0
  213. package/dist/esm/index.mjs +22 -0
  214. package/dist/esm/index.mjs.map +1 -0
  215. package/dist/esm/loadResources.mjs +43 -0
  216. package/dist/esm/loadResources.mjs.map +1 -0
  217. package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs +163 -0
  218. package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs.map +1 -0
  219. package/dist/esm/locales/de-DE/grafana-sql.json.mjs +163 -0
  220. package/dist/esm/locales/de-DE/grafana-sql.json.mjs.map +1 -0
  221. package/dist/esm/locales/en-US/grafana-sql.json.mjs +163 -0
  222. package/dist/esm/locales/en-US/grafana-sql.json.mjs.map +1 -0
  223. package/dist/esm/locales/es-ES/grafana-sql.json.mjs +163 -0
  224. package/dist/esm/locales/es-ES/grafana-sql.json.mjs.map +1 -0
  225. package/dist/esm/locales/fr-FR/grafana-sql.json.mjs +163 -0
  226. package/dist/esm/locales/fr-FR/grafana-sql.json.mjs.map +1 -0
  227. package/dist/esm/locales/hu-HU/grafana-sql.json.mjs +163 -0
  228. package/dist/esm/locales/hu-HU/grafana-sql.json.mjs.map +1 -0
  229. package/dist/esm/locales/id-ID/grafana-sql.json.mjs +163 -0
  230. package/dist/esm/locales/id-ID/grafana-sql.json.mjs.map +1 -0
  231. package/dist/esm/locales/it-IT/grafana-sql.json.mjs +163 -0
  232. package/dist/esm/locales/it-IT/grafana-sql.json.mjs.map +1 -0
  233. package/dist/esm/locales/ja-JP/grafana-sql.json.mjs +163 -0
  234. package/dist/esm/locales/ja-JP/grafana-sql.json.mjs.map +1 -0
  235. package/dist/esm/locales/ko-KR/grafana-sql.json.mjs +163 -0
  236. package/dist/esm/locales/ko-KR/grafana-sql.json.mjs.map +1 -0
  237. package/dist/esm/locales/nl-NL/grafana-sql.json.mjs +163 -0
  238. package/dist/esm/locales/nl-NL/grafana-sql.json.mjs.map +1 -0
  239. package/dist/esm/locales/pl-PL/grafana-sql.json.mjs +163 -0
  240. package/dist/esm/locales/pl-PL/grafana-sql.json.mjs.map +1 -0
  241. package/dist/esm/locales/pt-BR/grafana-sql.json.mjs +163 -0
  242. package/dist/esm/locales/pt-BR/grafana-sql.json.mjs.map +1 -0
  243. package/dist/esm/locales/pt-PT/grafana-sql.json.mjs +163 -0
  244. package/dist/esm/locales/pt-PT/grafana-sql.json.mjs.map +1 -0
  245. package/dist/esm/locales/ru-RU/grafana-sql.json.mjs +163 -0
  246. package/dist/esm/locales/ru-RU/grafana-sql.json.mjs.map +1 -0
  247. package/dist/esm/locales/sv-SE/grafana-sql.json.mjs +163 -0
  248. package/dist/esm/locales/sv-SE/grafana-sql.json.mjs.map +1 -0
  249. package/dist/esm/locales/tr-TR/grafana-sql.json.mjs +163 -0
  250. package/dist/esm/locales/tr-TR/grafana-sql.json.mjs.map +1 -0
  251. package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs +163 -0
  252. package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs.map +1 -0
  253. package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs +163 -0
  254. package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs.map +1 -0
  255. package/dist/esm/types.mjs +18 -0
  256. package/dist/esm/types.mjs.map +1 -0
  257. package/dist/esm/utils/formatSQL.mjs +11 -0
  258. package/dist/esm/utils/formatSQL.mjs.map +1 -0
  259. package/dist/esm/utils/getColumnsWithIndices.mjs +29 -0
  260. package/dist/esm/utils/getColumnsWithIndices.mjs.map +1 -0
  261. package/dist/esm/utils/logging.mjs +7 -0
  262. package/dist/esm/utils/logging.mjs.map +1 -0
  263. package/dist/esm/utils/migration.mjs +22 -0
  264. package/dist/esm/utils/migration.mjs.map +1 -0
  265. package/dist/esm/utils/sql.utils.mjs +66 -0
  266. package/dist/esm/utils/sql.utils.mjs.map +1 -0
  267. package/dist/esm/utils/testHelpers.mjs +27 -0
  268. package/dist/esm/utils/testHelpers.mjs.map +1 -0
  269. package/dist/esm/utils/useSqlChange.mjs +18 -0
  270. package/dist/esm/utils/useSqlChange.mjs.map +1 -0
  271. package/dist/types/ResponseParser.d.ts +5 -0
  272. package/dist/types/SQLVariableEditor.d.ts +5 -0
  273. package/dist/types/SQLVariableSupport.d.ts +11 -0
  274. package/dist/types/SQLVariableUtils.d.ts +6 -0
  275. package/dist/types/components/ConfirmModal.d.ts +8 -0
  276. package/dist/types/components/DatasetSelector.d.ts +11 -0
  277. package/dist/types/components/ErrorBoundary.d.ts +12 -0
  278. package/dist/types/components/QueryEditor.d.ts +8 -0
  279. package/dist/types/components/QueryEditorLazy.d.ts +2 -0
  280. package/dist/types/components/QueryHeader.d.ts +16 -0
  281. package/dist/types/components/SqlComponents.testHelpers.d.ts +65 -0
  282. package/dist/types/components/TableSelector.d.ts +10 -0
  283. package/dist/types/components/configuration/ConnectionLimits.d.ts +8 -0
  284. package/dist/types/components/configuration/Divider.d.ts +1 -0
  285. package/dist/types/components/configuration/MaxLifetimeField.d.ts +8 -0
  286. package/dist/types/components/configuration/MaxOpenConnectionsField.d.ts +8 -0
  287. package/dist/types/components/configuration/NumberInput.d.ts +8 -0
  288. package/dist/types/components/configuration/TLSSecretsConfig.d.ts +9 -0
  289. package/dist/types/components/configuration/useMigrateDatabaseFields.d.ts +7 -0
  290. package/dist/types/components/index.d.ts +1 -0
  291. package/dist/types/components/query-editor-raw/QueryEditorRaw.d.ts +15 -0
  292. package/dist/types/components/query-editor-raw/QueryToolbox.d.ts +10 -0
  293. package/dist/types/components/query-editor-raw/QueryValidator.d.ts +9 -0
  294. package/dist/types/components/query-editor-raw/RawEditor.d.ts +9 -0
  295. package/dist/types/components/visual-query-builder/AwesomeQueryBuilder.d.ts +6 -0
  296. package/dist/types/components/visual-query-builder/GroupByRow.d.ts +9 -0
  297. package/dist/types/components/visual-query-builder/OrderByRow.d.ts +10 -0
  298. package/dist/types/components/visual-query-builder/Preview.d.ts +6 -0
  299. package/dist/types/components/visual-query-builder/SQLGroupByRow.d.ts +11 -0
  300. package/dist/types/components/visual-query-builder/SQLOrderByRow.d.ts +11 -0
  301. package/dist/types/components/visual-query-builder/SQLWhereRow.d.ts +12 -0
  302. package/dist/types/components/visual-query-builder/SelectColumn.d.ts +8 -0
  303. package/dist/types/components/visual-query-builder/SelectCustomFunctionParameters.d.ts +11 -0
  304. package/dist/types/components/visual-query-builder/SelectFunctionParameters.d.ts +11 -0
  305. package/dist/types/components/visual-query-builder/SelectRow.d.ts +10 -0
  306. package/dist/types/components/visual-query-builder/VisualEditor.d.ts +8 -0
  307. package/dist/types/components/visual-query-builder/WhereRow.d.ts +9 -0
  308. package/dist/types/components/visual-query-builder/index.d.ts +1 -0
  309. package/dist/types/constants.d.ts +12 -0
  310. package/dist/types/datasource/SqlDatasource.d.ts +38 -0
  311. package/dist/types/defaults.d.ts +3 -0
  312. package/dist/types/expressions.d.ts +51 -0
  313. package/dist/types/index.d.ts +21 -0
  314. package/dist/types/loadResources.d.ts +2 -0
  315. package/dist/types/types.d.ts +152 -0
  316. package/dist/types/utils/formatSQL.d.ts +1 -0
  317. package/dist/types/utils/getColumnsWithIndices.d.ts +3 -0
  318. package/dist/types/utils/logging.d.ts +2 -0
  319. package/dist/types/utils/migration.d.ts +3 -0
  320. package/dist/types/utils/sql.utils.d.ts +21 -0
  321. package/dist/types/utils/testHelpers.d.ts +2 -0
  322. package/dist/types/utils/useSqlChange.d.ts +10 -0
  323. package/package.json +80 -4
@@ -0,0 +1,116 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var css = require('@emotion/css');
7
+ var react = require('react');
8
+ var reactUse = require('react-use');
9
+ var AutoSizer = require('react-virtualized-auto-sizer');
10
+ var i18n = require('@grafana/i18n');
11
+ var runtime = require('@grafana/runtime');
12
+ var ui = require('@grafana/ui');
13
+ var QueryEditorRaw = require('./QueryEditorRaw.cjs');
14
+ var QueryToolbox = require('./QueryToolbox.cjs');
15
+
16
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
17
+
18
+ var AutoSizer__default = /*#__PURE__*/_interopDefaultCompat(AutoSizer);
19
+
20
+ "use strict";
21
+ function RawEditor({ db, query, onChange, onRunQuery, onValidate, queryToValidate, range }) {
22
+ const theme = ui.useTheme2();
23
+ const styles = ui.useStyles2(getStyles);
24
+ const [isExpanded, setIsExpanded] = react.useState(false);
25
+ const [toolboxRef, toolboxMeasure] = reactUse.useMeasure();
26
+ const [editorRef, editorMeasure] = reactUse.useMeasure();
27
+ const editorLanguageDefinition = react.useMemo(() => db.getEditorLanguageDefinition(), [db]);
28
+ const renderQueryEditor = (width, height) => {
29
+ return /* @__PURE__ */ jsxRuntime.jsx(
30
+ QueryEditorRaw.QueryEditorRaw,
31
+ {
32
+ editorLanguageDefinition,
33
+ query,
34
+ width,
35
+ height: height ? height - toolboxMeasure.height : void 0,
36
+ onChange,
37
+ children: ({ formatQuery }) => {
38
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: toolboxRef, children: /* @__PURE__ */ jsxRuntime.jsx(
39
+ QueryToolbox.QueryToolbox,
40
+ {
41
+ db,
42
+ query: queryToValidate,
43
+ onValidate,
44
+ onFormatCode: formatQuery,
45
+ showTools: true,
46
+ range,
47
+ onExpand: setIsExpanded,
48
+ isExpanded
49
+ }
50
+ ) });
51
+ }
52
+ }
53
+ );
54
+ };
55
+ const renderEditor = (standalone = false) => {
56
+ return standalone ? /* @__PURE__ */ jsxRuntime.jsx(AutoSizer__default.default, { children: ({ width, height }) => {
57
+ return renderQueryEditor(width, height);
58
+ } }) : /* @__PURE__ */ jsxRuntime.jsx("div", { ref: editorRef, children: renderQueryEditor() });
59
+ };
60
+ const renderPlaceholder = () => {
61
+ return /* @__PURE__ */ jsxRuntime.jsx(
62
+ "div",
63
+ {
64
+ style: {
65
+ width: editorMeasure.width,
66
+ height: editorMeasure.height,
67
+ background: theme.colors.background.primary,
68
+ display: "flex",
69
+ alignItems: "center",
70
+ justifyContent: "center"
71
+ },
72
+ children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-sql.components.raw-editor.render-placeholder.editing-in-expanded-code-editor", children: "Editing in expanded code editor" })
73
+ }
74
+ );
75
+ };
76
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
77
+ isExpanded ? renderPlaceholder() : renderEditor(),
78
+ isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
79
+ ui.Modal,
80
+ {
81
+ title: i18n.t("grafana-sql.components.raw-editor.title-query-num", "Query {{queryNum}}", {
82
+ queryNum: query.refId
83
+ }),
84
+ closeOnBackdropClick: false,
85
+ closeOnEscape: false,
86
+ className: styles.modal,
87
+ contentClassName: styles.modalContent,
88
+ isOpen: isExpanded,
89
+ onDismiss: () => {
90
+ var _a;
91
+ runtime.reportInteraction("grafana_sql_editor_expand", {
92
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
93
+ expanded: false
94
+ });
95
+ setIsExpanded(false);
96
+ },
97
+ children: renderEditor(true)
98
+ }
99
+ )
100
+ ] });
101
+ }
102
+ function getStyles(theme) {
103
+ return {
104
+ modal: css.css({
105
+ width: "95vw",
106
+ height: "95vh"
107
+ }),
108
+ modalContent: css.css({
109
+ height: "100%",
110
+ paddingTop: 0
111
+ })
112
+ };
113
+ }
114
+
115
+ exports.RawEditor = RawEditor;
116
+ //# sourceMappingURL=RawEditor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RawEditor.cjs","sources":["../../../../src/components/query-editor-raw/RawEditor.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useMemo, useState } from 'react';\nimport { useMeasure } from 'react-use';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Trans, t } from '@grafana/i18n';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Modal, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport { SQLQuery, QueryEditorProps } from '../../types';\n\nimport { QueryEditorRaw } from './QueryEditorRaw';\nimport { QueryToolbox } from './QueryToolbox';\n\ninterface RawEditorProps extends Omit<QueryEditorProps, 'onChange'> {\n onRunQuery: () => void;\n onChange: (q: SQLQuery, processQuery: boolean) => void;\n onValidate: (isValid: boolean) => void;\n queryToValidate: SQLQuery;\n}\n\nexport function RawEditor({ db, query, onChange, onRunQuery, onValidate, queryToValidate, range }: RawEditorProps) {\n const theme = useTheme2();\n const styles = useStyles2(getStyles);\n const [isExpanded, setIsExpanded] = useState(false);\n const [toolboxRef, toolboxMeasure] = useMeasure<HTMLDivElement>();\n const [editorRef, editorMeasure] = useMeasure<HTMLDivElement>();\n\n const editorLanguageDefinition = useMemo(() => db.getEditorLanguageDefinition(), [db]);\n\n const renderQueryEditor = (width?: number, height?: number) => {\n return (\n <QueryEditorRaw\n editorLanguageDefinition={editorLanguageDefinition}\n query={query}\n width={width}\n height={height ? height - toolboxMeasure.height : undefined}\n onChange={onChange}\n >\n {({ formatQuery }) => {\n return (\n <div ref={toolboxRef}>\n <QueryToolbox\n db={db}\n query={queryToValidate}\n onValidate={onValidate}\n onFormatCode={formatQuery}\n showTools\n range={range}\n onExpand={setIsExpanded}\n isExpanded={isExpanded}\n />\n </div>\n );\n }}\n </QueryEditorRaw>\n );\n };\n\n const renderEditor = (standalone = false) => {\n return standalone ? (\n <AutoSizer>\n {({ width, height }) => {\n return renderQueryEditor(width, height);\n }}\n </AutoSizer>\n ) : (\n <div ref={editorRef}>{renderQueryEditor()}</div>\n );\n };\n\n const renderPlaceholder = () => {\n return (\n <div\n style={{\n width: editorMeasure.width,\n height: editorMeasure.height,\n background: theme.colors.background.primary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Trans i18nKey=\"grafana-sql.components.raw-editor.render-placeholder.editing-in-expanded-code-editor\">\n Editing in expanded code editor\n </Trans>\n </div>\n );\n };\n\n return (\n <>\n {isExpanded ? renderPlaceholder() : renderEditor()}\n {isExpanded && (\n <Modal\n title={t('grafana-sql.components.raw-editor.title-query-num', 'Query {{queryNum}}', {\n queryNum: query.refId,\n })}\n closeOnBackdropClick={false}\n closeOnEscape={false}\n className={styles.modal}\n contentClassName={styles.modalContent}\n isOpen={isExpanded}\n onDismiss={() => {\n reportInteraction('grafana_sql_editor_expand', {\n datasource: query.datasource?.type,\n expanded: false,\n });\n setIsExpanded(false);\n }}\n >\n {renderEditor(true)}\n </Modal>\n )}\n </>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n modal: css({\n width: '95vw',\n height: '95vh',\n }),\n modalContent: css({\n height: '100%',\n paddingTop: 0,\n }),\n };\n}\n"],"names":["useTheme2","useStyles2","useState","useMeasure","useMemo","jsx","QueryEditorRaw","QueryToolbox","AutoSizer","Trans","jsxs","Fragment","Modal","t","reportInteraction","css"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBO,SAAS,SAAA,CAAU,EAAE,EAAA,EAAI,KAAA,EAAO,UAAU,UAAA,EAAY,UAAA,EAAY,eAAA,EAAiB,KAAA,EAAM,EAAmB;AACjH,EAAA,MAAM,QAAQA,YAAA,EAAU;AACxB,EAAA,MAAM,MAAA,GAASC,cAAW,SAAS,CAAA;AACnC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,eAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,cAAc,CAAA,GAAIC,mBAAA,EAA2B;AAChE,EAAA,MAAM,CAAC,SAAA,EAAW,aAAa,CAAA,GAAIA,mBAAA,EAA2B;AAE9D,EAAA,MAAM,wBAAA,GAA2BC,cAAQ,MAAM,EAAA,CAAG,6BAA4B,EAAG,CAAC,EAAE,CAAC,CAAA;AAErF,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,EAAgB,MAAA,KAAoB;AAC7D,IAAA,uBACEC,cAAA;AAAA,MAACC,6BAAA;AAAA,MAAA;AAAA,QACC,wBAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA,EAAQ,MAAA,GAAS,MAAA,GAAS,cAAA,CAAe,MAAA,GAAS,KAAA,CAAA;AAAA,QAClD,QAAA;AAAA,QAEC,QAAA,EAAA,CAAC,EAAE,WAAA,EAAY,KAAM;AACpB,UAAA,uBACED,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAA,EACR,QAAA,kBAAAA,cAAA;AAAA,YAACE,yBAAA;AAAA,YAAA;AAAA,cACC,EAAA;AAAA,cACA,KAAA,EAAO,eAAA;AAAA,cACP,UAAA;AAAA,cACA,YAAA,EAAc,WAAA;AAAA,cACd,SAAA,EAAS,IAAA;AAAA,cACT,KAAA;AAAA,cACA,QAAA,EAAU,aAAA;AAAA,cACV;AAAA;AAAA,WACF,EACF,CAAA;AAAA,QAEJ;AAAA;AAAA,KACF;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,UAAA,GAAa,KAAA,KAAU;AAC3C,IAAA,OAAO,6BACLF,cAAA,CAACG,0BAAA,EAAA,EACE,WAAC,EAAE,KAAA,EAAO,QAAO,KAAM;AACtB,MAAA,OAAO,iBAAA,CAAkB,OAAO,MAAM,CAAA;AAAA,IACxC,GACF,CAAA,mBAEAH,cAAA,CAAC,SAAI,GAAA,EAAK,SAAA,EAAY,6BAAkB,EAAE,CAAA;AAAA,EAE9C,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,uBACEA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,OAAO,aAAA,CAAc,KAAA;AAAA,UACrB,QAAQ,aAAA,CAAc,MAAA;AAAA,UACtB,UAAA,EAAY,KAAA,CAAM,MAAA,CAAO,UAAA,CAAW,OAAA;AAAA,UACpC,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB;AAAA,SAClB;AAAA,QAEA,QAAA,kBAAAA,cAAA,CAACI,UAAA,EAAA,EAAM,OAAA,EAAQ,sFAAA,EAAuF,QAAA,EAAA,iCAAA,EAEtG;AAAA;AAAA,KACF;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,UAAA,GAAa,iBAAA,KAAsB,YAAA,EAAa;AAAA,IAChD,UAAA,oBACCN,cAAA;AAAA,MAACO,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAOC,MAAA,CAAE,mDAAA,EAAqD,oBAAA,EAAsB;AAAA,UAClF,UAAU,KAAA,CAAM;AAAA,SACjB,CAAA;AAAA,QACD,oBAAA,EAAsB,KAAA;AAAA,QACtB,aAAA,EAAe,KAAA;AAAA,QACf,WAAW,MAAA,CAAO,KAAA;AAAA,QAClB,kBAAkB,MAAA,CAAO,YAAA;AAAA,QACzB,MAAA,EAAQ,UAAA;AAAA,QACR,WAAW,MAAM;AAxG3B,UAAA,IAAA,EAAA;AAyGY,UAAAC,yBAAA,CAAkB,2BAAA,EAA6B;AAAA,YAC7C,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,YAC9B,QAAA,EAAU;AAAA,WACX,CAAA;AACD,UAAA,aAAA,CAAc,KAAK,CAAA;AAAA,QACrB,CAAA;AAAA,QAEC,uBAAa,IAAI;AAAA;AAAA;AACpB,GAAA,EAEJ,CAAA;AAEJ;AAEA,SAAS,UAAU,KAAA,EAAsB;AACvC,EAAA,OAAO;AAAA,IACL,OAAOC,OAAA,CAAI;AAAA,MACT,KAAA,EAAO,MAAA;AAAA,MACP,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,cAAcA,OAAA,CAAI;AAAA,MAChB,MAAA,EAAQ,MAAA;AAAA,MACR,UAAA,EAAY;AAAA,KACb;AAAA,GACH;AACF;;;;"}
@@ -0,0 +1,273 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var ui = require('@react-awesome-query-builder/ui');
7
+ var lodash = require('lodash');
8
+ var data = require('@grafana/data');
9
+ var e2eSelectors = require('@grafana/e2e-selectors');
10
+ var i18n = require('@grafana/i18n');
11
+ var ui$1 = require('@grafana/ui');
12
+
13
+ "use strict";
14
+ const buttonLabels = {
15
+ add: "Add",
16
+ remove: "Remove"
17
+ };
18
+ const emptyInitTree = {
19
+ id: ui.Utils.uuid(),
20
+ type: "group"
21
+ };
22
+ const TIME_FILTER = "timeFilter";
23
+ const macros = [TIME_FILTER];
24
+ const widgets = {
25
+ ...ui.BasicConfig.widgets,
26
+ text: {
27
+ ...ui.BasicConfig.widgets.text,
28
+ factory: function TextInput(props) {
29
+ return /* @__PURE__ */ jsxRuntime.jsx(
30
+ ui$1.Input,
31
+ {
32
+ value: (props == null ? void 0 : props.value) || "",
33
+ placeholder: props == null ? void 0 : props.placeholder,
34
+ onChange: (e) => props == null ? void 0 : props.setValue(e.currentTarget.value)
35
+ }
36
+ );
37
+ }
38
+ },
39
+ number: {
40
+ ...ui.BasicConfig.widgets.number,
41
+ factory: function NumberInput(props) {
42
+ return /* @__PURE__ */ jsxRuntime.jsx(
43
+ ui$1.Input,
44
+ {
45
+ value: props == null ? void 0 : props.value,
46
+ placeholder: props == null ? void 0 : props.placeholder,
47
+ type: "number",
48
+ onChange: (e) => props == null ? void 0 : props.setValue(Number.parseInt(e.currentTarget.value, 10))
49
+ }
50
+ );
51
+ }
52
+ },
53
+ datetime: {
54
+ ...ui.BasicConfig.widgets.datetime,
55
+ factory: function DateTimeInput(props) {
56
+ if ((props == null ? void 0 : props.operator) === "macros" /* MACROS */) {
57
+ return /* @__PURE__ */ jsxRuntime.jsx(
58
+ ui$1.Select,
59
+ {
60
+ id: props.id,
61
+ "aria-label": i18n.t("grafana-sql.components.widgets.aria-label-macros-value-selector", "Macros value selector"),
62
+ menuShouldPortal: true,
63
+ options: macros.map(data.toOption),
64
+ value: props == null ? void 0 : props.value,
65
+ onChange: (val) => props.setValue(val.value)
66
+ }
67
+ );
68
+ }
69
+ const dateValue = data.dateTime(props == null ? void 0 : props.value).isValid() ? data.dateTime(props == null ? void 0 : props.value).utc() : void 0;
70
+ return /* @__PURE__ */ jsxRuntime.jsx(
71
+ ui$1.DateTimePicker,
72
+ {
73
+ onChange: (e) => {
74
+ props == null ? void 0 : props.setValue(e == null ? void 0 : e.format(ui.BasicConfig.widgets.datetime.valueFormat));
75
+ },
76
+ date: dateValue
77
+ }
78
+ );
79
+ },
80
+ // Function for formatting widget’s value in SQL WHERE query.
81
+ sqlFormatValue: (val, field, widget, operator, operatorDefinition, rightFieldDef) => {
82
+ if (operator === "macros" /* MACROS */) {
83
+ if (macros.includes(val)) {
84
+ return val;
85
+ }
86
+ return void 0;
87
+ }
88
+ if (typeof ui.BasicConfig.widgets.datetime.sqlFormatValue === "string" || typeof ui.BasicConfig.widgets.datetime.sqlFormatValue === "object") {
89
+ return void 0;
90
+ }
91
+ const func = ui.BasicConfig.widgets.datetime.sqlFormatValue;
92
+ return (func == null ? void 0 : func.call(ui.BasicConfig.ctx, val, field, widget, operator, operatorDefinition, rightFieldDef)) || "";
93
+ }
94
+ }
95
+ };
96
+ const settings = {
97
+ ...ui.BasicConfig.settings,
98
+ canRegroup: false,
99
+ maxNesting: 1,
100
+ canReorder: false,
101
+ showNot: false,
102
+ addRuleLabel: buttonLabels.add,
103
+ deleteLabel: buttonLabels.remove,
104
+ // This is the component that renders conjunctions (logical operators)
105
+ renderConjs: function Conjunctions(conjProps) {
106
+ return /* @__PURE__ */ jsxRuntime.jsx(
107
+ ui$1.Select,
108
+ {
109
+ id: conjProps == null ? void 0 : conjProps.id,
110
+ "aria-label": i18n.t("grafana-sql.components.settings.aria-label-conjunction", "Conjunction"),
111
+ "data-testid": e2eSelectors.selectors.components.SQLQueryEditor.filterConjunction,
112
+ menuShouldPortal: true,
113
+ options: (conjProps == null ? void 0 : conjProps.conjunctionOptions) ? Object.keys(conjProps == null ? void 0 : conjProps.conjunctionOptions).map(data.toOption) : void 0,
114
+ value: conjProps == null ? void 0 : conjProps.selectedConjunction,
115
+ onChange: (val) => conjProps == null ? void 0 : conjProps.setConjunction(val.value)
116
+ }
117
+ );
118
+ },
119
+ // This is the component that renders fields
120
+ renderField: function Field2(fieldProps) {
121
+ var _a;
122
+ const fields = ((_a = fieldProps == null ? void 0 : fieldProps.config) == null ? void 0 : _a.fields) || {};
123
+ return /* @__PURE__ */ jsxRuntime.jsx(
124
+ ui$1.Select,
125
+ {
126
+ id: fieldProps == null ? void 0 : fieldProps.id,
127
+ width: 25,
128
+ "aria-label": i18n.t("grafana-sql.components.settings.aria-label-field", "Field"),
129
+ "data-testid": e2eSelectors.selectors.components.SQLQueryEditor.filterField,
130
+ menuShouldPortal: true,
131
+ options: fieldProps == null ? void 0 : fieldProps.items.map((f) => {
132
+ var _a2, _b;
133
+ const icon = (_b = (_a2 = fields[f.key].mainWidgetProps) == null ? void 0 : _a2.customProps) == null ? void 0 : _b.icon;
134
+ return {
135
+ label: f.label,
136
+ value: f.key,
137
+ icon
138
+ };
139
+ }),
140
+ value: fieldProps == null ? void 0 : fieldProps.selectedKey,
141
+ onChange: (val) => {
142
+ fieldProps == null ? void 0 : fieldProps.setField(val.label);
143
+ }
144
+ }
145
+ );
146
+ },
147
+ // This is the component used for the Add/Remove buttons
148
+ renderButton: function RAQBButton(buttonProps) {
149
+ return /* @__PURE__ */ jsxRuntime.jsx(
150
+ ui$1.Button,
151
+ {
152
+ type: "button",
153
+ "aria-label": i18n.t("grafana-sql.components.settings.title-button-filter", "{{ buttonLabel }} filter", {
154
+ buttonLabel: buttonProps == null ? void 0 : buttonProps.label
155
+ }),
156
+ onClick: buttonProps == null ? void 0 : buttonProps.onClick,
157
+ variant: "secondary",
158
+ size: "md",
159
+ icon: (buttonProps == null ? void 0 : buttonProps.label) === buttonLabels.add ? "plus" : "times"
160
+ }
161
+ );
162
+ },
163
+ // This is the component used for the fields operator selector
164
+ renderOperator: function Operator2(operatorProps) {
165
+ return /* @__PURE__ */ jsxRuntime.jsx(
166
+ ui$1.Select,
167
+ {
168
+ options: operatorProps == null ? void 0 : operatorProps.items.map((op) => ({ label: op.label, value: op.key })),
169
+ "aria-label": i18n.t("grafana-sql.components.settings.aria-label-operator", "Operator"),
170
+ "data-testid": e2eSelectors.selectors.components.SQLQueryEditor.filterOperator,
171
+ menuShouldPortal: true,
172
+ value: operatorProps == null ? void 0 : operatorProps.selectedKey,
173
+ onChange: (val) => {
174
+ operatorProps == null ? void 0 : operatorProps.setField(val.value || "");
175
+ }
176
+ }
177
+ );
178
+ }
179
+ };
180
+ var Op = /* @__PURE__ */ ((Op2) => {
181
+ Op2["IN"] = "select_any_in";
182
+ Op2["NOT_IN"] = "select_not_any_in";
183
+ Op2["MACROS"] = "macros";
184
+ return Op2;
185
+ })(Op || {});
186
+ const customOperators = getCustomOperators(ui.BasicConfig);
187
+ const textWidget = ui.BasicConfig.types.text.widgets.text;
188
+ const opers = [...textWidget.operators || [], "select_any_in" /* IN */, "select_not_any_in" /* NOT_IN */];
189
+ const customTextWidget = {
190
+ ...textWidget,
191
+ operators: opers
192
+ };
193
+ const customTypes = {
194
+ ...ui.BasicConfig.types,
195
+ text: {
196
+ ...ui.BasicConfig.types.text,
197
+ widgets: {
198
+ ...ui.BasicConfig.types.text.widgets,
199
+ text: customTextWidget
200
+ }
201
+ },
202
+ datetime: {
203
+ ...ui.BasicConfig.types.datetime,
204
+ widgets: {
205
+ ...ui.BasicConfig.types.datetime.widgets,
206
+ datetime: {
207
+ ...ui.BasicConfig.types.datetime.widgets.datetime,
208
+ operators: ["macros" /* MACROS */, ...ui.BasicConfig.types.datetime.widgets.datetime.operators || []]
209
+ }
210
+ }
211
+ }
212
+ };
213
+ const raqbConfig = {
214
+ ...ui.BasicConfig,
215
+ widgets,
216
+ settings,
217
+ operators: customOperators,
218
+ types: customTypes
219
+ };
220
+ const noop = () => "";
221
+ function getCustomOperators(config) {
222
+ var _a, _b, _c, _d;
223
+ const { ...supportedOperators } = config.operators;
224
+ const sqlFormatInOp = ((_a = supportedOperators["select_any_in" /* IN */].sqlFormatOp) == null ? void 0 : _a.bind(config.ctx)) || noop;
225
+ const formatInOp = ((_b = supportedOperators["select_any_in" /* IN */].formatOp) == null ? void 0 : _b.bind(config.ctx)) || noop;
226
+ const customSqlInFormatter = (field, op, value, valueSrc, valueType, opDef, operatorOptions, fieldDef) => {
227
+ return sqlFormatInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);
228
+ };
229
+ const sqlFormatNotInOp = ((_c = supportedOperators["select_not_any_in" /* NOT_IN */].sqlFormatOp) == null ? void 0 : _c.bind(config.ctx)) || noop;
230
+ const formatNotInOp = ((_d = supportedOperators["select_not_any_in" /* NOT_IN */].formatOp) == null ? void 0 : _d.bind(config.ctx)) || noop;
231
+ const customSqlNotInFormatter = (field, op, value, valueSrc, valueType, opDef, operatorOptions, fieldDef) => {
232
+ return sqlFormatNotInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);
233
+ };
234
+ const customOperators2 = {
235
+ ...supportedOperators,
236
+ ["select_any_in" /* IN */]: {
237
+ ...supportedOperators["select_any_in" /* IN */],
238
+ formatOp: (field, op, value, valueSrc) => {
239
+ return formatInOp(field, op, splitIfString(value), valueSrc);
240
+ },
241
+ sqlFormatOp: customSqlInFormatter
242
+ },
243
+ ["select_not_any_in" /* NOT_IN */]: {
244
+ ...supportedOperators["select_not_any_in" /* NOT_IN */],
245
+ formatOp: (field, op, value, valueSrc) => {
246
+ return formatNotInOp(field, op, splitIfString(value), valueSrc);
247
+ },
248
+ sqlFormatOp: customSqlNotInFormatter
249
+ },
250
+ ["macros" /* MACROS */]: {
251
+ label: i18n.t("grafana-sql.components.get-custom-operators.custom-operators.label.macros", "Macros"),
252
+ sqlFormatOp: (field, _operator, value) => {
253
+ if (value === TIME_FILTER) {
254
+ return `$__timeFilter(${field})`;
255
+ }
256
+ throw new Error("Invalid macro");
257
+ }
258
+ }
259
+ };
260
+ return customOperators2;
261
+ }
262
+ function splitIfString(value) {
263
+ if (lodash.isString(value)) {
264
+ return value.split(",");
265
+ }
266
+ return value;
267
+ }
268
+
269
+ exports.emptyInitTree = emptyInitTree;
270
+ exports.raqbConfig = raqbConfig;
271
+ exports.settings = settings;
272
+ exports.widgets = widgets;
273
+ //# sourceMappingURL=AwesomeQueryBuilder.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwesomeQueryBuilder.cjs","sources":["../../../../src/components/visual-query-builder/AwesomeQueryBuilder.tsx"],"sourcesContent":["import {\n BaseOperator,\n BasicConfig,\n Config,\n Field,\n ImmutableList,\n JsonTree,\n Operator,\n OperatorOptionsI,\n Settings,\n Utils,\n ValueSource,\n WidgetProps,\n Widgets,\n} from '@react-awesome-query-builder/ui';\nimport { isString } from 'lodash';\n\nimport { dateTime, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { Button, DateTimePicker, Input, Select } from '@grafana/ui';\n\nconst buttonLabels = {\n add: 'Add',\n remove: 'Remove',\n};\n\nexport const emptyInitTree: JsonTree = {\n id: Utils.uuid(),\n type: 'group',\n};\n\nconst TIME_FILTER = 'timeFilter';\nconst macros = [TIME_FILTER];\n\n// Widgets are the components rendered for each field type see the docs for more info\n// https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc#configwidgets\nexport const widgets: Widgets = {\n ...BasicConfig.widgets,\n text: {\n ...BasicConfig.widgets.text,\n factory: function TextInput(props: WidgetProps) {\n return (\n <Input\n value={props?.value || ''}\n placeholder={props?.placeholder}\n onChange={(e) => props?.setValue(e.currentTarget.value)}\n />\n );\n },\n },\n number: {\n ...BasicConfig.widgets.number,\n factory: function NumberInput(props: WidgetProps) {\n return (\n <Input\n value={props?.value}\n placeholder={props?.placeholder}\n type=\"number\"\n onChange={(e) => props?.setValue(Number.parseInt(e.currentTarget.value, 10))}\n />\n );\n },\n },\n datetime: {\n ...BasicConfig.widgets.datetime,\n factory: function DateTimeInput(props: WidgetProps) {\n if (props?.operator === Op.MACROS) {\n return (\n <Select\n id={props.id}\n aria-label={t('grafana-sql.components.widgets.aria-label-macros-value-selector', 'Macros value selector')}\n menuShouldPortal\n options={macros.map(toOption)}\n value={props?.value}\n onChange={(val) => props.setValue(val.value)}\n />\n );\n }\n const dateValue = dateTime(props?.value).isValid() ? dateTime(props?.value).utc() : undefined;\n return (\n <DateTimePicker\n onChange={(e) => {\n props?.setValue(e?.format(BasicConfig.widgets.datetime.valueFormat));\n }}\n date={dateValue}\n />\n );\n },\n // Function for formatting widget’s value in SQL WHERE query.\n sqlFormatValue: (val, field, widget, operator, operatorDefinition, rightFieldDef) => {\n if (operator === Op.MACROS) {\n if (macros.includes(val)) {\n return val;\n }\n return undefined;\n }\n\n // This is just satisfying the type checker, this should never happen\n if (\n typeof BasicConfig.widgets.datetime.sqlFormatValue === 'string' ||\n typeof BasicConfig.widgets.datetime.sqlFormatValue === 'object'\n ) {\n return undefined;\n }\n const func = BasicConfig.widgets.datetime.sqlFormatValue;\n // We need to pass the ctx to this function this way so *this* is correct\n return func?.call(BasicConfig.ctx, val, field, widget, operator, operatorDefinition, rightFieldDef) || '';\n },\n },\n};\n\n// Settings are the configuration options for the query builder see the docs for more info\n// https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc#configsettings\nexport const settings: Settings = {\n ...BasicConfig.settings,\n canRegroup: false,\n maxNesting: 1,\n canReorder: false,\n showNot: false,\n addRuleLabel: buttonLabels.add,\n deleteLabel: buttonLabels.remove,\n // This is the component that renders conjunctions (logical operators)\n renderConjs: function Conjunctions(conjProps) {\n return (\n <Select\n id={conjProps?.id}\n aria-label={t('grafana-sql.components.settings.aria-label-conjunction', 'Conjunction')}\n data-testid={selectors.components.SQLQueryEditor.filterConjunction}\n menuShouldPortal\n options={conjProps?.conjunctionOptions ? Object.keys(conjProps?.conjunctionOptions).map(toOption) : undefined}\n value={conjProps?.selectedConjunction}\n onChange={(val) => conjProps?.setConjunction(val.value!)}\n />\n );\n },\n // This is the component that renders fields\n renderField: function Field(fieldProps) {\n const fields = fieldProps?.config?.fields || {};\n return (\n <Select\n id={fieldProps?.id}\n width={25}\n aria-label={t('grafana-sql.components.settings.aria-label-field', 'Field')}\n data-testid={selectors.components.SQLQueryEditor.filterField}\n menuShouldPortal\n options={fieldProps?.items.map((f) => {\n // @ts-ignore\n const icon = fields[f.key].mainWidgetProps?.customProps?.icon;\n return {\n label: f.label,\n value: f.key,\n icon,\n };\n })}\n value={fieldProps?.selectedKey}\n onChange={(val) => {\n fieldProps?.setField(val.label!);\n }}\n />\n );\n },\n // This is the component used for the Add/Remove buttons\n renderButton: function RAQBButton(buttonProps) {\n return (\n <Button\n type=\"button\"\n aria-label={t('grafana-sql.components.settings.title-button-filter', '{{ buttonLabel }} filter', {\n buttonLabel: buttonProps?.label,\n })}\n onClick={buttonProps?.onClick}\n variant=\"secondary\"\n size=\"md\"\n icon={buttonProps?.label === buttonLabels.add ? 'plus' : 'times'}\n />\n );\n },\n // This is the component used for the fields operator selector\n renderOperator: function Operator(operatorProps) {\n return (\n <Select\n options={operatorProps?.items.map((op) => ({ label: op.label, value: op.key }))}\n aria-label={t('grafana-sql.components.settings.aria-label-operator', 'Operator')}\n data-testid={selectors.components.SQLQueryEditor.filterOperator}\n menuShouldPortal\n value={operatorProps?.selectedKey}\n onChange={(val) => {\n operatorProps?.setField(val.value || '');\n }}\n />\n );\n },\n};\n\n// add IN / NOT IN operators to text to support multi-value variables\nconst enum Op {\n IN = 'select_any_in',\n NOT_IN = 'select_not_any_in',\n MACROS = 'macros',\n}\nconst customOperators = getCustomOperators(BasicConfig);\nconst textWidget = BasicConfig.types.text.widgets.text;\nconst opers = [...(textWidget.operators || []), Op.IN, Op.NOT_IN];\nconst customTextWidget = {\n ...textWidget,\n operators: opers,\n};\n\nconst customTypes = {\n ...BasicConfig.types,\n text: {\n ...BasicConfig.types.text,\n widgets: {\n ...BasicConfig.types.text.widgets,\n text: customTextWidget,\n },\n },\n datetime: {\n ...BasicConfig.types.datetime,\n widgets: {\n ...BasicConfig.types.datetime.widgets,\n datetime: {\n ...BasicConfig.types.datetime.widgets.datetime,\n operators: [Op.MACROS, ...(BasicConfig.types.datetime.widgets.datetime.operators || [])],\n },\n },\n },\n};\n\n// This is the configuration for the query builder that doesn't include the fields but all the other configuration for the UI\n// Fields should be added dynamically based on returned data\n// See the doc for more info https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc\nexport const raqbConfig: Config = {\n ...BasicConfig,\n widgets,\n settings,\n operators: customOperators,\n types: customTypes,\n};\n\nexport type { Config };\n\nconst noop = () => '';\n\nfunction getCustomOperators(config: BasicConfig) {\n const { ...supportedOperators } = config.operators;\n\n // IN operator expects array, override IN formatter for multi-value variables\n const sqlFormatInOp = supportedOperators[Op.IN].sqlFormatOp?.bind(config.ctx) || noop;\n const formatInOp = supportedOperators[Op.IN].formatOp?.bind(config.ctx) || noop;\n const customSqlInFormatter = (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc: ValueSource | undefined,\n valueType: string | undefined,\n opDef: Operator | undefined,\n operatorOptions: OperatorOptionsI | undefined,\n fieldDef: Field | undefined\n ) => {\n return sqlFormatInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n // NOT IN operator expects array, override NOT IN formatter for multi-value variables\n const sqlFormatNotInOp = supportedOperators[Op.NOT_IN].sqlFormatOp?.bind(config.ctx) || noop;\n const formatNotInOp = supportedOperators[Op.NOT_IN].formatOp?.bind(config.ctx) || noop;\n const customSqlNotInFormatter = (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc: ValueSource | undefined,\n valueType: string | undefined,\n opDef: Operator | undefined,\n operatorOptions: OperatorOptionsI | undefined,\n fieldDef: Field | undefined\n ) => {\n return sqlFormatNotInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n const customOperators: Record<string, BaseOperator> = {\n ...supportedOperators,\n [Op.IN]: {\n ...supportedOperators[Op.IN],\n formatOp: (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc?: ValueSource\n ) => {\n return formatInOp(field, op, splitIfString(value), valueSrc);\n },\n sqlFormatOp: customSqlInFormatter,\n },\n [Op.NOT_IN]: {\n ...supportedOperators[Op.NOT_IN],\n formatOp: (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc?: ValueSource\n ) => {\n return formatNotInOp(field, op, splitIfString(value), valueSrc);\n },\n sqlFormatOp: customSqlNotInFormatter,\n },\n [Op.MACROS]: {\n label: t('grafana-sql.components.get-custom-operators.custom-operators.label.macros', 'Macros'),\n sqlFormatOp: (field: string, _operator: string, value: string | string[] | ImmutableList<string>) => {\n if (value === TIME_FILTER) {\n return `$__timeFilter(${field})`;\n }\n throw new Error('Invalid macro');\n },\n },\n };\n\n return customOperators;\n}\n\n// value: string | List<string> but AQB uses a different version of Immutable\nfunction splitIfString(value: string | string[] | ImmutableList<string>) {\n if (isString(value)) {\n return value.split(',');\n }\n return value;\n}\n"],"names":["Utils","BasicConfig","jsx","Input","Select","t","toOption","dateTime","DateTimePicker","selectors","Field","_a","Button","Operator","Op","customOperators","isString"],"mappings":";;;;;;;;;;;;;AAsBA,MAAM,YAAA,GAAe;AAAA,EACnB,GAAA,EAAK,KAAA;AAAA,EACL,MAAA,EAAQ;AACV,CAAA;AAEO,MAAM,aAAA,GAA0B;AAAA,EACrC,EAAA,EAAIA,SAAM,IAAA,EAAK;AAAA,EACf,IAAA,EAAM;AACR;AAEA,MAAM,WAAA,GAAc,YAAA;AACpB,MAAM,MAAA,GAAS,CAAC,WAAW,CAAA;AAIpB,MAAM,OAAA,GAAmB;AAAA,EAC9B,GAAGC,cAAA,CAAY,OAAA;AAAA,EACf,IAAA,EAAM;AAAA,IACJ,GAAGA,eAAY,OAAA,CAAQ,IAAA;AAAA,IACvB,OAAA,EAAS,SAAS,SAAA,CAAU,KAAA,EAAoB;AAC9C,MAAA,uBACEC,cAAA;AAAA,QAACC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAA,CAAO,+BAAO,KAAA,KAAS,EAAA;AAAA,UACvB,aAAa,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,WAAA;AAAA,UACpB,UAAU,CAAC,CAAA,KAAM,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,QAAA,CAAS,EAAE,aAAA,CAAc,KAAA;AAAA;AAAA,OACnD;AAAA,IAEJ;AAAA,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAGF,eAAY,OAAA,CAAQ,MAAA;AAAA,IACvB,OAAA,EAAS,SAAS,WAAA,CAAY,KAAA,EAAoB;AAChD,MAAA,uBACEC,cAAA;AAAA,QAACC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAA;AAAA,UACd,aAAa,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,WAAA;AAAA,UACpB,IAAA,EAAK,QAAA;AAAA,UACL,QAAA,EAAU,CAAC,CAAA,KAAM,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,QAAA,CAAS,OAAO,QAAA,CAAS,CAAA,CAAE,aAAA,CAAc,KAAA,EAAO,EAAE,CAAA;AAAA;AAAA,OAC5E;AAAA,IAEJ;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAGF,eAAY,OAAA,CAAQ,QAAA;AAAA,IACvB,OAAA,EAAS,SAAS,aAAA,CAAc,KAAA,EAAoB;AAClD,MAAA,IAAA,CAAI,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,cAAa,QAAA,eAAW;AACjC,QAAA,uBACEC,cAAA;AAAA,UAACE,WAAA;AAAA,UAAA;AAAA,YACC,IAAI,KAAA,CAAM,EAAA;AAAA,YACV,YAAA,EAAYC,MAAA,CAAE,iEAAA,EAAmE,uBAAuB,CAAA;AAAA,YACxG,gBAAA,EAAgB,IAAA;AAAA,YAChB,OAAA,EAAS,MAAA,CAAO,GAAA,CAAIC,aAAQ,CAAA;AAAA,YAC5B,OAAO,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAA;AAAA,YACd,UAAU,CAAC,GAAA,KAAQ,KAAA,CAAM,QAAA,CAAS,IAAI,KAAK;AAAA;AAAA,SAC7C;AAAA,MAEJ;AACA,MAAA,MAAM,SAAA,GAAYC,aAAA,CAAS,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAK,CAAA,CAAE,OAAA,EAAQ,GAAIA,aAAA,CAAS,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAK,CAAA,CAAE,GAAA,EAAI,GAAI,KAAA,CAAA;AACpF,MAAA,uBACEL,cAAA;AAAA,QAACM,mBAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,YAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,QAAA,CAAS,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAG,MAAA,CAAOP,cAAA,CAAY,QAAQ,QAAA,CAAS,WAAA,CAAA,CAAA;AAAA,UACzD,CAAA;AAAA,UACA,IAAA,EAAM;AAAA;AAAA,OACR;AAAA,IAEJ,CAAA;AAAA;AAAA,IAEA,gBAAgB,CAAC,GAAA,EAAK,OAAO,MAAA,EAAQ,QAAA,EAAU,oBAAoB,aAAA,KAAkB;AACnF,MAAA,IAAI,aAAa,QAAA,eAAW;AAC1B,QAAA,IAAI,MAAA,CAAO,QAAA,CAAS,GAAG,CAAA,EAAG;AACxB,UAAA,OAAO,GAAA;AAAA,QACT;AACA,QAAA,OAAO,KAAA,CAAA;AAAA,MACT;AAGA,MAAA,IACE,OAAOA,cAAA,CAAY,OAAA,CAAQ,QAAA,CAAS,cAAA,KAAmB,QAAA,IACvD,OAAOA,cAAA,CAAY,OAAA,CAAQ,QAAA,CAAS,cAAA,KAAmB,QAAA,EACvD;AACA,QAAA,OAAO,KAAA,CAAA;AAAA,MACT;AACA,MAAA,MAAM,IAAA,GAAOA,cAAA,CAAY,OAAA,CAAQ,QAAA,CAAS,cAAA;AAE1C,MAAA,OAAA,CAAO,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,KAAKA,cAAA,CAAY,GAAA,EAAK,KAAK,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,kBAAA,EAAoB,aAAA,CAAA,KAAkB,EAAA;AAAA,IACzG;AAAA;AAEJ;AAIO,MAAM,QAAA,GAAqB;AAAA,EAChC,GAAGA,cAAA,CAAY,QAAA;AAAA,EACf,UAAA,EAAY,KAAA;AAAA,EACZ,UAAA,EAAY,CAAA;AAAA,EACZ,UAAA,EAAY,KAAA;AAAA,EACZ,OAAA,EAAS,KAAA;AAAA,EACT,cAAc,YAAA,CAAa,GAAA;AAAA,EAC3B,aAAa,YAAA,CAAa,MAAA;AAAA;AAAA,EAE1B,WAAA,EAAa,SAAS,YAAA,CAAa,SAAA,EAAW;AAC5C,IAAA,uBACEC,cAAA;AAAA,MAACE,WAAA;AAAA,MAAA;AAAA,QACC,IAAI,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,EAAA;AAAA,QACf,YAAA,EAAYC,MAAA,CAAE,wDAAA,EAA0D,aAAa,CAAA;AAAA,QACrF,aAAA,EAAaI,sBAAA,CAAU,UAAA,CAAW,cAAA,CAAe,iBAAA;AAAA,QACjD,gBAAA,EAAgB,IAAA;AAAA,QAChB,OAAA,EAAA,CAAS,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,kBAAA,IAAqB,MAAA,CAAO,IAAA,CAAK,uCAAW,kBAAkB,CAAA,CAAE,GAAA,CAAIH,aAAQ,CAAA,GAAI,KAAA,CAAA;AAAA,QACpG,OAAO,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,mBAAA;AAAA,QAClB,QAAA,EAAU,CAAC,GAAA,KAAQ,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,eAAe,GAAA,CAAI,KAAA;AAAA;AAAA,KACnD;AAAA,EAEJ,CAAA;AAAA;AAAA,EAEA,WAAA,EAAa,SAASI,MAAAA,CAAM,UAAA,EAAY;AAzI1C,IAAA,IAAA,EAAA;AA0II,IAAA,MAAM,MAAA,GAAA,CAAA,CAAS,EAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,MAAA,KAAZ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoB,WAAU,EAAC;AAC9C,IAAA,uBACER,cAAA;AAAA,MAACE,WAAA;AAAA,MAAA;AAAA,QACC,IAAI,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,EAAA;AAAA,QAChB,KAAA,EAAO,EAAA;AAAA,QACP,YAAA,EAAYC,MAAA,CAAE,kDAAA,EAAoD,OAAO,CAAA;AAAA,QACzE,aAAA,EAAaI,sBAAA,CAAU,UAAA,CAAW,cAAA,CAAe,WAAA;AAAA,QACjD,gBAAA,EAAgB,IAAA;AAAA,QAChB,OAAA,EAAS,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AAlJ9C,UAAA,IAAAE,GAAAA,EAAA,EAAA;AAoJU,UAAA,MAAM,IAAA,GAAA,CAAO,EAAA,GAAA,CAAAA,GAAAA,GAAA,MAAA,CAAO,CAAA,CAAE,GAAG,CAAA,CAAE,eAAA,KAAd,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAAA,CAA+B,WAAA,KAA/B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA4C,IAAA;AACzD,UAAA,OAAO;AAAA,YACL,OAAO,CAAA,CAAE,KAAA;AAAA,YACT,OAAO,CAAA,CAAE,GAAA;AAAA,YACT;AAAA,WACF;AAAA,QACF,CAAA,CAAA;AAAA,QACA,OAAO,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,WAAA;AAAA,QACnB,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,UAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,SAAS,GAAA,CAAI,KAAA,CAAA;AAAA,QAC3B;AAAA;AAAA,KACF;AAAA,EAEJ,CAAA;AAAA;AAAA,EAEA,YAAA,EAAc,SAAS,UAAA,CAAW,WAAA,EAAa;AAC7C,IAAA,uBACET,cAAA;AAAA,MAACU,WAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAYP,MAAA,CAAE,qDAAA,EAAuD,0BAAA,EAA4B;AAAA,UAC/F,aAAa,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa;AAAA,SAC3B,CAAA;AAAA,QACD,SAAS,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,OAAA;AAAA,QACtB,OAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,IAAA,EAAA,CAAM,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,KAAA,MAAU,YAAA,CAAa,MAAM,MAAA,GAAS;AAAA;AAAA,KAC3D;AAAA,EAEJ,CAAA;AAAA;AAAA,EAEA,cAAA,EAAgB,SAASQ,SAAAA,CAAS,aAAA,EAAe;AAC/C,IAAA,uBACEX,cAAA;AAAA,MAACE,WAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,MAAQ,EAAE,KAAA,EAAO,EAAA,CAAG,KAAA,EAAO,KAAA,EAAO,EAAA,CAAG,GAAA,EAAI,CAAA,CAAA;AAAA,QAC5E,YAAA,EAAYC,MAAA,CAAE,qDAAA,EAAuD,UAAU,CAAA;AAAA,QAC/E,aAAA,EAAaI,sBAAA,CAAU,UAAA,CAAW,cAAA,CAAe,cAAA;AAAA,QACjD,gBAAA,EAAgB,IAAA;AAAA,QAChB,OAAO,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,WAAA;AAAA,QACtB,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,UAAA,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,QAAA,CAAS,IAAI,KAAA,IAAS,EAAA,CAAA;AAAA,QACvC;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAGA,IAAW,EAAA,qBAAAK,GAAAA,KAAX;AACE,EAAAA,IAAA,IAAA,CAAA,GAAK,eAAA;AACL,EAAAA,IAAA,QAAA,CAAA,GAAS,mBAAA;AACT,EAAAA,IAAA,QAAA,CAAA,GAAS,QAAA;AAHA,EAAA,OAAAA,GAAAA;AAAA,CAAA,EAAA,EAAA,IAAA,EAAA,CAAA;AAKX,MAAM,eAAA,GAAkB,mBAAmBb,cAAW,CAAA;AACtD,MAAM,UAAA,GAAaA,cAAA,CAAY,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,IAAA;AAClD,MAAM,KAAA,GAAQ,CAAC,GAAI,UAAA,CAAW,aAAa,EAAC,EAAI,0BAAO,mBAAA,cAAS;AAChE,MAAM,gBAAA,GAAmB;AAAA,EACvB,GAAG,UAAA;AAAA,EACH,SAAA,EAAW;AACb,CAAA;AAEA,MAAM,WAAA,GAAc;AAAA,EAClB,GAAGA,cAAA,CAAY,KAAA;AAAA,EACf,IAAA,EAAM;AAAA,IACJ,GAAGA,eAAY,KAAA,CAAM,IAAA;AAAA,IACrB,OAAA,EAAS;AAAA,MACP,GAAGA,cAAA,CAAY,KAAA,CAAM,IAAA,CAAK,OAAA;AAAA,MAC1B,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAGA,eAAY,KAAA,CAAM,QAAA;AAAA,IACrB,OAAA,EAAS;AAAA,MACP,GAAGA,cAAA,CAAY,KAAA,CAAM,QAAA,CAAS,OAAA;AAAA,MAC9B,QAAA,EAAU;AAAA,QACR,GAAGA,cAAA,CAAY,KAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,QAAA;AAAA,QACtC,SAAA,EAAW,CAAC,QAAA,eAAW,GAAIA,cAAA,CAAY,KAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,SAAA,IAAa,EAAG;AAAA;AACzF;AACF;AAEJ,CAAA;AAKO,MAAM,UAAA,GAAqB;AAAA,EAChC,GAAGA,cAAA;AAAA,EACH,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO;AACT;AAIA,MAAM,OAAO,MAAM,EAAA;AAEnB,SAAS,mBAAmB,MAAA,EAAqB;AApPjD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAqPE,EAAA,MAAM,EAAE,GAAG,kBAAA,EAAmB,GAAI,MAAA,CAAO,SAAA;AAGzC,EAAA,MAAM,aAAA,GAAA,CAAA,CAAgB,wBAAmB,eAAA,UAAK,CAAE,gBAA1B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuC,IAAA,CAAK,OAAO,GAAA,CAAA,KAAQ,IAAA;AACjF,EAAA,MAAM,UAAA,GAAA,CAAA,CAAa,wBAAmB,eAAA,UAAK,CAAE,aAA1B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoC,IAAA,CAAK,OAAO,GAAA,CAAA,KAAQ,IAAA;AAC3E,EAAA,MAAM,oBAAA,GAAuB,CAC3B,KAAA,EACA,EAAA,EACA,OACA,QAAA,EACA,SAAA,EACA,KAAA,EACA,eAAA,EACA,QAAA,KACG;AACH,IAAA,OAAO,aAAA,CAAc,KAAA,EAAO,EAAA,EAAI,aAAA,CAAc,KAAK,GAAG,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,eAAA,EAAiB,QAAQ,CAAA;AAAA,EAC7G,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAA,CAAA,CAAmB,wBAAmB,mBAAA,cAAS,CAAE,gBAA9B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA2C,IAAA,CAAK,OAAO,GAAA,CAAA,KAAQ,IAAA;AACxF,EAAA,MAAM,aAAA,GAAA,CAAA,CAAgB,wBAAmB,mBAAA,cAAS,CAAE,aAA9B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwC,IAAA,CAAK,OAAO,GAAA,CAAA,KAAQ,IAAA;AAClF,EAAA,MAAM,uBAAA,GAA0B,CAC9B,KAAA,EACA,EAAA,EACA,OACA,QAAA,EACA,SAAA,EACA,KAAA,EACA,eAAA,EACA,QAAA,KACG;AACH,IAAA,OAAO,gBAAA,CAAiB,KAAA,EAAO,EAAA,EAAI,aAAA,CAAc,KAAK,GAAG,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,eAAA,EAAiB,QAAQ,CAAA;AAAA,EAChH,CAAA;AAEA,EAAA,MAAMc,gBAAAA,GAAgD;AAAA,IACpD,GAAG,kBAAA;AAAA,IACH,CAAC,2BAAQ;AAAA,MACP,GAAG,mBAAmB,eAAA,UAAK;AAAA,MAC3B,QAAA,EAAU,CACR,KAAA,EACA,EAAA,EACA,OACA,QAAA,KACG;AACH,QAAA,OAAO,WAAW,KAAA,EAAO,EAAA,EAAI,aAAA,CAAc,KAAK,GAAG,QAAQ,CAAA;AAAA,MAC7D,CAAA;AAAA,MACA,WAAA,EAAa;AAAA,KACf;AAAA,IACA,CAAC,mCAAY;AAAA,MACX,GAAG,mBAAmB,mBAAA,cAAS;AAAA,MAC/B,QAAA,EAAU,CACR,KAAA,EACA,EAAA,EACA,OACA,QAAA,KACG;AACH,QAAA,OAAO,cAAc,KAAA,EAAO,EAAA,EAAI,aAAA,CAAc,KAAK,GAAG,QAAQ,CAAA;AAAA,MAChE,CAAA;AAAA,MACA,WAAA,EAAa;AAAA,KACf;AAAA,IACA,CAAC,wBAAY;AAAA,MACX,KAAA,EAAOV,MAAA,CAAE,2EAAA,EAA6E,QAAQ,CAAA;AAAA,MAC9F,WAAA,EAAa,CAAC,KAAA,EAAe,SAAA,EAAmB,KAAA,KAAqD;AACnG,QAAA,IAAI,UAAU,WAAA,EAAa;AACzB,UAAA,OAAO,iBAAiB,KAAK,CAAA,CAAA,CAAA;AAAA,QAC/B;AACA,QAAA,MAAM,IAAI,MAAM,eAAe,CAAA;AAAA,MACjC;AAAA;AACF,GACF;AAEA,EAAA,OAAOU,gBAAAA;AACT;AAGA,SAAS,cAAc,KAAA,EAAkD;AACvE,EAAA,IAAIC,eAAA,CAAS,KAAK,CAAA,EAAG;AACnB,IAAA,OAAO,KAAA,CAAM,MAAM,GAAG,CAAA;AAAA,EACxB;AACA,EAAA,OAAO,KAAA;AACT;;;;;;;"}
@@ -0,0 +1,69 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var data = require('@grafana/data');
8
+ var i18n = require('@grafana/i18n');
9
+ var pluginUi = require('@grafana/plugin-ui');
10
+ var ui = require('@grafana/ui');
11
+ var sql_utils = require('../../utils/sql.utils.cjs');
12
+
13
+ "use strict";
14
+ function GroupByRow({ sql, columns, onSqlChange }) {
15
+ const onGroupByChange = react.useCallback(
16
+ (item) => {
17
+ const cleaned = item.map((v) => {
18
+ var _a;
19
+ return sql_utils.setGroupByField((_a = v.property) == null ? void 0 : _a.name);
20
+ });
21
+ const newSql = { ...sql, groupBy: cleaned };
22
+ onSqlChange(newSql);
23
+ },
24
+ [onSqlChange, sql]
25
+ );
26
+ return /* @__PURE__ */ jsxRuntime.jsx(
27
+ pluginUi.EditorList,
28
+ {
29
+ items: sql.groupBy,
30
+ onChange: onGroupByChange,
31
+ renderItem: makeRenderColumn({
32
+ options: columns
33
+ })
34
+ }
35
+ );
36
+ }
37
+ function makeRenderColumn({ options }) {
38
+ const renderColumn = function(item, onChangeItem, onDeleteItem) {
39
+ var _a;
40
+ return /* @__PURE__ */ jsxRuntime.jsxs(pluginUi.InputGroup, { children: [
41
+ /* @__PURE__ */ jsxRuntime.jsx(
42
+ ui.Select,
43
+ {
44
+ value: ((_a = item.property) == null ? void 0 : _a.name) ? data.toOption(item.property.name) : null,
45
+ "aria-label": i18n.t("grafana-sql.components.make-render-column.render-column.aria-label-group-by", "Group by"),
46
+ options,
47
+ menuShouldPortal: true,
48
+ onChange: ({ value }) => value && onChangeItem(sql_utils.setGroupByField(value))
49
+ }
50
+ ),
51
+ /* @__PURE__ */ jsxRuntime.jsx(
52
+ pluginUi.AccessoryButton,
53
+ {
54
+ "aria-label": i18n.t(
55
+ "grafana-sql.components.make-render-column.render-column.title-remove-group-by-column",
56
+ "Remove group by column"
57
+ ),
58
+ icon: "times",
59
+ variant: "secondary",
60
+ onClick: onDeleteItem
61
+ }
62
+ )
63
+ ] });
64
+ };
65
+ return renderColumn;
66
+ }
67
+
68
+ exports.GroupByRow = GroupByRow;
69
+ //# sourceMappingURL=GroupByRow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupByRow.cjs","sources":["../../../../src/components/visual-query-builder/GroupByRow.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { AccessoryButton, EditorList, InputGroup } from '@grafana/plugin-ui';\nimport { Select } from '@grafana/ui';\n\nimport { QueryEditorGroupByExpression } from '../../expressions';\nimport { SQLExpression } from '../../types';\nimport { setGroupByField } from '../../utils/sql.utils';\n\ninterface GroupByRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n const onGroupByChange = useCallback(\n (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n // As new (empty object) items come in, we need to make sure they have the correct type\n const cleaned = item.map((v) => setGroupByField(v.property?.name));\n const newSql = { ...sql, groupBy: cleaned };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <EditorList\n items={sql.groupBy!}\n onChange={onGroupByChange}\n renderItem={makeRenderColumn({\n options: columns,\n })}\n />\n );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n const renderColumn = function (\n item: Partial<QueryEditorGroupByExpression>,\n onChangeItem: (item: QueryEditorGroupByExpression) => void,\n onDeleteItem: () => void\n ) {\n return (\n <InputGroup>\n <Select\n value={item.property?.name ? toOption(item.property.name) : null}\n aria-label={t('grafana-sql.components.make-render-column.render-column.aria-label-group-by', 'Group by')}\n options={options}\n menuShouldPortal\n onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n />\n <AccessoryButton\n aria-label={t(\n 'grafana-sql.components.make-render-column.render-column.title-remove-group-by-column',\n 'Remove group by column'\n )}\n icon=\"times\"\n variant=\"secondary\"\n onClick={onDeleteItem}\n />\n </InputGroup>\n );\n };\n return renderColumn;\n}\n"],"names":["useCallback","setGroupByField","jsx","EditorList","InputGroup","Select","toOption","t","AccessoryButton"],"mappings":";;;;;;;;;;;;;AAiBO,SAAS,UAAA,CAAW,EAAE,GAAA,EAAK,OAAA,EAAS,aAAY,EAAoB;AACzE,EAAA,MAAM,eAAA,GAAkBA,iBAAA;AAAA,IACtB,CAAC,IAAA,KAAuD;AAEtD,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAG;AArBnC,QAAA,IAAA,EAAA;AAqBsC,QAAA,OAAAC,yBAAA,CAAA,CAAgB,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,IAAI,CAAA;AAAA,MAAA,CAAC,CAAA;AACjE,MAAA,MAAM,MAAA,GAAS,EAAE,GAAG,GAAA,EAAK,SAAS,OAAA,EAAQ;AAC1C,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,mBAAA;AAAA,IAAA;AAAA,MACC,OAAO,GAAA,CAAI,OAAA;AAAA,MACX,QAAA,EAAU,eAAA;AAAA,MACV,YAAY,gBAAA,CAAiB;AAAA,QAC3B,OAAA,EAAS;AAAA,OACV;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,OAAA,EAAQ,EAAiD;AACnF,EAAA,MAAM,YAAA,GAAe,SACnB,IAAA,EACA,YAAA,EACA,YAAA,EACA;AA5CJ,IAAA,IAAA,EAAA;AA6CI,IAAA,uCACGC,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAF,cAAA;AAAA,QAACG,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAA,CAAA,CAAO,UAAK,QAAA,KAAL,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,QAAOC,aAAA,CAAS,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA;AAAA,UAC5D,YAAA,EAAYC,MAAA,CAAE,6EAAA,EAA+E,UAAU,CAAA;AAAA,UACvG,OAAA;AAAA,UACA,gBAAA,EAAgB,IAAA;AAAA,UAChB,QAAA,EAAU,CAAC,EAAE,KAAA,OAAY,KAAA,IAAS,YAAA,CAAaN,yBAAA,CAAgB,KAAK,CAAC;AAAA;AAAA,OACvE;AAAA,sBACAC,cAAA;AAAA,QAACM,wBAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAYD,MAAA;AAAA,YACV,sFAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,IAAA,EAAK,OAAA;AAAA,UACL,OAAA,EAAQ,WAAA;AAAA,UACR,OAAA,EAAS;AAAA;AAAA;AACX,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AACA,EAAA,OAAO,YAAA;AACT;;;;"}
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var lodash = require('lodash');
7
+ var react = require('react');
8
+ var data = require('@grafana/data');
9
+ var i18n = require('@grafana/i18n');
10
+ var pluginUi = require('@grafana/plugin-ui');
11
+ var ui = require('@grafana/ui');
12
+ var sql_utils = require('../../utils/sql.utils.cjs');
13
+
14
+ "use strict";
15
+ const sortOrderOptions = [
16
+ { description: "Sort by ascending", value: "ASC", icon: "sort-amount-up" },
17
+ { description: "Sort by descending", value: "DESC", icon: "sort-amount-down" }
18
+ ];
19
+ function OrderByRow({ sql, onSqlChange, columns, showOffset }) {
20
+ var _a, _b;
21
+ const onSortOrderChange = react.useCallback(
22
+ (item) => {
23
+ const newSql = { ...sql, orderByDirection: item };
24
+ onSqlChange(newSql);
25
+ },
26
+ [onSqlChange, sql]
27
+ );
28
+ const onLimitChange = react.useCallback(
29
+ (event) => {
30
+ const newSql = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };
31
+ onSqlChange(newSql);
32
+ },
33
+ [onSqlChange, sql]
34
+ );
35
+ const onOffsetChange = react.useCallback(
36
+ (event) => {
37
+ const newSql = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };
38
+ onSqlChange(newSql);
39
+ },
40
+ [onSqlChange, sql]
41
+ );
42
+ const onOrderByChange = react.useCallback(
43
+ (item) => {
44
+ const newSql = { ...sql, orderBy: sql_utils.setPropertyField(item == null ? void 0 : item.value) };
45
+ if (item === null) {
46
+ newSql.orderByDirection = void 0;
47
+ }
48
+ onSqlChange(newSql);
49
+ },
50
+ [onSqlChange, sql]
51
+ );
52
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
53
+ /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorField, { label: i18n.t("grafana-sql.components.order-by-row.label-order-by", "Order by"), width: 25, children: /* @__PURE__ */ jsxRuntime.jsxs(pluginUi.InputGroup, { children: [
54
+ /* @__PURE__ */ jsxRuntime.jsx(
55
+ ui.Select,
56
+ {
57
+ "aria-label": i18n.t("grafana-sql.components.order-by-row.aria-label-order-by", "Order by"),
58
+ options: columns,
59
+ value: ((_a = sql.orderBy) == null ? void 0 : _a.property.name) ? data.toOption(sql.orderBy.property.name) : null,
60
+ isClearable: true,
61
+ menuShouldPortal: true,
62
+ onChange: onOrderByChange
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Space, { h: 1.5 }),
66
+ /* @__PURE__ */ jsxRuntime.jsx(
67
+ ui.RadioButtonGroup,
68
+ {
69
+ options: sortOrderOptions,
70
+ disabled: !((_b = sql == null ? void 0 : sql.orderBy) == null ? void 0 : _b.property.name),
71
+ value: sql.orderByDirection,
72
+ onChange: onSortOrderChange
73
+ }
74
+ )
75
+ ] }) }),
76
+ /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorField, { label: i18n.t("grafana-sql.components.order-by-row.label-limit", "Limit"), optional: true, width: 25, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { type: "number", min: 0, id: lodash.uniqueId("limit-"), value: sql.limit || "", onChange: onLimitChange }) }),
77
+ showOffset && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorField, { label: i18n.t("grafana-sql.components.order-by-row.label-offset", "Offset"), optional: true, width: 25, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { type: "number", id: lodash.uniqueId("offset-"), value: sql.offset || "", onChange: onOffsetChange }) })
78
+ ] });
79
+ }
80
+
81
+ exports.OrderByRow = OrderByRow;
82
+ //# sourceMappingURL=OrderByRow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderByRow.cjs","sources":["../../../../src/components/visual-query-builder/OrderByRow.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { EditorField, InputGroup } from '@grafana/plugin-ui';\nimport { Input, RadioButtonGroup, Select, Space } from '@grafana/ui';\n\nimport { SQLExpression } from '../../types';\nimport { setPropertyField } from '../../utils/sql.utils';\n\ntype OrderByRowProps = {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n const onSortOrderChange = useCallback(\n (item: 'ASC' | 'DESC') => {\n const newSql: SQLExpression = { ...sql, orderByDirection: item };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onLimitChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOffsetChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOrderByChange = useCallback(\n (item: SelectableValue<string>) => {\n const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n if (item === null) {\n newSql.orderByDirection = undefined;\n }\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <>\n <EditorField label={t('grafana-sql.components.order-by-row.label-order-by', 'Order by')} width={25}>\n <InputGroup>\n <Select\n aria-label={t('grafana-sql.components.order-by-row.aria-label-order-by', 'Order by')}\n options={columns}\n value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n isClearable\n menuShouldPortal\n onChange={onOrderByChange}\n />\n\n <Space h={1.5} />\n\n <RadioButtonGroup\n options={sortOrderOptions}\n disabled={!sql?.orderBy?.property.name}\n value={sql.orderByDirection}\n onChange={onSortOrderChange}\n />\n </InputGroup>\n </EditorField>\n <EditorField label={t('grafana-sql.components.order-by-row.label-limit', 'Limit')} optional width={25}>\n <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n </EditorField>\n {showOffset && (\n <EditorField label={t('grafana-sql.components.order-by-row.label-offset', 'Offset')} optional width={25}>\n <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n </EditorField>\n )}\n </>\n );\n}\n"],"names":["useCallback","setPropertyField","jsxs","Fragment","jsx","EditorField","t","InputGroup","Select","toOption","Space","RadioButtonGroup","Input","uniqueId"],"mappings":"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"}