@grafana/scenes 6.5.1--canary.1077.13964702348.0 → 6.5.1--canary.1078.13965220580.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/dist/esm/behaviors/ActWhenVariableChanged.js.map +1 -1
  2. package/dist/esm/behaviors/CursorSync.js +21 -3
  3. package/dist/esm/behaviors/CursorSync.js.map +1 -1
  4. package/dist/esm/behaviors/LiveNowTimer.js +2 -3
  5. package/dist/esm/behaviors/LiveNowTimer.js.map +1 -1
  6. package/dist/esm/behaviors/SceneQueryController.js +37 -7
  7. package/dist/esm/behaviors/SceneQueryController.js.map +1 -1
  8. package/dist/esm/behaviors/SceneRenderProfiler.js +17 -10
  9. package/dist/esm/behaviors/SceneRenderProfiler.js.map +1 -1
  10. package/dist/esm/components/EmbeddedScene.js +12 -1
  11. package/dist/esm/components/EmbeddedScene.js.map +1 -1
  12. package/dist/esm/components/NestedScene.js +30 -23
  13. package/dist/esm/components/NestedScene.js.map +1 -1
  14. package/dist/esm/components/SceneApp/SceneApp.js +11 -1
  15. package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
  16. package/dist/esm/components/SceneApp/SceneAppPage.js +47 -28
  17. package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
  18. package/dist/esm/components/SceneApp/SceneAppPageView.js +20 -14
  19. package/dist/esm/components/SceneApp/SceneAppPageView.js.map +1 -1
  20. package/dist/esm/components/SceneApp/utils.js +18 -2
  21. package/dist/esm/components/SceneApp/utils.js.map +1 -1
  22. package/dist/esm/components/SceneByFrameRepeater.js +3 -1
  23. package/dist/esm/components/SceneByFrameRepeater.js.map +1 -1
  24. package/dist/esm/components/SceneByVariableRepeater.js +3 -1
  25. package/dist/esm/components/SceneByVariableRepeater.js.map +1 -1
  26. package/dist/esm/components/SceneCanvasText.js +4 -1
  27. package/dist/esm/components/SceneCanvasText.js.map +1 -1
  28. package/dist/esm/components/SceneControlsSpacer.js +3 -1
  29. package/dist/esm/components/SceneControlsSpacer.js.map +1 -1
  30. package/dist/esm/components/SceneDebugger/DebugDetails.js +24 -11
  31. package/dist/esm/components/SceneDebugger/DebugDetails.js.map +1 -1
  32. package/dist/esm/components/SceneDebugger/DebugTreeNode.js +14 -2
  33. package/dist/esm/components/SceneDebugger/DebugTreeNode.js.map +1 -1
  34. package/dist/esm/components/SceneDebugger/SceneDebugger.js +29 -1
  35. package/dist/esm/components/SceneDebugger/SceneDebugger.js.map +1 -1
  36. package/dist/esm/components/SceneReactObject.js +17 -1
  37. package/dist/esm/components/SceneReactObject.js.map +1 -1
  38. package/dist/esm/components/SceneRefreshPicker.js +38 -23
  39. package/dist/esm/components/SceneRefreshPicker.js.map +1 -1
  40. package/dist/esm/components/SceneTimePicker.js +29 -27
  41. package/dist/esm/components/SceneTimePicker.js.map +1 -1
  42. package/dist/esm/components/SceneTimeRangeCompare.js +50 -36
  43. package/dist/esm/components/SceneTimeRangeCompare.js.map +1 -1
  44. package/dist/esm/components/SceneToolbarButton.js +14 -10
  45. package/dist/esm/components/SceneToolbarButton.js.map +1 -1
  46. package/dist/esm/components/VizPanel/VizPanel.js +29 -20
  47. package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
  48. package/dist/esm/components/VizPanel/VizPanelExploreButton.js +13 -17
  49. package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +1 -1
  50. package/dist/esm/components/VizPanel/VizPanelMenu.js +20 -18
  51. package/dist/esm/components/VizPanel/VizPanelMenu.js.map +1 -1
  52. package/dist/esm/components/VizPanel/VizPanelRenderer.js +122 -92
  53. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  54. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +15 -7
  55. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js.map +1 -1
  56. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +29 -15
  57. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js.map +1 -1
  58. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +21 -3
  59. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js.map +1 -1
  60. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +34 -22
  61. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js.map +1 -1
  62. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +40 -8
  63. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js.map +1 -1
  64. package/dist/esm/components/layout/LazyLoader.js +35 -2
  65. package/dist/esm/components/layout/LazyLoader.js.map +1 -1
  66. package/dist/esm/components/layout/SceneFlexLayout.js +13 -3
  67. package/dist/esm/components/layout/SceneFlexLayout.js.map +1 -1
  68. package/dist/esm/components/layout/grid/SceneGridItem.js +3 -1
  69. package/dist/esm/components/layout/grid/SceneGridItem.js.map +1 -1
  70. package/dist/esm/components/layout/grid/SceneGridLayout.js +26 -26
  71. package/dist/esm/components/layout/grid/SceneGridLayout.js.map +1 -1
  72. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +104 -88
  73. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -1
  74. package/dist/esm/components/layout/grid/SceneGridRow.js +48 -15
  75. package/dist/esm/components/layout/grid/SceneGridRow.js.map +1 -1
  76. package/dist/esm/components/layout/grid/constants.js.map +1 -1
  77. package/dist/esm/components/layout/grid/types.js.map +1 -1
  78. package/dist/esm/components/layout/grid/utils.js +21 -3
  79. package/dist/esm/components/layout/grid/utils.js.map +1 -1
  80. package/dist/esm/components/layout/split/SplitLayout.js.map +1 -1
  81. package/dist/esm/components/layout/split/SplitLayoutRenderer.js +14 -11
  82. package/dist/esm/components/layout/split/SplitLayoutRenderer.js.map +1 -1
  83. package/dist/esm/components/layout/split/Splitter.js +58 -60
  84. package/dist/esm/components/layout/split/Splitter.js.map +1 -1
  85. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js +23 -46
  86. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js.map +1 -1
  87. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js +8 -8
  88. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js.map +1 -1
  89. package/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js.map +1 -1
  90. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js +0 -3
  91. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js.map +1 -1
  92. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js +28 -28
  93. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js.map +1 -1
  94. package/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js.map +1 -1
  95. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js +0 -39
  96. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js.map +1 -1
  97. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js +32 -32
  98. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js.map +1 -1
  99. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js +21 -82
  100. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +1 -1
  101. package/dist/esm/core/PanelBuilders/index.js +32 -32
  102. package/dist/esm/core/PanelBuilders/index.js.map +1 -1
  103. package/dist/esm/core/SceneComponentWrapper.js +38 -4
  104. package/dist/esm/core/SceneComponentWrapper.js.map +1 -1
  105. package/dist/esm/core/SceneDataNode.js +19 -4
  106. package/dist/esm/core/SceneDataNode.js.map +1 -1
  107. package/dist/esm/core/SceneObjectBase.js +17 -55
  108. package/dist/esm/core/SceneObjectBase.js.map +1 -1
  109. package/dist/esm/core/SceneObjectRef.js +18 -7
  110. package/dist/esm/core/SceneObjectRef.js.map +1 -1
  111. package/dist/esm/core/SceneScopesBridge.js +0 -15
  112. package/dist/esm/core/SceneScopesBridge.js.map +1 -1
  113. package/dist/esm/core/SceneTimeRange.js +17 -9
  114. package/dist/esm/core/SceneTimeRange.js.map +1 -1
  115. package/dist/esm/core/SceneTimeRangeTransformerBase.js.map +1 -1
  116. package/dist/esm/core/SceneTimeZoneOverride.js +23 -7
  117. package/dist/esm/core/SceneTimeZoneOverride.js.map +1 -1
  118. package/dist/esm/core/events.js.map +1 -1
  119. package/dist/esm/core/sceneGraph/getQueryController.js.map +1 -1
  120. package/dist/esm/core/sceneGraph/getTimeRange.js.map +1 -1
  121. package/dist/esm/core/sceneGraph/index.js +1 -1
  122. package/dist/esm/core/sceneGraph/index.js.map +1 -1
  123. package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
  124. package/dist/esm/core/sceneGraph/utils.js +17 -1
  125. package/dist/esm/core/sceneGraph/utils.js.map +1 -1
  126. package/dist/esm/core/types.js.map +1 -1
  127. package/dist/esm/index.js +5 -6
  128. package/dist/esm/index.js.map +1 -1
  129. package/dist/esm/querying/DataLayersMerger.js.map +1 -1
  130. package/dist/esm/querying/DataProviderProxy.js.map +1 -1
  131. package/dist/esm/querying/ExtraQueryProvider.js.map +1 -1
  132. package/dist/esm/querying/RuntimeDataSource.js.map +1 -1
  133. package/dist/esm/querying/SceneDataLayerSet.js +24 -9
  134. package/dist/esm/querying/SceneDataLayerSet.js.map +1 -1
  135. package/dist/esm/querying/SceneDataTransformer.js +24 -11
  136. package/dist/esm/querying/SceneDataTransformer.js.map +1 -1
  137. package/dist/esm/querying/SceneQueryRunner.js +33 -44
  138. package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
  139. package/dist/esm/querying/extraQueryProcessingOperator.js +21 -3
  140. package/dist/esm/querying/extraQueryProcessingOperator.js.map +1 -1
  141. package/dist/esm/querying/getEnrichedDataRequest.js.map +1 -1
  142. package/dist/esm/querying/layers/SceneDataLayerBase.js +19 -16
  143. package/dist/esm/querying/layers/SceneDataLayerBase.js.map +1 -1
  144. package/dist/esm/querying/layers/SceneDataLayerControls.js +21 -15
  145. package/dist/esm/querying/layers/SceneDataLayerControls.js.map +1 -1
  146. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +30 -12
  147. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js.map +1 -1
  148. package/dist/esm/querying/layers/annotations/filterAnnotations.js +23 -6
  149. package/dist/esm/querying/layers/annotations/filterAnnotations.js.map +1 -1
  150. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +29 -19
  151. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +1 -1
  152. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +34 -14
  153. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js.map +1 -1
  154. package/dist/esm/querying/layers/annotations/utils.js +17 -1
  155. package/dist/esm/querying/layers/annotations/utils.js.map +1 -1
  156. package/dist/esm/querying/registerQueryWithController.js.map +1 -1
  157. package/dist/esm/services/SceneObjectUrlSyncConfig.js.map +1 -1
  158. package/dist/esm/services/UniqueUrlKeyMapper.js.map +1 -1
  159. package/dist/esm/services/UrlSyncContextProvider.js.map +1 -1
  160. package/dist/esm/services/UrlSyncManager.js +19 -11
  161. package/dist/esm/services/UrlSyncManager.js.map +1 -1
  162. package/dist/esm/services/useUrlSync.js.map +1 -1
  163. package/dist/esm/services/utils.js.map +1 -1
  164. package/dist/esm/utils/ControlsLabel.js +47 -23
  165. package/dist/esm/utils/ControlsLabel.js.map +1 -1
  166. package/dist/esm/utils/LoadingIndicator.js +10 -11
  167. package/dist/esm/utils/LoadingIndicator.js.map +1 -1
  168. package/dist/esm/utils/SafeSerializableSceneObject.js +18 -7
  169. package/dist/esm/utils/SafeSerializableSceneObject.js.map +1 -1
  170. package/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js.map +1 -1
  171. package/dist/esm/utils/date.js.map +1 -1
  172. package/dist/esm/utils/evaluateTimeRange.js.map +1 -1
  173. package/dist/esm/utils/explore.js.map +1 -1
  174. package/dist/esm/utils/getCompareSeriesRefId.js.map +1 -1
  175. package/dist/esm/utils/getDataSource.js.map +1 -1
  176. package/dist/esm/utils/getMessageFromError.js.map +1 -1
  177. package/dist/esm/utils/metricTree.js.map +1 -1
  178. package/dist/esm/utils/parseUrlParam.js.map +1 -1
  179. package/dist/esm/utils/utils.js.map +1 -1
  180. package/dist/esm/utils/wrapInSafeSerializableSceneObject.js.map +1 -1
  181. package/dist/esm/utils/writeSceneLog.js.map +1 -1
  182. package/dist/esm/variables/VariableDependencyConfig.js +0 -9
  183. package/dist/esm/variables/VariableDependencyConfig.js.map +1 -1
  184. package/dist/esm/variables/VariableValueRecorder.js.map +1 -1
  185. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js +12 -13
  186. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js.map +1 -1
  187. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js +142 -129
  188. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js.map +1 -1
  189. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +91 -84
  190. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
  191. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +6 -1
  192. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  193. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +194 -195
  194. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  195. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +28 -34
  196. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  197. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +65 -28
  198. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +1 -1
  199. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +43 -29
  200. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +1 -1
  201. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +1 -2
  202. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js.map +1 -1
  203. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  204. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +63 -45
  205. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  206. package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -1
  207. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js +0 -1
  208. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js.map +1 -1
  209. package/dist/esm/variables/adhoc/getAdhocOptionSearcher.js.map +1 -1
  210. package/dist/esm/variables/adhoc/patchGetAdhocFilters.js.map +1 -1
  211. package/dist/esm/variables/components/VariableValueControl.js +6 -9
  212. package/dist/esm/variables/components/VariableValueControl.js.map +1 -1
  213. package/dist/esm/variables/components/VariableValueInput.js +10 -13
  214. package/dist/esm/variables/components/VariableValueInput.js.map +1 -1
  215. package/dist/esm/variables/components/VariableValueSelect.js +115 -90
  216. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  217. package/dist/esm/variables/components/VariableValueSelectors.js +37 -20
  218. package/dist/esm/variables/components/VariableValueSelectors.js.map +1 -1
  219. package/dist/esm/variables/components/getOptionSearcher.js +1 -1
  220. package/dist/esm/variables/components/getOptionSearcher.js.map +1 -1
  221. package/dist/esm/variables/constants.js.map +1 -1
  222. package/dist/esm/variables/filter.js +1 -6
  223. package/dist/esm/variables/filter.js.map +1 -1
  224. package/dist/esm/variables/getEnrichedFiltersRequest.js.map +1 -1
  225. package/dist/esm/variables/groupby/GroupByVariable.js +112 -106
  226. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  227. package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js.map +1 -1
  228. package/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js.map +1 -1
  229. package/dist/esm/variables/interpolation/ScopedVarsVariable.js.map +1 -1
  230. package/dist/esm/variables/interpolation/defaults.js.map +1 -1
  231. package/dist/esm/variables/interpolation/fieldAccessorCache.js.map +1 -1
  232. package/dist/esm/variables/interpolation/formatRegistry.js.map +1 -1
  233. package/dist/esm/variables/interpolation/sceneInterpolator.js.map +1 -1
  234. package/dist/esm/variables/lookupVariable.js.map +1 -1
  235. package/dist/esm/variables/macros/AllVariablesMacro.js.map +1 -1
  236. package/dist/esm/variables/macros/contextMacros.js.map +1 -1
  237. package/dist/esm/variables/macros/dataMacros.js.map +1 -1
  238. package/dist/esm/variables/macros/index.js.map +1 -1
  239. package/dist/esm/variables/macros/templateProxies.js +21 -4
  240. package/dist/esm/variables/macros/templateProxies.js.map +1 -1
  241. package/dist/esm/variables/macros/timeMacros.js.map +1 -1
  242. package/dist/esm/variables/macros/types.js.map +1 -1
  243. package/dist/esm/variables/macros/urlMacros.js.map +1 -1
  244. package/dist/esm/variables/sets/SceneVariableSet.js +0 -44
  245. package/dist/esm/variables/sets/SceneVariableSet.js.map +1 -1
  246. package/dist/esm/variables/types.js.map +1 -1
  247. package/dist/esm/variables/utils.js.map +1 -1
  248. package/dist/esm/variables/variants/ConstantVariable.js +23 -4
  249. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  250. package/dist/esm/variables/variants/CustomVariable.js +19 -4
  251. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  252. package/dist/esm/variables/variants/DataSourceVariable.js +19 -4
  253. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  254. package/dist/esm/variables/variants/IntervalVariable.js +29 -17
  255. package/dist/esm/variables/variants/IntervalVariable.js.map +1 -1
  256. package/dist/esm/variables/variants/LocalValueVariable.js +23 -8
  257. package/dist/esm/variables/variants/LocalValueVariable.js.map +1 -1
  258. package/dist/esm/variables/variants/MultiValueVariable.js +0 -16
  259. package/dist/esm/variables/variants/MultiValueVariable.js.map +1 -1
  260. package/dist/esm/variables/variants/TestVariable.js +19 -5
  261. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  262. package/dist/esm/variables/variants/TextBoxVariable.js +22 -5
  263. package/dist/esm/variables/variants/TextBoxVariable.js.map +1 -1
  264. package/dist/esm/variables/variants/guards.js.map +1 -1
  265. package/dist/esm/variables/variants/query/QueryVariable.js +20 -8
  266. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  267. package/dist/esm/variables/variants/query/createQueryVariableRunner.js +23 -6
  268. package/dist/esm/variables/variants/query/createQueryVariableRunner.js.map +1 -1
  269. package/dist/esm/variables/variants/query/guards.js.map +1 -1
  270. package/dist/esm/variables/variants/query/toMetricFindValues.js.map +1 -1
  271. package/dist/esm/variables/variants/query/utils.js.map +1 -1
  272. package/dist/index.d.ts +6 -36
  273. package/dist/index.js +2799 -2037
  274. package/dist/index.js.map +1 -1
  275. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"SceneDataLayerBase.js","sources":["../../../../src/querying/layers/SceneDataLayerBase.ts"],"sourcesContent":["import { PanelData } from '@grafana/data';\nimport { ReplaySubject, Unsubscribable } from 'rxjs';\nimport { emptyPanelData } from '../../core/SceneDataNode';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport {\n CancelActivationHandler,\n SceneDataLayerProvider,\n SceneDataProviderResult,\n SceneDataLayerProviderState,\n} from '../../core/types';\nimport { setBaseClassState } from '../../utils/utils';\nimport { writeSceneLog } from '../../utils/writeSceneLog';\nimport { VariableDependencyConfig } from '../../variables/VariableDependencyConfig';\nimport { VariableValueRecorder } from '../../variables/VariableValueRecorder';\n\n/**\n * Base class for data layer. Handles common implementation including enabling/disabling layer and publishing results.\n */\nexport abstract class SceneDataLayerBase<T extends SceneDataLayerProviderState>\n extends SceneObjectBase<T>\n implements SceneDataLayerProvider\n{\n /**\n * Subscription to query results. Should be set when layer runs a query.\n */\n protected querySub?: Unsubscribable;\n\n /**\n * Subject to emit results to.\n */\n private _results = new ReplaySubject<SceneDataProviderResult>(1);\n\n /**\n * Implement logic for enabling the layer. This is called when layer is enabled or when layer is enabled when activated.\n * Use i.e. to setup subscriptions that will trigger layer updates.\n */\n public abstract onEnable(): void;\n\n /**\n * Implement logic for disabling the layer. This is called when layer is disabled.\n * Use i.e. to unsubscribe from subscriptions that trigger layer updates.\n */\n public abstract onDisable(): void;\n\n /**\n * Implement logic running the layer and setting up the querySub subscription.\n */\n protected abstract runLayer(): void;\n\n /**\n * Mark data provider as data layer\n */\n public isDataLayer: true = true;\n\n private _variableValueRecorder = new VariableValueRecorder();\n\n protected _variableDependency: VariableDependencyConfig<T> = new VariableDependencyConfig(this, {\n onVariableUpdateCompleted: this.onVariableUpdateCompleted.bind(this),\n });\n\n /**\n * For variables support in data layer provide variableDependencyStatePaths with keys of the state to be scanned for variables.\n */\n public constructor(initialState: T, variableDependencyStatePaths: Array<keyof T> = []) {\n super({\n isEnabled: true,\n ...initialState,\n });\n\n this._variableDependency.setPaths(variableDependencyStatePaths);\n this.addActivationHandler(() => this.onActivate());\n }\n\n protected onActivate(): CancelActivationHandler {\n if (this.state.isEnabled) {\n this.onEnable();\n }\n\n if (this.shouldRunLayerOnActivate()) {\n this.runLayer();\n }\n\n // Subscribe to layer state changes and enable/disable layer accordingly.\n this.subscribeToState((n, p) => {\n if (!n.isEnabled && this.querySub) {\n // When layer disabled, cancel query and call onDisable that should publish empty results.\n this.querySub.unsubscribe();\n this.querySub = undefined;\n this.onDisable();\n\n // Manually publishing the results to state and results stream as publishPublish results has a guard for the layer to be enabled.\n this._results.next({ origin: this, data: emptyPanelData });\n\n this.setStateHelper({ data: emptyPanelData });\n }\n\n if (n.isEnabled && !p.isEnabled) {\n // When layer enabled, run queries.\n this.onEnable();\n this.runLayer();\n }\n });\n\n return () => {\n this.onDeactivate();\n };\n }\n\n protected onDeactivate(): void {\n if (this.querySub) {\n this.querySub.unsubscribe();\n this.querySub = undefined;\n }\n\n this.onDisable();\n\n this._variableValueRecorder.recordCurrentDependencyValuesForSceneObject(this);\n }\n\n protected onVariableUpdateCompleted(): void {\n this.runLayer();\n }\n\n public cancelQuery() {\n if (this.querySub) {\n this.querySub.unsubscribe();\n this.querySub = undefined;\n\n this.publishResults(emptyPanelData);\n }\n }\n\n protected publishResults(data: PanelData) {\n if (this.state.isEnabled) {\n this._results.next({ origin: this, data });\n this.setStateHelper({ data });\n }\n }\n\n public getResultsStream() {\n return this._results;\n }\n\n private shouldRunLayerOnActivate() {\n if (!this.state.isEnabled) {\n return false;\n }\n\n if (this._variableValueRecorder.hasDependenciesChanged(this)) {\n writeSceneLog(\n 'SceneDataLayerBase',\n 'Variable dependency changed while inactive, shouldRunLayerOnActivate returns true'\n );\n return true;\n }\n\n if (!this.state.data) {\n return true;\n }\n\n return false;\n }\n\n /**\n * This helper function is to counter the contravariance of setState\n */\n private setStateHelper(state: Partial<SceneDataLayerProviderState>) {\n setBaseClassState<SceneDataLayerProviderState>(this, state);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SceneDataLayerBase.js","sources":["../../../../src/querying/layers/SceneDataLayerBase.ts"],"sourcesContent":["import { PanelData } from '@grafana/data';\nimport { ReplaySubject, Unsubscribable } from 'rxjs';\nimport { emptyPanelData } from '../../core/SceneDataNode';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport {\n CancelActivationHandler,\n SceneDataLayerProvider,\n SceneDataProviderResult,\n SceneDataLayerProviderState,\n} from '../../core/types';\nimport { setBaseClassState } from '../../utils/utils';\nimport { writeSceneLog } from '../../utils/writeSceneLog';\nimport { VariableDependencyConfig } from '../../variables/VariableDependencyConfig';\nimport { VariableValueRecorder } from '../../variables/VariableValueRecorder';\n\n/**\n * Base class for data layer. Handles common implementation including enabling/disabling layer and publishing results.\n */\nexport abstract class SceneDataLayerBase<T extends SceneDataLayerProviderState>\n extends SceneObjectBase<T>\n implements SceneDataLayerProvider\n{\n /**\n * Subscription to query results. Should be set when layer runs a query.\n */\n protected querySub?: Unsubscribable;\n\n /**\n * Subject to emit results to.\n */\n private _results = new ReplaySubject<SceneDataProviderResult>(1);\n\n /**\n * Implement logic for enabling the layer. This is called when layer is enabled or when layer is enabled when activated.\n * Use i.e. to setup subscriptions that will trigger layer updates.\n */\n public abstract onEnable(): void;\n\n /**\n * Implement logic for disabling the layer. This is called when layer is disabled.\n * Use i.e. to unsubscribe from subscriptions that trigger layer updates.\n */\n public abstract onDisable(): void;\n\n /**\n * Implement logic running the layer and setting up the querySub subscription.\n */\n protected abstract runLayer(): void;\n\n /**\n * Mark data provider as data layer\n */\n public isDataLayer: true = true;\n\n private _variableValueRecorder = new VariableValueRecorder();\n\n protected _variableDependency: VariableDependencyConfig<T> = new VariableDependencyConfig(this, {\n onVariableUpdateCompleted: this.onVariableUpdateCompleted.bind(this),\n });\n\n /**\n * For variables support in data layer provide variableDependencyStatePaths with keys of the state to be scanned for variables.\n */\n public constructor(initialState: T, variableDependencyStatePaths: Array<keyof T> = []) {\n super({\n isEnabled: true,\n ...initialState,\n });\n\n this._variableDependency.setPaths(variableDependencyStatePaths);\n this.addActivationHandler(() => this.onActivate());\n }\n\n protected onActivate(): CancelActivationHandler {\n if (this.state.isEnabled) {\n this.onEnable();\n }\n\n if (this.shouldRunLayerOnActivate()) {\n this.runLayer();\n }\n\n // Subscribe to layer state changes and enable/disable layer accordingly.\n this.subscribeToState((n, p) => {\n if (!n.isEnabled && this.querySub) {\n // When layer disabled, cancel query and call onDisable that should publish empty results.\n this.querySub.unsubscribe();\n this.querySub = undefined;\n this.onDisable();\n\n // Manually publishing the results to state and results stream as publishPublish results has a guard for the layer to be enabled.\n this._results.next({ origin: this, data: emptyPanelData });\n\n this.setStateHelper({ data: emptyPanelData });\n }\n\n if (n.isEnabled && !p.isEnabled) {\n // When layer enabled, run queries.\n this.onEnable();\n this.runLayer();\n }\n });\n\n return () => {\n this.onDeactivate();\n };\n }\n\n protected onDeactivate(): void {\n if (this.querySub) {\n this.querySub.unsubscribe();\n this.querySub = undefined;\n }\n\n this.onDisable();\n\n this._variableValueRecorder.recordCurrentDependencyValuesForSceneObject(this);\n }\n\n protected onVariableUpdateCompleted(): void {\n this.runLayer();\n }\n\n public cancelQuery() {\n if (this.querySub) {\n this.querySub.unsubscribe();\n this.querySub = undefined;\n\n this.publishResults(emptyPanelData);\n }\n }\n\n protected publishResults(data: PanelData) {\n if (this.state.isEnabled) {\n this._results.next({ origin: this, data });\n this.setStateHelper({ data });\n }\n }\n\n public getResultsStream() {\n return this._results;\n }\n\n private shouldRunLayerOnActivate() {\n if (!this.state.isEnabled) {\n return false;\n }\n\n if (this._variableValueRecorder.hasDependenciesChanged(this)) {\n writeSceneLog(\n 'SceneDataLayerBase',\n 'Variable dependency changed while inactive, shouldRunLayerOnActivate returns true'\n );\n return true;\n }\n\n if (!this.state.data) {\n return true;\n }\n\n return false;\n }\n\n /**\n * This helper function is to counter the contravariance of setState\n */\n private setStateHelper(state: Partial<SceneDataLayerProviderState>) {\n setBaseClassState<SceneDataLayerProviderState>(this, state);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -17,27 +17,33 @@ function SceneDataLayerControlsRenderer({ model }) {
17
17
  if (layers.length === 0) {
18
18
  return null;
19
19
  }
20
- return /* @__PURE__ */ React.createElement(React.Fragment, null, layers.map((layer) => /* @__PURE__ */ React.createElement(layer.Component, { model: layer, key: layer.state.key })));
20
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, layers.map((layer) => /* @__PURE__ */ React.createElement(layer.Component, {
21
+ model: layer,
22
+ key: layer.state.key
23
+ })));
21
24
  }
