@grafana/scenes 6.6.0 → 6.6.1

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 (276) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/esm/behaviors/ActWhenVariableChanged.js.map +1 -1
  3. package/dist/esm/behaviors/CursorSync.js +3 -21
  4. package/dist/esm/behaviors/CursorSync.js.map +1 -1
  5. package/dist/esm/behaviors/LiveNowTimer.js +3 -2
  6. package/dist/esm/behaviors/LiveNowTimer.js.map +1 -1
  7. package/dist/esm/behaviors/SceneQueryController.js +7 -37
  8. package/dist/esm/behaviors/SceneQueryController.js.map +1 -1
  9. package/dist/esm/behaviors/SceneRenderProfiler.js +10 -17
  10. package/dist/esm/behaviors/SceneRenderProfiler.js.map +1 -1
  11. package/dist/esm/components/EmbeddedScene.js +1 -12
  12. package/dist/esm/components/EmbeddedScene.js.map +1 -1
  13. package/dist/esm/components/NestedScene.js +23 -30
  14. package/dist/esm/components/NestedScene.js.map +1 -1
  15. package/dist/esm/components/SceneApp/SceneApp.js +1 -11
  16. package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
  17. package/dist/esm/components/SceneApp/SceneAppPage.js +28 -47
  18. package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
  19. package/dist/esm/components/SceneApp/SceneAppPageView.js +14 -20
  20. package/dist/esm/components/SceneApp/SceneAppPageView.js.map +1 -1
  21. package/dist/esm/components/SceneApp/utils.js +2 -18
  22. package/dist/esm/components/SceneApp/utils.js.map +1 -1
  23. package/dist/esm/components/SceneByFrameRepeater.js +1 -3
  24. package/dist/esm/components/SceneByFrameRepeater.js.map +1 -1
  25. package/dist/esm/components/SceneByVariableRepeater.js +1 -3
  26. package/dist/esm/components/SceneByVariableRepeater.js.map +1 -1
  27. package/dist/esm/components/SceneCanvasText.js +1 -4
  28. package/dist/esm/components/SceneCanvasText.js.map +1 -1
  29. package/dist/esm/components/SceneControlsSpacer.js +1 -3
  30. package/dist/esm/components/SceneControlsSpacer.js.map +1 -1
  31. package/dist/esm/components/SceneDebugger/DebugDetails.js +11 -24
  32. package/dist/esm/components/SceneDebugger/DebugDetails.js.map +1 -1
  33. package/dist/esm/components/SceneDebugger/DebugTreeNode.js +2 -14
  34. package/dist/esm/components/SceneDebugger/DebugTreeNode.js.map +1 -1
  35. package/dist/esm/components/SceneDebugger/SceneDebugger.js +1 -29
  36. package/dist/esm/components/SceneDebugger/SceneDebugger.js.map +1 -1
  37. package/dist/esm/components/SceneReactObject.js +1 -17
  38. package/dist/esm/components/SceneReactObject.js.map +1 -1
  39. package/dist/esm/components/SceneRefreshPicker.js +23 -38
  40. package/dist/esm/components/SceneRefreshPicker.js.map +1 -1
  41. package/dist/esm/components/SceneTimePicker.js +27 -29
  42. package/dist/esm/components/SceneTimePicker.js.map +1 -1
  43. package/dist/esm/components/SceneTimeRangeCompare.js +36 -50
  44. package/dist/esm/components/SceneTimeRangeCompare.js.map +1 -1
  45. package/dist/esm/components/SceneToolbarButton.js +10 -14
  46. package/dist/esm/components/SceneToolbarButton.js.map +1 -1
  47. package/dist/esm/components/VizPanel/VizPanel.js +20 -29
  48. package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
  49. package/dist/esm/components/VizPanel/VizPanelExploreButton.js +17 -13
  50. package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +1 -1
  51. package/dist/esm/components/VizPanel/VizPanelMenu.js +18 -20
  52. package/dist/esm/components/VizPanel/VizPanelMenu.js.map +1 -1
  53. package/dist/esm/components/VizPanel/VizPanelRenderer.js +92 -122
  54. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  55. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +7 -15
  56. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js.map +1 -1
  57. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +15 -29
  58. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js.map +1 -1
  59. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +3 -21
  60. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js.map +1 -1
  61. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +22 -34
  62. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js.map +1 -1
  63. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +8 -40
  64. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js.map +1 -1
  65. package/dist/esm/components/layout/LazyLoader.js +2 -35
  66. package/dist/esm/components/layout/LazyLoader.js.map +1 -1
  67. package/dist/esm/components/layout/SceneFlexLayout.js +3 -13
  68. package/dist/esm/components/layout/SceneFlexLayout.js.map +1 -1
  69. package/dist/esm/components/layout/grid/SceneGridItem.js +1 -3
  70. package/dist/esm/components/layout/grid/SceneGridItem.js.map +1 -1
  71. package/dist/esm/components/layout/grid/SceneGridLayout.js +26 -26
  72. package/dist/esm/components/layout/grid/SceneGridLayout.js.map +1 -1
  73. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +88 -104
  74. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -1
  75. package/dist/esm/components/layout/grid/SceneGridRow.js +15 -48
  76. package/dist/esm/components/layout/grid/SceneGridRow.js.map +1 -1
  77. package/dist/esm/components/layout/grid/constants.js.map +1 -1
  78. package/dist/esm/components/layout/grid/types.js.map +1 -1
  79. package/dist/esm/components/layout/grid/utils.js +3 -21
  80. package/dist/esm/components/layout/grid/utils.js.map +1 -1
  81. package/dist/esm/components/layout/split/SplitLayout.js.map +1 -1
  82. package/dist/esm/components/layout/split/SplitLayoutRenderer.js +11 -14
  83. package/dist/esm/components/layout/split/SplitLayoutRenderer.js.map +1 -1
  84. package/dist/esm/components/layout/split/Splitter.js +60 -58
  85. package/dist/esm/components/layout/split/Splitter.js.map +1 -1
  86. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js +46 -23
  87. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js.map +1 -1
  88. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js +8 -8
  89. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js.map +1 -1
  90. package/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js.map +1 -1
  91. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js +3 -0
  92. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js.map +1 -1
  93. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js +28 -28
  94. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js.map +1 -1
  95. package/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js.map +1 -1
  96. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js +39 -0
  97. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js.map +1 -1
  98. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js +32 -32
  99. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js.map +1 -1
  100. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js +82 -21
  101. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +1 -1
  102. package/dist/esm/core/PanelBuilders/index.js +32 -32
  103. package/dist/esm/core/PanelBuilders/index.js.map +1 -1
  104. package/dist/esm/core/SceneComponentWrapper.js +4 -38
  105. package/dist/esm/core/SceneComponentWrapper.js.map +1 -1
  106. package/dist/esm/core/SceneDataNode.js +4 -19
  107. package/dist/esm/core/SceneDataNode.js.map +1 -1
  108. package/dist/esm/core/SceneObjectBase.js +55 -17
  109. package/dist/esm/core/SceneObjectBase.js.map +1 -1
  110. package/dist/esm/core/SceneObjectRef.js +7 -18
  111. package/dist/esm/core/SceneObjectRef.js.map +1 -1
  112. package/dist/esm/core/SceneScopesBridge.js +14 -0
  113. package/dist/esm/core/SceneScopesBridge.js.map +1 -1
  114. package/dist/esm/core/SceneTimeRange.js +9 -17
  115. package/dist/esm/core/SceneTimeRange.js.map +1 -1
  116. package/dist/esm/core/SceneTimeRangeTransformerBase.js.map +1 -1
  117. package/dist/esm/core/SceneTimeZoneOverride.js +7 -23
  118. package/dist/esm/core/SceneTimeZoneOverride.js.map +1 -1
  119. package/dist/esm/core/events.js.map +1 -1
  120. package/dist/esm/core/sceneGraph/getQueryController.js.map +1 -1
  121. package/dist/esm/core/sceneGraph/getTimeRange.js.map +1 -1
  122. package/dist/esm/core/sceneGraph/index.js +1 -1
  123. package/dist/esm/core/sceneGraph/index.js.map +1 -1
  124. package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
  125. package/dist/esm/core/sceneGraph/utils.js +1 -17
  126. package/dist/esm/core/sceneGraph/utils.js.map +1 -1
  127. package/dist/esm/core/types.js.map +1 -1
  128. package/dist/esm/index.js +6 -5
  129. package/dist/esm/index.js.map +1 -1
  130. package/dist/esm/querying/DataLayersMerger.js.map +1 -1
  131. package/dist/esm/querying/DataProviderProxy.js.map +1 -1
  132. package/dist/esm/querying/ExtraQueryProvider.js.map +1 -1
  133. package/dist/esm/querying/RuntimeDataSource.js.map +1 -1
  134. package/dist/esm/querying/SceneDataLayerSet.js +9 -24
  135. package/dist/esm/querying/SceneDataLayerSet.js.map +1 -1
  136. package/dist/esm/querying/SceneDataTransformer.js +11 -24
  137. package/dist/esm/querying/SceneDataTransformer.js.map +1 -1
  138. package/dist/esm/querying/SceneQueryRunner.js +44 -33
  139. package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
  140. package/dist/esm/querying/extraQueryProcessingOperator.js +3 -21
  141. package/dist/esm/querying/extraQueryProcessingOperator.js.map +1 -1
  142. package/dist/esm/querying/getEnrichedDataRequest.js.map +1 -1
  143. package/dist/esm/querying/layers/SceneDataLayerBase.js +16 -19
  144. package/dist/esm/querying/layers/SceneDataLayerBase.js.map +1 -1
  145. package/dist/esm/querying/layers/SceneDataLayerControls.js +15 -21
  146. package/dist/esm/querying/layers/SceneDataLayerControls.js.map +1 -1
  147. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +12 -30
  148. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js.map +1 -1
  149. package/dist/esm/querying/layers/annotations/filterAnnotations.js +6 -23
  150. package/dist/esm/querying/layers/annotations/filterAnnotations.js.map +1 -1
  151. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +19 -29
  152. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +1 -1
  153. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +14 -34
  154. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js.map +1 -1
  155. package/dist/esm/querying/layers/annotations/utils.js +1 -17
  156. package/dist/esm/querying/layers/annotations/utils.js.map +1 -1
  157. package/dist/esm/querying/registerQueryWithController.js.map +1 -1
  158. package/dist/esm/services/SceneObjectUrlSyncConfig.js.map +1 -1
  159. package/dist/esm/services/UniqueUrlKeyMapper.js.map +1 -1
  160. package/dist/esm/services/UrlSyncContextProvider.js.map +1 -1
  161. package/dist/esm/services/UrlSyncManager.js +11 -19
  162. package/dist/esm/services/UrlSyncManager.js.map +1 -1
  163. package/dist/esm/services/useUrlSync.js.map +1 -1
  164. package/dist/esm/services/utils.js.map +1 -1
  165. package/dist/esm/utils/ControlsLabel.js +23 -47
  166. package/dist/esm/utils/ControlsLabel.js.map +1 -1
  167. package/dist/esm/utils/LoadingIndicator.js +11 -10
  168. package/dist/esm/utils/LoadingIndicator.js.map +1 -1
  169. package/dist/esm/utils/SafeSerializableSceneObject.js +7 -18
  170. package/dist/esm/utils/SafeSerializableSceneObject.js.map +1 -1
  171. package/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js.map +1 -1
  172. package/dist/esm/utils/date.js.map +1 -1
  173. package/dist/esm/utils/evaluateTimeRange.js.map +1 -1
  174. package/dist/esm/utils/explore.js.map +1 -1
  175. package/dist/esm/utils/getCompareSeriesRefId.js.map +1 -1
  176. package/dist/esm/utils/getDataSource.js.map +1 -1
  177. package/dist/esm/utils/getMessageFromError.js.map +1 -1
  178. package/dist/esm/utils/metricTree.js.map +1 -1
  179. package/dist/esm/utils/parseUrlParam.js.map +1 -1
  180. package/dist/esm/utils/utils.js.map +1 -1
  181. package/dist/esm/utils/wrapInSafeSerializableSceneObject.js.map +1 -1
  182. package/dist/esm/utils/writeSceneLog.js.map +1 -1
  183. package/dist/esm/variables/VariableDependencyConfig.js +9 -0
  184. package/dist/esm/variables/VariableDependencyConfig.js.map +1 -1
  185. package/dist/esm/variables/VariableValueRecorder.js.map +1 -1
  186. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js +13 -12
  187. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js.map +1 -1
  188. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js +129 -142
  189. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js.map +1 -1
  190. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +84 -91
  191. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
  192. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +1 -6
  193. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  194. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +195 -194
  195. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  196. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +34 -28
  197. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  198. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +28 -65
  199. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +1 -1
  200. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +29 -43
  201. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +1 -1
  202. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +2 -1
  203. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js.map +1 -1
  204. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  205. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +43 -55
  206. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  207. package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -1
  208. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js +1 -0
  209. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js.map +1 -1
  210. package/dist/esm/variables/adhoc/getAdhocOptionSearcher.js.map +1 -1
  211. package/dist/esm/variables/adhoc/patchGetAdhocFilters.js.map +1 -1
  212. package/dist/esm/variables/components/VariableValueControl.js +9 -6
  213. package/dist/esm/variables/components/VariableValueControl.js.map +1 -1
  214. package/dist/esm/variables/components/VariableValueInput.js +13 -10
  215. package/dist/esm/variables/components/VariableValueInput.js.map +1 -1
  216. package/dist/esm/variables/components/VariableValueSelect.js +90 -115
  217. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  218. package/dist/esm/variables/components/VariableValueSelectors.js +20 -37
  219. package/dist/esm/variables/components/VariableValueSelectors.js.map +1 -1
  220. package/dist/esm/variables/components/getOptionSearcher.js +1 -1
  221. package/dist/esm/variables/components/getOptionSearcher.js.map +1 -1
  222. package/dist/esm/variables/constants.js.map +1 -1
  223. package/dist/esm/variables/filter.js +6 -1
  224. package/dist/esm/variables/filter.js.map +1 -1
  225. package/dist/esm/variables/getEnrichedFiltersRequest.js.map +1 -1
  226. package/dist/esm/variables/groupby/GroupByVariable.js +106 -112
  227. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  228. package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js.map +1 -1
  229. package/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js.map +1 -1
  230. package/dist/esm/variables/interpolation/ScopedVarsVariable.js.map +1 -1
  231. package/dist/esm/variables/interpolation/defaults.js.map +1 -1
  232. package/dist/esm/variables/interpolation/fieldAccessorCache.js.map +1 -1
  233. package/dist/esm/variables/interpolation/formatRegistry.js.map +1 -1
  234. package/dist/esm/variables/interpolation/sceneInterpolator.js.map +1 -1
  235. package/dist/esm/variables/lookupVariable.js.map +1 -1
  236. package/dist/esm/variables/macros/AllVariablesMacro.js.map +1 -1
  237. package/dist/esm/variables/macros/contextMacros.js.map +1 -1
  238. package/dist/esm/variables/macros/dataMacros.js.map +1 -1
  239. package/dist/esm/variables/macros/index.js.map +1 -1
  240. package/dist/esm/variables/macros/templateProxies.js +4 -21
  241. package/dist/esm/variables/macros/templateProxies.js.map +1 -1
  242. package/dist/esm/variables/macros/timeMacros.js.map +1 -1
  243. package/dist/esm/variables/macros/types.js.map +1 -1
  244. package/dist/esm/variables/macros/urlMacros.js.map +1 -1
  245. package/dist/esm/variables/sets/SceneVariableSet.js +44 -0
  246. package/dist/esm/variables/sets/SceneVariableSet.js.map +1 -1
  247. package/dist/esm/variables/types.js.map +1 -1
  248. package/dist/esm/variables/utils.js.map +1 -1
  249. package/dist/esm/variables/variants/ConstantVariable.js +4 -23
  250. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  251. package/dist/esm/variables/variants/CustomVariable.js +4 -19
  252. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  253. package/dist/esm/variables/variants/DataSourceVariable.js +4 -19
  254. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  255. package/dist/esm/variables/variants/IntervalVariable.js +17 -29
  256. package/dist/esm/variables/variants/IntervalVariable.js.map +1 -1
  257. package/dist/esm/variables/variants/LocalValueVariable.js +8 -23
  258. package/dist/esm/variables/variants/LocalValueVariable.js.map +1 -1
  259. package/dist/esm/variables/variants/MultiValueVariable.js +16 -0
  260. package/dist/esm/variables/variants/MultiValueVariable.js.map +1 -1
  261. package/dist/esm/variables/variants/TestVariable.js +5 -19
  262. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  263. package/dist/esm/variables/variants/TextBoxVariable.js +5 -22
  264. package/dist/esm/variables/variants/TextBoxVariable.js.map +1 -1
  265. package/dist/esm/variables/variants/guards.js.map +1 -1
  266. package/dist/esm/variables/variants/query/QueryVariable.js +8 -20
  267. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  268. package/dist/esm/variables/variants/query/createQueryVariableRunner.js +6 -23
  269. package/dist/esm/variables/variants/query/createQueryVariableRunner.js.map +1 -1
  270. package/dist/esm/variables/variants/query/guards.js.map +1 -1
  271. package/dist/esm/variables/variants/query/toMetricFindValues.js.map +1 -1
  272. package/dist/esm/variables/variants/query/utils.js.map +1 -1
  273. package/dist/index.d.ts +36 -6
  274. package/dist/index.js +2034 -2791
  275. package/dist/index.js.map +1 -1
  276. package/package.json +8 -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":";;;;;;;;;;;;;;;;;;;;;;;;AAkBO,MAAe,2BACZ,eAEV,CAAA;AAAA,EA0CS,WAAY,CAAA,YAAA,EAAiB,4BAA+C,GAAA,EAAI,EAAA;AACrF,IAAM,KAAA,CAAA,cAAA,CAAA;AAAA,MACJ,SAAW,EAAA,IAAA;AAAA,KAAA,EACR,YACJ,CAAA,CAAA,CAAA;AArCH,IAAQ,IAAA,CAAA,QAAA,GAAW,IAAI,aAAA,CAAuC,CAAC,CAAA,CAAA;AAsB/D,IAAA,IAAA,CAAO,WAAoB,GAAA,IAAA,CAAA;AAE3B,IAAQ,IAAA,CAAA,sBAAA,GAAyB,IAAI,qBAAsB,EAAA,CAAA;AAE3D,IAAU,IAAA,CAAA,mBAAA,GAAmD,IAAI,wBAAA,CAAyB,IAAM,EAAA;AAAA,MAC9F,yBAA2B,EAAA,IAAA,CAAK,yBAA0B,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,KACpE,CAAA,CAAA;AAWC,IAAK,IAAA,CAAA,mBAAA,CAAoB,SAAS,4BAA4B,CAAA,CAAA;AAC9D,IAAA,IAAA,CAAK,oBAAqB,CAAA,MAAM,IAAK,CAAA,UAAA,EAAY,CAAA,CAAA;AAAA,GACnD;AAAA,EAEU,UAAsC,GAAA;AAC9C,IAAI,IAAA,IAAA,CAAK,MAAM,SAAW,EAAA;AACxB,MAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AAAA,KAChB;AAEA,IAAI,IAAA,IAAA,CAAK,0BAA4B,EAAA;AACnC,MAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AAAA,KAChB;AAGA,IAAK,IAAA,CAAA,gBAAA,CAAiB,CAAC,CAAA,EAAG,CAAM,KAAA;AAC9B,MAAA,IAAI,CAAC,CAAA,CAAE,SAAa,IAAA,IAAA,CAAK,QAAU,EAAA;AAEjC,QAAA,IAAA,CAAK,SAAS,WAAY,EAAA,CAAA;AAC1B,QAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAA,CAAA;AAChB,QAAA,IAAA,CAAK,SAAU,EAAA,CAAA;AAGf,QAAA,IAAA,CAAK,SAAS,IAAK,CAAA,EAAE,QAAQ,IAAM,EAAA,IAAA,EAAM,gBAAgB,CAAA,CAAA;AAEzD,QAAA,IAAA,CAAK,cAAe,CAAA,EAAE,IAAM,EAAA,cAAA,EAAgB,CAAA,CAAA;AAAA,OAC9C;AAEA,MAAA,IAAI,CAAE,CAAA,SAAA,IAAa,CAAC,CAAA,CAAE,SAAW,EAAA;AAE/B,QAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AACd,QAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AAAA,OAChB;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,YAAa,EAAA,CAAA;AAAA,KACpB,CAAA;AAAA,GACF;AAAA,EAEU,YAAqB,GAAA;AAC7B,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,IAAA,CAAK,SAAS,WAAY,EAAA,CAAA;AAC1B,MAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAA,CAAA;AAAA,KAClB;AAEA,IAAA,IAAA,CAAK,SAAU,EAAA,CAAA;AAEf,IAAK,IAAA,CAAA,sBAAA,CAAuB,4CAA4C,IAAI,CAAA,CAAA;AAAA,GAC9E;AAAA,EAEU,yBAAkC,GAAA;AAC1C,IAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AAAA,GAChB;AAAA,EAEO,WAAc,GAAA;AACnB,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,IAAA,CAAK,SAAS,WAAY,EAAA,CAAA;AAC1B,MAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAA,CAAA;AAEhB,MAAA,IAAA,CAAK,eAAe,cAAc,CAAA,CAAA;AAAA,KACpC;AAAA,GACF;AAAA,EAEU,eAAe,IAAiB,EAAA;AACxC,IAAI,IAAA,IAAA,CAAK,MAAM,SAAW,EAAA;AACxB,MAAA,IAAA,CAAK,SAAS,IAAK,CAAA,EAAE,MAAQ,EAAA,IAAA,EAAM,MAAM,CAAA,CAAA;AACzC,MAAK,IAAA,CAAA,cAAA,CAAe,EAAE,IAAA,EAAM,CAAA,CAAA;AAAA,KAC9B;AAAA,GACF;AAAA,EAEO,gBAAmB,GAAA;AACxB,IAAA,OAAO,IAAK,CAAA,QAAA,CAAA;AAAA,GACd;AAAA,EAEQ,wBAA2B,GAAA;AACjC,IAAI,IAAA,CAAC,IAAK,CAAA,KAAA,CAAM,SAAW,EAAA;AACzB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAI,IAAK,CAAA,sBAAA,CAAuB,sBAAuB,CAAA,IAAI,CAAG,EAAA;AAC5D,MAAA,aAAA;AAAA,QACE,oBAAA;AAAA,QACA,mFAAA;AAAA,OACF,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAI,IAAA,CAAC,IAAK,CAAA,KAAA,CAAM,IAAM,EAAA;AACpB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAKQ,eAAe,KAA6C,EAAA;AAClE,IAAA,iBAAA,CAA+C,MAAM,KAAK,CAAA,CAAA;AAAA,GAC5D;AACF;;;;"}
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":";;;;;;;;AAkBO,MAAe,2BACZ,eAEV,CAAA;AAAA;AAAA;AAAA;AAAA,EA0CS,WAAY,CAAA,YAAA,EAAiB,4BAA+C,GAAA,EAAI,EAAA;AACrF,IAAM,KAAA,CAAA;AAAA,MACJ,SAAW,EAAA,IAAA;AAAA,MACX,GAAG;AAAA,KACJ,CAAA;AArCH;AAAA;AAAA;AAAA,IAAQ,IAAA,CAAA,QAAA,GAAW,IAAI,aAAA,CAAuC,CAAC,CAAA;AAsB/D;AAAA;AAAA;AAAA,IAAA,IAAA,CAAO,WAAoB,GAAA,IAAA;AAE3B,IAAQ,IAAA,CAAA,sBAAA,GAAyB,IAAI,qBAAsB,EAAA;AAE3D,IAAU,IAAA,CAAA,mBAAA,GAAmD,IAAI,wBAAA,CAAyB,IAAM,EAAA;AAAA,MAC9F,yBAA2B,EAAA,IAAA,CAAK,yBAA0B,CAAA,IAAA,CAAK,IAAI;AAAA,KACpE,CAAA;AAWC,IAAK,IAAA,CAAA,mBAAA,CAAoB,SAAS,4BAA4B,CAAA;AAC9D,IAAA,IAAA,CAAK,oBAAqB,CAAA,MAAM,IAAK,CAAA,UAAA,EAAY,CAAA;AAAA;AACnD,EAEU,UAAsC,GAAA;AAC9C,IAAI,IAAA,IAAA,CAAK,MAAM,SAAW,EAAA;AACxB,MAAA,IAAA,CAAK,QAAS,EAAA;AAAA;AAGhB,IAAI,IAAA,IAAA,CAAK,0BAA4B,EAAA;AACnC,MAAA,IAAA,CAAK,QAAS,EAAA;AAAA;AAIhB,IAAK,IAAA,CAAA,gBAAA,CAAiB,CAAC,CAAA,EAAG,CAAM,KAAA;AAC9B,MAAA,IAAI,CAAC,CAAA,CAAE,SAAa,IAAA,IAAA,CAAK,QAAU,EAAA;AAEjC,QAAA,IAAA,CAAK,SAAS,WAAY,EAAA;AAC1B,QAAA,IAAA,CAAK,QAAW,GAAA,MAAA;AAChB,QAAA,IAAA,CAAK,SAAU,EAAA;AAGf,QAAA,IAAA,CAAK,SAAS,IAAK,CAAA,EAAE,QAAQ,IAAM,EAAA,IAAA,EAAM,gBAAgB,CAAA;AAEzD,QAAA,IAAA,CAAK,cAAe,CAAA,EAAE,IAAM,EAAA,cAAA,EAAgB,CAAA;AAAA;AAG9C,MAAA,IAAI,CAAE,CAAA,SAAA,IAAa,CAAC,CAAA,CAAE,SAAW,EAAA;AAE/B,QAAA,IAAA,CAAK,QAAS,EAAA;AACd,QAAA,IAAA,CAAK,QAAS,EAAA;AAAA;AAChB,KACD,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,YAAa,EAAA;AAAA,KACpB;AAAA;AACF,EAEU,YAAqB,GAAA;AAC7B,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,IAAA,CAAK,SAAS,WAAY,EAAA;AAC1B,MAAA,IAAA,CAAK,QAAW,GAAA,MAAA;AAAA;AAGlB,IAAA,IAAA,CAAK,SAAU,EAAA;AAEf,IAAK,IAAA,CAAA,sBAAA,CAAuB,4CAA4C,IAAI,CAAA;AAAA;AAC9E,EAEU,yBAAkC,GAAA;AAC1C,IAAA,IAAA,CAAK,QAAS,EAAA;AAAA;AAChB,EAEO,WAAc,GAAA;AACnB,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,IAAA,CAAK,SAAS,WAAY,EAAA;AAC1B,MAAA,IAAA,CAAK,QAAW,GAAA,MAAA;AAEhB,MAAA,IAAA,CAAK,eAAe,cAAc,CAAA;AAAA;AACpC;AACF,EAEU,eAAe,IAAiB,EAAA;AACxC,IAAI,IAAA,IAAA,CAAK,MAAM,SAAW,EAAA;AACxB,MAAA,IAAA,CAAK,SAAS,IAAK,CAAA,EAAE,MAAQ,EAAA,IAAA,EAAM,MAAM,CAAA;AACzC,MAAK,IAAA,CAAA,cAAA,CAAe,EAAE,IAAA,EAAM,CAAA;AAAA;AAC9B;AACF,EAEO,gBAAmB,GAAA;AACxB,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACd,EAEQ,wBAA2B,GAAA;AACjC,IAAI,IAAA,CAAC,IAAK,CAAA,KAAA,CAAM,SAAW,EAAA;AACzB,MAAO,OAAA,KAAA;AAAA;AAGT,IAAA,IAAI,IAAK,CAAA,sBAAA,CAAuB,sBAAuB,CAAA,IAAI,CAAG,EAAA;AAC5D,MAAA,aAAA;AAAA,QACE,oBAAA;AAAA,QACA;AAAA,OACF;AACA,MAAO,OAAA,IAAA;AAAA;AAGT,IAAI,IAAA,CAAC,IAAK,CAAA,KAAA,CAAM,IAAM,EAAA;AACpB,MAAO,OAAA,IAAA;AAAA;AAGT,IAAO,OAAA,KAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKQ,eAAe,KAA6C,EAAA;AAClE,IAAA,iBAAA,CAA+C,MAAM,KAAK,CAAA;AAAA;AAE9D;;;;"}
@@ -17,33 +17,27 @@ 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, {
21
- model: layer,
22
- key: layer.state.key
23
- })));
20
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, layers.map((layer) => /* @__PURE__ */ React.createElement(layer.Component, { model: layer, key: layer.state.key })));
24
21
  }
