@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,290 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useState, useId, useCallback } from 'react';
3
+ import { useCopyToClipboard } from 'react-use';
4
+ import { selectors } from '@grafana/e2e-selectors';
5
+ import { t, Trans } from '@grafana/i18n';
6
+ import { EditorMode, EditorHeader, InlineSelect, FlexItem, EditorRow, EditorField } from '@grafana/plugin-ui';
7
+ import { reportInteraction } from '@grafana/runtime';
8
+ import { InlineSwitch, Button, Tooltip, RadioButtonGroup, Space } from '@grafana/ui';
9
+ import { QueryFormat, QUERY_FORMAT_OPTIONS } from '../types.mjs';
10
+ import { ConfirmModal } from './ConfirmModal.mjs';
11
+ import { DatasetSelector } from './DatasetSelector.mjs';
12
+ import { TableSelector } from './TableSelector.mjs';
13
+
14
+ "use strict";
15
+ function QueryHeader({
16
+ db,
17
+ dialect,
18
+ isQueryRunnable,
19
+ onChange,
20
+ onQueryRowChange,
21
+ onRunQuery,
22
+ preconfiguredDataset,
23
+ query,
24
+ queryRowFilter,
25
+ hideFormatSelector,
26
+ hideRunButton
27
+ }) {
28
+ const { editorMode } = query;
29
+ const [_, copyToClipboard] = useCopyToClipboard();
30
+ const [showConfirm, setShowConfirm] = useState(false);
31
+ const toRawSql = db.toRawSql;
32
+ const htmlId = useId();
33
+ const editorModes = [
34
+ {
35
+ label: t("grafana-sql.components.query-header.editor-modes.label-builder", "Builder"),
36
+ value: EditorMode.Builder
37
+ },
38
+ { label: t("grafana-sql.components.query-header.editor-modes.label-code", "Code"), value: EditorMode.Code }
39
+ ];
40
+ const onEditorModeChange = useCallback(
41
+ (newEditorMode) => {
42
+ var _a;
43
+ if (newEditorMode === EditorMode.Code) {
44
+ reportInteraction("grafana_sql_editor_mode_changed", {
45
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
46
+ selectedEditorMode: EditorMode.Code
47
+ });
48
+ }
49
+ if (editorMode === EditorMode.Code) {
50
+ setShowConfirm(true);
51
+ return;
52
+ }
53
+ onChange({ ...query, editorMode: newEditorMode });
54
+ },
55
+ [editorMode, onChange, query]
56
+ );
57
+ const onFormatChange = (e) => {
58
+ var _a;
59
+ const next = { ...query, format: e.value !== void 0 ? e.value : QueryFormat.Table };
60
+ reportInteraction("grafana_sql_format_changed", {
61
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
62
+ selectedFormat: next.format
63
+ });
64
+ onChange(next);
65
+ };
66
+ const onDatasetChange = (e) => {
67
+ if (e.value === query.dataset) {
68
+ return;
69
+ }
70
+ const next = {
71
+ ...query,
72
+ dataset: e.value,
73
+ table: void 0,
74
+ sql: void 0,
75
+ rawSql: ""
76
+ };
77
+ onChange(next);
78
+ };
79
+ const onTableChange = (e) => {
80
+ if (e.value === query.table) {
81
+ return;
82
+ }
83
+ const next = {
84
+ ...query,
85
+ table: e.value,
86
+ sql: void 0,
87
+ rawSql: ""
88
+ };
89
+ onChange(next);
90
+ };
91
+ const datasetDropdownIsAvailable = () => {
92
+ if (dialect === "influx") {
93
+ return false;
94
+ }
95
+ return true;
96
+ };
97
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
98
+ /* @__PURE__ */ jsxs(EditorHeader, { children: [
99
+ !hideFormatSelector && /* @__PURE__ */ jsx(
100
+ InlineSelect,
101
+ {
102
+ label: t("grafana-sql.components.query-header.label-format", "Format"),
103
+ value: query.format,
104
+ placeholder: t("grafana-sql.components.query-header.placeholder-select-format", "Select format"),
105
+ menuShouldPortal: true,
106
+ onChange: onFormatChange,
107
+ options: QUERY_FORMAT_OPTIONS
108
+ }
109
+ ),
110
+ editorMode === EditorMode.Builder && /* @__PURE__ */ jsxs(Fragment, { children: [
111
+ /* @__PURE__ */ jsx(
112
+ InlineSwitch,
113
+ {
114
+ id: `sql-filter-${htmlId}`,
115
+ label: t("grafana-sql.components.query-header.label-filter", "Filter"),
116
+ "data-testid": selectors.components.SQLQueryEditor.headerFilterSwitch,
117
+ transparent: true,
118
+ showLabel: true,
119
+ value: queryRowFilter.filter,
120
+ onChange: (ev) => {
121
+ var _a;
122
+ if (!(ev.target instanceof HTMLInputElement)) {
123
+ return;
124
+ }
125
+ reportInteraction("grafana_sql_filter_toggled", {
126
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
127
+ displayed: ev.target.checked
128
+ });
129
+ onQueryRowChange({ ...queryRowFilter, filter: ev.target.checked });
130
+ }
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsx(
134
+ InlineSwitch,
135
+ {
136
+ id: `sql-group-${htmlId}`,
137
+ label: t("grafana-sql.components.query-header.label-group", "Group"),
138
+ "data-testid": selectors.components.SQLQueryEditor.headerGroupSwitch,
139
+ transparent: true,
140
+ showLabel: true,
141
+ value: queryRowFilter.group,
142
+ onChange: (ev) => {
143
+ var _a;
144
+ if (!(ev.target instanceof HTMLInputElement)) {
145
+ return;
146
+ }
147
+ reportInteraction("grafana_sql_group_toggled", {
148
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
149
+ displayed: ev.target.checked
150
+ });
151
+ onQueryRowChange({ ...queryRowFilter, group: ev.target.checked });
152
+ }
153
+ }
154
+ ),
155
+ /* @__PURE__ */ jsx(
156
+ InlineSwitch,
157
+ {
158
+ id: `sql-order-${htmlId}`,
159
+ label: t("grafana-sql.components.query-header.label-order", "Order"),
160
+ "data-testid": selectors.components.SQLQueryEditor.headerOrderSwitch,
161
+ transparent: true,
162
+ showLabel: true,
163
+ value: queryRowFilter.order,
164
+ onChange: (ev) => {
165
+ var _a;
166
+ if (!(ev.target instanceof HTMLInputElement)) {
167
+ return;
168
+ }
169
+ reportInteraction("grafana_sql_order_toggled", {
170
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
171
+ displayed: ev.target.checked
172
+ });
173
+ onQueryRowChange({ ...queryRowFilter, order: ev.target.checked });
174
+ }
175
+ }
176
+ ),
177
+ /* @__PURE__ */ jsx(
178
+ InlineSwitch,
179
+ {
180
+ id: `sql-preview-${htmlId}`,
181
+ label: t("grafana-sql.components.query-header.label-preview", "Preview"),
182
+ "data-testid": selectors.components.SQLQueryEditor.headerPreviewSwitch,
183
+ transparent: true,
184
+ showLabel: true,
185
+ value: queryRowFilter.preview,
186
+ onChange: (ev) => {
187
+ var _a;
188
+ if (!(ev.target instanceof HTMLInputElement)) {
189
+ return;
190
+ }
191
+ reportInteraction("grafana_sql_preview_toggled", {
192
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
193
+ displayed: ev.target.checked
194
+ });
195
+ onQueryRowChange({ ...queryRowFilter, preview: ev.target.checked });
196
+ }
197
+ }
198
+ )
199
+ ] }),
200
+ /* @__PURE__ */ jsx(FlexItem, { grow: 1 }),
201
+ !hideRunButton && (isQueryRunnable ? /* @__PURE__ */ jsx(Button, { icon: "play", variant: "primary", size: "sm", onClick: () => onRunQuery(), children: /* @__PURE__ */ jsx(Trans, { i18nKey: "grafana-sql.components.query-header.run-query", children: "Run query" }) }) : /* @__PURE__ */ jsx(
202
+ Tooltip,
203
+ {
204
+ theme: "error",
205
+ content: /* @__PURE__ */ jsxs(Trans, { i18nKey: "grafana-sql.components.query-header.content-invalid-query", children: [
206
+ "Your query is invalid. Check below for details. ",
207
+ /* @__PURE__ */ jsx("br", {}),
208
+ "However, you can still run this query."
209
+ ] }),
210
+ placement: "top",
211
+ children: /* @__PURE__ */ jsx(Button, { icon: "exclamation-triangle", variant: "secondary", size: "sm", onClick: () => onRunQuery(), children: /* @__PURE__ */ jsx(Trans, { i18nKey: "grafana-sql.components.query-header.run-query", children: "Run query" }) })
212
+ }
213
+ )),
214
+ /* @__PURE__ */ jsx(RadioButtonGroup, { options: editorModes, size: "sm", value: editorMode, onChange: onEditorModeChange }),
215
+ /* @__PURE__ */ jsx(
216
+ ConfirmModal,
217
+ {
218
+ isOpen: showConfirm,
219
+ onCopy: () => {
220
+ var _a;
221
+ reportInteraction("grafana_sql_editor_mode_changed", {
222
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
223
+ selectedEditorMode: EditorMode.Builder,
224
+ type: "copy"
225
+ });
226
+ setShowConfirm(false);
227
+ copyToClipboard(query.rawSql);
228
+ onChange({
229
+ ...query,
230
+ rawSql: toRawSql(query),
231
+ editorMode: EditorMode.Builder
232
+ });
233
+ },
234
+ onDiscard: () => {
235
+ var _a;
236
+ reportInteraction("grafana_sql_editor_mode_changed", {
237
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
238
+ selectedEditorMode: EditorMode.Builder,
239
+ type: "discard"
240
+ });
241
+ setShowConfirm(false);
242
+ onChange({
243
+ ...query,
244
+ rawSql: toRawSql(query),
245
+ editorMode: EditorMode.Builder
246
+ });
247
+ },
248
+ onCancel: () => {
249
+ var _a;
250
+ reportInteraction("grafana_sql_editor_mode_changed", {
251
+ datasource: (_a = query.datasource) == null ? void 0 : _a.type,
252
+ selectedEditorMode: EditorMode.Builder,
253
+ type: "cancel"
254
+ });
255
+ setShowConfirm(false);
256
+ }
257
+ }
258
+ )
259
+ ] }),
260
+ editorMode === EditorMode.Builder && /* @__PURE__ */ jsxs(Fragment, { children: [
261
+ /* @__PURE__ */ jsx(Space, { v: 0.5 }),
262
+ /* @__PURE__ */ jsxs(EditorRow, { children: [
263
+ datasetDropdownIsAvailable() && /* @__PURE__ */ jsx(EditorField, { label: t("grafana-sql.components.query-header.label-dataset", "Dataset"), width: 25, children: /* @__PURE__ */ jsx(
264
+ DatasetSelector,
265
+ {
266
+ db,
267
+ inputId: `sql-dataset-${htmlId}`,
268
+ dataset: query.dataset,
269
+ dialect,
270
+ preconfiguredDataset,
271
+ onChange: onDatasetChange
272
+ }
273
+ ) }),
274
+ /* @__PURE__ */ jsx(EditorField, { label: t("grafana-sql.components.query-header.label-table", "Table"), width: 25, children: /* @__PURE__ */ jsx(
275
+ TableSelector,
276
+ {
277
+ db,
278
+ inputId: `sql-tableselect-${htmlId}`,
279
+ dataset: query.dataset || preconfiguredDataset,
280
+ table: query.table,
281
+ onChange: onTableChange
282
+ }
283
+ ) })
284
+ ] })
285
+ ] })
286
+ ] });
287
+ }
288
+
289
+ export { QueryHeader };
290
+ //# sourceMappingURL=QueryHeader.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryHeader.mjs","sources":["../../../src/components/QueryHeader.tsx"],"sourcesContent":["import { useCallback, useId, useState } from 'react';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\nimport { EditorField, EditorHeader, EditorMode, EditorRow, FlexItem, InlineSelect } from '@grafana/plugin-ui';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Button, InlineSwitch, RadioButtonGroup, Tooltip, Space } from '@grafana/ui';\n\nimport { QueryWithDefaults } from '../defaults';\nimport { SQLQuery, QueryFormat, QueryRowFilter, QUERY_FORMAT_OPTIONS, DB, SQLDialect } from '../types';\n\nimport { ConfirmModal } from './ConfirmModal';\nimport { DatasetSelector } from './DatasetSelector';\nimport { TableSelector } from './TableSelector';\n\nexport interface QueryHeaderProps {\n db: DB;\n dialect: SQLDialect;\n isQueryRunnable: boolean;\n onChange: (query: SQLQuery) => void;\n onQueryRowChange: (queryRowFilter: QueryRowFilter) => void;\n onRunQuery: () => void;\n preconfiguredDataset: string;\n query: QueryWithDefaults;\n queryRowFilter: QueryRowFilter;\n hideFormatSelector?: boolean;\n hideRunButton?: boolean;\n}\n\nexport function QueryHeader({\n db,\n dialect,\n isQueryRunnable,\n onChange,\n onQueryRowChange,\n onRunQuery,\n preconfiguredDataset,\n query,\n queryRowFilter,\n hideFormatSelector,\n hideRunButton,\n}: QueryHeaderProps) {\n const { editorMode } = query;\n const [_, copyToClipboard] = useCopyToClipboard();\n const [showConfirm, setShowConfirm] = useState(false);\n const toRawSql = db.toRawSql;\n\n const htmlId = useId();\n\n const editorModes = [\n {\n label: t('grafana-sql.components.query-header.editor-modes.label-builder', 'Builder'),\n value: EditorMode.Builder,\n },\n { label: t('grafana-sql.components.query-header.editor-modes.label-code', 'Code'), value: EditorMode.Code },\n ];\n\n const onEditorModeChange = useCallback(\n (newEditorMode: EditorMode) => {\n if (newEditorMode === EditorMode.Code) {\n reportInteraction('grafana_sql_editor_mode_changed', {\n datasource: query.datasource?.type,\n selectedEditorMode: EditorMode.Code,\n });\n }\n\n if (editorMode === EditorMode.Code) {\n setShowConfirm(true);\n return;\n }\n onChange({ ...query, editorMode: newEditorMode });\n },\n [editorMode, onChange, query]\n );\n\n const onFormatChange = (e: SelectableValue) => {\n const next = { ...query, format: e.value !== undefined ? e.value : QueryFormat.Table };\n\n reportInteraction('grafana_sql_format_changed', {\n datasource: query.datasource?.type,\n selectedFormat: next.format,\n });\n onChange(next);\n };\n\n const onDatasetChange = (e: SelectableValue) => {\n if (e.value === query.dataset) {\n return;\n }\n\n const next = {\n ...query,\n dataset: e.value,\n table: undefined,\n sql: undefined,\n rawSql: '',\n };\n\n onChange(next);\n };\n\n const onTableChange = (e: SelectableValue) => {\n if (e.value === query.table) {\n return;\n }\n\n const next: SQLQuery = {\n ...query,\n table: e.value,\n sql: undefined,\n rawSql: '',\n };\n\n onChange(next);\n };\n\n const datasetDropdownIsAvailable = () => {\n if (dialect === 'influx') {\n return false;\n }\n\n return true;\n };\n\n return (\n <>\n <EditorHeader>\n {!hideFormatSelector && (\n <InlineSelect\n label={t('grafana-sql.components.query-header.label-format', 'Format')}\n value={query.format}\n placeholder={t('grafana-sql.components.query-header.placeholder-select-format', 'Select format')}\n menuShouldPortal\n onChange={onFormatChange}\n options={QUERY_FORMAT_OPTIONS}\n />\n )}\n\n {editorMode === EditorMode.Builder && (\n <>\n <InlineSwitch\n id={`sql-filter-${htmlId}`}\n label={t('grafana-sql.components.query-header.label-filter', 'Filter')}\n data-testid={selectors.components.SQLQueryEditor.headerFilterSwitch}\n transparent={true}\n showLabel={true}\n value={queryRowFilter.filter}\n onChange={(ev) => {\n if (!(ev.target instanceof HTMLInputElement)) {\n return;\n }\n\n reportInteraction('grafana_sql_filter_toggled', {\n datasource: query.datasource?.type,\n displayed: ev.target.checked,\n });\n\n onQueryRowChange({ ...queryRowFilter, filter: ev.target.checked });\n }}\n />\n\n <InlineSwitch\n id={`sql-group-${htmlId}`}\n label={t('grafana-sql.components.query-header.label-group', 'Group')}\n data-testid={selectors.components.SQLQueryEditor.headerGroupSwitch}\n transparent={true}\n showLabel={true}\n value={queryRowFilter.group}\n onChange={(ev) => {\n if (!(ev.target instanceof HTMLInputElement)) {\n return;\n }\n\n reportInteraction('grafana_sql_group_toggled', {\n datasource: query.datasource?.type,\n displayed: ev.target.checked,\n });\n\n onQueryRowChange({ ...queryRowFilter, group: ev.target.checked });\n }}\n />\n\n <InlineSwitch\n id={`sql-order-${htmlId}`}\n label={t('grafana-sql.components.query-header.label-order', 'Order')}\n data-testid={selectors.components.SQLQueryEditor.headerOrderSwitch}\n transparent={true}\n showLabel={true}\n value={queryRowFilter.order}\n onChange={(ev) => {\n if (!(ev.target instanceof HTMLInputElement)) {\n return;\n }\n\n reportInteraction('grafana_sql_order_toggled', {\n datasource: query.datasource?.type,\n displayed: ev.target.checked,\n });\n\n onQueryRowChange({ ...queryRowFilter, order: ev.target.checked });\n }}\n />\n\n <InlineSwitch\n id={`sql-preview-${htmlId}`}\n label={t('grafana-sql.components.query-header.label-preview', 'Preview')}\n data-testid={selectors.components.SQLQueryEditor.headerPreviewSwitch}\n transparent={true}\n showLabel={true}\n value={queryRowFilter.preview}\n onChange={(ev) => {\n if (!(ev.target instanceof HTMLInputElement)) {\n return;\n }\n\n reportInteraction('grafana_sql_preview_toggled', {\n datasource: query.datasource?.type,\n displayed: ev.target.checked,\n });\n\n onQueryRowChange({ ...queryRowFilter, preview: ev.target.checked });\n }}\n />\n </>\n )}\n\n <FlexItem grow={1} />\n\n {!hideRunButton &&\n (isQueryRunnable ? (\n <Button icon=\"play\" variant=\"primary\" size=\"sm\" onClick={() => onRunQuery()}>\n <Trans i18nKey=\"grafana-sql.components.query-header.run-query\">Run query</Trans>\n </Button>\n ) : (\n <Tooltip\n theme=\"error\"\n content={\n <Trans i18nKey=\"grafana-sql.components.query-header.content-invalid-query\">\n Your query is invalid. Check below for details. <br />\n However, you can still run this query.\n </Trans>\n }\n placement=\"top\"\n >\n <Button icon=\"exclamation-triangle\" variant=\"secondary\" size=\"sm\" onClick={() => onRunQuery()}>\n <Trans i18nKey=\"grafana-sql.components.query-header.run-query\">Run query</Trans>\n </Button>\n </Tooltip>\n ))}\n\n <RadioButtonGroup options={editorModes} size=\"sm\" value={editorMode} onChange={onEditorModeChange} />\n\n <ConfirmModal\n isOpen={showConfirm}\n onCopy={() => {\n reportInteraction('grafana_sql_editor_mode_changed', {\n datasource: query.datasource?.type,\n selectedEditorMode: EditorMode.Builder,\n type: 'copy',\n });\n\n setShowConfirm(false);\n copyToClipboard(query.rawSql!);\n onChange({\n ...query,\n rawSql: toRawSql(query),\n editorMode: EditorMode.Builder,\n });\n }}\n onDiscard={() => {\n reportInteraction('grafana_sql_editor_mode_changed', {\n datasource: query.datasource?.type,\n selectedEditorMode: EditorMode.Builder,\n type: 'discard',\n });\n\n setShowConfirm(false);\n onChange({\n ...query,\n rawSql: toRawSql(query),\n editorMode: EditorMode.Builder,\n });\n }}\n onCancel={() => {\n reportInteraction('grafana_sql_editor_mode_changed', {\n datasource: query.datasource?.type,\n selectedEditorMode: EditorMode.Builder,\n type: 'cancel',\n });\n\n setShowConfirm(false);\n }}\n />\n </EditorHeader>\n\n {editorMode === EditorMode.Builder && (\n <>\n <Space v={0.5} />\n <EditorRow>\n {datasetDropdownIsAvailable() && (\n <EditorField label={t('grafana-sql.components.query-header.label-dataset', 'Dataset')} width={25}>\n <DatasetSelector\n db={db}\n inputId={`sql-dataset-${htmlId}`}\n dataset={query.dataset}\n dialect={dialect}\n preconfiguredDataset={preconfiguredDataset}\n onChange={onDatasetChange}\n />\n </EditorField>\n )}\n <EditorField label={t('grafana-sql.components.query-header.label-table', 'Table')} width={25}>\n <TableSelector\n db={db}\n inputId={`sql-tableselect-${htmlId}`}\n dataset={query.dataset || preconfiguredDataset}\n table={query.table}\n onChange={onTableChange}\n />\n </EditorField>\n </EditorRow>\n </>\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AA+BO,SAAS,WAAA,CAAY;AAAA,EAC1B,EAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,EAAE,YAAW,GAAI,KAAA;AACvB,EAAA,MAAM,CAAC,CAAA,EAAG,eAAe,CAAA,GAAI,kBAAA,EAAmB;AAChD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,WAAW,EAAA,CAAG,QAAA;AAEpB,EAAA,MAAM,SAAS,KAAA,EAAM;AAErB,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB;AAAA,MACE,KAAA,EAAO,CAAA,CAAE,gEAAA,EAAkE,SAAS,CAAA;AAAA,MACpF,OAAO,UAAA,CAAW;AAAA,KACpB;AAAA,IACA,EAAE,OAAO,CAAA,CAAE,6DAAA,EAA+D,MAAM,CAAA,EAAG,KAAA,EAAO,WAAW,IAAA;AAAK,GAC5G;AAEA,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,aAAA,KAA8B;AA5DnC,MAAA,IAAA,EAAA;AA6DM,MAAA,IAAI,aAAA,KAAkB,WAAW,IAAA,EAAM;AACrC,QAAA,iBAAA,CAAkB,iCAAA,EAAmC;AAAA,UACnD,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,UAC9B,oBAAoB,UAAA,CAAW;AAAA,SAChC,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,UAAA,KAAe,WAAW,IAAA,EAAM;AAClC,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA;AAAA,MACF;AACA,MAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,eAAe,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,QAAA,EAAU,KAAK;AAAA,GAC9B;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAuB;AA7EjD,IAAA,IAAA,EAAA;AA8EI,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,CAAA,CAAE,KAAA,KAAU,KAAA,CAAA,GAAY,CAAA,CAAE,KAAA,GAAQ,WAAA,CAAY,KAAA,EAAM;AAErF,IAAA,iBAAA,CAAkB,4BAAA,EAA8B;AAAA,MAC9C,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,MAC9B,gBAAgB,IAAA,CAAK;AAAA,KACtB,CAAA;AACD,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAuB;AAC9C,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,KAAA,CAAM,OAAA,EAAS;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,GAAG,KAAA;AAAA,MACH,SAAS,CAAA,CAAE,KAAA;AAAA,MACX,KAAA,EAAO,KAAA,CAAA;AAAA,MACP,GAAA,EAAK,KAAA,CAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAuB;AAC5C,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,KAAA,CAAM,KAAA,EAAO;AAC3B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAiB;AAAA,MACrB,GAAG,KAAA;AAAA,MACH,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,GAAA,EAAK,KAAA,CAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,6BAA6B,MAAM;AACvC,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,YAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,CAAC,kBAAA,oBACA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,CAAA,CAAE,kDAAA,EAAoD,QAAQ,CAAA;AAAA,UACrE,OAAO,KAAA,CAAM,MAAA;AAAA,UACb,WAAA,EAAa,CAAA,CAAE,+DAAA,EAAiE,eAAe,CAAA;AAAA,UAC/F,gBAAA,EAAgB,IAAA;AAAA,UAChB,QAAA,EAAU,cAAA;AAAA,UACV,OAAA,EAAS;AAAA;AAAA,OACX;AAAA,MAGD,UAAA,KAAe,UAAA,CAAW,OAAA,oBACzB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,cAAc,MAAM,CAAA,CAAA;AAAA,YACxB,KAAA,EAAO,CAAA,CAAE,kDAAA,EAAoD,QAAQ,CAAA;AAAA,YACrE,aAAA,EAAa,SAAA,CAAU,UAAA,CAAW,cAAA,CAAe,kBAAA;AAAA,YACjD,WAAA,EAAa,IAAA;AAAA,YACb,SAAA,EAAW,IAAA;AAAA,YACX,OAAO,cAAA,CAAe,MAAA;AAAA,YACtB,QAAA,EAAU,CAAC,EAAA,KAAO;AArJhC,cAAA,IAAA,EAAA;AAsJgB,cAAA,IAAI,EAAE,EAAA,CAAG,MAAA,YAAkB,gBAAA,CAAA,EAAmB;AAC5C,gBAAA;AAAA,cACF;AAEA,cAAA,iBAAA,CAAkB,4BAAA,EAA8B;AAAA,gBAC9C,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,gBAC9B,SAAA,EAAW,GAAG,MAAA,CAAO;AAAA,eACtB,CAAA;AAED,cAAA,gBAAA,CAAiB,EAAE,GAAG,cAAA,EAAgB,QAAQ,EAAA,CAAG,MAAA,CAAO,SAAS,CAAA;AAAA,YACnE;AAAA;AAAA,SACF;AAAA,wBAEA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,aAAa,MAAM,CAAA,CAAA;AAAA,YACvB,KAAA,EAAO,CAAA,CAAE,iDAAA,EAAmD,OAAO,CAAA;AAAA,YACnE,aAAA,EAAa,SAAA,CAAU,UAAA,CAAW,cAAA,CAAe,iBAAA;AAAA,YACjD,WAAA,EAAa,IAAA;AAAA,YACb,SAAA,EAAW,IAAA;AAAA,YACX,OAAO,cAAA,CAAe,KAAA;AAAA,YACtB,QAAA,EAAU,CAAC,EAAA,KAAO;AA1KhC,cAAA,IAAA,EAAA;AA2KgB,cAAA,IAAI,EAAE,EAAA,CAAG,MAAA,YAAkB,gBAAA,CAAA,EAAmB;AAC5C,gBAAA;AAAA,cACF;AAEA,cAAA,iBAAA,CAAkB,2BAAA,EAA6B;AAAA,gBAC7C,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,gBAC9B,SAAA,EAAW,GAAG,MAAA,CAAO;AAAA,eACtB,CAAA;AAED,cAAA,gBAAA,CAAiB,EAAE,GAAG,cAAA,EAAgB,OAAO,EAAA,CAAG,MAAA,CAAO,SAAS,CAAA;AAAA,YAClE;AAAA;AAAA,SACF;AAAA,wBAEA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,aAAa,MAAM,CAAA,CAAA;AAAA,YACvB,KAAA,EAAO,CAAA,CAAE,iDAAA,EAAmD,OAAO,CAAA;AAAA,YACnE,aAAA,EAAa,SAAA,CAAU,UAAA,CAAW,cAAA,CAAe,iBAAA;AAAA,YACjD,WAAA,EAAa,IAAA;AAAA,YACb,SAAA,EAAW,IAAA;AAAA,YACX,OAAO,cAAA,CAAe,KAAA;AAAA,YACtB,QAAA,EAAU,CAAC,EAAA,KAAO;AA/LhC,cAAA,IAAA,EAAA;AAgMgB,cAAA,IAAI,EAAE,EAAA,CAAG,MAAA,YAAkB,gBAAA,CAAA,EAAmB;AAC5C,gBAAA;AAAA,cACF;AAEA,cAAA,iBAAA,CAAkB,2BAAA,EAA6B;AAAA,gBAC7C,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,gBAC9B,SAAA,EAAW,GAAG,MAAA,CAAO;AAAA,eACtB,CAAA;AAED,cAAA,gBAAA,CAAiB,EAAE,GAAG,cAAA,EAAgB,OAAO,EAAA,CAAG,MAAA,CAAO,SAAS,CAAA;AAAA,YAClE;AAAA;AAAA,SACF;AAAA,wBAEA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,eAAe,MAAM,CAAA,CAAA;AAAA,YACzB,KAAA,EAAO,CAAA,CAAE,mDAAA,EAAqD,SAAS,CAAA;AAAA,YACvE,aAAA,EAAa,SAAA,CAAU,UAAA,CAAW,cAAA,CAAe,mBAAA;AAAA,YACjD,WAAA,EAAa,IAAA;AAAA,YACb,SAAA,EAAW,IAAA;AAAA,YACX,OAAO,cAAA,CAAe,OAAA;AAAA,YACtB,QAAA,EAAU,CAAC,EAAA,KAAO;AApNhC,cAAA,IAAA,EAAA;AAqNgB,cAAA,IAAI,EAAE,EAAA,CAAG,MAAA,YAAkB,gBAAA,CAAA,EAAmB;AAC5C,gBAAA;AAAA,cACF;AAEA,cAAA,iBAAA,CAAkB,6BAAA,EAA+B;AAAA,gBAC/C,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,gBAC9B,SAAA,EAAW,GAAG,MAAA,CAAO;AAAA,eACtB,CAAA;AAED,cAAA,gBAAA,CAAiB,EAAE,GAAG,cAAA,EAAgB,SAAS,EAAA,CAAG,MAAA,CAAO,SAAS,CAAA;AAAA,YACpE;AAAA;AAAA;AACF,OAAA,EACF,CAAA;AAAA,sBAGF,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAM,CAAA,EAAG,CAAA;AAAA,MAElB,CAAC,kBACC,eAAA,mBACC,GAAA,CAAC,UAAO,IAAA,EAAK,MAAA,EAAO,SAAQ,SAAA,EAAU,IAAA,EAAK,MAAK,OAAA,EAAS,MAAM,YAAW,EACxE,QAAA,kBAAA,GAAA,CAAC,SAAM,OAAA,EAAQ,+CAAA,EAAgD,QAAA,EAAA,WAAA,EAAS,CAAA,EAC1E,CAAA,mBAEA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,OAAA,kBACE,IAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,2DAAA,EAA4D,QAAA,EAAA;AAAA,YAAA,kDAAA;AAAA,gCACxB,IAAA,EAAA,EAAG,CAAA;AAAA,YAAE;AAAA,WAAA,EAExD,CAAA;AAAA,UAEF,SAAA,EAAU,KAAA;AAAA,UAEV,8BAAC,MAAA,EAAA,EAAO,IAAA,EAAK,sBAAA,EAAuB,OAAA,EAAQ,aAAY,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAM,YAAW,EAC1F,QAAA,kBAAA,GAAA,CAAC,SAAM,OAAA,EAAQ,+CAAA,EAAgD,uBAAS,CAAA,EAC1E;AAAA;AAAA,OACF,CAAA;AAAA,sBAGJ,GAAA,CAAC,oBAAiB,OAAA,EAAS,WAAA,EAAa,MAAK,IAAA,EAAK,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,kBAAA,EAAoB,CAAA;AAAA,sBAEnG,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,MAAA,EAAQ,WAAA;AAAA,UACR,QAAQ,MAAM;AAhQxB,YAAA,IAAA,EAAA;AAiQY,YAAA,iBAAA,CAAkB,iCAAA,EAAmC;AAAA,cACnD,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,cAC9B,oBAAoB,UAAA,CAAW,OAAA;AAAA,cAC/B,IAAA,EAAM;AAAA,aACP,CAAA;AAED,YAAA,cAAA,CAAe,KAAK,CAAA;AACpB,YAAA,eAAA,CAAgB,MAAM,MAAO,CAAA;AAC7B,YAAA,QAAA,CAAS;AAAA,cACP,GAAG,KAAA;AAAA,cACH,MAAA,EAAQ,SAAS,KAAK,CAAA;AAAA,cACtB,YAAY,UAAA,CAAW;AAAA,aACxB,CAAA;AAAA,UACH,CAAA;AAAA,UACA,WAAW,MAAM;AA/Q3B,YAAA,IAAA,EAAA;AAgRY,YAAA,iBAAA,CAAkB,iCAAA,EAAmC;AAAA,cACnD,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,cAC9B,oBAAoB,UAAA,CAAW,OAAA;AAAA,cAC/B,IAAA,EAAM;AAAA,aACP,CAAA;AAED,YAAA,cAAA,CAAe,KAAK,CAAA;AACpB,YAAA,QAAA,CAAS;AAAA,cACP,GAAG,KAAA;AAAA,cACH,MAAA,EAAQ,SAAS,KAAK,CAAA;AAAA,cACtB,YAAY,UAAA,CAAW;AAAA,aACxB,CAAA;AAAA,UACH,CAAA;AAAA,UACA,UAAU,MAAM;AA7R1B,YAAA,IAAA,EAAA;AA8RY,YAAA,iBAAA,CAAkB,iCAAA,EAAmC;AAAA,cACnD,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,cAC9B,oBAAoB,UAAA,CAAW,OAAA;AAAA,cAC/B,IAAA,EAAM;AAAA,aACP,CAAA;AAED,YAAA,cAAA,CAAe,KAAK,CAAA;AAAA,UACtB;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,IAEC,UAAA,KAAe,UAAA,CAAW,OAAA,oBACzB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,GAAG,GAAA,EAAK,CAAA;AAAA,2BACd,SAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,0BAAA,EAA2B,wBACzB,WAAA,EAAA,EAAY,KAAA,EAAO,EAAE,mDAAA,EAAqD,SAAS,CAAA,EAAG,KAAA,EAAO,EAAA,EAC5F,QAAA,kBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,EAAA;AAAA,YACA,OAAA,EAAS,eAAe,MAAM,CAAA,CAAA;AAAA,YAC9B,SAAS,KAAA,CAAM,OAAA;AAAA,YACf,OAAA;AAAA,YACA,oBAAA;AAAA,YACA,QAAA,EAAU;AAAA;AAAA,SACZ,EACF,CAAA;AAAA,wBAEF,GAAA,CAAC,eAAY,KAAA,EAAO,CAAA,CAAE,mDAAmD,OAAO,CAAA,EAAG,OAAO,EAAA,EACxF,QAAA,kBAAA,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,EAAA;AAAA,YACA,OAAA,EAAS,mBAAmB,MAAM,CAAA,CAAA;AAAA,YAClC,OAAA,EAAS,MAAM,OAAA,IAAW,oBAAA;AAAA,YAC1B,OAAO,KAAA,CAAM,KAAA;AAAA,YACb,QAAA,EAAU;AAAA;AAAA,SACZ,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
@@ -0,0 +1,37 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useAsync } from 'react-use';
3
+ import { toOption } from '@grafana/data';
4
+ import { selectors } from '@grafana/e2e-selectors';
5
+ import { t } from '@grafana/i18n';
6
+ import { Select } from '@grafana/ui';
7
+
8
+ "use strict";
9
+ const TableSelector = ({ db, dataset, table, className, onChange, inputId }) => {
10
+ const state = useAsync(async () => {
11
+ if (!dataset) {
12
+ return [];
13
+ }
14
+ const tables = await db.tables(dataset);
15
+ return tables.map(toOption);
16
+ }, [dataset]);
17
+ return /* @__PURE__ */ jsx(
18
+ Select,
19
+ {
20
+ className,
21
+ disabled: state.loading,
22
+ "aria-label": t("grafana-sql.components.table-selector.aria-label-table-selector", "Table selector"),
23
+ inputId,
24
+ "data-testid": selectors.components.SQLQueryEditor.headerTableSelector,
25
+ value: table,
26
+ options: state.value,
27
+ onChange,
28
+ isLoading: state.loading,
29
+ menuShouldPortal: true,
30
+ placeholder: state.loading ? t("grafana-sql.components.table-selector.placeholder-loading", "Loading tables") : t("grafana-sql.components.table-selector.placeholder-select-table", "Select table"),
31
+ allowCustomValue: true
32
+ }
33
+ );
34
+ };
35
+
36
+ export { TableSelector };
37
+ //# sourceMappingURL=TableSelector.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSelector.mjs","sources":["../../../src/components/TableSelector.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { Select } from '@grafana/ui';\n\nimport { DB, ResourceSelectorProps } from '../types';\n\nexport interface TableSelectorProps extends ResourceSelectorProps {\n db: DB;\n table: string | undefined;\n dataset: string | undefined;\n onChange: (v: SelectableValue) => void;\n inputId?: string | undefined;\n}\n\nexport const TableSelector = ({ db, dataset, table, className, onChange, inputId }: TableSelectorProps) => {\n const state = useAsync(async () => {\n // No need to attempt to fetch tables for an unknown dataset.\n if (!dataset) {\n return [];\n }\n\n const tables = await db.tables(dataset);\n return tables.map(toOption);\n }, [dataset]);\n\n return (\n <Select\n className={className}\n disabled={state.loading}\n aria-label={t('grafana-sql.components.table-selector.aria-label-table-selector', 'Table selector')}\n inputId={inputId}\n data-testid={selectors.components.SQLQueryEditor.headerTableSelector}\n value={table}\n options={state.value}\n onChange={onChange}\n isLoading={state.loading}\n menuShouldPortal={true}\n placeholder={\n state.loading\n ? t('grafana-sql.components.table-selector.placeholder-loading', 'Loading tables')\n : t('grafana-sql.components.table-selector.placeholder-select-table', 'Select table')\n }\n allowCustomValue={true}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAiBO,MAAM,aAAA,GAAgB,CAAC,EAAE,EAAA,EAAI,SAAS,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,OAAA,EAAQ,KAA0B;AACzG,EAAA,MAAM,KAAA,GAAQ,SAAS,YAAY;AAEjC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,MAAA,CAAO,OAAO,CAAA;AACtC,IAAA,OAAO,MAAA,CAAO,IAAI,QAAQ,CAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,UAAU,KAAA,CAAM,OAAA;AAAA,MAChB,YAAA,EAAY,CAAA,CAAE,iEAAA,EAAmE,gBAAgB,CAAA;AAAA,MACjG,OAAA;AAAA,MACA,aAAA,EAAa,SAAA,CAAU,UAAA,CAAW,cAAA,CAAe,mBAAA;AAAA,MACjD,KAAA,EAAO,KAAA;AAAA,MACP,SAAS,KAAA,CAAM,KAAA;AAAA,MACf,QAAA;AAAA,MACA,WAAW,KAAA,CAAM,OAAA;AAAA,MACjB,gBAAA,EAAkB,IAAA;AAAA,MAClB,WAAA,EACE,MAAM,OAAA,GACF,CAAA,CAAE,6DAA6D,gBAAgB,CAAA,GAC/E,CAAA,CAAE,gEAAA,EAAkE,cAAc,CAAA;AAAA,MAExF,gBAAA,EAAkB;AAAA;AAAA,GACpB;AAEJ;;;;"}
@@ -0,0 +1,158 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Trans, t } from '@grafana/i18n';
3
+ import { ConfigSubSection } from '@grafana/plugin-ui';
4
+ import { config } from '@grafana/runtime';
5
+ import { Stack, Field, Switch, Label, Tooltip, Icon, InlineLabel } from '@grafana/ui';
6
+ import { MaxLifetimeField } from './MaxLifetimeField.mjs';
7
+ import { MaxOpenConnectionsField } from './MaxOpenConnectionsField.mjs';
8
+ import { NumberInput } from './NumberInput.mjs';
9
+
10
+ "use strict";
11
+ const ConnectionLimits = (props) => {
12
+ const { onOptionsChange, options } = props;
13
+ const jsonData = options.jsonData;
14
+ const autoIdle = jsonData.maxIdleConnsAuto !== void 0 ? jsonData.maxIdleConnsAuto : false;
15
+ const updateJsonData = (values) => {
16
+ const newOpts = {
17
+ ...options,
18
+ jsonData: {
19
+ ...jsonData,
20
+ ...values
21
+ }
22
+ };
23
+ return onOptionsChange(newOpts);
24
+ };
25
+ const onJSONDataNumberChanged = (property) => {
26
+ return (number) => {
27
+ updateJsonData({ [property]: number });
28
+ };
29
+ };
30
+ const onMaxConnectionsChanged = (number) => {
31
+ if (autoIdle && number) {
32
+ updateJsonData({
33
+ maxOpenConns: number,
34
+ maxIdleConns: number
35
+ });
36
+ } else {
37
+ updateJsonData({
38
+ maxOpenConns: number
39
+ });
40
+ }
41
+ };
42
+ const onConnectionIdleAutoChanged = () => {
43
+ let idleConns = void 0;
44
+ let maxConns = void 0;
45
+ if (!autoIdle) {
46
+ if (jsonData.maxOpenConns !== void 0) {
47
+ maxConns = jsonData.maxOpenConns;
48
+ idleConns = jsonData.maxOpenConns;
49
+ }
50
+ } else {
51
+ maxConns = jsonData.maxOpenConns;
52
+ idleConns = jsonData.maxIdleConns;
53
+ }
54
+ updateJsonData({
55
+ maxIdleConnsAuto: !autoIdle,
56
+ maxIdleConns: idleConns,
57
+ maxOpenConns: maxConns
58
+ });
59
+ };
60
+ const labelWidth = 40;
61
+ return /* @__PURE__ */ jsx(
62
+ ConfigSubSection,
63
+ {
64
+ title: t("grafana-sql.components.connection-limits.title-connection-limits", "Connection limits"),
65
+ children: /* @__PURE__ */ jsxs(Stack, { direction: "column", gap: 2, children: [
66
+ /* @__PURE__ */ jsx(
67
+ MaxOpenConnectionsField,
68
+ {
69
+ labelWidth,
70
+ onMaxConnectionsChanged,
71
+ jsonData
72
+ }
73
+ ),
74
+ /* @__PURE__ */ jsx(
75
+ Field,
76
+ {
77
+ noMargin: true,
78
+ label: /* @__PURE__ */ jsx(Label, { children: /* @__PURE__ */ jsxs(Stack, { gap: 0.5, children: [
79
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(Trans, { i18nKey: "grafana-sql.components.connection-limits.auto-max-idle", children: "Auto max idle" }) }),
80
+ /* @__PURE__ */ jsx(
81
+ Tooltip,
82
+ {
83
+ content: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsxs(
84
+ Trans,
85
+ {
86
+ i18nKey: "grafana-sql.components.connection-limits.content-auto-max-idle",
87
+ values: { defaultMaxIdle: config.sqlConnectionLimits.maxIdleConns },
88
+ children: [
89
+ "If enabled, automatically set the number of ",
90
+ /* @__PURE__ */ jsx("i", { children: "Maximum idle connections" }),
91
+ " to the same value as",
92
+ /* @__PURE__ */ jsx("i", { children: " Max open connections" }),
93
+ ". If the number of maximum open connections is not set it will be set to the default (",
94
+ "{{defaultMaxIdle}}",
95
+ ")."
96
+ ]
97
+ }
98
+ ) }),
99
+ children: /* @__PURE__ */ jsx(Icon, { name: "info-circle", size: "sm" })
100
+ }
101
+ )
102
+ ] }) }),
103
+ children: /* @__PURE__ */ jsx(Switch, { value: autoIdle, onChange: onConnectionIdleAutoChanged })
104
+ }
105
+ ),
106
+ /* @__PURE__ */ jsx(
107
+ Field,
108
+ {
109
+ noMargin: true,
110
+ label: /* @__PURE__ */ jsx(Label, { children: /* @__PURE__ */ jsxs(Stack, { gap: 0.5, children: [
111
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(Trans, { i18nKey: "grafana-sql.components.connection-limits.max-idle", children: "Max idle" }) }),
112
+ /* @__PURE__ */ jsx(
113
+ Tooltip,
114
+ {
115
+ content: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsxs(Trans, { i18nKey: "grafana-sql.components.connection-limits.content-max-idle", children: [
116
+ "The maximum number of connections in the idle connection pool.If ",
117
+ /* @__PURE__ */ jsx("i", { children: "Max open connections" }),
118
+ " is greater than 0 but less than the ",
119
+ /* @__PURE__ */ jsx("i", { children: "Max idle connections" }),
120
+ ", then the",
121
+ " ",
122
+ /* @__PURE__ */ jsx("i", { children: "Max idle connections" }),
123
+ " will be reduced to match the ",
124
+ /* @__PURE__ */ jsx("i", { children: "Max open connections" }),
125
+ " limit. If set to 0, no idle connections are retained."
126
+ ] }) }),
127
+ children: /* @__PURE__ */ jsx(Icon, { name: "info-circle", size: "sm" })
128
+ }
129
+ )
130
+ ] }) }),
131
+ children: autoIdle ? /* @__PURE__ */ jsx(InlineLabel, { width: labelWidth, children: options.jsonData.maxIdleConns }) : /* @__PURE__ */ jsx(
132
+ NumberInput,
133
+ {
134
+ value: jsonData.maxIdleConns,
135
+ defaultValue: config.sqlConnectionLimits.maxIdleConns,
136
+ onChange: (value) => {
137
+ onJSONDataNumberChanged("maxIdleConns")(value);
138
+ },
139
+ width: labelWidth
140
+ }
141
+ )
142
+ }
143
+ ),
144
+ /* @__PURE__ */ jsx(
145
+ MaxLifetimeField,
146
+ {
147
+ labelWidth,
148
+ onMaxLifetimeChanged: onJSONDataNumberChanged("connMaxLifetime"),
149
+ jsonData
150
+ }
151
+ )
152
+ ] })
153
+ }
154
+ );
155
+ };
156
+
157
+ export { ConnectionLimits };
158
+ //# sourceMappingURL=ConnectionLimits.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionLimits.mjs","sources":["../../../../src/components/configuration/ConnectionLimits.tsx"],"sourcesContent":["import { DataSourceSettings } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\nimport { ConfigSubSection } from '@grafana/plugin-ui';\nimport { config } from '@grafana/runtime';\nimport { Field, Icon, InlineLabel, Label, Stack, Switch, Tooltip } from '@grafana/ui';\n\nimport { SQLConnectionLimits, SQLOptions } from '../../types';\n\nimport { MaxLifetimeField } from './MaxLifetimeField';\nimport { MaxOpenConnectionsField } from './MaxOpenConnectionsField';\nimport { NumberInput } from './NumberInput';\n\ninterface Props<T> {\n onOptionsChange: Function;\n options: DataSourceSettings<SQLOptions>;\n}\n\nexport const ConnectionLimits = <T extends SQLConnectionLimits>(props: Props<T>) => {\n const { onOptionsChange, options } = props;\n const jsonData = options.jsonData;\n const autoIdle = jsonData.maxIdleConnsAuto !== undefined ? jsonData.maxIdleConnsAuto : false;\n\n // Update JSON data with new values\n const updateJsonData = (values: {}) => {\n const newOpts = {\n ...options,\n jsonData: {\n ...jsonData,\n ...values,\n },\n };\n\n return onOptionsChange(newOpts);\n };\n\n // For the case of idle connections and connection lifetime\n // use a shared function to update respective properties\n const onJSONDataNumberChanged = (property: keyof SQLConnectionLimits) => {\n return (number?: number) => {\n updateJsonData({ [property]: number });\n };\n };\n\n // When the maximum number of connections is changed\n // see if we have the automatic idle option enabled\n const onMaxConnectionsChanged = (number?: number) => {\n if (autoIdle && number) {\n updateJsonData({\n maxOpenConns: number,\n maxIdleConns: number,\n });\n } else {\n updateJsonData({\n maxOpenConns: number,\n });\n }\n };\n\n // Update auto idle setting when control is toggled\n // and set minimum idle connections if automatic\n // is selected\n const onConnectionIdleAutoChanged = () => {\n let idleConns = undefined;\n let maxConns = undefined;\n\n // If the maximum number of open connections is undefined\n // and we're setting auto idle then set the default amount\n // otherwise take the numeric amount and get the value from that\n if (!autoIdle) {\n if (jsonData.maxOpenConns !== undefined) {\n maxConns = jsonData.maxOpenConns;\n idleConns = jsonData.maxOpenConns;\n }\n } else {\n maxConns = jsonData.maxOpenConns;\n idleConns = jsonData.maxIdleConns;\n }\n\n updateJsonData({\n maxIdleConnsAuto: !autoIdle,\n maxIdleConns: idleConns,\n maxOpenConns: maxConns,\n });\n };\n\n const labelWidth = 40;\n\n return (\n <ConfigSubSection\n title={t('grafana-sql.components.connection-limits.title-connection-limits', 'Connection limits')}\n >\n <Stack direction=\"column\" gap={2}>\n <MaxOpenConnectionsField\n labelWidth={labelWidth}\n onMaxConnectionsChanged={onMaxConnectionsChanged}\n jsonData={jsonData}\n />\n\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.auto-max-idle\">Auto max idle</Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans\n i18nKey=\"grafana-sql.components.connection-limits.content-auto-max-idle\"\n values={{ defaultMaxIdle: config.sqlConnectionLimits.maxIdleConns }}\n >\n If enabled, automatically set the number of <i>Maximum idle connections</i> to the same value as\n <i> Max open connections</i>. If the number of maximum open connections is not set it will be\n set to the default ({'{{defaultMaxIdle}}'}).\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n <Switch value={autoIdle} onChange={onConnectionIdleAutoChanged} />\n </Field>\n\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.max-idle\">Max idle</Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.content-max-idle\">\n The maximum number of connections in the idle connection pool.If <i>Max open connections</i> is\n greater than 0 but less than the <i>Max idle connections</i>, then the{' '}\n <i>Max idle connections</i> will be reduced to match the <i>Max open connections</i> limit. If\n set to 0, no idle connections are retained.\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n {autoIdle ? (\n <InlineLabel width={labelWidth}>{options.jsonData.maxIdleConns}</InlineLabel>\n ) : (\n <NumberInput\n value={jsonData.maxIdleConns}\n defaultValue={config.sqlConnectionLimits.maxIdleConns}\n onChange={(value) => {\n onJSONDataNumberChanged('maxIdleConns')(value);\n }}\n width={labelWidth}\n />\n )}\n </Field>\n\n <MaxLifetimeField\n labelWidth={labelWidth}\n onMaxLifetimeChanged={onJSONDataNumberChanged('connMaxLifetime')}\n jsonData={jsonData}\n />\n </Stack>\n </ConfigSubSection>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { css } from '@emotion/css';
3
+ import { useStyles2 } from '@grafana/ui';
4
+
5
+ "use strict";
6
+ const Divider = () => {
7
+ const styles = useStyles2(getStyles);
8
+ return /* @__PURE__ */ jsx("hr", { className: styles.horizontalDivider });
9
+ };
10
+ const getStyles = (theme) => {
11
+ return {
12
+ horizontalDivider: css({
13
+ borderTop: `1px solid ${theme.colors.border.weak}`,
14
+ margin: theme.spacing(2, 0),
15
+ width: "100%"
16
+ })
17
+ };
18
+ };
19
+
20
+ export { Divider };
21
+ //# sourceMappingURL=Divider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.mjs","sources":["../../../../src/components/configuration/Divider.tsx"],"sourcesContent":["import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\n// this custom component is necessary because the Grafana UI <Divider /> component is not backwards compatible with Grafana < 10.1.0\nexport const Divider = () => {\n const styles = useStyles2(getStyles);\n return <hr className={styles.horizontalDivider} />;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n horizontalDivider: css({\n borderTop: `1px solid ${theme.colors.border.weak}`,\n margin: theme.spacing(2, 0),\n width: '100%',\n }),\n };\n};\n"],"names":[],"mappings":";;;;;AAMO,MAAM,UAAU,MAAM;AAC3B,EAAA,MAAM,MAAA,GAAS,WAAW,SAAS,CAAA;AACnC,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,iBAAA,EAAmB,CAAA;AAClD;AAEA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,EAAA,OAAO;AAAA,IACL,mBAAmB,GAAA,CAAI;AAAA,MACrB,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,OAAO,IAAI,CAAA,CAAA;AAAA,MAChD,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,MAC1B,KAAA,EAAO;AAAA,KACR;AAAA,GACH;AACF,CAAA;;;;"}
@@ -0,0 +1,37 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Trans } from '@grafana/i18n';
3
+ import { config } from '@grafana/runtime';
4
+ import { Field, Label, Stack, Tooltip, Icon } from '@grafana/ui';
5
+ import { NumberInput } from './NumberInput.mjs';
6
+
7
+ "use strict";
8
+ function MaxLifetimeField({ labelWidth, onMaxLifetimeChanged, jsonData }) {
9
+ return /* @__PURE__ */ jsx(
10
+ Field,
11
+ {
12
+ noMargin: true,
13
+ label: /* @__PURE__ */ jsx(Label, { children: /* @__PURE__ */ jsxs(Stack, { gap: 0.5, children: [
14
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(Trans, { i18nKey: "grafana-sql.components.connection-limits.max-lifetime", children: "Max lifetime" }) }),
15
+ /* @__PURE__ */ jsx(
16
+ Tooltip,
17
+ {
18
+ content: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(Trans, { i18nKey: "grafana-sql.components.connection-limits.content-max-lifetime", children: "The maximum amount of time in seconds a connection may be reused. If set to 0, connections are reused forever." }) }),
19
+ children: /* @__PURE__ */ jsx(Icon, { name: "info-circle", size: "sm" })
20
+ }
21
+ )
22
+ ] }) }),
23
+ children: /* @__PURE__ */ jsx(
24
+ NumberInput,
25
+ {
26
+ value: jsonData.connMaxLifetime,
27
+ defaultValue: config.sqlConnectionLimits.connMaxLifetime,
28
+ onChange: onMaxLifetimeChanged,
29
+ width: labelWidth
30
+ }
31
+ )
32
+ }
33
+ );
34
+ }
35
+
36
+ export { MaxLifetimeField };
37
+ //# sourceMappingURL=MaxLifetimeField.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaxLifetimeField.mjs","sources":["../../../../src/components/configuration/MaxLifetimeField.tsx"],"sourcesContent":["import { Trans } from '@grafana/i18n';\nimport { config } from '@grafana/runtime';\nimport { Field, Icon, Label, Stack, Tooltip } from '@grafana/ui';\n\nimport { SQLOptions } from '../../types';\n\nimport { NumberInput } from './NumberInput';\n\ninterface Props {\n labelWidth: number;\n onMaxLifetimeChanged: (number?: number) => void;\n jsonData: SQLOptions;\n}\nexport function MaxLifetimeField({ labelWidth, onMaxLifetimeChanged, jsonData }: Props) {\n return (\n <Field\n noMargin\n label={\n <Label>\n <Stack gap={0.5}>\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.max-lifetime\">Max lifetime</Trans>\n </span>\n <Tooltip\n content={\n <span>\n <Trans i18nKey=\"grafana-sql.components.connection-limits.content-max-lifetime\">\n The maximum amount of time in seconds a connection may be reused. If set to 0, connections are\n reused forever.\n </Trans>\n </span>\n }\n >\n <Icon name=\"info-circle\" size=\"sm\" />\n </Tooltip>\n </Stack>\n </Label>\n }\n >\n <NumberInput\n value={jsonData.connMaxLifetime}\n defaultValue={config.sqlConnectionLimits.connMaxLifetime}\n onChange={onMaxLifetimeChanged}\n width={labelWidth}\n />\n </Field>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAaO,SAAS,gBAAA,CAAiB,EAAE,UAAA,EAAY,oBAAA,EAAsB,UAAS,EAAU;AACtF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,uBACE,GAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAM,KAAK,GAAA,EACV,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UACC,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,uDAAA,EAAwD,0BAAY,CAAA,EACrF,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAA,sBACG,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,SAAM,OAAA,EAAQ,+DAAA,EAAgE,4HAG/E,CAAA,EACF,CAAA;AAAA,YAGF,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,aAAA,EAAc,MAAK,IAAA,EAAK;AAAA;AAAA;AACrC,OAAA,EACF,CAAA,EACF,CAAA;AAAA,MAGF,QAAA,kBAAA,GAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,OAAO,QAAA,CAAS,eAAA;AAAA,UAChB,YAAA,EAAc,OAAO,mBAAA,CAAoB,eAAA;AAAA,UACzC,QAAA,EAAU,oBAAA;AAAA,UACV,KAAA,EAAO;AAAA;AAAA;AACT;AAAA,GACF;AAEJ;;;;"}