22
25
  function DataLayerControlSwitch({ layer }) {
23
26
  var _a, _b;
24
27
  const elementId = `data-layer-${layer.state.key}`;
25
28
  const { data, isEnabled } = layer.useState();
26
29
  const showLoading = Boolean(data && data.state === LoadingState.Loading);
27
- return /* @__PURE__ */ React.createElement("div", { className: containerStyle }, /* @__PURE__ */ React.createElement(
28
- ControlsLabel,
29
- {
30
- htmlFor: elementId,
31
- isLoading: showLoading,
32
- onCancel: () => {
33
- var _a2;
34
- return (_a2 = layer.cancelQuery) == null ? void 0 : _a2.call(layer);
35
- },
36
- label: layer.state.name,
37
- description: layer.state.description,
38
- error: (_b = (_a = layer.state.data) == null ? void 0 : _a.errors) == null ? void 0 : _b[0].message
39
- }
40
- ), /* @__PURE__ */ React.createElement(InlineSwitch, { id: elementId, value: isEnabled, onChange: () => layer.setState({ isEnabled: !isEnabled }) }));
30
+ return /* @__PURE__ */ React.createElement("div", {
31
+ className: containerStyle
32
+ }, /* @__PURE__ */ React.createElement(ControlsLabel, {
33
+ htmlFor: elementId,
34
+ isLoading: showLoading,
35
+ onCancel: () => {
36
+ var _a2;
37
+ return (_a2 = layer.cancelQuery) == null ? void 0 : _a2.call(layer);
38
+ },
39
+ label: layer.state.name,
40
+ description: layer.state.description,
41
+ error: (_b = (_a = layer.state.data) == null ? void 0 : _a.errors) == null ? void 0 : _b[0].message
42
+ }), /* @__PURE__ */ React.createElement(InlineSwitch, {
43
+ id: elementId,
44
+ value: isEnabled,
45
+ onChange: () => layer.setState({ isEnabled: !isEnabled })
46
+ }));
41
47
  }