25
22
  function DataLayerControlSwitch({ layer }) {
26
23
  var _a, _b;
27
24
  const elementId = `data-layer-${layer.state.key}`;
28
25
  const { data, isEnabled } = layer.useState();
29
26
  const showLoading = Boolean(data && data.state === LoadingState.Loading);
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
- }));
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 }) }));
47
41
  }
48
42
  const containerStyle = css({ display: "flex" });
49
43
 
@@ -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,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;;;;"}
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;;;;"}
@@ -15,31 +15,13 @@ 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));
37
18
  class AnnotationsDataLayer extends SceneDataLayerBase {
38
19
  constructor(initialState) {
39
20
  super(
40
- __spreadValues({
41
- isEnabled: true
42
- }, initialState),
21
+ {
22
+ isEnabled: true,
23
+ ...initialState
24
+ },
43
25
  ["query"]
44
26
  );
45
27
  this._scopedVars = {
@@ -89,14 +71,15 @@ class AnnotationsDataLayer extends SceneDataLayerBase {
89
71
  this.publishResults(stateUpdate);
90
72
  });
91
73
  } catch (e) {
92
- this.publishResults(__spreadProps(__spreadValues({}, emptyPanelData), {
74
+ this.publishResults({
75
+ ...emptyPanelData,
93
76
  state: LoadingState.Error,
94
77
  errors: [
95
78
  {
96
79
  message: getMessageFromError(e)
97
80
  }
98
81
  ]
99
- }));
82
+ });
100
83
  console.error("AnnotationsDataLayer error", e);
101
84
  }
102
85
  }