42
48
  const containerStyle = css({ display: "flex" });
43
49
 
@@ -1 +1 @@
1
- {"version":3,"file":"SceneDataLayerControls.js","sources":["../../../../src/querying/layers/SceneDataLayerControls.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { LoadingState } from '@grafana/schema';\nimport { InlineSwitch } from '@grafana/ui';\nimport React from 'react';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneComponentProps, SceneDataLayerProvider, SceneObjectState } from '../../core/types';\nimport { ControlsLabel } from '../../utils/ControlsLabel';\n\ninterface SceneDataLayerControlsState extends SceneObjectState {}\n\nexport class SceneDataLayerControls extends SceneObjectBase<SceneDataLayerControlsState> {\n public static Component = SceneDataLayerControlsRenderer;\n\n public constructor() {\n super({});\n }\n}\n\nfunction SceneDataLayerControlsRenderer({ model }: SceneComponentProps<SceneDataLayerControls>) {\n const layers = sceneGraph.getDataLayers(model, true);\n\n if (layers.length === 0) {\n return null;\n }\n\n return (\n <>\n {layers.map((layer) => (\n <layer.Component model={layer} key={layer.state.key} />\n ))}\n </>\n );\n}\n\ninterface SceneDataLayerControlProps {\n layer: SceneDataLayerProvider;\n}\n\nexport function DataLayerControlSwitch({ layer }: SceneDataLayerControlProps) {\n const elementId = `data-layer-${layer.state.key}`;\n const { data, isEnabled } = layer.useState();\n const showLoading = Boolean(data && data.state === LoadingState.Loading);\n\n return (\n <div className={containerStyle}>\n <ControlsLabel\n htmlFor={elementId}\n isLoading={showLoading}\n onCancel={() => layer.cancelQuery?.()}\n label={layer.state.name}\n description={layer.state.description}\n error={layer.state.data?.errors?.[0].message}\n />\n <InlineSwitch id={elementId} value={isEnabled} onChange={() => layer.setState({ isEnabled: !isEnabled })} />\n </div>\n );\n}\n\nconst containerStyle = css({ display: 'flex' });\n"],"names":["_a"],"mappings":";;;;;;;;AAWO,MAAM,+BAA+B,eAA6C,CAAA;AAAA,EAGhF,WAAc,GAAA;AACnB,IAAA,KAAA,CAAM,EAAE,CAAA;AAAA;AAEZ;AANa,sBAAA,CACG,SAAY,GAAA,8BAAA;AAO5B,SAAS,8BAAA,CAA+B,EAAE,KAAA,EAAsD,EAAA;AAC9F,EAAA,MAAM,MAAS,GAAA,UAAA,CAAW,aAAc,CAAA,KAAA,EAAO,IAAI,CAAA;AAEnD,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,iEAEK,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,yCACV,KAAM,CAAA,SAAA,EAAN,EAAgB,KAAA,EAAO,OAAO,GAAK,EAAA,KAAA,CAAM,KAAM,CAAA,GAAA,EAAK,CACtD,CACH,CAAA;AAEJ;AAMgB,SAAA,sBAAA,CAAuB,EAAE,KAAA,EAAqC,EAAA;AAvC9E,EAAA,IAAA,EAAA,EAAA,EAAA;AAwCE,EAAA,MAAM,SAAY,GAAA,CAAA,WAAA,EAAc,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAU,EAAA,GAAI,MAAM,QAAS,EAAA;AAC3C,EAAA,MAAM,cAAc,OAAQ,CAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,KAAU,aAAa,OAAO,CAAA;AAEvE,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,cACd,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,SAAA;AAAA,MACT,SAAW,EAAA,WAAA;AAAA,MACX,UAAU,MAAG;AAjDrB,QAAAA,IAAAA,GAAAA;AAiDwB,QAAA,OAAA,CAAAA,GAAA,GAAA,KAAA,CAAM,WAAN,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA;AAAA,OAAA;AAAA,MAChB,KAAA,EAAO,MAAM,KAAM,CAAA,IAAA;AAAA,MACnB,WAAA,EAAa,MAAM,KAAM,CAAA,WAAA;AAAA,MACzB,QAAO,EAAM,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAM,SAAZ,IAAkB,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA,KAAlB,mBAA2B,CAAG,CAAA,CAAA;AAAA;AAAA,qBAEtC,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,EAAI,EAAA,SAAA,EAAW,OAAO,SAAW,EAAA,QAAA,EAAU,MAAM,KAAA,CAAM,SAAS,EAAE,SAAA,EAAW,CAAC,SAAU,EAAC,GAAG,CAC5G,CAAA;AAEJ;AAEA,MAAM,cAAiB,GAAA,GAAA,CAAI,EAAE,OAAA,EAAS,QAAQ,CAAA;;;;"}
1
+ {"version":3,"file":"SceneDataLayerControls.js","sources":["../../../../src/querying/layers/SceneDataLayerControls.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { LoadingState } from '@grafana/schema';\nimport { InlineSwitch } from '@grafana/ui';\nimport React from 'react';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneComponentProps, SceneDataLayerProvider, SceneObjectState } from '../../core/types';\nimport { ControlsLabel } from '../../utils/ControlsLabel';\n\ninterface SceneDataLayerControlsState extends SceneObjectState {}\n\nexport class SceneDataLayerControls extends SceneObjectBase<SceneDataLayerControlsState> {\n public static Component = SceneDataLayerControlsRenderer;\n\n public constructor() {\n super({});\n }\n}\n\nfunction SceneDataLayerControlsRenderer({ model }: SceneComponentProps<SceneDataLayerControls>) {\n const layers = sceneGraph.getDataLayers(model, true);\n\n if (layers.length === 0) {\n return null;\n }\n\n return (\n <>\n {layers.map((layer) => (\n <layer.Component model={layer} key={layer.state.key} />\n ))}\n </>\n );\n}\n\ninterface SceneDataLayerControlProps {\n layer: SceneDataLayerProvider;\n}\n\nexport function DataLayerControlSwitch({ layer }: SceneDataLayerControlProps) {\n const elementId = `data-layer-${layer.state.key}`;\n const { data, isEnabled } = layer.useState();\n const showLoading = Boolean(data && data.state === LoadingState.Loading);\n\n return (\n <div className={containerStyle}>\n <ControlsLabel\n htmlFor={elementId}\n isLoading={showLoading}\n onCancel={() => layer.cancelQuery?.()}\n label={layer.state.name}\n description={layer.state.description}\n error={layer.state.data?.errors?.[0].message}\n />\n <InlineSwitch id={elementId} value={isEnabled} onChange={() => layer.setState({ isEnabled: !isEnabled })} />\n </div>\n );\n}\n\nconst containerStyle = css({ display: 'flex' });\n"],"names":["_a"],"mappings":";;;;;;;;AAWO,MAAM,+BAA+B,eAA6C,CAAA;AAAA,EAGhF,WAAc,GAAA;AACnB,IAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AAAA,GACV;AACF,CAAA;AANa,sBAAA,CACG,SAAY,GAAA,8BAAA,CAAA;AAO5B,SAAS,8BAAA,CAA+B,EAAE,KAAA,EAAsD,EAAA;AAC9F,EAAA,MAAM,MAAS,GAAA,UAAA,CAAW,aAAc,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAEnD,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACvB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,iEAEK,MAAO,CAAA,GAAA,CAAI,CAAC,KACX,qBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,SAAN,EAAA;AAAA,IAAgB,KAAO,EAAA,KAAA;AAAA,IAAO,GAAA,EAAK,MAAM,KAAM,CAAA,GAAA;AAAA,GAAK,CACtD,CACH,CAAA,CAAA;AAEJ,CAAA;AAMgB,SAAA,sBAAA,CAAuB,EAAE,KAAA,EAAqC,EAAA;AAvC9E,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAwCE,EAAM,MAAA,SAAA,GAAY,CAAc,WAAA,EAAA,KAAA,CAAM,KAAM,CAAA,GAAA,CAAA,CAAA,CAAA;AAC5C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAU,EAAA,GAAI,MAAM,QAAS,EAAA,CAAA;AAC3C,EAAA,MAAM,cAAc,OAAQ,CAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,KAAU,aAAa,OAAO,CAAA,CAAA;AAEvE,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAW,EAAA,cAAA;AAAA,GAAA,kBACb,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA;AAAA,IACC,OAAS,EAAA,SAAA;AAAA,IACT,SAAW,EAAA,WAAA;AAAA,IACX,UAAU,MAAG;AAjDrB,MAAAA,IAAAA,GAAAA,CAAAA;AAiDwB,MAAA,OAAA,CAAAA,GAAA,GAAA,KAAA,CAAM,WAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAChB,KAAA,EAAO,MAAM,KAAM,CAAA,IAAA;AAAA,IACnB,WAAA,EAAa,MAAM,KAAM,CAAA,WAAA;AAAA,IACzB,QAAO,EAAM,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAM,SAAZ,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KAAlB,mBAA2B,CAAG,CAAA,CAAA,OAAA;AAAA,GACvC,mBACC,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA;AAAA,IAAa,EAAI,EAAA,SAAA;AAAA,IAAW,KAAO,EAAA,SAAA;AAAA,IAAW,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA,CAAS,EAAE,SAAW,EAAA,CAAC,WAAW,CAAA;AAAA,GAAG,CAC5G,CAAA,CAAA;AAEJ,CAAA;AAEA,MAAM,cAAiB,GAAA,GAAA,CAAI,EAAE,OAAA,EAAS,QAAQ,CAAA;;;;"}
@@ -15,13 +15,31 @@ import { postProcessQueryResult, dedupAnnotations } from './utils.js';
15
15
  import { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject.js';
16
16
  import { RefreshEvent } from '@grafana/runtime';
17
17
 
18
+ var __defProp = Object.defineProperty;
19
+ var __defProps = Object.defineProperties;
20
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
21
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
22
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
23
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
24
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
25
+ var __spreadValues = (a, b) => {
26
+ for (var prop in b || (b = {}))
27
+ if (__hasOwnProp.call(b, prop))
28
+ __defNormalProp(a, prop, b[prop]);
29
+ if (__getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(b)) {
31
+ if (__propIsEnum.call(b, prop))
32
+ __defNormalProp(a, prop, b[prop]);
33
+ }
34
+ return a;
35
+ };
36
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
18
37
  class AnnotationsDataLayer extends SceneDataLayerBase {
19
38
  constructor(initialState) {
20
39
  super(
21
- {
22
- isEnabled: true,
23
- ...initialState
24
- },
40
+ __spreadValues({
41
+ isEnabled: true
42
+ }, initialState),
25
43
  ["query"]
26
44
  );
27
45
  this._scopedVars = {
@@ -71,15 +89,14 @@ class AnnotationsDataLayer extends SceneDataLayerBase {
71
89
  this.publishResults(stateUpdate);
72
90
  });
73
91
  } catch (e) {
74
- this.publishResults({
75
- ...emptyPanelData,
92
+ this.publishResults(__spreadProps(__spreadValues({}, emptyPanelData), {
76
93
  state: LoadingState.Error,
77
94
  errors: [
78
95
  {
79
96
  message: getMessageFromError(e)
80
97
  }
81
98
  ]
82
- });
99
+ }));
83
100
  console.error("AnnotationsDataLayer error", e);
84
101
  }
85
102
  }
@@ -89,12 +106,11 @@ class AnnotationsDataLayer extends SceneDataLayerBase {
89
106
  processEvents(query, events) {
90
107
  let processedEvents = postProcessQueryResult(query, events.events || []);
91
108
  processedEvents = dedupAnnotations(processedEvents);
92
- const stateUpdate = { ...emptyPanelData, state: events.state };
109
+ const stateUpdate = __spreadProps(__spreadValues({}, emptyPanelData), { state: events.state });
93
110
  const df = arrayToDataFrame(processedEvents);
94
- df.meta = {
95
- ...df.meta,
111
+ df.meta = __spreadProps(__spreadValues({}, df.meta), {
96
112
  dataTopic: DataTopic.Annotations
97
- };
113
+ });
98
114
  stateUpdate.series = [df];
99
115
  return stateUpdate;
100
116
  }
@@ -105,7 +121,9 @@ function AnnotationsDataLayerRenderer({ model }) {
105
121
  if (isHidden) {
106
122
  return null;
107
123
  }
108
- return /* @__PURE__ */ React.createElement(DataLayerControlSwitch, { layer: model });
124
+ return /* @__PURE__ */ React.createElement(DataLayerControlSwitch, {
125
+ layer: model
126
+ });
109
127
  }
110
128
 
111
129
  export { AnnotationsDataLayer };
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotationsDataLayer.js","sources":["../../../../../src/querying/layers/annotations/AnnotationsDataLayer.tsx"],"sourcesContent":["import { arrayToDataFrame, DataTopic, AnnotationQuery, ScopedVars, PanelData } from '@grafana/data';\nimport { LoadingState } from '@grafana/schema';\nimport React from 'react';\nimport { map, Unsubscribable } from 'rxjs';\nimport { emptyPanelData } from '../../../core/SceneDataNode';\nimport { sceneGraph } from '../../../core/sceneGraph';\nimport {\n SceneComponentProps,\n SceneDataLayerProvider,\n SceneDataLayerProviderState,\n SceneTimeRangeLike,\n} from '../../../core/types';\nimport { getDataSource } from '../../../utils/getDataSource';\nimport { getMessageFromError } from '../../../utils/getMessageFromError';\nimport { writeSceneLog } from '../../../utils/writeSceneLog';\nimport { registerQueryWithController } from '../../registerQueryWithController';\nimport { SceneDataLayerBase } from '../SceneDataLayerBase';\nimport { DataLayerControlSwitch } from '../SceneDataLayerControls';\nimport { AnnotationQueryResults, executeAnnotationQuery } from './standardAnnotationQuery';\nimport { dedupAnnotations, postProcessQueryResult } from './utils';\nimport { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject';\nimport { RefreshEvent } from '@grafana/runtime';\n\ninterface AnnotationsDataLayerState extends SceneDataLayerProviderState {\n query: AnnotationQuery;\n}\n\nexport class AnnotationsDataLayer\n extends SceneDataLayerBase<AnnotationsDataLayerState>\n implements SceneDataLayerProvider\n{\n static Component = AnnotationsDataLayerRenderer;\n\n private _scopedVars: ScopedVars = {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n };\n private _timeRangeSub: Unsubscribable | undefined;\n\n public constructor(initialState: AnnotationsDataLayerState) {\n super(\n {\n isEnabled: true,\n ...initialState,\n },\n ['query']\n );\n }\n\n public onEnable(): void {\n this.publishEvent(new RefreshEvent(), true);\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n this._timeRangeSub = timeRange.subscribeToState(() => {\n this.runWithTimeRange(timeRange);\n });\n }\n\n public onDisable(): void {\n this.publishEvent(new RefreshEvent(), true);\n\n this._timeRangeSub?.unsubscribe();\n }\n\n public runLayer() {\n writeSceneLog('AnnotationsDataLayer', 'run layer');\n const timeRange = sceneGraph.getTimeRange(this);\n this.runWithTimeRange(timeRange);\n }\n\n private async runWithTimeRange(timeRange: SceneTimeRangeLike) {\n const { query } = this.state;\n\n if (this.querySub) {\n this.querySub.unsubscribe();\n }\n\n if (this._variableDependency.hasDependencyInLoadingState()) {\n writeSceneLog('AnnotationsDataLayer', 'Variable dependency is in loading state, skipping query execution');\n return;\n }\n\n try {\n const ds = await this.resolveDataSource(query);\n\n let stream = executeAnnotationQuery(ds, timeRange, query, this).pipe(\n registerQueryWithController({\n type: 'annotations',\n origin: this,\n cancel: () => this.cancelQuery(),\n }),\n map((events) => {\n const stateUpdate = this.processEvents(query, events);\n return stateUpdate;\n })\n );\n\n this.querySub = stream.subscribe((stateUpdate) => {\n this.publishResults(stateUpdate);\n });\n } catch (e) {\n this.publishResults({\n ...emptyPanelData,\n state: LoadingState.Error,\n errors: [\n {\n message: getMessageFromError(e),\n },\n ],\n });\n console.error('AnnotationsDataLayer error', e);\n }\n }\n\n protected async resolveDataSource(query: AnnotationQuery) {\n return await getDataSource(query.datasource || undefined, this._scopedVars);\n }\n\n protected processEvents(query: AnnotationQuery, events: AnnotationQueryResults): PanelData {\n let processedEvents = postProcessQueryResult(query, events.events || []);\n processedEvents = dedupAnnotations(processedEvents);\n\n const stateUpdate = { ...emptyPanelData, state: events.state };\n const df = arrayToDataFrame(processedEvents);\n\n df.meta = {\n ...df.meta,\n dataTopic: DataTopic.Annotations,\n };\n\n stateUpdate.series = [df];\n\n return stateUpdate;\n }\n}\n\nfunction AnnotationsDataLayerRenderer({ model }: SceneComponentProps<AnnotationsDataLayer>) {\n const { isHidden } = model.useState();\n\n if (isHidden) {\n return null;\n }\n\n return <DataLayerControlSwitch layer={model} />;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AnnotationsDataLayer.js","sources":["../../../../../src/querying/layers/annotations/AnnotationsDataLayer.tsx"],"sourcesContent":["import { arrayToDataFrame, DataTopic, AnnotationQuery, ScopedVars, PanelData } from '@grafana/data';\nimport { LoadingState } from '@grafana/schema';\nimport React from 'react';\nimport { map, Unsubscribable } from 'rxjs';\nimport { emptyPanelData } from '../../../core/SceneDataNode';\nimport { sceneGraph } from '../../../core/sceneGraph';\nimport {\n SceneComponentProps,\n SceneDataLayerProvider,\n SceneDataLayerProviderState,\n SceneTimeRangeLike,\n} from '../../../core/types';\nimport { getDataSource } from '../../../utils/getDataSource';\nimport { getMessageFromError } from '../../../utils/getMessageFromError';\nimport { writeSceneLog } from '../../../utils/writeSceneLog';\nimport { registerQueryWithController } from '../../registerQueryWithController';\nimport { SceneDataLayerBase } from '../SceneDataLayerBase';\nimport { DataLayerControlSwitch } from '../SceneDataLayerControls';\nimport { AnnotationQueryResults, executeAnnotationQuery } from './standardAnnotationQuery';\nimport { dedupAnnotations, postProcessQueryResult } from './utils';\nimport { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject';\nimport { RefreshEvent } from '@grafana/runtime';\n\ninterface AnnotationsDataLayerState extends SceneDataLayerProviderState {\n query: AnnotationQuery;\n}\n\nexport class AnnotationsDataLayer\n extends SceneDataLayerBase<AnnotationsDataLayerState>\n implements SceneDataLayerProvider\n{\n static Component = AnnotationsDataLayerRenderer;\n\n private _scopedVars: ScopedVars = {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n };\n private _timeRangeSub: Unsubscribable | undefined;\n\n public constructor(initialState: AnnotationsDataLayerState) {\n super(\n {\n isEnabled: true,\n ...initialState,\n },\n ['query']\n );\n }\n\n public onEnable(): void {\n this.publishEvent(new RefreshEvent(), true);\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n this._timeRangeSub = timeRange.subscribeToState(() => {\n this.runWithTimeRange(timeRange);\n });\n }\n\n public onDisable(): void {\n this.publishEvent(new RefreshEvent(), true);\n\n this._timeRangeSub?.unsubscribe();\n }\n\n public runLayer() {\n writeSceneLog('AnnotationsDataLayer', 'run layer');\n const timeRange = sceneGraph.getTimeRange(this);\n this.runWithTimeRange(timeRange);\n }\n\n private async runWithTimeRange(timeRange: SceneTimeRangeLike) {\n const { query } = this.state;\n\n if (this.querySub) {\n this.querySub.unsubscribe();\n }\n\n if (this._variableDependency.hasDependencyInLoadingState()) {\n writeSceneLog('AnnotationsDataLayer', 'Variable dependency is in loading state, skipping query execution');\n return;\n }\n\n try {\n const ds = await this.resolveDataSource(query);\n\n let stream = executeAnnotationQuery(ds, timeRange, query, this).pipe(\n registerQueryWithController({\n type: 'annotations',\n origin: this,\n cancel: () => this.cancelQuery(),\n }),\n map((events) => {\n const stateUpdate = this.processEvents(query, events);\n return stateUpdate;\n })\n );\n\n this.querySub = stream.subscribe((stateUpdate) => {\n this.publishResults(stateUpdate);\n });\n } catch (e) {\n this.publishResults({\n ...emptyPanelData,\n state: LoadingState.Error,\n errors: [\n {\n message: getMessageFromError(e),\n },\n ],\n });\n console.error('AnnotationsDataLayer error', e);\n }\n }\n\n protected async resolveDataSource(query: AnnotationQuery) {\n return await getDataSource(query.datasource || undefined, this._scopedVars);\n }\n\n protected processEvents(query: AnnotationQuery, events: AnnotationQueryResults): PanelData {\n let processedEvents = postProcessQueryResult(query, events.events || []);\n processedEvents = dedupAnnotations(processedEvents);\n\n const stateUpdate = { ...emptyPanelData, state: events.state };\n const df = arrayToDataFrame(processedEvents);\n\n df.meta = {\n ...df.meta,\n dataTopic: DataTopic.Annotations,\n };\n\n stateUpdate.series = [df];\n\n return stateUpdate;\n }\n}\n\nfunction AnnotationsDataLayerRenderer({ model }: SceneComponentProps<AnnotationsDataLayer>) {\n const { isHidden } = model.useState();\n\n if (isHidden) {\n return null;\n }\n\n return <DataLayerControlSwitch layer={model} />;\n}\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,22 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
1
20
  const GLOBAL_ANNOTATION_ID = 0;
2
21
  function filterAnnotations(data, filters) {
3
22
  var _a;
@@ -49,16 +68,14 @@ function filterAnnotations(data, filters) {
49
68
  continue;
50
69
  }
51
70
  }
52
- fields.push({
53
- ...field,
71
+ fields.push(__spreadProps(__spreadValues({}, field), {
54
72
  values: buffer
55
- });
73
+ }));
56
74
  }
57
- processed.push({
58
- ...frame,
75
+ processed.push(__spreadProps(__spreadValues({}, frame), {
59
76
  fields,
60
77
  length: frameLength
61
- });
78
+ }));
62
79
  frameIdx++;
63
80
  }
64
81
  return processed;
@@ -1 +1 @@
1
- {"version":3,"file":"filterAnnotations.js","sources":["../../../../../src/querying/layers/annotations/filterAnnotations.ts"],"sourcesContent":["import { DataFrame, Field } from '@grafana/data';\nimport { DataLayerFilter } from '../../../core/types';\n\nconst GLOBAL_ANNOTATION_ID = 0;\n\n// Provided SceneDataLayerProviderResult is an array of DataFrames.\nexport function filterAnnotations(data: DataFrame[], filters: DataLayerFilter) {\n if (!Array.isArray(data) || data.length === 0) {\n return data;\n }\n\n const rows = Array.from({ length: data.length }, () => new Set<number>());\n\n let frameIdx = 0;\n for (const frame of data) {\n for (let index = 0; index < frame.length; index++) {\n if (rows[frameIdx].has(index)) {\n continue;\n }\n let matching = true;\n\n // Let's call those standard fields that annotations data frame has.\n // panelId is a standard field, but it's not always present. It's added to annotations that were added to a particular panel.\n const panelIdField = frame.fields.find((f) => f.name === 'panelId');\n // Source field contains annotation definition, with type and filters included.\n const sourceField = frame.fields.find((f) => f.name === 'source');\n\n if (sourceField) {\n // Here we are filtering Grafana annotations that were added to a particular panel.\n if (panelIdField && sourceField.values[index].type === 'dashboard') {\n matching = [filters.panelId, GLOBAL_ANNOTATION_ID].includes(panelIdField.values[index]);\n }\n\n const sourceFilter = sourceField.values[index].filter;\n\n // Here we are filtering based on annotation filter definition.\n // Those filters are: Show annotation in selected panels, Exclude annotation from selected panels.\n if (sourceFilter) {\n const includes = [...(sourceFilter.ids ?? []), GLOBAL_ANNOTATION_ID].includes(filters.panelId);\n if (sourceFilter.exclude) {\n if (includes) {\n matching = false;\n }\n } else if (!includes) {\n matching = false;\n }\n }\n }\n\n if (matching) {\n rows[frameIdx].add(index);\n }\n }\n frameIdx++;\n }\n\n const processed: DataFrame[] = [];\n\n frameIdx = 0;\n for (const frame of data) {\n const frameLength = rows[frameIdx].size;\n const fields: Field[] = [];\n\n for (const field of frame.fields) {\n const buffer = [];\n\n for (let index = 0; index < frame.length; index++) {\n if (rows[frameIdx].has(index)) {\n buffer.push(field.values[index]);\n continue;\n }\n }\n\n fields.push({\n ...field,\n values: buffer,\n });\n }\n\n processed.push({\n ...frame,\n fields: fields,\n length: frameLength,\n });\n frameIdx++;\n }\n\n return processed;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filterAnnotations.js","sources":["../../../../../src/querying/layers/annotations/filterAnnotations.ts"],"sourcesContent":["import { DataFrame, Field } from '@grafana/data';\nimport { DataLayerFilter } from '../../../core/types';\n\nconst GLOBAL_ANNOTATION_ID = 0;\n\n// Provided SceneDataLayerProviderResult is an array of DataFrames.\nexport function filterAnnotations(data: DataFrame[], filters: DataLayerFilter) {\n if (!Array.isArray(data) || data.length === 0) {\n return data;\n }\n\n const rows = Array.from({ length: data.length }, () => new Set<number>());\n\n let frameIdx = 0;\n for (const frame of data) {\n for (let index = 0; index < frame.length; index++) {\n if (rows[frameIdx].has(index)) {\n continue;\n }\n let matching = true;\n\n // Let's call those standard fields that annotations data frame has.\n // panelId is a standard field, but it's not always present. It's added to annotations that were added to a particular panel.\n const panelIdField = frame.fields.find((f) => f.name === 'panelId');\n // Source field contains annotation definition, with type and filters included.\n const sourceField = frame.fields.find((f) => f.name === 'source');\n\n if (sourceField) {\n // Here we are filtering Grafana annotations that were added to a particular panel.\n if (panelIdField && sourceField.values[index].type === 'dashboard') {\n matching = [filters.panelId, GLOBAL_ANNOTATION_ID].includes(panelIdField.values[index]);\n }\n\n const sourceFilter = sourceField.values[index].filter;\n\n // Here we are filtering based on annotation filter definition.\n // Those filters are: Show annotation in selected panels, Exclude annotation from selected panels.\n if (sourceFilter) {\n const includes = [...(sourceFilter.ids ?? []), GLOBAL_ANNOTATION_ID].includes(filters.panelId);\n if (sourceFilter.exclude) {\n if (includes) {\n matching = false;\n }\n } else if (!includes) {\n matching = false;\n }\n }\n }\n\n if (matching) {\n rows[frameIdx].add(index);\n }\n }\n frameIdx++;\n }\n\n const processed: DataFrame[] = [];\n\n frameIdx = 0;\n for (const frame of data) {\n const frameLength = rows[frameIdx].size;\n const fields: Field[] = [];\n\n for (const field of frame.fields) {\n const buffer = [];\n\n for (let index = 0; index < frame.length; index++) {\n if (rows[frameIdx].has(index)) {\n buffer.push(field.values[index]);\n continue;\n }\n }\n\n fields.push({\n ...field,\n values: buffer,\n });\n }\n\n processed.push({\n ...frame,\n fields: fields,\n length: frameLength,\n });\n frameIdx++;\n }\n\n return processed;\n}\n"],"names":[],"mappings":"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"}
@@ -7,6 +7,25 @@ import { LoadingState } from '@grafana/schema';
7
7
  import { getEnrichedDataRequest } from '../../getEnrichedDataRequest.js';
8
8
  import { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject.js';
9
9
 
10
+ var __defProp = Object.defineProperty;
11
+ var __defProps = Object.defineProperties;
12
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
13
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
14
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
15
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
16
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
17
+ var __spreadValues = (a, b) => {
18
+ for (var prop in b || (b = {}))
19
+ if (__hasOwnProp.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ if (__getOwnPropSymbols)
22
+ for (var prop of __getOwnPropSymbols(b)) {
23
+ if (__propIsEnum.call(b, prop))
24
+ __defNormalProp(a, prop, b[prop]);
25
+ }
26
+ return a;
27
+ };
28
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
10
29
  let counter = 100;
11
30
  function getNextRequestId() {
12
31
  return "AQ" + counter++;
@@ -31,15 +50,8 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
31
50
  }))
32
51
  );
33
52
  }
34
- const processor = {
35
- ...standardAnnotationSupport,
36
- ...datasource.annotations
37
- };
38
- const annotationWithDefaults = {
39
- // Default query provided by a data source
40
- ...(_a = processor.getDefaultQuery) == null ? void 0 : _a.call(processor),
41
- ...query
42
- };
53
+ const processor = __spreadValues(__spreadValues({}, standardAnnotationSupport), datasource.annotations);
54
+ const annotationWithDefaults = __spreadValues(__spreadValues({}, (_a = processor.getDefaultQuery) == null ? void 0 : _a.call(processor)), query);
43
55
  const annotation = processor.prepareAnnotation(annotationWithDefaults);
44
56
  if (!annotation) {
45
57
  return of({
@@ -62,23 +74,21 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
62
74
  __annotation: { text: annotation.name, value: annotation },
63
75
  __sceneObject: wrapInSafeSerializableSceneObject(layer)
64
76
  };
65
- const queryRequest = {
77
+ const queryRequest = __spreadValues(__spreadProps(__spreadValues({
66
78
  startTime: Date.now(),
67
79
  requestId: getNextRequestId(),
68
80
  range: timeRange.state.value,
69
81
  maxDataPoints,
70
- scopedVars,
71
- ...interval,
82
+ scopedVars
83
+ }, interval), {
72
84
  app: CoreApp.Dashboard,
73
85
  timezone: timeRange.getTimeZone(),
74
86
  targets: [
75
- {
76
- ...processedQuery,
87
+ __spreadProps(__spreadValues({}, processedQuery), {
77
88
  refId: "Anno"
78
- }
79
- ],
80
- ...getEnrichedDataRequest(layer)
81
- };
89
+ })
90
+ ]
91
+ }), getEnrichedDataRequest(layer));
82
92
  const runRequest = getRunRequest();
83
93
  return runRequest(datasource, queryRequest).pipe(
84
94
  mergeMap((panelData) => {
@@ -92,7 +102,7 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
92
102
  data.forEach((frame) => {
93
103
  var _a2;
94
104
  if (!((_a2 = frame.meta) == null ? void 0 : _a2.dataTopic)) {
95
- frame.meta = { ...frame.meta || {}, dataTopic: DataTopic.Annotations };
105
+ frame.meta = __spreadProps(__spreadValues({}, frame.meta || {}), { dataTopic: DataTopic.Annotations });
96
106
  }
97
107
  });
98
108
  return processor.processEvents(annotation, data).pipe(
@@ -1 +1 @@
1
- {"version":3,"file":"standardAnnotationQuery.js","sources":["../../../../../src/querying/layers/annotations/standardAnnotationQuery.ts"],"sourcesContent":["import { from, Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport {\n AnnotationEvent,\n AnnotationQuery,\n CoreApp,\n DataQueryRequest,\n DataSourceApi,\n DataTopic,\n PanelModel,\n rangeUtil,\n ScopedVars,\n} from '@grafana/data';\n\nimport { getRunRequest, getTemplateSrv } from '@grafana/runtime';\nimport { shouldUseLegacyRunner, standardAnnotationSupport } from './standardAnnotationsSupport';\nimport { Dashboard, LoadingState } from '@grafana/schema';\nimport { SceneObject, SceneTimeRangeLike } from '../../../core/types';\nimport { getEnrichedDataRequest } from '../../getEnrichedDataRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject';\n\nlet counter = 100;\nfunction getNextRequestId() {\n return 'AQ' + counter++;\n}\n\nexport interface AnnotationQueryOptions {\n dashboard: Dashboard;\n panel: PanelModel;\n}\n\nexport interface AnnotationQueryResults {\n state: LoadingState;\n events: AnnotationEvent[];\n}\n\nexport function executeAnnotationQuery(\n datasource: DataSourceApi,\n timeRange: SceneTimeRangeLike,\n query: AnnotationQuery,\n layer: SceneObject\n): Observable<AnnotationQueryResults> {\n // Check if we should use the old annotationQuery method\n if (datasource.annotationQuery && shouldUseLegacyRunner(datasource)) {\n console.warn('Using deprecated annotationQuery method, please upgrade your datasource');\n return from(\n datasource.annotationQuery({\n range: timeRange.state.value,\n rangeRaw: timeRange.state.value.raw,\n annotation: query,\n dashboard: {\n getVariables: getTemplateSrv().getVariables,\n },\n })\n ).pipe(\n map((events) => ({\n state: LoadingState.Done,\n events,\n }))\n );\n }\n\n // Standard API for annotations support. Spread in datasource annotations support overrides\n const processor = {\n ...standardAnnotationSupport,\n ...datasource.annotations,\n };\n\n const annotationWithDefaults = {\n // Default query provided by a data source\n ...processor.getDefaultQuery?.(),\n ...query,\n };\n\n // Data source query migrations\n const annotation = processor.prepareAnnotation!(annotationWithDefaults);\n if (!annotation) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n const processedQuery = processor.prepareQuery!(annotation);\n if (!processedQuery) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n // No more points than pixels\n const maxDataPoints = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n\n // Add interval to annotation queries\n const interval = rangeUtil.calculateInterval(timeRange.state.value, maxDataPoints, datasource.interval);\n\n const scopedVars: ScopedVars = {\n __interval: { text: interval.interval, value: interval.interval },\n __interval_ms: { text: interval.intervalMs.toString(), value: interval.intervalMs },\n __annotation: { text: annotation.name, value: annotation },\n __sceneObject: wrapInSafeSerializableSceneObject(layer),\n };\n\n const queryRequest: DataQueryRequest = {\n startTime: Date.now(),\n requestId: getNextRequestId(),\n range: timeRange.state.value,\n maxDataPoints,\n scopedVars,\n ...interval,\n app: CoreApp.Dashboard,\n timezone: timeRange.getTimeZone(),\n targets: [\n {\n ...processedQuery,\n refId: 'Anno',\n },\n ],\n ...getEnrichedDataRequest(layer),\n };\n\n const runRequest = getRunRequest();\n\n return runRequest(datasource, queryRequest).pipe(\n mergeMap((panelData) => {\n // Some annotations set the topic already\n const data = panelData?.series.length ? panelData.series : panelData.annotations;\n\n if (!data?.length) {\n return of({\n state: panelData.state,\n events: [],\n });\n }\n\n // Add data topic to each frame\n data.forEach((frame) => {\n // If data topic has not been provided by the data source, make sure it's set correctly\n if (!frame.meta?.dataTopic) {\n frame.meta = { ...(frame.meta || {}), dataTopic: DataTopic.Annotations };\n }\n });\n\n return processor.processEvents!(annotation, data).pipe(\n map((events) => {\n return {\n state: panelData.state,\n events: events || [],\n };\n })\n );\n })\n );\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"standardAnnotationQuery.js","sources":["../../../../../src/querying/layers/annotations/standardAnnotationQuery.ts"],"sourcesContent":["import { from, Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport {\n AnnotationEvent,\n AnnotationQuery,\n CoreApp,\n DataQueryRequest,\n DataSourceApi,\n DataTopic,\n PanelModel,\n rangeUtil,\n ScopedVars,\n} from '@grafana/data';\n\nimport { getRunRequest, getTemplateSrv } from '@grafana/runtime';\nimport { shouldUseLegacyRunner, standardAnnotationSupport } from './standardAnnotationsSupport';\nimport { Dashboard, LoadingState } from '@grafana/schema';\nimport { SceneObject, SceneTimeRangeLike } from '../../../core/types';\nimport { getEnrichedDataRequest } from '../../getEnrichedDataRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject';\n\nlet counter = 100;\nfunction getNextRequestId() {\n return 'AQ' + counter++;\n}\n\nexport interface AnnotationQueryOptions {\n dashboard: Dashboard;\n panel: PanelModel;\n}\n\nexport interface AnnotationQueryResults {\n state: LoadingState;\n events: AnnotationEvent[];\n}\n\nexport function executeAnnotationQuery(\n datasource: DataSourceApi,\n timeRange: SceneTimeRangeLike,\n query: AnnotationQuery,\n layer: SceneObject\n): Observable<AnnotationQueryResults> {\n // Check if we should use the old annotationQuery method\n if (datasource.annotationQuery && shouldUseLegacyRunner(datasource)) {\n console.warn('Using deprecated annotationQuery method, please upgrade your datasource');\n return from(\n datasource.annotationQuery({\n range: timeRange.state.value,\n rangeRaw: timeRange.state.value.raw,\n annotation: query,\n dashboard: {\n getVariables: getTemplateSrv().getVariables,\n },\n })\n ).pipe(\n map((events) => ({\n state: LoadingState.Done,\n events,\n }))\n );\n }\n\n // Standard API for annotations support. Spread in datasource annotations support overrides\n const processor = {\n ...standardAnnotationSupport,\n ...datasource.annotations,\n };\n\n const annotationWithDefaults = {\n // Default query provided by a data source\n ...processor.getDefaultQuery?.(),\n ...query,\n };\n\n // Data source query migrations\n const annotation = processor.prepareAnnotation!(annotationWithDefaults);\n if (!annotation) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n const processedQuery = processor.prepareQuery!(annotation);\n if (!processedQuery) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n // No more points than pixels\n const maxDataPoints = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n\n // Add interval to annotation queries\n const interval = rangeUtil.calculateInterval(timeRange.state.value, maxDataPoints, datasource.interval);\n\n const scopedVars: ScopedVars = {\n __interval: { text: interval.interval, value: interval.interval },\n __interval_ms: { text: interval.intervalMs.toString(), value: interval.intervalMs },\n __annotation: { text: annotation.name, value: annotation },\n __sceneObject: wrapInSafeSerializableSceneObject(layer),\n };\n\n const queryRequest: DataQueryRequest = {\n startTime: Date.now(),\n requestId: getNextRequestId(),\n range: timeRange.state.value,\n maxDataPoints,\n scopedVars,\n ...interval,\n app: CoreApp.Dashboard,\n timezone: timeRange.getTimeZone(),\n targets: [\n {\n ...processedQuery,\n refId: 'Anno',\n },\n ],\n ...getEnrichedDataRequest(layer),\n };\n\n const runRequest = getRunRequest();\n\n return runRequest(datasource, queryRequest).pipe(\n mergeMap((panelData) => {\n // Some annotations set the topic already\n const data = panelData?.series.length ? panelData.series : panelData.annotations;\n\n if (!data?.length) {\n return of({\n state: panelData.state,\n events: [],\n });\n }\n\n // Add data topic to each frame\n data.forEach((frame) => {\n // If data topic has not been provided by the data source, make sure it's set correctly\n if (!frame.meta?.dataTopic) {\n frame.meta = { ...(frame.meta || {}), dataTopic: DataTopic.Annotations };\n }\n });\n\n return processor.processEvents!(annotation, data).pipe(\n map((events) => {\n return {\n state: panelData.state,\n events: events || [],\n };\n })\n );\n })\n );\n}\n"],"names":["_a"],"mappings":"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"}
@@ -4,31 +4,52 @@ import { map, mergeMap } from 'rxjs/operators';
4
4
  import { FieldType, getFieldDisplayName, AnnotationEventFieldSource, standardTransformers } from '@grafana/data';
5
5
  import { config } from '@grafana/runtime';
6
6
 
7
+ var __defProp = Object.defineProperty;
8
+ var __defProps = Object.defineProperties;
9
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __objRest = (source, exclude) => {
27
+ var target = {};
28
+ for (var prop in source)
29
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
+ target[prop] = source[prop];
31
+ if (source != null && __getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
+ target[prop] = source[prop];
35
+ }
36
+ return target;
37
+ };
7
38
  const standardAnnotationSupport = {
8
- /**
9
- * Assume the stored value is standard model.
10
- */
11
39
  prepareAnnotation: (json) => {
12
40
  if (isString(json == null ? void 0 : json.query)) {
13
- const { query, ...rest } = json;
14
- return {
15
- ...rest,
41
+ const _a = json, { query } = _a, rest = __objRest(_a, ["query"]);
42
+ return __spreadProps(__spreadValues({}, rest), {
16
43
  target: {
17
44
  refId: "annotation_query",
18
45
  query
19
46
  },
20
47
  mappings: {}
21
- };
48
+ });
22
49
  }
23
50
  return json;
24
51
  },
25
- /**
26
- * Default will just return target from the annotation.
27
- */
28
52
  prepareQuery: (anno) => anno.target,
29
- /**
30
- * Provides default processing from dataFrame to annotation events.
31
- */
32
53
  processEvents: (anno, data) => {
33
54
  return getAnnotationsFromData(data, anno.mappings);
34
55
  }
@@ -180,7 +201,6 @@ const legacyRunner = [
180
201
  "loki",
181
202
  "elasticsearch",
182
203
  "grafana-opensearch-datasource"
183
- // external
184
204
  ];
185
205
  function shouldUseLegacyRunner(datasource) {
186
206
  const { type } = datasource;
@@ -1 +1 @@
1
- {"version":3,"file":"standardAnnotationsSupport.js","sources":["../../../../../src/querying/layers/annotations/standardAnnotationsSupport.ts"],"sourcesContent":["import { isString } from 'lodash';\nimport { Observable, of, OperatorFunction } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport {\n AnnotationEvent,\n AnnotationEventFieldSource,\n AnnotationEventMappings,\n AnnotationQuery,\n AnnotationSupport,\n DataFrame,\n DataSourceApi,\n DataTransformContext,\n Field,\n FieldType,\n getFieldDisplayName,\n KeyValue,\n standardTransformers,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\n\nexport const standardAnnotationSupport: AnnotationSupport = {\n /**\n * Assume the stored value is standard model.\n */\n prepareAnnotation: (json: any) => {\n if (isString(json?.query)) {\n const { query, ...rest } = json;\n return {\n ...rest,\n target: {\n refId: 'annotation_query',\n query,\n },\n mappings: {},\n };\n }\n return json as AnnotationQuery;\n },\n\n /**\n * Default will just return target from the annotation.\n */\n prepareQuery: (anno: AnnotationQuery) => anno.target,\n\n /**\n * Provides default processing from dataFrame to annotation events.\n */\n processEvents: (anno: AnnotationQuery, data: DataFrame[]) => {\n return getAnnotationsFromData(data, anno.mappings);\n },\n};\n\n/**\n * Flatten all frames into a single frame with mergeTransformer.\n */\n\nexport function singleFrameFromPanelData(): OperatorFunction<DataFrame[], DataFrame | undefined> {\n return (source) =>\n source.pipe(\n mergeMap((data) => {\n if (!data?.length) {\n return of(undefined);\n }\n\n if (data.length === 1) {\n return of(data[0]);\n }\n\n const ctx: DataTransformContext = {\n interpolate: (v: string) => v,\n };\n\n return of(data).pipe(\n standardTransformers.mergeTransformer.operator({}, ctx),\n map((d) => d[0])\n );\n })\n );\n}\n\ninterface AnnotationEventFieldSetter {\n key: keyof AnnotationEvent;\n field?: Field;\n text?: string;\n regex?: RegExp;\n split?: string; // for tags\n}\n\nexport interface AnnotationFieldInfo {\n key: keyof AnnotationEvent;\n\n split?: string;\n field?: (frame: DataFrame) => Field | undefined;\n placeholder?: string;\n help?: string;\n}\n\n// These fields get added to the standard UI\nexport const annotationEventNames: AnnotationFieldInfo[] = [\n {\n key: 'time',\n field: (frame: DataFrame) => frame.fields.find((f) => f.type === FieldType.time),\n placeholder: 'time, or the first time field',\n },\n { key: 'timeEnd', help: 'When this field is defined, the annotation will be treated as a range' },\n {\n key: 'title',\n },\n {\n key: 'text',\n field: (frame: DataFrame) => frame.fields.find((f) => f.type === FieldType.string),\n placeholder: 'text, or the first text field',\n },\n { key: 'tags', split: ',', help: 'The results will be split on comma (,)' },\n {\n key: 'id',\n },\n];\n\nexport const publicDashboardEventNames: AnnotationFieldInfo[] = [\n {\n key: 'color',\n },\n {\n key: 'isRegion',\n },\n {\n key: 'source',\n },\n];\n\n// Given legacy infrastructure, alert events are passed though the same annotation\n// pipeline, but include fields that should not be exposed generally\nconst alertEventAndAnnotationFields: AnnotationFieldInfo[] = [\n ...(config.publicDashboardAccessToken ? publicDashboardEventNames : []),\n ...annotationEventNames,\n { key: 'userId' },\n { key: 'login' },\n { key: 'email' },\n { key: 'prevState' },\n { key: 'newState' },\n { key: 'data' as any },\n { key: 'panelId' },\n { key: 'alertId' },\n { key: 'dashboardId' },\n { key: 'dashboardUID' },\n];\n\nexport function getAnnotationsFromData(\n data: DataFrame[],\n options?: AnnotationEventMappings\n): Observable<AnnotationEvent[]> {\n return of(data).pipe(\n singleFrameFromPanelData(),\n map((frame) => {\n if (!frame?.length) {\n return [];\n }\n\n let hasTime = false;\n let hasText = false;\n const byName: KeyValue<Field> = {};\n\n for (const f of frame.fields) {\n const name = getFieldDisplayName(f, frame);\n byName[name.toLowerCase()] = f;\n }\n\n if (!options) {\n options = {};\n }\n\n const fields: AnnotationEventFieldSetter[] = [];\n\n for (const evts of alertEventAndAnnotationFields) {\n const opt = options[evts.key] || {}; //AnnotationEventFieldMapping\n\n if (opt.source === AnnotationEventFieldSource.Skip) {\n continue;\n }\n\n const setter: AnnotationEventFieldSetter = { key: evts.key, split: evts.split };\n\n if (opt.source === AnnotationEventFieldSource.Text) {\n setter.text = opt.value;\n } else {\n const lower = (opt.value || evts.key).toLowerCase();\n setter.field = byName[lower];\n\n if (!setter.field && evts.field) {\n setter.field = evts.field(frame);\n }\n }\n\n if (setter.field || setter.text) {\n fields.push(setter);\n if (setter.key === 'time') {\n hasTime = true;\n } else if (setter.key === 'text') {\n hasText = true;\n }\n }\n }\n\n if (!hasTime || !hasText) {\n console.error('Cannot process annotation fields. No time or text present.');\n return [];\n }\n\n // Add each value to the string\n const events: AnnotationEvent[] = [];\n\n for (let i = 0; i < frame.length; i++) {\n const anno: AnnotationEvent = {\n type: 'default',\n color: 'red',\n };\n\n for (const f of fields) {\n let v: any = undefined;\n\n if (f.text) {\n v = f.text; // TODO support templates!\n } else if (f.field) {\n v = f.field.values.get(i);\n if (v !== undefined && f.regex) {\n const match = f.regex.exec(v);\n if (match) {\n v = match[1] ? match[1] : match[0];\n }\n }\n }\n\n if (v !== null && v !== undefined) {\n if (f.split && typeof v === 'string') {\n v = v.split(',');\n }\n (anno as any)[f.key] = v;\n }\n }\n\n events.push(anno);\n }\n return events;\n })\n );\n}\n\n// These opt outs are here only for quicker and easier migration to react based annotations editors and because\n// annotation support API needs some work to support less \"standard\" editors like prometheus and here it is not\n// polluting public API.\n\nconst legacyRunner = [\n 'prometheus',\n 'loki',\n 'elasticsearch',\n 'grafana-opensearch-datasource', // external\n];\n\n/**\n * Use legacy runner. Used only as an escape hatch for easier transition to React based annotation editor.\n */\nexport function shouldUseLegacyRunner(datasource: DataSourceApi): boolean {\n const { type } = datasource;\n return !datasource.annotations || legacyRunner.includes(type);\n}\n"],"names":[],"mappings":";;;;;;AAqBO,MAAM,yBAA+C,GAAA;AAAA;AAAA;AAAA;AAAA,EAI1D,iBAAA,EAAmB,CAAC,IAAc,KAAA;AAChC,IAAI,IAAA,QAAA,CAAS,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAK,CAAG,EAAA;AACzB,MAAA,MAAM,EAAE,KAAA,EAAO,GAAG,IAAA,EAAS,GAAA,IAAA;AAC3B,MAAO,OAAA;AAAA,QACL,GAAG,IAAA;AAAA,QACH,MAAQ,EAAA;AAAA,UACN,KAAO,EAAA,kBAAA;AAAA,UACP;AAAA,SACF;AAAA,QACA,UAAU;AAAC,OACb;AAAA;AAEF,IAAO,OAAA,IAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAA,EAAc,CAAC,IAAA,KAA0B,IAAK,CAAA,MAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,aAAA,EAAe,CAAC,IAAA,EAAuB,IAAsB,KAAA;AAC3D,IAAO,OAAA,sBAAA,CAAuB,IAAM,EAAA,IAAA,CAAK,QAAQ,CAAA;AAAA;AAErD;AAMO,SAAS,wBAAiF,GAAA;AAC/F,EAAO,OAAA,CAAC,WACN,MAAO,CAAA,IAAA;AAAA,IACL,QAAA,CAAS,CAAC,IAAS,KAAA;AACjB,MAAI,IAAA,EAAC,6BAAM,MAAQ,CAAA,EAAA;AACjB,QAAA,OAAO,GAAG,MAAS,CAAA;AAAA;AAGrB,MAAI,IAAA,IAAA,CAAK,WAAW,CAAG,EAAA;AACrB,QAAO,OAAA,EAAA,CAAG,IAAK,CAAA,CAAC,CAAC,CAAA;AAAA;AAGnB,MAAA,MAAM,GAA4B,GAAA;AAAA,QAChC,WAAA,EAAa,CAAC,CAAc,KAAA;AAAA,OAC9B;AAEA,MAAO,OAAA,EAAA,CAAG,IAAI,CAAE,CAAA,IAAA;AAAA,QACd,oBAAqB,CAAA,gBAAA,CAAiB,QAAS,CAAA,IAAI,GAAG,CAAA;AAAA,QACtD,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAC;AAAA,OACjB;AAAA,KACD;AAAA,GACH;AACJ;AAoBO,MAAM,oBAA8C,GAAA;AAAA,EACzD;AAAA,IACE,GAAK,EAAA,MAAA;AAAA,IACL,KAAA,EAAO,CAAC,KAAA,KAAqB,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IAC/E,WAAa,EAAA;AAAA,GACf;AAAA,EACA,EAAE,GAAA,EAAK,SAAW,EAAA,IAAA,EAAM,uEAAwE,EAAA;AAAA,EAChG;AAAA,IACE,GAAK,EAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,GAAK,EAAA,MAAA;AAAA,IACL,KAAA,EAAO,CAAC,KAAA,KAAqB,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,SAAA,CAAU,MAAM,CAAA;AAAA,IACjF,WAAa,EAAA;AAAA,GACf;AAAA,EACA,EAAE,GAAK,EAAA,MAAA,EAAQ,KAAO,EAAA,GAAA,EAAK,MAAM,wCAAyC,EAAA;AAAA,EAC1E;AAAA,IACE,GAAK,EAAA;AAAA;AAET;AAEO,MAAM,yBAAmD,GAAA;AAAA,EAC9D;AAAA,IACE,GAAK,EAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,GAAK,EAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,GAAK,EAAA;AAAA;AAET;AAIA,MAAM,6BAAuD,GAAA;AAAA,EAC3D,GAAI,MAAA,CAAO,0BAA6B,GAAA,yBAAA,GAA4B,EAAC;AAAA,EACrE,GAAG,oBAAA;AAAA,EACH,EAAE,KAAK,QAAS,EAAA;AAAA,EAChB,EAAE,KAAK,OAAQ,EAAA;AAAA,EACf,EAAE,KAAK,OAAQ,EAAA;AAAA,EACf,EAAE,KAAK,WAAY,EAAA;AAAA,EACnB,EAAE,KAAK,UAAW,EAAA;AAAA,EAClB,EAAE,KAAK,MAAc,EAAA;AAAA,EACrB,EAAE,KAAK,SAAU,EAAA;AAAA,EACjB,EAAE,KAAK,SAAU,EAAA;AAAA,EACjB,EAAE,KAAK,aAAc,EAAA;AAAA,EACrB,EAAE,KAAK,cAAe;AACxB,CAAA;AAEgB,SAAA,sBAAA,CACd,MACA,OAC+B,EAAA;AAC/B,EAAO,OAAA,EAAA,CAAG,IAAI,CAAE,CAAA,IAAA;AAAA,IACd,wBAAyB,EAAA;AAAA,IACzB,GAAA,CAAI,CAAC,KAAU,KAAA;AACb,MAAI,IAAA,EAAC,+BAAO,MAAQ,CAAA,EAAA;AAClB,QAAA,OAAO,EAAC;AAAA;AAGV,MAAA,IAAI,OAAU,GAAA,KAAA;AACd,MAAA,IAAI,OAAU,GAAA,KAAA;AACd,MAAA,MAAM,SAA0B,EAAC;AAEjC,MAAW,KAAA,MAAA,CAAA,IAAK,MAAM,MAAQ,EAAA;AAC5B,QAAM,MAAA,IAAA,GAAO,mBAAoB,CAAA,CAAA,EAAG,KAAK,CAAA;AACzC,QAAO,MAAA,CAAA,IAAA,CAAK,WAAY,EAAC,CAAI,GAAA,CAAA;AAAA;AAG/B,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAA,OAAA,GAAU,EAAC;AAAA;AAGb,MAAA,MAAM,SAAuC,EAAC;AAE9C,MAAA,KAAA,MAAW,QAAQ,6BAA+B,EAAA;AAChD,QAAA,MAAM,GAAM,GAAA,OAAA,CAAQ,IAAK,CAAA,GAAG,KAAK,EAAC;AAElC,QAAI,IAAA,GAAA,CAAI,MAAW,KAAA,0BAAA,CAA2B,IAAM,EAAA;AAClD,UAAA;AAAA;AAGF,QAAA,MAAM,SAAqC,EAAE,GAAA,EAAK,KAAK,GAAK,EAAA,KAAA,EAAO,KAAK,KAAM,EAAA;AAE9E,QAAI,IAAA,GAAA,CAAI,MAAW,KAAA,0BAAA,CAA2B,IAAM,EAAA;AAClD,UAAA,MAAA,CAAO,OAAO,GAAI,CAAA,KAAA;AAAA,SACb,MAAA;AACL,UAAA,MAAM,KAAS,GAAA,CAAA,GAAA,CAAI,KAAS,IAAA,IAAA,CAAK,KAAK,WAAY,EAAA;AAClD,UAAO,MAAA,CAAA,KAAA,GAAQ,OAAO,KAAK,CAAA;AAE3B,UAAA,IAAI,CAAC,MAAA,CAAO,KAAS,IAAA,IAAA,CAAK,KAAO,EAAA;AAC/B,YAAO,MAAA,CAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA;AACjC;AAGF,QAAI,IAAA,MAAA,CAAO,KAAS,IAAA,MAAA,CAAO,IAAM,EAAA;AAC/B,UAAA,MAAA,CAAO,KAAK,MAAM,CAAA;AAClB,UAAI,IAAA,MAAA,CAAO,QAAQ,MAAQ,EAAA;AACzB,YAAU,OAAA,GAAA,IAAA;AAAA,WACZ,MAAA,IAAW,MAAO,CAAA,GAAA,KAAQ,MAAQ,EAAA;AAChC,YAAU,OAAA,GAAA,IAAA;AAAA;AACZ;AACF;AAGF,MAAI,IAAA,CAAC,OAAW,IAAA,CAAC,OAAS,EAAA;AACxB,QAAA,OAAA,CAAQ,MAAM,4DAA4D,CAAA;AAC1E,QAAA,OAAO,EAAC;AAAA;AAIV,MAAA,MAAM,SAA4B,EAAC;AAEnC,MAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AACrC,QAAA,MAAM,IAAwB,GAAA;AAAA,UAC5B,IAAM,EAAA,SAAA;AAAA,UACN,KAAO,EAAA;AAAA,SACT;AAEA,QAAA,KAAA,MAAW,KAAK,MAAQ,EAAA;AACtB,UAAA,IAAI,CAAS,GAAA,MAAA;AAEb,UAAA,IAAI,EAAE,IAAM,EAAA;AACV,YAAA,CAAA,GAAI,CAAE,CAAA,IAAA;AAAA,WACR,MAAA,IAAW,EAAE,KAAO,EAAA;AAClB,YAAA,CAAA,GAAI,CAAE,CAAA,KAAA,CAAM,MAAO,CAAA,GAAA,CAAI,CAAC,CAAA;AACxB,YAAI,IAAA,CAAA,KAAM,MAAa,IAAA,CAAA,CAAE,KAAO,EAAA;AAC9B,cAAA,MAAM,KAAQ,GAAA,CAAA,CAAE,KAAM,CAAA,IAAA,CAAK,CAAC,CAAA;AAC5B,cAAA,IAAI,KAAO,EAAA;AACT,gBAAA,CAAA,GAAI,MAAM,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA;AAAA;AACnC;AACF;AAGF,UAAI,IAAA,CAAA,KAAM,IAAQ,IAAA,CAAA,KAAM,MAAW,EAAA;AACjC,YAAA,IAAI,CAAE,CAAA,KAAA,IAAS,OAAO,CAAA,KAAM,QAAU,EAAA;AACpC,cAAI,CAAA,GAAA,CAAA,CAAE,MAAM,GAAG,CAAA;AAAA;AAEjB,YAAC,IAAA,CAAa,CAAE,CAAA,GAAG,CAAI,GAAA,CAAA;AAAA;AACzB;AAGF,QAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA;AAElB,MAAO,OAAA,MAAA;AAAA,KACR;AAAA,GACH;AACF;AAMA,MAAM,YAAe,GAAA;AAAA,EACnB,YAAA;AAAA,EACA,MAAA;AAAA,EACA,eAAA;AAAA,EACA;AAAA;AACF,CAAA;AAKO,SAAS,sBAAsB,UAAoC,EAAA;AACxE,EAAM,MAAA,EAAE,MAAS,GAAA,UAAA;AACjB,EAAA,OAAO,CAAC,UAAA,CAAW,WAAe,IAAA,YAAA,CAAa,SAAS,IAAI,CAAA;AAC9D;;;;"}
1
+ {"version":3,"file":"standardAnnotationsSupport.js","sources":["../../../../../src/querying/layers/annotations/standardAnnotationsSupport.ts"],"sourcesContent":["import { isString } from 'lodash';\nimport { Observable, of, OperatorFunction } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport {\n AnnotationEvent,\n AnnotationEventFieldSource,\n AnnotationEventMappings,\n AnnotationQuery,\n AnnotationSupport,\n DataFrame,\n DataSourceApi,\n DataTransformContext,\n Field,\n FieldType,\n getFieldDisplayName,\n KeyValue,\n standardTransformers,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\n\nexport const standardAnnotationSupport: AnnotationSupport = {\n /**\n * Assume the stored value is standard model.\n */\n prepareAnnotation: (json: any) => {\n if (isString(json?.query)) {\n const { query, ...rest } = json;\n return {\n ...rest,\n target: {\n refId: 'annotation_query',\n query,\n },\n mappings: {},\n };\n }\n return json as AnnotationQuery;\n },\n\n /**\n * Default will just return target from the annotation.\n */\n prepareQuery: (anno: AnnotationQuery) => anno.target,\n\n /**\n * Provides default processing from dataFrame to annotation events.\n */\n processEvents: (anno: AnnotationQuery, data: DataFrame[]) => {\n return getAnnotationsFromData(data, anno.mappings);\n },\n};\n\n/**\n * Flatten all frames into a single frame with mergeTransformer.\n */\n\nexport function singleFrameFromPanelData(): OperatorFunction<DataFrame[], DataFrame | undefined> {\n return (source) =>\n source.pipe(\n mergeMap((data) => {\n if (!data?.length) {\n return of(undefined);\n }\n\n if (data.length === 1) {\n return of(data[0]);\n }\n\n const ctx: DataTransformContext = {\n interpolate: (v: string) => v,\n };\n\n return of(data).pipe(\n standardTransformers.mergeTransformer.operator({}, ctx),\n map((d) => d[0])\n );\n })\n );\n}\n\ninterface AnnotationEventFieldSetter {\n key: keyof AnnotationEvent;\n field?: Field;\n text?: string;\n regex?: RegExp;\n split?: string; // for tags\n}\n\nexport interface AnnotationFieldInfo {\n key: keyof AnnotationEvent;\n\n split?: string;\n field?: (frame: DataFrame) => Field | undefined;\n placeholder?: string;\n help?: string;\n}\n\n// These fields get added to the standard UI\nexport const annotationEventNames: AnnotationFieldInfo[] = [\n {\n key: 'time',\n field: (frame: DataFrame) => frame.fields.find((f) => f.type === FieldType.time),\n placeholder: 'time, or the first time field',\n },\n { key: 'timeEnd', help: 'When this field is defined, the annotation will be treated as a range' },\n {\n key: 'title',\n },\n {\n key: 'text',\n field: (frame: DataFrame) => frame.fields.find((f) => f.type === FieldType.string),\n placeholder: 'text, or the first text field',\n },\n { key: 'tags', split: ',', help: 'The results will be split on comma (,)' },\n {\n key: 'id',\n },\n];\n\nexport const publicDashboardEventNames: AnnotationFieldInfo[] = [\n {\n key: 'color',\n },\n {\n key: 'isRegion',\n },\n {\n key: 'source',\n },\n];\n\n// Given legacy infrastructure, alert events are passed though the same annotation\n// pipeline, but include fields that should not be exposed generally\nconst alertEventAndAnnotationFields: AnnotationFieldInfo[] = [\n ...(config.publicDashboardAccessToken ? publicDashboardEventNames : []),\n ...annotationEventNames,\n { key: 'userId' },\n { key: 'login' },\n { key: 'email' },\n { key: 'prevState' },\n { key: 'newState' },\n { key: 'data' as any },\n { key: 'panelId' },\n { key: 'alertId' },\n { key: 'dashboardId' },\n { key: 'dashboardUID' },\n];\n\nexport function getAnnotationsFromData(\n data: DataFrame[],\n options?: AnnotationEventMappings\n): Observable<AnnotationEvent[]> {\n return of(data).pipe(\n singleFrameFromPanelData(),\n map((frame) => {\n if (!frame?.length) {\n return [];\n }\n\n let hasTime = false;\n let hasText = false;\n const byName: KeyValue<Field> = {};\n\n for (const f of frame.fields) {\n const name = getFieldDisplayName(f, frame);\n byName[name.toLowerCase()] = f;\n }\n\n if (!options) {\n options = {};\n }\n\n const fields: AnnotationEventFieldSetter[] = [];\n\n for (const evts of alertEventAndAnnotationFields) {\n const opt = options[evts.key] || {}; //AnnotationEventFieldMapping\n\n if (opt.source === AnnotationEventFieldSource.Skip) {\n continue;\n }\n\n const setter: AnnotationEventFieldSetter = { key: evts.key, split: evts.split };\n\n if (opt.source === AnnotationEventFieldSource.Text) {\n setter.text = opt.value;\n } else {\n const lower = (opt.value || evts.key).toLowerCase();\n setter.field = byName[lower];\n\n if (!setter.field && evts.field) {\n setter.field = evts.field(frame);\n }\n }\n\n if (setter.field || setter.text) {\n fields.push(setter);\n if (setter.key === 'time') {\n hasTime = true;\n } else if (setter.key === 'text') {\n hasText = true;\n }\n }\n }\n\n if (!hasTime || !hasText) {\n console.error('Cannot process annotation fields. No time or text present.');\n return [];\n }\n\n // Add each value to the string\n const events: AnnotationEvent[] = [];\n\n for (let i = 0; i < frame.length; i++) {\n const anno: AnnotationEvent = {\n type: 'default',\n color: 'red',\n };\n\n for (const f of fields) {\n let v: any = undefined;\n\n if (f.text) {\n v = f.text; // TODO support templates!\n } else if (f.field) {\n v = f.field.values.get(i);\n if (v !== undefined && f.regex) {\n const match = f.regex.exec(v);\n if (match) {\n v = match[1] ? match[1] : match[0];\n }\n }\n }\n\n if (v !== null && v !== undefined) {\n if (f.split && typeof v === 'string') {\n v = v.split(',');\n }\n (anno as any)[f.key] = v;\n }\n }\n\n events.push(anno);\n }\n return events;\n })\n );\n}\n\n// These opt outs are here only for quicker and easier migration to react based annotations editors and because\n// annotation support API needs some work to support less \"standard\" editors like prometheus and here it is not\n// polluting public API.\n\nconst legacyRunner = [\n 'prometheus',\n 'loki',\n 'elasticsearch',\n 'grafana-opensearch-datasource', // external\n];\n\n/**\n * Use legacy runner. Used only as an escape hatch for easier transition to React based annotation editor.\n */\nexport function shouldUseLegacyRunner(datasource: DataSourceApi): boolean {\n const { type } = datasource;\n return !datasource.annotations || legacyRunner.includes(type);\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,22 @@
1
1
  import { config } from '@grafana/runtime';
2
2
  import { cloneDeep, partition, groupBy, map, every, find, head, concat } from 'lodash';
3
3
 
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
4
20
  function postProcessQueryResult(annotation, results) {
5
21
  if (annotation.snapshotData) {
6
22
  annotation = cloneDeep(annotation);
@@ -8,7 +24,7 @@ function postProcessQueryResult(annotation, results) {
8
24
  }
9
25
  const processed = results.map((item) => {
10
26
  var _a;
11
- const processedItem = { ...item };
27
+ const processedItem = __spreadValues({}, item);
12
28
  processedItem.source = annotation;
13
29
  processedItem.color = config.theme2.visualization.getColorByName(annotation.iconColor);
14
30
  processedItem.type = annotation.name;