@@ -106,11 +89,12 @@ class AnnotationsDataLayer extends SceneDataLayerBase {
106
89
  processEvents(query, events) {
107
90
  let processedEvents = postProcessQueryResult(query, events.events || []);
108
91
  processedEvents = dedupAnnotations(processedEvents);
109
- const stateUpdate = __spreadProps(__spreadValues({}, emptyPanelData), { state: events.state });
92
+ const stateUpdate = { ...emptyPanelData, state: events.state };
110
93
  const df = arrayToDataFrame(processedEvents);
111
- df.meta = __spreadProps(__spreadValues({}, df.meta), {
94
+ df.meta = {
95
+ ...df.meta,
112
96
  dataTopic: DataTopic.Annotations
113
- });
97
+ };
114
98
  stateUpdate.series = [df];
115
99
  return stateUpdate;
116
100
  }
@@ -121,9 +105,7 @@ function AnnotationsDataLayerRenderer({ model }) {
121
105
  if (isHidden) {
122
106
  return null;
123
107
  }
124
- return /* @__PURE__ */ React.createElement(DataLayerControlSwitch, {
125
- layer: model
126
- });
108
+ return /* @__PURE__ */ React.createElement(DataLayerControlSwitch, { layer: model });
127
109
  }
128
110
 
129
111
  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,22 +1,3 @@
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));
20
1
  const GLOBAL_ANNOTATION_ID = 0;
21
2
  function filterAnnotations(data, filters) {
22
3
  var _a;
@@ -68,14 +49,16 @@ function filterAnnotations(data, filters) {
68
49
  continue;
69
50
  }
70
51
  }
71
- fields.push(__spreadProps(__spreadValues({}, field), {
52
+ fields.push({
53
+ ...field,
72
54
  values: buffer
73
- }));
55
+ });
74
56
  }
75
- processed.push(__spreadProps(__spreadValues({}, frame), {
57
+ processed.push({
58
+ ...frame,
76
59
  fields,
77
60
  length: frameLength
78
- }));
61
+ });
79
62
  frameIdx++;
80
63
  }
81
64
  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,25 +7,6 @@ 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));
29
10
  let counter = 100;
30
11
  function getNextRequestId() {
31
12
  return "AQ" + counter++;
@@ -50,8 +31,15 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
50
31
  }))
51
32
  );
52
33
  }
53
- const processor = __spreadValues(__spreadValues({}, standardAnnotationSupport), datasource.annotations);
54
- const annotationWithDefaults = __spreadValues(__spreadValues({}, (_a = processor.getDefaultQuery) == null ? void 0 : _a.call(processor)), query);
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
+ };
55
43
  const annotation = processor.prepareAnnotation(annotationWithDefaults);
56
44
  if (!annotation) {
57
45
  return of({
@@ -74,21 +62,23 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
74
62
  __annotation: { text: annotation.name, value: annotation },
75
63
  __sceneObject: wrapInSafeSerializableSceneObject(layer)
76
64
  };
77
- const queryRequest = __spreadValues(__spreadProps(__spreadValues({
65
+ const queryRequest = {
78
66
  startTime: Date.now(),
79
67
  requestId: getNextRequestId(),
80
68
  range: timeRange.state.value,
81
69
  maxDataPoints,
82
- scopedVars
83
- }, interval), {
70
+ scopedVars,
71
+ ...interval,
84
72
  app: CoreApp.Dashboard,
85
73
  timezone: timeRange.getTimeZone(),
86
74
  targets: [
87
- __spreadProps(__spreadValues({}, processedQuery), {
75
+ {
76
+ ...processedQuery,
88
77
  refId: "Anno"
89
- })
90
- ]
91
- }), getEnrichedDataRequest(layer));
78
+ }
79
+ ],
80
+ ...getEnrichedDataRequest(layer)
81
+ };
92
82
  const runRequest = getRunRequest();
93
83
  return runRequest(datasource, queryRequest).pipe(
94
84
  mergeMap((panelData) => {
@@ -102,7 +92,7 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
102
92
  data.forEach((frame) => {
103
93
  var _a2;
104
94
  if (!((_a2 = frame.meta) == null ? void 0 : _a2.dataTopic)) {
105
- frame.meta = __spreadProps(__spreadValues({}, frame.meta || {}), { dataTopic: DataTopic.Annotations });
95
+ frame.meta = { ...frame.meta || {}, dataTopic: DataTopic.Annotations };
106
96
  }
107
97
  });
108
98
  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,52 +4,31 @@ 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
- };
38
7
  const standardAnnotationSupport = {
8
+ /**
9
+ * Assume the stored value is standard model.
10
+ */
39
11
  prepareAnnotation: (json) => {
40
12
  if (isString(json == null ? void 0 : json.query)) {
41
- const _a = json, { query } = _a, rest = __objRest(_a, ["query"]);
42
- return __spreadProps(__spreadValues({}, rest), {
13
+ const { query, ...rest } = json;
14
+ return {
15
+ ...rest,
43
16
  target: {
44
17
  refId: "annotation_query",
45
18
  query
46
19
  },
47
20
  mappings: {}
48
- });
21
+ };
49
22
  }
50
23
  return json;
51
24
  },
25
+ /**
26
+ * Default will just return target from the annotation.
27
+ */
52
28
  prepareQuery: (anno) => anno.target,
29
+ /**
30
+ * Provides default processing from dataFrame to annotation events.
31
+ */
53
32
  processEvents: (anno, data) => {
54
33
  return getAnnotationsFromData(data, anno.mappings);
55
34
  }
@@ -201,6 +180,7 @@ const legacyRunner = [
201
180
  "loki",
202
181
  "elasticsearch",
203
182
  "grafana-opensearch-datasource"
183
+ // external
204
184
  ];
205
185
  function shouldUseLegacyRunner(datasource) {
206
186
  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":"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"}
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,22 +1,6 @@
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
- };
20
4
  function postProcessQueryResult(annotation, results) {
21
5
  if (annotation.snapshotData) {
22
6
  annotation = cloneDeep(annotation);
@@ -24,7 +8,7 @@ function postProcessQueryResult(annotation, results) {
24
8
  }
25
9
  const processed = results.map((item) => {
26
10
  var _a;
27
- const processedItem = __spreadValues({}, item);
11
+ const processedItem = { ...item };
28
12
  processedItem.source = annotation;
29
13
  processedItem.color = config.theme2.visualization.getColorByName(annotation.iconColor);
30
14
  processedItem.type = annotation.name;