{"version":3,"file":"8881.0dfd49f78dc93c695e30.js","mappings":"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","sources":["webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/Field.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/LogsQueryEditor/FormatAsField.tsx","webpack://grafana/./public/app/core/utils/deferred.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/LogsQueryEditor/QueryField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/EntryIcon.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/styles.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/NestedEntry.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/NestedRow.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/ResourcePicker.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/LogsQueryEditor/ResourceField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/LogsQueryEditor/useMigrations.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/LogsQueryEditor/LogsQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/LogsQueryEditor/setQueryValue.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/setQueryValue.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/SubscriptionField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ArgQueryEditor/QueryField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ArgQueryEditor/ArgQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/AggregationField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/DimensionFields.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/LegendFormatField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricNameField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricNamespaceField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/ResourceGroupsField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/ResourceNameField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/ResourceTypeField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/TimeGrainField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/TopField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/dataHooks.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricsQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/MetricsQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/deprecated/components/ApplicationInsightsEditor/index.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/deprecated/components/InsightsAnalyticsEditor/index.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/QueryEditor/QueryTypeField.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/QueryEditor/usePreparedQuery.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/QueryEditor/QueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/types.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/Space.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/components/deprecated/utils.tsx","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/time_grain_converter.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/types/query.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/types/types.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/migrateQuery.ts","webpack://grafana/./public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/useLastError.ts","webpack://grafana/../../opt/drone/yarncache/immer-npm-9.0.12-e8cd7358fa-bcbec6d76d.zip/node_modules/immer/dist/immer.esm.js"],"sourcesContent":["import React from 'react';\n\nimport { InlineField } from '@grafana/ui';\nimport { Props as InlineFieldProps } from '@grafana/ui/src/components/Forms/InlineField';\n\nconst DEFAULT_LABEL_WIDTH = 18;\n\nexport const Field = (props: InlineFieldProps) => {\n return ;\n};\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps } from '../../types';\nimport { Field } from '../Field';\n\nimport { setFormatAs } from './setQueryValue';\n\nconst FORMAT_OPTIONS: Array> = [\n { label: 'Time series', value: 'time_series' },\n { label: 'Table', value: 'table' },\n];\n\nconst FormatAsField: React.FC = ({ query, variableOptionGroup, onQueryChange }) => {\n const options = useMemo(() => [...FORMAT_OPTIONS, variableOptionGroup], [variableOptionGroup]);\n\n const handleChange = useCallback(\n (change: SelectableValue) => {\n const { value } = change;\n if (!value) {\n return;\n }\n\n const newQuery = setFormatAs(query, value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n return (\n \n \n \n );\n};\n\nexport default FormatAsField;\n","export class Deferred {\n resolve?: (reason: T | PromiseLike) => void;\n reject?: (reason?: any) => void;\n promise: Promise;\n\n constructor() {\n this.resolve = undefined;\n this.reject = undefined;\n\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n Object.freeze(this);\n }\n}\n","import React, { useCallback, useEffect, useRef } from 'react';\n\nimport { CodeEditor, Monaco, MonacoEditor } from '@grafana/ui';\nimport { Deferred } from 'app/core/utils/deferred';\n\nimport { AzureQueryEditorFieldProps } from '../../types';\n\nimport { setKustoQuery } from './setQueryValue';\n\ninterface MonacoPromise {\n editor: MonacoEditor;\n monaco: Monaco;\n}\n\ninterface MonacoLanguages {\n kusto: {\n getKustoWorker: () => Promise<\n (url: any) => Promise<{\n setSchema: (schema: any, clusterUrl: string, name: string) => void;\n }>\n >;\n };\n}\n\nconst QueryField: React.FC = ({ query, datasource, onQueryChange }) => {\n const monacoPromiseRef = useRef>();\n function getPromise() {\n if (!monacoPromiseRef.current) {\n monacoPromiseRef.current = new Deferred();\n }\n\n return monacoPromiseRef.current.promise;\n }\n\n useEffect(() => {\n if (!query.azureLogAnalytics?.resource) {\n return;\n }\n\n const promises = [\n datasource.azureLogAnalyticsDatasource.getKustoSchema(query.azureLogAnalytics.resource),\n getPromise(),\n ] as const;\n\n // the kusto schema call might fail, but its okay for that to happen silently\n Promise.all(promises).then(([schema, { monaco, editor }]) => {\n const languages = monaco.languages as unknown as MonacoLanguages;\n\n languages.kusto\n .getKustoWorker()\n .then((kusto) => {\n const model = editor.getModel();\n return model && kusto(model.uri);\n })\n .then((worker) => {\n worker?.setSchema(schema, 'https://help.kusto.windows.net', 'Samples');\n });\n });\n }, [datasource.azureLogAnalyticsDatasource, query.azureLogAnalytics?.resource]);\n\n const handleEditorMount = useCallback((editor: MonacoEditor, monaco: Monaco) => {\n monacoPromiseRef.current?.resolve?.({ editor, monaco });\n }, []);\n\n const onChange = useCallback(\n (newQuery: string) => {\n onQueryChange(setKustoQuery(query, newQuery));\n },\n [onQueryChange, query]\n );\n\n return (\n \n );\n};\n\nexport default QueryField;\n","import React from 'react';\n\nimport { Icon } from '@grafana/ui';\n\nimport { ResourceRow, ResourceRowType } from './types';\n\ninterface EntryIconProps {\n entry: ResourceRow;\n isOpen: boolean;\n}\n\nexport const EntryIcon: React.FC = ({ isOpen, entry: { type } }) => {\n switch (type) {\n case ResourceRowType.Subscription:\n return ;\n\n case ResourceRowType.ResourceGroup:\n return ;\n\n case ResourceRowType.Resource:\n return ;\n\n case ResourceRowType.VariableGroup:\n return ;\n\n case ResourceRowType.Variable:\n return ;\n\n default:\n return null;\n }\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n table: css({\n width: '100%',\n tableLayout: 'fixed',\n }),\n\n tableScroller: css({\n maxHeight: '50vh',\n overflow: 'auto',\n }),\n\n header: css({\n background: theme.colors.background.secondary,\n }),\n\n row: css({\n borderBottom: `1px solid ${theme.colors.border.weak}`,\n\n '&:last-of-type': {\n borderBottomColor: theme.colors.border.medium,\n },\n }),\n\n disabledRow: css({\n opacity: 0.5,\n }),\n\n cell: css({\n padding: theme.spacing(1, 1, 1, 0),\n width: '25%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '&:first-of-type': {\n width: '50%',\n padding: theme.spacing(1, 1, 1, 2),\n },\n }),\n\n collapseButton: css({ margin: 0 }),\n\n loadingCell: css({\n textAlign: 'center',\n }),\n\n spinner: css({\n marginBottom: 0,\n }),\n\n nestedEntry: css({\n display: 'flex',\n alignItems: 'center',\n }),\n\n entryContentItem: css({\n margin: theme.spacing(0, 1, 0, 0),\n }),\n\n truncated: css({\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n\n nestedRowCheckbox: css({\n zIndex: 0,\n }),\n\n selectionFooter: css({\n position: 'sticky',\n bottom: 0,\n background: theme.colors.background.primary,\n paddingTop: theme.spacing(2),\n }),\n\n loadingWrapper: css({\n textAlign: 'center',\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n color: theme.colors.text.secondary,\n }),\n});\n\nexport default getStyles;\n","import { cx } from '@emotion/css';\nimport React, { useCallback, useEffect } from 'react';\n\nimport { Checkbox, IconButton, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport { Space } from '../Space';\n\nimport { EntryIcon } from './EntryIcon';\nimport getStyles from './styles';\nimport { ResourceRow } from './types';\n\ninterface NestedEntryProps {\n level: number;\n entry: ResourceRow;\n isSelected: boolean;\n isSelectable: boolean;\n isOpen: boolean;\n isDisabled: boolean;\n scrollIntoView?: boolean;\n onToggleCollapse: (row: ResourceRow) => void;\n onSelectedChange: (row: ResourceRow, selected: boolean) => void;\n}\n\nexport const NestedEntry: React.FC = ({\n entry,\n isSelected,\n isDisabled,\n isOpen,\n isSelectable,\n scrollIntoView,\n level,\n onToggleCollapse,\n onSelectedChange,\n}) => {\n const theme = useTheme2();\n const styles = useStyles2(getStyles);\n const hasChildren = !!entry.children;\n\n const handleToggleCollapse = useCallback(() => {\n onToggleCollapse(entry);\n }, [onToggleCollapse, entry]);\n\n const handleSelectedChanged = useCallback(\n (ev: React.ChangeEvent) => {\n const isSelected = ev.target.checked;\n onSelectedChange(entry, isSelected);\n },\n [entry, onSelectedChange]\n );\n\n const checkboxId = `${scrollIntoView ? 'table' : 'summary'}_checkbox_${entry.uri}`;\n\n // Scroll to the selected element if it's not in the view\n // Only do it once, when the component is mounted\n useEffect(() => {\n if (isSelected && scrollIntoView) {\n document.getElementById(checkboxId)?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n
\n {hasChildren ? (\n \n ) : (\n \n )}\n\n \n\n {isSelectable && (\n <>\n \n \n \n )}\n\n \n \n\n \n
\n );\n};\n","import { cx } from '@emotion/css';\nimport React, { useEffect, useState } from 'react';\n\nimport { FadeTransition, LoadingPlaceholder, useStyles2 } from '@grafana/ui';\n\nimport { NestedEntry } from './NestedEntry';\nimport getStyles from './styles';\nimport { ResourceRow, ResourceRowGroup, ResourceRowType } from './types';\nimport { findRow } from './utils';\n\ninterface NestedRowProps {\n row: ResourceRow;\n level: number;\n selectedRows: ResourceRowGroup;\n requestNestedRows: (row: ResourceRow) => Promise;\n onRowSelectedChange: (row: ResourceRow, selected: boolean) => void;\n selectableEntryTypes: ResourceRowType[];\n scrollIntoView?: boolean;\n}\n\nconst NestedRow: React.FC = ({\n row,\n selectedRows,\n level,\n requestNestedRows,\n onRowSelectedChange,\n selectableEntryTypes,\n scrollIntoView,\n}) => {\n const styles = useStyles2(getStyles);\n const [rowStatus, setRowStatus] = useState<'open' | 'closed' | 'loading'>('closed');\n\n const isSelected = !!selectedRows.find((v) => v.uri === row.uri);\n const isDisabled = selectedRows.length > 0 && !isSelected;\n const isOpen = rowStatus === 'open';\n\n const onRowToggleCollapse = async () => {\n if (rowStatus === 'open') {\n setRowStatus('closed');\n return;\n }\n setRowStatus('loading');\n requestNestedRows(row)\n .then(() => setRowStatus('open'))\n .catch(() => setRowStatus('closed'));\n };\n\n // opens the resource group on load of component if there was a previously saved selection\n useEffect(() => {\n // Assuming we don't have multi-select yet\n const selectedRow = selectedRows[0];\n\n const containsChild = selectedRow && !!findRow(row.children ?? [], selectedRow.uri);\n\n if (containsChild) {\n setRowStatus('open');\n }\n }, [selectedRows, row]);\n\n return (\n <>\n \n \n type === row.type)}\n scrollIntoView={scrollIntoView}\n />\n \n\n {row.typeLabel}\n\n {row.location ?? '-'}\n \n\n {isOpen &&\n row.children &&\n Object.keys(row.children).length > 0 &&\n row.children.map((childRow) => (\n \n ))}\n\n \n \n \n \n \n \n \n \n );\n};\n\nexport default NestedRow;\n","import { cx } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Alert, Button, Icon, Input, LoadingPlaceholder, Tooltip, useStyles2, Collapse, Label } from '@grafana/ui';\n\nimport ResourcePickerData from '../../resourcePicker/resourcePickerData';\nimport messageFromError from '../../utils/messageFromError';\nimport { Space } from '../Space';\n\nimport NestedRow from './NestedRow';\nimport getStyles from './styles';\nimport { ResourceRow, ResourceRowGroup, ResourceRowType } from './types';\nimport { addResources, findRow, parseResourceURI } from './utils';\n\ninterface ResourcePickerProps {\n resourcePickerData: ResourcePickerData;\n resourceURI: string | undefined;\n selectableEntryTypes: ResourceRowType[];\n\n onApply: (resourceURI: string | undefined) => void;\n onCancel: () => void;\n}\n\nconst ResourcePicker = ({\n resourcePickerData,\n resourceURI,\n onApply,\n onCancel,\n selectableEntryTypes,\n}: ResourcePickerProps) => {\n const styles = useStyles2(getStyles);\n\n type LoadingStatus = 'NotStarted' | 'Started' | 'Done';\n const [loadingStatus, setLoadingStatus] = useState('NotStarted');\n const [azureRows, setAzureRows] = useState([]);\n const [internalSelectedURI, setInternalSelectedURI] = useState(resourceURI);\n const [errorMessage, setErrorMessage] = useState(undefined);\n const [isAdvancedOpen, setIsAdvancedOpen] = useState(resourceURI?.includes('$'));\n // Sync the resourceURI prop to internal state\n useEffect(() => {\n setInternalSelectedURI(resourceURI);\n }, [resourceURI]);\n\n // Request initial data on first mount\n useEffect(() => {\n if (loadingStatus === 'NotStarted') {\n const loadInitialData = async () => {\n try {\n setLoadingStatus('Started');\n let resources = await resourcePickerData.getSubscriptions();\n if (!internalSelectedURI) {\n setAzureRows(resources);\n setLoadingStatus('Done');\n return;\n }\n\n const parsedURI = parseResourceURI(internalSelectedURI ?? '');\n if (parsedURI) {\n const resourceGroupURI = `/subscriptions/${parsedURI.subscriptionID}/resourceGroups/${parsedURI.resourceGroup}`;\n\n // if a resource group was previously selected, but the resource groups under the parent subscription have not been loaded yet\n if (parsedURI.resourceGroup && !findRow(resources, resourceGroupURI)) {\n const resourceGroups = await resourcePickerData.getResourceGroupsBySubscriptionId(\n parsedURI.subscriptionID\n );\n resources = addResources(resources, `/subscriptions/${parsedURI.subscriptionID}`, resourceGroups);\n }\n\n // if a resource was previously selected, but the resources under the parent resource group have not been loaded yet\n if (parsedURI.resource && !findRow(azureRows, parsedURI.resource ?? '')) {\n const resourcesForResourceGroup = await resourcePickerData.getResourcesForResourceGroup(resourceGroupURI);\n resources = addResources(resources, resourceGroupURI, resourcesForResourceGroup);\n }\n }\n setAzureRows(resources);\n setLoadingStatus('Done');\n } catch (error) {\n setLoadingStatus('Done');\n setErrorMessage(messageFromError(error));\n }\n };\n\n loadInitialData();\n }\n }, [resourcePickerData, internalSelectedURI, azureRows, loadingStatus]);\n\n // Map the selected item into an array of rows\n const selectedResourceRows = useMemo(() => {\n const found = internalSelectedURI && findRow(azureRows, internalSelectedURI);\n\n return found\n ? [\n {\n ...found,\n children: undefined,\n },\n ]\n : [];\n }, [internalSelectedURI, azureRows]);\n\n // Request resources for a expanded resource group\n const requestNestedRows = useCallback(\n async (resourceGroupOrSubscription: ResourceRow) => {\n // clear error message (also when loading cached resources)\n setErrorMessage(undefined);\n\n // If we already have children, we don't need to re-fetch them.\n if (resourceGroupOrSubscription.children?.length) {\n return;\n }\n\n try {\n const rows =\n resourceGroupOrSubscription.type === ResourceRowType.Subscription\n ? await resourcePickerData.getResourceGroupsBySubscriptionId(resourceGroupOrSubscription.id)\n : await resourcePickerData.getResourcesForResourceGroup(resourceGroupOrSubscription.id);\n\n const newRows = addResources(azureRows, resourceGroupOrSubscription.uri, rows);\n\n setAzureRows(newRows);\n } catch (error) {\n setErrorMessage(messageFromError(error));\n throw error;\n }\n },\n [resourcePickerData, azureRows]\n );\n\n const handleSelectionChanged = useCallback((row: ResourceRow, isSelected: boolean) => {\n isSelected ? setInternalSelectedURI(row.uri) : setInternalSelectedURI(undefined);\n }, []);\n\n const handleApply = useCallback(() => {\n onApply(internalSelectedURI);\n }, [internalSelectedURI, onApply]);\n\n return (\n
\n {loadingStatus === 'Started' ? (\n
\n \n
\n ) : (\n <>\n \n \n \n \n \n \n \n \n
ScopeTypeLocation
\n\n
\n \n \n {azureRows.map((row) => (\n \n ))}\n \n
\n
\n\n
\n {selectedResourceRows.length > 0 && (\n <>\n
Selection
\n\n
\n \n \n {selectedResourceRows.map((row) => (\n \n ))}\n \n
\n
\n \n \n )}\n\n setIsAdvancedOpen(!isAdvancedOpen)}\n >\n \n setInternalSelectedURI(event.currentTarget.value)}\n placeholder=\"ex: /subscriptions/$subId\"\n />\n \n \n\n \n\n \n\n \n
\n \n )}\n {errorMessage && (\n <>\n \n \n {errorMessage}\n \n \n )}\n
\n );\n};\n\nexport default ResourcePicker;\n","import { css } from '@emotion/css';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Button, Icon, Modal, useStyles2 } from '@grafana/ui';\n\nimport Datasource from '../../datasource';\nimport { AzureQueryEditorFieldProps, AzureResourceSummaryItem } from '../../types';\nimport { Field } from '../Field';\nimport ResourcePicker from '../ResourcePicker';\nimport { ResourceRowType } from '../ResourcePicker/types';\nimport { parseResourceURI } from '../ResourcePicker/utils';\nimport { Space } from '../Space';\n\nimport { setResource } from './setQueryValue';\n\nfunction parseResourceDetails(resourceURI: string) {\n const parsed = parseResourceURI(resourceURI);\n\n if (!parsed) {\n return undefined;\n }\n\n return {\n subscriptionName: parsed.subscriptionID,\n resourceGroupName: parsed.resourceGroup,\n resourceName: parsed.resource,\n };\n}\n\nconst ResourceField: React.FC = ({ query, datasource, onQueryChange }) => {\n const styles = useStyles2(getStyles);\n const { resource } = query.azureLogAnalytics ?? {};\n const [pickerIsOpen, setPickerIsOpen] = useState(false);\n\n const handleOpenPicker = useCallback(() => {\n setPickerIsOpen(true);\n }, []);\n\n const closePicker = useCallback(() => {\n setPickerIsOpen(false);\n }, []);\n\n const handleApply = useCallback(\n (resourceURI: string | undefined) => {\n onQueryChange(setResource(query, resourceURI));\n closePicker();\n },\n [closePicker, onQueryChange, query]\n );\n\n return (\n <>\n \n \n \n\n \n \n \n \n );\n};\n\ninterface ResourceLabelProps {\n resource: string | undefined;\n datasource: Datasource;\n}\n\nconst ResourceLabel = ({ resource, datasource }: ResourceLabelProps) => {\n const [resourceComponents, setResourceComponents] = useState(parseResourceDetails(resource ?? ''));\n\n useEffect(() => {\n if (resource && parseResourceDetails(resource)) {\n datasource.resourcePickerData.getResourceURIDisplayProperties(resource).then(setResourceComponents);\n } else {\n setResourceComponents(undefined);\n }\n }, [datasource.resourcePickerData, resource]);\n\n if (!resource) {\n return <>Select a resource;\n }\n\n if (resourceComponents) {\n return ;\n }\n\n if (resource.startsWith('$')) {\n return (\n \n {resource}\n \n );\n }\n\n return <>{resource};\n};\n\ninterface FormattedResourceProps {\n resource: AzureResourceSummaryItem;\n}\n\nconst FormattedResource = ({ resource }: FormattedResourceProps) => {\n return (\n \n {resource.subscriptionName}\n {resource.resourceGroupName && (\n <>\n \n {resource.resourceGroupName}\n \n )}\n {resource.resourceName && (\n <>\n \n {resource.resourceName}\n \n )}\n \n );\n};\n\nconst Separator = () => (\n <>\n \n {'/'}\n \n \n);\n\nexport default ResourceField;\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n modal: css({\n width: theme.breakpoints.values.lg,\n }),\n});\n","import { useEffect, useState } from 'react';\n\nimport Datasource from '../../datasource';\nimport { AzureMonitorQuery } from '../../types';\nimport { isGUIDish } from '../ResourcePicker/utils';\n\nasync function migrateWorkspaceQueryToResourceQuery(\n datasource: Datasource,\n query: AzureMonitorQuery,\n onChange: (newQuery: AzureMonitorQuery) => void\n) {\n if (query.azureLogAnalytics?.workspace !== undefined && !query.azureLogAnalytics.resource) {\n const isWorkspaceGUID = isGUIDish(query.azureLogAnalytics.workspace);\n let resource: string;\n\n if (isWorkspaceGUID) {\n resource = await datasource.resourcePickerData.getResourceURIFromWorkspace(query.azureLogAnalytics.workspace);\n } else {\n // The value of workspace is probably a template variable so we just migrate it over as-is\n resource = query.azureLogAnalytics.workspace;\n }\n\n const newQuery = {\n ...query,\n azureLogAnalytics: {\n ...query.azureLogAnalytics,\n resource: resource,\n workspace: undefined,\n },\n };\n\n delete newQuery.azureLogAnalytics.workspace;\n\n onChange(newQuery);\n }\n}\n\ninterface ErrorMessage {\n title: string;\n message: string;\n}\n\nexport default function useMigrations(\n datasource: Datasource,\n query: AzureMonitorQuery,\n onChange: (newQuery: AzureMonitorQuery) => void\n) {\n const [migrationError, setMigrationError] = useState();\n\n useEffect(() => {\n migrateWorkspaceQueryToResourceQuery(datasource, query, onChange).catch((err) =>\n setMigrationError({\n title: 'Unable to migrate workspace as a resource',\n message: err.message,\n })\n );\n }, [datasource, query, onChange]);\n\n return migrationError;\n}\n","import React from 'react';\n\nimport { Alert, InlineFieldRow } from '@grafana/ui';\n\nimport Datasource from '../../datasource';\nimport { AzureMonitorErrorish, AzureMonitorOption, AzureMonitorQuery } from '../../types';\n\nimport FormatAsField from './FormatAsField';\nimport QueryField from './QueryField';\nimport ResourceField from './ResourceField';\nimport useMigrations from './useMigrations';\n\ninterface LogsQueryEditorProps {\n query: AzureMonitorQuery;\n datasource: Datasource;\n subscriptionId?: string;\n onChange: (newQuery: AzureMonitorQuery) => void;\n variableOptionGroup: { label: string; options: AzureMonitorOption[] };\n setError: (source: string, error: AzureMonitorErrorish | undefined) => void;\n hideFormatAs?: boolean;\n}\n\nconst LogsQueryEditor: React.FC = ({\n query,\n datasource,\n subscriptionId,\n variableOptionGroup,\n onChange,\n setError,\n hideFormatAs,\n}) => {\n const migrationError = useMigrations(datasource, query, onChange);\n\n return (\n
\n \n \n \n\n \n\n {!hideFormatAs && (\n \n )}\n\n {migrationError && {migrationError.message}}\n
\n );\n};\n\nexport default LogsQueryEditor;\n","import { AzureMonitorQuery } from '../../types';\n\nexport function setKustoQuery(query: AzureMonitorQuery, kustoQuery: string): AzureMonitorQuery {\n return {\n ...query,\n azureLogAnalytics: {\n ...query.azureLogAnalytics,\n query: kustoQuery,\n },\n };\n}\n\nexport function setFormatAs(query: AzureMonitorQuery, formatAs: string): AzureMonitorQuery {\n return {\n ...query,\n azureLogAnalytics: {\n ...query.azureLogAnalytics,\n resultFormat: formatAs,\n },\n };\n}\n\nexport function setResource(query: AzureMonitorQuery, resourceURI: string | undefined): AzureMonitorQuery {\n return {\n ...query,\n azureLogAnalytics: {\n ...query.azureLogAnalytics,\n resource: resourceURI,\n },\n };\n}\n","import { AzureMetricDimension, AzureMonitorQuery } from '../../types';\n\nexport function setSubscriptionID(query: AzureMonitorQuery, subscriptionID: string): AzureMonitorQuery {\n if (query.subscription === subscriptionID) {\n return query;\n }\n\n return {\n ...query,\n subscription: subscriptionID,\n azureMonitor: {\n ...query.azureMonitor,\n resourceGroup: undefined,\n metricDefinition: undefined,\n metricNamespace: undefined,\n resourceName: undefined,\n metricName: undefined,\n aggregation: undefined,\n timeGrain: '',\n dimensionFilters: [],\n },\n };\n}\n\nexport function setResourceGroup(query: AzureMonitorQuery, resourceGroup: string | undefined): AzureMonitorQuery {\n if (query.azureMonitor?.resourceGroup === resourceGroup) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n resourceGroup: resourceGroup,\n metricDefinition: undefined,\n metricNamespace: undefined,\n resourceName: undefined,\n metricName: undefined,\n aggregation: undefined,\n timeGrain: '',\n dimensionFilters: [],\n },\n };\n}\n\n// In the query as \"metricDefinition\" for some reason\nexport function setResourceType(query: AzureMonitorQuery, resourceType: string | undefined): AzureMonitorQuery {\n if (query.azureMonitor?.metricDefinition === resourceType) {\n return query;\n }\n\n const newQuery = {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n metricDefinition: resourceType,\n resourceName: undefined,\n metricNamespace: undefined,\n metricName: undefined,\n aggregation: undefined,\n timeGrain: '',\n dimensionFilters: [],\n },\n };\n\n return newQuery;\n}\n\nexport function setResourceName(query: AzureMonitorQuery, resourceName: string | undefined): AzureMonitorQuery {\n if (query.azureMonitor?.resourceName === resourceName) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n resourceName: resourceName,\n metricNamespace: undefined,\n metricName: undefined,\n aggregation: undefined,\n timeGrain: '',\n dimensionFilters: [],\n },\n };\n}\n\nexport function setMetricNamespace(query: AzureMonitorQuery, metricNamespace: string | undefined): AzureMonitorQuery {\n if (query.azureMonitor?.metricNamespace === metricNamespace) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n metricNamespace: metricNamespace,\n metricName: undefined,\n aggregation: undefined,\n timeGrain: '',\n dimensionFilters: [],\n },\n };\n}\n\nexport function setMetricName(query: AzureMonitorQuery, metricName: string | undefined): AzureMonitorQuery {\n if (query.azureMonitor?.metricName === metricName) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n metricName: metricName,\n aggregation: undefined,\n timeGrain: '',\n dimensionFilters: [],\n },\n };\n}\n\nexport function setAggregation(query: AzureMonitorQuery, aggregation: string): AzureMonitorQuery {\n if (query.azureMonitor?.aggregation === aggregation) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n aggregation: aggregation,\n },\n };\n}\n\nexport function setTimeGrain(query: AzureMonitorQuery, timeGrain: string): AzureMonitorQuery {\n if (query.azureMonitor?.timeGrain === timeGrain) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n timeGrain: timeGrain,\n },\n };\n}\n\nexport function setDimensionFilters(query: AzureMonitorQuery, dimensions: AzureMetricDimension[]): AzureMonitorQuery {\n if (query.azureMonitor?.dimensionFilters === dimensions) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n dimensionFilters: dimensions,\n },\n };\n}\n\nexport function appendDimensionFilter(\n query: AzureMonitorQuery,\n dimension = '',\n operator = 'eq',\n filter = '*'\n): AzureMonitorQuery {\n const existingFilters = query.azureMonitor?.dimensionFilters ?? [];\n\n return setDimensionFilters(query, [\n ...existingFilters,\n {\n dimension,\n operator,\n filter,\n },\n ]);\n}\n\nexport function removeDimensionFilter(query: AzureMonitorQuery, indexToRemove: number): AzureMonitorQuery {\n const existingFilters = query.azureMonitor?.dimensionFilters ?? [];\n const newFilters = [...existingFilters];\n newFilters.splice(indexToRemove, 1);\n return setDimensionFilters(query, newFilters);\n}\n\nexport function setDimensionFilterValue(\n query: AzureMonitorQuery,\n index: number,\n fieldName: Key,\n value: AzureMetricDimension[Key]\n): AzureMonitorQuery {\n const existingFilters = query.azureMonitor?.dimensionFilters ?? [];\n const newFilters = [...existingFilters];\n const newFilter = newFilters[index];\n newFilter[fieldName] = value;\n return setDimensionFilters(query, newFilters);\n}\n\nexport function setTop(query: AzureMonitorQuery, top: string): AzureMonitorQuery {\n if (query.azureMonitor?.top === top) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n top: top,\n },\n };\n}\n\nexport function setLegendAlias(query: AzureMonitorQuery, alias: string): AzureMonitorQuery {\n if (query.azureMonitor?.alias === alias) {\n return query;\n }\n\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n alias: alias,\n },\n };\n}\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select, MultiSelect } from '@grafana/ui';\n\nimport { AzureMonitorQuery, AzureQueryEditorFieldProps, AzureMonitorOption, AzureQueryType } from '../types';\nimport { findOptions } from '../utils/common';\n\nimport { Field } from './Field';\n\ninterface SubscriptionFieldProps extends AzureQueryEditorFieldProps {\n onQueryChange: (newQuery: AzureMonitorQuery) => void;\n subscriptions: AzureMonitorOption[];\n multiSelect?: boolean;\n}\n\nconst SubscriptionField: React.FC = ({\n query,\n subscriptions,\n variableOptionGroup,\n onQueryChange,\n multiSelect = false,\n}) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n if (!change.value) {\n return;\n }\n\n let newQuery: AzureMonitorQuery = {\n ...query,\n subscription: change.value,\n };\n\n if (query.queryType === AzureQueryType.AzureMonitor) {\n newQuery.azureMonitor = {\n ...newQuery.azureMonitor,\n resourceGroup: undefined,\n metricDefinition: undefined,\n metricNamespace: undefined,\n resourceName: undefined,\n metricName: undefined,\n aggregation: undefined,\n timeGrain: '',\n dimensionFilters: [],\n };\n }\n\n onQueryChange(newQuery);\n },\n [query, onQueryChange]\n );\n\n const onSubscriptionsChange = useCallback(\n (change: Array>) => {\n if (!change) {\n return;\n }\n\n query.subscriptions = change.map((c) => c.value ?? '');\n\n onQueryChange(query);\n },\n [query, onQueryChange]\n );\n\n const options = useMemo(() => [...subscriptions, variableOptionGroup], [subscriptions, variableOptionGroup]);\n\n return multiSelect ? (\n \n \n \n ) : (\n \n \n \n );\n};\n\nexport default SubscriptionField;\n","import React, { useCallback } from 'react';\n\nimport { CodeEditor } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps } from '../../types';\n\nconst QueryField: React.FC = ({ query, onQueryChange }) => {\n const onChange = useCallback(\n (newQuery: string) => {\n onQueryChange({\n ...query,\n azureResourceGraph: {\n ...query.azureResourceGraph,\n query: newQuery,\n },\n });\n },\n [onQueryChange, query]\n );\n\n return (\n \n );\n};\n\nexport default QueryField;\n","import React, { useEffect, useState, useRef } from 'react';\n\nimport { InlineFieldRow } from '@grafana/ui';\n\nimport Datasource from '../../datasource';\nimport { AzureMonitorErrorish, AzureMonitorOption, AzureMonitorQuery } from '../../types';\nimport SubscriptionField from '../SubscriptionField';\n\nimport QueryField from './QueryField';\n\ninterface LogsQueryEditorProps {\n query: AzureMonitorQuery;\n datasource: Datasource;\n subscriptionId?: string;\n onChange: (newQuery: AzureMonitorQuery) => void;\n variableOptionGroup: { label: string; options: AzureMonitorOption[] };\n setError: (source: string, error: AzureMonitorErrorish | undefined) => void;\n}\n\nconst ERROR_SOURCE = 'arg-subscriptions';\nconst ArgQueryEditor: React.FC = ({\n query,\n datasource,\n subscriptionId,\n variableOptionGroup,\n onChange,\n setError,\n}) => {\n const fetchedRef = useRef(false);\n const [subscriptions, setSubscriptions] = useState([]);\n\n useEffect(() => {\n if (fetchedRef.current) {\n return;\n }\n\n fetchedRef.current = true;\n datasource.azureMonitorDatasource\n .getSubscriptions()\n .then((results) => {\n const fetchedSubscriptions = results.map((v) => ({ label: v.text, value: v.value, description: v.value }));\n setSubscriptions(fetchedSubscriptions);\n setError(ERROR_SOURCE, undefined);\n\n if (!query.subscriptions?.length && fetchedSubscriptions?.length) {\n onChange({\n ...query,\n subscriptions: [query.subscription ?? fetchedSubscriptions[0].value],\n });\n }\n })\n .catch((err) => setError(ERROR_SOURCE, err));\n }, [datasource, onChange, query, setError]);\n\n return (\n
\n \n \n \n\n \n
\n );\n};\n\nexport default ArgQueryEditor;\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps, AzureMonitorOption } from '../../types';\nimport { Field } from '../Field';\n\nimport { setAggregation } from './setQueryValue';\n\ninterface AggregationFieldProps extends AzureQueryEditorFieldProps {\n aggregationOptions: AzureMonitorOption[];\n isLoading: boolean;\n}\n\nconst AggregationField: React.FC = ({\n query,\n variableOptionGroup,\n onQueryChange,\n aggregationOptions,\n isLoading,\n}) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n if (!change.value) {\n return;\n }\n\n const newQuery = setAggregation(query, change.value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n const options = useMemo(\n () => [...aggregationOptions, variableOptionGroup],\n [aggregationOptions, variableOptionGroup]\n );\n\n return (\n \n \n \n );\n};\n\nexport default AggregationField;\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { SelectableValue, DataFrame, PanelData } from '@grafana/data';\nimport { Button, Select, HorizontalGroup, VerticalGroup } from '@grafana/ui';\n\nimport { AzureMetricDimension, AzureMonitorOption, AzureMonitorQuery, AzureQueryEditorFieldProps } from '../../types';\nimport { Field } from '../Field';\n\nimport { appendDimensionFilter, removeDimensionFilter, setDimensionFilterValue } from './setQueryValue';\n\ninterface DimensionFieldsProps extends AzureQueryEditorFieldProps {\n dimensionOptions: AzureMonitorOption[];\n}\n\ninterface DimensionLabels {\n [key: string]: Set;\n}\n\nconst useDimensionLabels = (data: PanelData | undefined, query: AzureMonitorQuery) => {\n const [dimensionLabels, setDimensionLabels] = useState({});\n useEffect(() => {\n let labelsObj: DimensionLabels = {};\n if (data?.series?.length) {\n // Identify which series' in the dataframe are relevant to the current query\n const series: DataFrame[] = data.series.flat().filter((series) => series.refId === query.refId);\n const fields = series.flatMap((series) => series.fields);\n // Retrieve labels for series fields\n const labels = fields\n .map((fields) => fields.labels)\n .flat()\n .filter((item) => item!);\n for (const label of labels) {\n // Labels only exist for series that have a dimension selected\n if (label) {\n for (const [dimension, value] of Object.entries(label)) {\n if (labelsObj[dimension]) {\n labelsObj[dimension].add(value);\n } else {\n labelsObj[dimension] = new Set([value]);\n }\n }\n }\n }\n }\n setDimensionLabels((prevLabels) => {\n const newLabels: DimensionLabels = {};\n for (const label of Object.keys(labelsObj)) {\n if (prevLabels[label] && labelsObj[label].size < prevLabels[label].size) {\n newLabels[label] = prevLabels[label];\n } else {\n newLabels[label] = labelsObj[label];\n }\n }\n return newLabels;\n });\n }, [data?.series, query.refId]);\n return dimensionLabels;\n};\n\nconst DimensionFields: React.FC = ({ data, query, dimensionOptions, onQueryChange }) => {\n const dimensionFilters = useMemo(\n () => query.azureMonitor?.dimensionFilters ?? [],\n [query.azureMonitor?.dimensionFilters]\n );\n\n const dimensionLabels = useDimensionLabels(data, query);\n\n const dimensionOperators: Array> = [\n { label: '==', value: 'eq' },\n { label: '!=', value: 'ne' },\n { label: 'starts with', value: 'sw' },\n ];\n\n const validDimensionOptions = useMemo(() => {\n // We filter out any dimensions that have already been used in a filter as the API doesn't support having multiple filters with the same dimension name.\n // The Azure portal also doesn't support this feature so it makes sense for consistency.\n let t = dimensionOptions;\n if (dimensionFilters.length) {\n t = dimensionOptions.filter(\n (val) => !dimensionFilters.some((dimensionFilter) => dimensionFilter.dimension === val.value)\n );\n }\n return t;\n }, [dimensionFilters, dimensionOptions]);\n\n const addFilter = () => {\n onQueryChange(appendDimensionFilter(query));\n };\n\n const removeFilter = (index: number) => {\n onQueryChange(removeDimensionFilter(query, index));\n };\n\n const onFieldChange = (\n filterIndex: number,\n fieldName: Key,\n value: AzureMetricDimension[Key]\n ) => {\n onQueryChange(setDimensionFilterValue(query, filterIndex, fieldName, value));\n };\n\n const onFilterInputChange = (index: number, v: SelectableValue | null) => {\n onFieldChange(index, 'filter', v?.value ?? '');\n };\n\n const getValidDimensionOptions = (selectedDimension: string) => {\n return validDimensionOptions.concat(dimensionOptions.filter((item) => item.value === selectedDimension));\n };\n\n const getValidFilterOptions = (selectedFilter: string | undefined, dimension: string) => {\n const dimensionFilters = Array.from(dimensionLabels[dimension.toLowerCase()] ?? []);\n if (dimensionFilters.find((filter) => filter === selectedFilter)) {\n return dimensionFilters.map((filter) => ({ value: filter, label: filter }));\n }\n return [...dimensionFilters, ...(selectedFilter && selectedFilter !== '*' ? [selectedFilter] : [])].map((item) => ({\n value: item,\n label: item,\n }));\n };\n\n const getValidOperators = (selectedOperator: string) => {\n if (dimensionOperators.find((operator: SelectableValue) => operator.value === selectedOperator)) {\n return dimensionOperators;\n }\n return [...dimensionOperators, ...(selectedOperator ? [{ label: selectedOperator, value: selectedOperator }] : [])];\n };\n\n return (\n \n \n {dimensionFilters.map((filter, index) => (\n \n onFieldChange(index, 'dimension', v.value ?? '')}\n width={38}\n />\n onFieldChange(index, 'operator', v.value ?? '')}\n allowCustomValue\n />\n onFilterInputChange(index, v)}\n isClearable\n />\n\n removeFilter(index)}\n >\n \n ))}\n\n \n \n \n );\n};\n\nexport default DimensionFields;\n","import React, { useCallback, useState } from 'react';\n\nimport { Input } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps } from '../../types';\nimport { Field } from '../Field';\n\nimport { setLegendAlias } from './setQueryValue';\n\nconst LegendFormatField: React.FC = ({ onQueryChange, query }) => {\n const [value, setValue] = useState(query.azureMonitor?.alias ?? '');\n\n // As calling onQueryChange initiates a the datasource refresh, we only want to call it once\n // the field loses focus\n const handleChange = useCallback((ev: React.FormEvent) => {\n if (ev.target instanceof HTMLInputElement) {\n setValue(ev.target.value);\n }\n }, []);\n\n const handleBlur = useCallback(() => {\n const newQuery = setLegendAlias(query, value);\n onQueryChange(newQuery);\n }, [onQueryChange, query, value]);\n\n return (\n \n \n \n );\n};\n\nexport default LegendFormatField;\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps, AzureMonitorOption } from '../../types';\nimport { Field } from '../Field';\n\nimport { setMetricName } from './setQueryValue';\n\ninterface MetricNameProps extends AzureQueryEditorFieldProps {\n metricNames: AzureMonitorOption[];\n}\n\nconst MetricNameField: React.FC = ({ metricNames, query, variableOptionGroup, onQueryChange }) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n if (!change.value) {\n return;\n }\n\n const newQuery = setMetricName(query, change.value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n const options = useMemo(() => [...metricNames, variableOptionGroup], [metricNames, variableOptionGroup]);\n\n return (\n \n \n \n );\n};\n\nexport default MetricNameField;\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps, AzureMonitorOption } from '../../types';\nimport { Field } from '../Field';\n\nimport { setMetricNamespace } from './setQueryValue';\n\ninterface MetricNamespaceFieldProps extends AzureQueryEditorFieldProps {\n metricNamespaces: AzureMonitorOption[];\n}\n\nconst MetricNamespaceField: React.FC = ({\n metricNamespaces,\n query,\n variableOptionGroup,\n onQueryChange,\n}) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n if (!change.value) {\n return;\n }\n\n const newQuery = setMetricNamespace(query, change.value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n const options = useMemo(() => [...metricNamespaces, variableOptionGroup], [metricNamespaces, variableOptionGroup]);\n const optionValues = metricNamespaces\n .map((m) => m.value.toLowerCase())\n .concat(variableOptionGroup.options.map((p) => p.value));\n const value = query.azureMonitor?.metricNamespace;\n if (value && !optionValues.includes(value.toLowerCase())) {\n options.push({ label: value, value });\n }\n\n return (\n \n \n \n );\n};\n\nexport default MetricNamespaceField;\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps, AzureMonitorOption } from '../../types';\nimport { Field } from '../Field';\n\nimport { setResourceGroup } from './setQueryValue';\n\ninterface ResourceGroupsFieldProps extends AzureQueryEditorFieldProps {\n resourceGroups: AzureMonitorOption[];\n}\n\nconst ResourceGroupsField: React.FC = ({\n query,\n resourceGroups,\n variableOptionGroup,\n onQueryChange,\n setError,\n}) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n const newQuery = setResourceGroup(query, change.value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n const options = useMemo(() => [...resourceGroups, variableOptionGroup], [resourceGroups, variableOptionGroup]);\n\n return (\n \n \n \n );\n};\n\nexport default ResourceGroupsField;\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps, AzureMonitorOption } from '../../types';\nimport { Field } from '../Field';\n\nimport { setResourceName } from './setQueryValue';\n\ninterface ResourceNameFieldProps extends AzureQueryEditorFieldProps {\n resourceNames: AzureMonitorOption[];\n}\n\nconst ResourceNameField: React.FC = ({\n resourceNames,\n query,\n variableOptionGroup,\n onQueryChange,\n}) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n const newQuery = setResourceName(query, change.value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n const options = useMemo(() => [...resourceNames, variableOptionGroup], [resourceNames, variableOptionGroup]);\n const value = query.azureMonitor?.resourceName ?? null;\n\n return (\n \n \n \n );\n};\n\nexport default ResourceNameField;\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps, AzureMonitorOption } from '../../types';\nimport { Field } from '../Field';\n\nimport { setResourceType } from './setQueryValue';\n\ninterface NamespaceFieldProps extends AzureQueryEditorFieldProps {\n resourceTypes: AzureMonitorOption[];\n}\n\nconst NamespaceField: React.FC = ({\n resourceTypes,\n query,\n variableOptionGroup,\n onQueryChange,\n}) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n if (!change.value) {\n return;\n }\n\n const newQuery = setResourceType(query, change.value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n const options = useMemo(() => [...resourceTypes, variableOptionGroup], [resourceTypes, variableOptionGroup]);\n\n return (\n \n {/* It's expected that the label reads Resource type but the property is metricDefinition */}\n \n \n );\n};\n\nexport default NamespaceField;\n","import React, { useCallback, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport TimegrainConverter from '../../time_grain_converter';\nimport { AzureQueryEditorFieldProps, AzureMonitorOption } from '../../types';\nimport { Field } from '../Field';\n\nimport { setTimeGrain } from './setQueryValue';\n\ninterface TimeGrainFieldProps extends AzureQueryEditorFieldProps {\n timeGrainOptions: AzureMonitorOption[];\n}\n\nconst TimeGrainField: React.FC = ({\n query,\n timeGrainOptions,\n variableOptionGroup,\n onQueryChange,\n}) => {\n const handleChange = useCallback(\n (change: SelectableValue) => {\n if (!change.value) {\n return;\n }\n\n const newQuery = setTimeGrain(query, change.value);\n onQueryChange(newQuery);\n },\n [onQueryChange, query]\n );\n\n const timeGrains = useMemo(() => {\n const autoInterval = TimegrainConverter.findClosestTimeGrain(\n '1m',\n timeGrainOptions.map((o) => TimegrainConverter.createKbnUnitFromISO8601Duration(o.value)) || [\n '1m',\n '5m',\n '15m',\n '30m',\n '1h',\n '6h',\n '12h',\n '1d',\n ]\n );\n\n const baseTimeGrains = timeGrainOptions.map((v) => (v.value === 'auto' ? { ...v, description: autoInterval } : v));\n\n return [...baseTimeGrains, variableOptionGroup];\n }, [timeGrainOptions, variableOptionGroup]);\n\n return (\n \n \n \n );\n};\n\nexport default TimeGrainField;\n","import React, { useCallback, useState } from 'react';\n\nimport { Input } from '@grafana/ui';\n\nimport { AzureQueryEditorFieldProps } from '../../types';\nimport { Field } from '../Field';\n\nimport { setTop } from './setQueryValue';\n\nconst TopField: React.FC = ({ onQueryChange, query }) => {\n const [value, setValue] = useState(query.azureMonitor?.top ?? '');\n\n // As calling onQueryChange initiates a the datasource refresh, we only want to call it once\n // the field loses focus\n const handleChange = useCallback((ev: React.FormEvent) => {\n if (ev.target instanceof HTMLInputElement) {\n setValue(ev.target.value);\n }\n }, []);\n\n const handleBlur = useCallback(() => {\n const newQuery = setTop(query, value);\n onQueryChange(newQuery);\n }, [onQueryChange, query, value]);\n\n return (\n \n \n \n );\n};\n\nexport default TopField;\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { rangeUtil } from '@grafana/data';\n\nimport Datasource from '../../datasource';\nimport TimegrainConverter from '../../time_grain_converter';\nimport { AzureMonitorErrorish, AzureMonitorOption, AzureMonitorQuery } from '../../types';\nimport { hasOption, toOption } from '../../utils/common';\n\nimport { setMetricNamespace, setSubscriptionID } from './setQueryValue';\n\nexport interface MetricMetadata {\n aggOptions: AzureMonitorOption[];\n timeGrains: AzureMonitorOption[];\n dimensions: AzureMonitorOption[];\n isLoading: boolean;\n\n // These two properties are only used within the hook, and not elsewhere\n supportedAggTypes: string[];\n primaryAggType: string | undefined;\n}\n\ntype SetErrorFn = (source: string, error: AzureMonitorErrorish | undefined) => void;\ntype OnChangeFn = (newQuery: AzureMonitorQuery) => void;\n\nexport type DataHook = (\n query: AzureMonitorQuery,\n datasource: Datasource,\n onChange: OnChangeFn,\n setError: SetErrorFn\n) => AzureMonitorOption[];\n\nexport function useAsyncState(asyncFn: () => Promise, setError: Function, dependencies: unknown[]) {\n // Use the lazy initial state functionality of useState to assign a random ID to the API call\n // to track where errors come from. See useLastError.\n const [errorSource] = useState(() => Math.random());\n const [value, setValue] = useState();\n\n const finalValue = useMemo(() => value ?? [], [value]);\n\n useEffect(() => {\n asyncFn()\n .then((results) => {\n setValue(results);\n setError(errorSource, undefined);\n })\n .catch((err) => {\n setError(errorSource, err);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, dependencies);\n\n return finalValue;\n}\nexport type MetricsMetadataHook = (\n query: AzureMonitorQuery,\n datasource: Datasource,\n onChange: OnChangeFn\n) => MetricMetadata;\n\nexport const updateSubscriptions = (\n query: AzureMonitorQuery,\n subscriptionOptions: AzureMonitorOption[],\n onChange: OnChangeFn,\n defaultSubscription?: string\n) => {\n const { subscription } = query;\n\n // Return early if subscriptions havent loaded, or if the query already has a subscription\n if (\n !subscriptionOptions.length ||\n (subscription && (hasOption(subscriptionOptions, subscription) || subscription.includes('$')))\n ) {\n return;\n }\n\n const defaultSub = defaultSubscription || subscriptionOptions[0].value;\n\n if (!subscription && defaultSub && hasOption(subscriptionOptions, defaultSub)) {\n onChange(setSubscriptionID(query, defaultSub));\n }\n\n // Check if the current subscription is in the list of subscriptions\n if (subscription && !hasOption(subscriptionOptions, subscription)) {\n if (hasOption(subscriptionOptions, defaultSub)) {\n // Use the default sub if is on theh list\n onChange(setSubscriptionID(query, defaultSub));\n } else {\n // Neither the current subscription nor the defaultSub is on the list, remove it\n onChange(setSubscriptionID(query, ''));\n }\n }\n};\n\nexport const useSubscriptions: DataHook = (query, datasource, onChange, setError) => {\n const defaultSubscription = datasource.azureMonitorDatasource.defaultSubscriptionId;\n const { subscription } = query;\n\n const subscriptionOptions = useAsyncState(\n async () => {\n const results = await datasource.azureMonitorDatasource.getSubscriptions();\n const options = formatOptions(results, subscription);\n\n return options;\n },\n setError,\n []\n );\n\n useEffect(() => {\n updateSubscriptions(query, subscriptionOptions, onChange, defaultSubscription);\n }, [subscriptionOptions, query, defaultSubscription, onChange]);\n\n return subscriptionOptions;\n};\n\nexport const useResourceGroups: DataHook = (query, datasource, onChange, setError) => {\n const { subscription } = query;\n const { resourceGroup } = query.azureMonitor ?? {};\n\n return useAsyncState(\n async () => {\n if (!subscription) {\n return;\n }\n\n const results = await datasource.getResourceGroups(subscription);\n const options = formatOptions(results, resourceGroup);\n\n return options;\n },\n setError,\n [subscription]\n );\n};\n\nexport const useResourceTypes: DataHook = (query, datasource, onChange, setError) => {\n const { subscription } = query;\n const { resourceGroup, metricDefinition } = query.azureMonitor ?? {};\n\n return useAsyncState(\n async () => {\n if (!(subscription && resourceGroup)) {\n return;\n }\n\n const results = await datasource.getMetricDefinitions(subscription, resourceGroup);\n const options = formatOptions(results, metricDefinition);\n\n return options;\n },\n setError,\n [subscription, resourceGroup]\n );\n};\n\nexport const useResourceNames: DataHook = (query, datasource, onChange, setError) => {\n const { subscription } = query;\n const { resourceGroup, metricDefinition, resourceName } = query.azureMonitor ?? {};\n\n return useAsyncState(\n async () => {\n if (!(subscription && resourceGroup && metricDefinition)) {\n return;\n }\n\n const results = await datasource.getResourceNames(subscription, resourceGroup, metricDefinition);\n const options = formatOptions(results, resourceName);\n\n return options;\n },\n setError,\n [subscription, resourceGroup, metricDefinition]\n );\n};\n\nexport const useMetricNamespaces: DataHook = (query, datasource, onChange, setError) => {\n const { subscription } = query;\n const { resourceGroup, metricDefinition, resourceName, metricNamespace } = query.azureMonitor ?? {};\n\n const metricNamespaces = useAsyncState(\n async () => {\n if (!(subscription && resourceGroup && metricDefinition && resourceName)) {\n return;\n }\n\n const results = await datasource.getMetricNamespaces(subscription, resourceGroup, metricDefinition, resourceName);\n const options = formatOptions(results, metricNamespace);\n\n // Do some cleanup of the query state if need be\n if (!metricNamespace && options.length) {\n onChange(setMetricNamespace(query, options[0].value));\n }\n\n return options;\n },\n setError,\n [subscription, resourceGroup, metricDefinition, resourceName]\n );\n\n return metricNamespaces;\n};\n\nexport const useMetricNames: DataHook = (query, datasource, onChange, setError) => {\n const { subscription } = query;\n const { resourceGroup, metricDefinition, resourceName, metricNamespace, metricName } = query.azureMonitor ?? {};\n\n return useAsyncState(\n async () => {\n if (!(subscription && resourceGroup && metricDefinition && resourceName && metricNamespace)) {\n return;\n }\n\n const results = await datasource.getMetricNames(\n subscription,\n resourceGroup,\n metricDefinition,\n resourceName,\n metricNamespace\n );\n\n const options = formatOptions(results, metricName);\n\n return options;\n },\n setError,\n [subscription, resourceGroup, metricDefinition, resourceName, metricNamespace]\n );\n};\n\nexport const useMetricMetadata = (query: AzureMonitorQuery, datasource: Datasource, onChange: OnChangeFn) => {\n const [metricMetadata, setMetricMetadata] = useState({\n aggOptions: [],\n timeGrains: [],\n dimensions: [],\n isLoading: false,\n supportedAggTypes: [],\n primaryAggType: undefined,\n });\n\n const { subscription } = query;\n const { resourceGroup, metricDefinition, resourceName, metricNamespace, metricName, aggregation, timeGrain } =\n query.azureMonitor ?? {};\n\n // Fetch new metric metadata when the fields change\n useEffect(() => {\n if (!(subscription && resourceGroup && metricDefinition && resourceName && metricNamespace && metricName)) {\n return;\n }\n\n datasource\n .getMetricMetadata(subscription, resourceGroup, metricDefinition, resourceName, metricNamespace, metricName)\n .then((metadata) => {\n // TODO: Move the aggregationTypes and timeGrain defaults into `getMetricMetadata`\n const aggregations = (metadata.supportedAggTypes || [metadata.primaryAggType]).map((v) => ({\n label: v,\n value: v,\n }));\n setMetricMetadata({\n aggOptions: aggregations,\n timeGrains: metadata.supportedTimeGrains,\n dimensions: metadata.dimensions,\n isLoading: false,\n supportedAggTypes: metadata.supportedAggTypes ?? [],\n primaryAggType: metadata.primaryAggType,\n });\n });\n }, [datasource, subscription, resourceGroup, metricDefinition, resourceName, metricNamespace, metricName]);\n\n // Update the query state in response to the meta data changing\n useEffect(() => {\n const newAggregation = aggregation || metricMetadata.primaryAggType;\n const newTimeGrain = timeGrain || 'auto';\n\n if (newAggregation !== aggregation || newTimeGrain !== timeGrain) {\n onChange({\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n aggregation: newAggregation,\n timeGrain: newTimeGrain,\n allowedTimeGrainsMs: metricMetadata.timeGrains\n .filter((timeGrain) => timeGrain.value !== 'auto')\n .map((timeGrain) =>\n rangeUtil.intervalToMs(TimegrainConverter.createKbnUnitFromISO8601Duration(timeGrain.value))\n ),\n },\n });\n }\n }, [onChange, metricMetadata, aggregation, timeGrain, query]);\n\n return metricMetadata;\n};\n\nfunction formatOptions(\n rawResults: Array<{\n text: string;\n value: string;\n }>,\n selectedValue?: string\n) {\n const options = rawResults.map(toOption);\n\n // account for custom values that might have been set in json file like ones crafted with a template variable (ex: \"cloud-datasource-resource-$Environment\")\n if (selectedValue && !options.find((option) => option.value === selectedValue)) {\n options.push({ label: selectedValue, value: selectedValue });\n }\n\n return options;\n}\n","import React from 'react';\n\nimport { PanelData } from '@grafana/data/src/types';\nimport { InlineFieldRow } from '@grafana/ui';\n\nimport Datasource from '../../datasource';\nimport { AzureMonitorQuery, AzureMonitorOption, AzureMonitorErrorish } from '../../types';\nimport SubscriptionField from '../SubscriptionField';\n\nimport AggregationField from './AggregationField';\nimport DimensionFields from './DimensionFields';\nimport LegendFormatField from './LegendFormatField';\nimport MetricNameField from './MetricNameField';\nimport MetricNamespaceField from './MetricNamespaceField';\nimport ResourceGroupsField from './ResourceGroupsField';\nimport ResourceNameField from './ResourceNameField';\nimport ResourceTypeField from './ResourceTypeField';\nimport TimeGrainField from './TimeGrainField';\nimport TopField from './TopField';\nimport {\n useMetricNames,\n useMetricNamespaces,\n useResourceGroups,\n useResourceNames,\n useResourceTypes,\n useSubscriptions,\n useMetricMetadata,\n} from './dataHooks';\n\ninterface MetricsQueryEditorProps {\n data: PanelData | undefined;\n query: AzureMonitorQuery;\n datasource: Datasource;\n subscriptionId?: string;\n onChange: (newQuery: AzureMonitorQuery) => void;\n variableOptionGroup: { label: string; options: AzureMonitorOption[] };\n setError: (source: string, error: AzureMonitorErrorish | undefined) => void;\n}\n\nconst MetricsQueryEditor: React.FC = ({\n data,\n query,\n datasource,\n subscriptionId,\n variableOptionGroup,\n onChange,\n setError,\n}) => {\n const metricsMetadata = useMetricMetadata(query, datasource, onChange);\n const subscriptions = useSubscriptions(query, datasource, onChange, setError);\n const resourceGroups = useResourceGroups(query, datasource, onChange, setError);\n const resourceTypes = useResourceTypes(query, datasource, onChange, setError);\n const resourceNames = useResourceNames(query, datasource, onChange, setError);\n const metricNames = useMetricNames(query, datasource, onChange, setError);\n const metricNamespaces = useMetricNamespaces(query, datasource, onChange, setError);\n\n return (\n
\n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport default MetricsQueryEditor;\n","import React from 'react';\n\ninterface MetricsQueryEditorProps {}\n\nconst MetricsQueryEditor: React.FC = ({}) => {\n return
New Query Editor
;\n};\n\nexport default MetricsQueryEditor;\n","import React from 'react';\n\nimport { Alert, Input } from '@grafana/ui';\n\nimport { Field } from '../../../Field';\nimport { DeprecatedAzureMonitorQuery } from '../../types';\n\nconst ReadOnlyTimeGrain = ({\n timeGrainCount,\n timeGrainType,\n timeGrainUnit,\n}: {\n timeGrainCount: string;\n timeGrainType: string;\n timeGrainUnit: string;\n}) => {\n const timeFields = timeGrainType === 'specific' ? ['specific', timeGrainCount, timeGrainUnit] : [timeGrainType];\n\n return (\n \n <>\n {timeFields.map((timeField) => (\n {}} key={timeField} width={10} />\n ))}\n \n \n );\n};\n\nconst ApplicationInsightsEditor = ({ query }: { query: DeprecatedAzureMonitorQuery }) => {\n const groupBy = query.appInsights?.dimension || [];\n\n return (\n
\n \n {}}\n id=\"azure-monitor-application-insights-metric\"\n />\n \n \n {}} />\n \n {groupBy.length > 0 && (\n \n <>\n {groupBy.map((dimension) => (\n {}} key={dimension} />\n ))}\n \n \n )}\n \n {}} />\n \n \n \n {}} disabled={true} />\n \n \n Application Insights is deprecated and is now read only. Migrate your queries to Metrics to make changes.\n \n
\n );\n};\n\nexport default ApplicationInsightsEditor;\n","import React from 'react';\n\nimport { Alert, CodeEditor, Select } from '@grafana/ui';\n\nimport { AzureMonitorOption } from '../../../../types';\nimport { Field } from '../../../Field';\nimport { Space } from '../../../Space';\nimport { DeprecatedAzureMonitorQuery } from '../../types';\n\ninterface InsightsAnalyticsEditorProps {\n query: DeprecatedAzureMonitorQuery;\n}\n\nconst FORMAT_OPTIONS: Array> = [\n { label: 'Time series', value: 'time_series' },\n { label: 'Table', value: 'table' },\n];\n\nconst InsightsAnalyticsEditor: React.FC = ({ query }) => {\n return (\n
\n \n\n \n {}}\n width={38}\n />\n \n\n \n\n \n Insights Analytics is deprecated and is now read only. Migrate your queries to Logs to make changes.\n \n
\n );\n};\n\nexport default InsightsAnalyticsEditor;\n","import React, { useCallback, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { AzureMonitorQuery, AzureQueryType, DeprecatedAzureQueryType } from '../../types';\nimport { Field } from '../Field';\nimport { gtGrafana9 } from '../deprecated/utils';\n\ninterface QueryTypeFieldProps {\n query: AzureMonitorQuery;\n onQueryChange: (newQuery: AzureMonitorQuery) => void;\n}\n\nconst QueryTypeField: React.FC = ({ query, onQueryChange }) => {\n // Use useState to capture the initial value on first mount. We're not interested in when it changes\n // We only show App Insights and Insights Analytics if they were initially selected. Otherwise, hide them.\n const [initialQueryType] = useState(query.queryType);\n\n const queryTypes: Array<{ value: AzureQueryType | DeprecatedAzureQueryType; label: string }> = [\n { value: AzureQueryType.AzureMonitor, label: 'Metrics' },\n { value: AzureQueryType.LogAnalytics, label: 'Logs' },\n { value: AzureQueryType.AzureResourceGraph, label: 'Azure Resource Graph' },\n ];\n\n if (\n !gtGrafana9() &&\n (initialQueryType === DeprecatedAzureQueryType.ApplicationInsights ||\n initialQueryType === DeprecatedAzureQueryType.InsightsAnalytics)\n ) {\n queryTypes.push(\n { value: DeprecatedAzureQueryType.ApplicationInsights, label: 'Application Insights' },\n { value: DeprecatedAzureQueryType.InsightsAnalytics, label: 'Insights Analytics' }\n );\n }\n\n const handleChange = useCallback(\n (change: SelectableValue) => {\n change.value &&\n onQueryChange({\n ...query,\n queryType: change.value,\n });\n },\n [onQueryChange, query]\n );\n\n return (\n \n \n \n );\n};\n\nexport default QueryTypeField;\n","import deepEqual from 'fast-deep-equal';\nimport { defaults } from 'lodash';\nimport { useEffect, useMemo } from 'react';\n\nimport { AzureMonitorQuery, AzureQueryType } from '../../types';\nimport migrateQuery from '../../utils/migrateQuery';\n\nconst DEFAULT_QUERY = {\n queryType: AzureQueryType.AzureMonitor,\n};\n\nconst prepareQuery = (query: AzureMonitorQuery) => {\n // Note: _.defaults does not apply default values deeply.\n const withDefaults = defaults({}, query, DEFAULT_QUERY);\n const migratedQuery = migrateQuery(withDefaults);\n\n // If we didn't make any changes to the object, then return the original object to keep the\n // identity the same, and not trigger any other useEffects or anything.\n return deepEqual(migratedQuery, query) ? query : migratedQuery;\n};\n\n/**\n * Returns queries with some defaults + migrations, and calls onChange function to notify if it changes\n */\nconst usePreparedQuery = (query: AzureMonitorQuery, onChangeQuery: (newQuery: AzureMonitorQuery) => void) => {\n const preparedQuery = useMemo(() => prepareQuery(query), [query]);\n\n useEffect(() => {\n if (preparedQuery !== query) {\n onChangeQuery(preparedQuery);\n }\n }, [preparedQuery, query, onChangeQuery]);\n\n return preparedQuery;\n};\n\nexport default usePreparedQuery;\n","import { debounce } from 'lodash';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { QueryEditorProps } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { Alert } from '@grafana/ui';\n\nimport AzureMonitorDatasource from '../../datasource';\nimport {\n AzureDataSourceJsonData,\n AzureMonitorErrorish,\n AzureMonitorOption,\n AzureMonitorQuery,\n AzureQueryType,\n DeprecatedAzureQueryType,\n} from '../../types';\nimport useLastError from '../../utils/useLastError';\nimport ArgQueryEditor from '../ArgQueryEditor';\nimport LogsQueryEditor from '../LogsQueryEditor';\nimport MetricsQueryEditor from '../MetricsQueryEditor';\nimport NewMetricsQueryEditor from '../NewMetricsQueryEditor/MetricsQueryEditor';\nimport { Space } from '../Space';\nimport ApplicationInsightsEditor from '../deprecated/components/ApplicationInsightsEditor';\nimport InsightsAnalyticsEditor from '../deprecated/components/InsightsAnalyticsEditor';\nimport { gtGrafana9 } from '../deprecated/utils';\n\nimport QueryTypeField from './QueryTypeField';\nimport usePreparedQuery from './usePreparedQuery';\n\nexport type AzureMonitorQueryEditorProps = QueryEditorProps<\n AzureMonitorDatasource,\n AzureMonitorQuery,\n AzureDataSourceJsonData\n>;\n\nconst QueryEditor: React.FC = ({\n query: baseQuery,\n datasource,\n onChange,\n onRunQuery: baseOnRunQuery,\n data,\n}) => {\n const [errorMessage, setError] = useLastError();\n const onRunQuery = useMemo(() => debounce(baseOnRunQuery, 500), [baseOnRunQuery]);\n\n const onQueryChange = useCallback(\n (newQuery: AzureMonitorQuery) => {\n onChange(newQuery);\n onRunQuery();\n },\n [onChange, onRunQuery]\n );\n\n const query = usePreparedQuery(baseQuery, onQueryChange);\n\n const subscriptionId = query.subscription || datasource.azureMonitorDatasource.defaultSubscriptionId;\n const variableOptionGroup = {\n label: 'Template Variables',\n options: datasource.getVariables().map((v) => ({ label: v, value: v })),\n };\n\n return (\n
\n \n\n \n\n {errorMessage && (\n <>\n \n \n {errorMessage}\n \n \n )}\n
\n );\n};\n\ninterface EditorForQueryTypeProps extends Omit {\n subscriptionId?: string;\n variableOptionGroup: { label: string; options: AzureMonitorOption[] };\n setError: (source: string, error: AzureMonitorErrorish | undefined) => void;\n}\n\nconst EditorForQueryType: React.FC = ({\n data,\n subscriptionId,\n query,\n datasource,\n variableOptionGroup,\n onChange,\n setError,\n}) => {\n switch (query.queryType) {\n case AzureQueryType.AzureMonitor:\n if (config.featureToggles.azureMonitorResourcePickerForMetrics) {\n return ;\n }\n return (\n \n );\n\n case AzureQueryType.LogAnalytics:\n return (\n \n );\n\n case AzureQueryType.AzureResourceGraph:\n return (\n \n );\n\n /** Remove with Grafana 9 */\n case DeprecatedAzureQueryType.ApplicationInsights:\n if (gtGrafana9()) {\n return (\n \n Application Insights has been deprecated.{' '}\n \n Use the Metrics service instead\n \n .\n \n );\n }\n return ;\n\n case DeprecatedAzureQueryType.InsightsAnalytics:\n if (gtGrafana9()) {\n return (\n \n Insight Analytics has been deprecated.{' '}\n \n Queries can be written with Kusto in the Logs query type by selecting your Application Insights resource\n \n .\n \n );\n }\n return ;\n /** ===================== */\n\n default:\n return ;\n }\n\n return null;\n};\n\nexport default QueryEditor;\n","export enum ResourceRowType {\n Subscription = 'Subscription',\n ResourceGroup = 'ResourceGroup',\n Resource = 'Resource',\n VariableGroup = 'TemplateVariableGroup',\n Variable = 'TemplateVariable',\n}\n\nexport interface ResourceRow {\n id: string; // azure's raw data id usually passes along a uri (except in the case of subscriptions), to make things less confusing for ourselves we parse the id string out of the uri or vice versa\n uri: string; // ex: /subscriptions/subid123\n name: string;\n type: ResourceRowType;\n typeLabel: string;\n location?: string;\n children?: ResourceRowGroup;\n}\n\nexport type ResourceRowGroup = ResourceRow[];\n","import produce from 'immer';\n\nimport { ResourceRow, ResourceRowGroup } from './types';\n\n// This regex matches URIs representing:\n// - subscriptions: /subscriptions/44693801-6ee6-49de-9b2d-9106972f9572\n// - resource groups: /subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources\n// - resources: /subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/Microsoft.Compute/virtualMachines/GithubTestDataVM\nconst RESOURCE_URI_REGEX =\n /\\/subscriptions\\/(?[^/]+)(?:\\/resourceGroups\\/(?[^/]+)(?:\\/providers.+\\/(?[^/]+))?)?/;\n\ntype RegexGroups = Record;\n\nexport function parseResourceURI(resourceURI: string) {\n const matches = RESOURCE_URI_REGEX.exec(resourceURI);\n const groups: RegexGroups = matches?.groups ?? {};\n const { subscriptionID, resourceGroup, resource } = groups;\n\n if (!subscriptionID) {\n return undefined;\n }\n\n return { subscriptionID, resourceGroup, resource };\n}\n\nexport function isGUIDish(input: string) {\n return !!input.match(/^[A-Z0-9]+/i);\n}\n\nexport function findRow(rows: ResourceRowGroup, uri: string): ResourceRow | undefined {\n for (const row of rows) {\n if (row.uri.toLowerCase() === uri.toLowerCase()) {\n return row;\n }\n\n if (row.children) {\n const result = findRow(row.children, uri);\n\n if (result) {\n return result;\n }\n }\n }\n\n return undefined;\n}\n\nexport function addResources(rows: ResourceRowGroup, targetParentId: string, newResources: ResourceRowGroup) {\n return produce(rows, (draftState) => {\n const draftRow = findRow(draftState, targetParentId);\n\n // we can't find the selected resource in our list of resources,\n // probably means user has either mistyped in the input field\n // or is using template variables.\n // either way no need to throw, just show that none of the resources are checked\n if (!draftRow) {\n return;\n }\n\n draftRow.children = newResources;\n });\n}\n","import { css, cx } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { stylesFactory, useTheme2 } from '@grafana/ui';\n\nexport interface SpaceProps {\n v?: number;\n h?: number;\n layout?: 'block' | 'inline';\n}\n\nexport const Space = (props: SpaceProps) => {\n const theme = useTheme2();\n const styles = getStyles(theme, props);\n\n return ;\n};\n\nSpace.defaultProps = {\n v: 0,\n h: 0,\n layout: 'block',\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme2, props: SpaceProps) => ({\n wrapper: css([\n {\n paddingRight: theme.spacing(props.h ?? 0),\n paddingBottom: theme.spacing(props.v ?? 0),\n },\n props.layout === 'inline' && {\n display: 'inline-block',\n },\n props.layout === 'block' && {\n display: 'block',\n },\n ]),\n}));\n","import { gt, valid } from 'semver';\n\nimport { config } from '@grafana/runtime';\n\nimport { AzureDataSourceSettings } from '../../types';\n\nexport function isAppInsightsConfigured(options: AzureDataSourceSettings) {\n return !!(options.jsonData.appInsightsAppId && options.secureJsonFields.appInsightsApiKey);\n}\n\nexport function gtGrafana9() {\n // AppInsights configuration will be removed with Grafana 9\n return valid(config.buildInfo.version) && gt(config.buildInfo.version, '9.0.0-beta1');\n}\n","import { includes, filter } from 'lodash';\n\nimport { rangeUtil } from '@grafana/data';\n\nexport default class TimeGrainConverter {\n static createISO8601Duration(timeGrain: string | number, timeGrainUnit: any) {\n const timeIntervals = ['hour', 'minute', 'h', 'm'];\n if (includes(timeIntervals, timeGrainUnit)) {\n return `PT${timeGrain}${timeGrainUnit[0].toUpperCase()}`;\n }\n\n return `P${timeGrain}${timeGrainUnit[0].toUpperCase()}`;\n }\n\n static createISO8601DurationFromInterval(interval: string) {\n const timeGrain = +interval.slice(0, interval.length - 1);\n const unit = interval[interval.length - 1];\n\n if (interval.indexOf('ms') > -1) {\n return TimeGrainConverter.createISO8601Duration(1, 'm');\n }\n\n if (interval[interval.length - 1] === 's') {\n let toMinutes = (timeGrain * 60) % 60;\n\n if (toMinutes < 1) {\n toMinutes = 1;\n }\n\n return TimeGrainConverter.createISO8601Duration(toMinutes, 'm');\n }\n\n return TimeGrainConverter.createISO8601Duration(timeGrain, unit);\n }\n\n static findClosestTimeGrain(interval: any, allowedTimeGrains: string[]) {\n const timeGrains = filter(allowedTimeGrains, (o) => o !== 'auto');\n\n let closest = timeGrains[0];\n const intervalMs = rangeUtil.intervalToMs(interval);\n\n for (let i = 0; i < timeGrains.length; i++) {\n // abs (num - val) < abs (num - curr):\n if (intervalMs > rangeUtil.intervalToMs(timeGrains[i])) {\n if (i + 1 < timeGrains.length) {\n closest = timeGrains[i + 1];\n } else {\n closest = timeGrains[i];\n }\n }\n }\n\n return closest;\n }\n\n static createTimeGrainFromISO8601Duration(duration: string) {\n let offset = 1;\n if (duration.substring(0, 2) === 'PT') {\n offset = 2;\n }\n\n const value = duration.substring(offset, duration.length - 1);\n const unit = duration.substring(duration.length - 1);\n\n return value + ' ' + TimeGrainConverter.timeUnitToText(+value, unit);\n }\n\n static timeUnitToText(value: number, unit: string) {\n let text = '';\n\n if (unit === 'S') {\n text = 'second';\n }\n if (unit === 'M') {\n text = 'minute';\n }\n if (unit === 'H') {\n text = 'hour';\n }\n if (unit === 'D') {\n text = 'day';\n }\n\n if (value > 1) {\n return text + 's';\n }\n\n return text;\n }\n\n static createKbnUnitFromISO8601Duration(duration: string) {\n if (duration === 'auto') {\n return 'auto';\n }\n\n let offset = 1;\n if (duration.substring(0, 2) === 'PT') {\n offset = 2;\n }\n\n const value = duration.substring(offset, duration.length - 1);\n const unit = duration.substring(duration.length - 1);\n\n return value + TimeGrainConverter.timeUnitToKbn(+value, unit);\n }\n\n static timeUnitToKbn(value: number, unit: string) {\n if (unit === 'S') {\n return 's';\n }\n if (unit === 'M') {\n return 'm';\n }\n if (unit === 'H') {\n return 'h';\n }\n if (unit === 'D') {\n return 'd';\n }\n\n return '';\n }\n}\n","import { DeprecatedAzureMonitorQuery } from '../components/deprecated/types';\n\nimport { GrafanaTemplateVariableQuery } from './templateVariables';\n\nexport enum AzureQueryType {\n AzureMonitor = 'Azure Monitor',\n LogAnalytics = 'Azure Log Analytics',\n AzureResourceGraph = 'Azure Resource Graph',\n GrafanaTemplateVariableFn = 'Grafana Template Variable Function',\n}\n\n// DeprecatedAzureQueryType won't be available after Grafana 9\nexport enum DeprecatedAzureQueryType {\n ApplicationInsights = 'Application Insights',\n InsightsAnalytics = 'Insights Analytics',\n}\n\n/**\n * Represents the query as it moves through the frontend query editor and datasource files.\n * It can represent new queries that are still being edited, so all properties are optional\n */\nexport interface AzureMonitorQuery extends DeprecatedAzureMonitorQuery {\n queryType?: AzureQueryType | DeprecatedAzureQueryType;\n\n subscription?: string;\n\n /** ARG uses multiple subscriptions */\n subscriptions?: string[];\n\n azureMonitor?: AzureMetricQuery;\n azureLogAnalytics?: AzureLogsQuery;\n azureResourceGraph?: AzureResourceGraphQuery;\n grafanaTemplateVariableFn?: GrafanaTemplateVariableQuery;\n}\n\n/**\n * Azure Monitor Metrics sub-query properties\n */\nexport interface AzureMetricQuery {\n resourceGroup?: string;\n\n /** Resource type */\n metricDefinition?: string;\n\n resourceName?: string;\n metricNamespace?: string;\n metricName?: string;\n timeGrain?: string;\n aggregation?: string;\n dimensionFilters?: AzureMetricDimension[];\n alias?: string;\n top?: string;\n allowedTimeGrainsMs?: number[];\n\n /** @deprecated */\n timeGrainUnit?: string;\n\n /** @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration */\n dimension?: string;\n\n /** @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration */\n dimensionFilter?: string;\n}\n\n/**\n * Azure Monitor Logs sub-query properties\n */\nexport interface AzureLogsQuery {\n query?: string;\n resultFormat?: string;\n resource?: string;\n\n workspace?: string;\n}\n\n/**\n * Azure Monitor ARG sub-query properties\n */\nexport interface AzureResourceGraphQuery {\n query?: string;\n resultFormat?: string;\n}\n\nexport interface AzureMetricDimension {\n dimension: string;\n operator: string;\n filter?: string;\n}\n","import {\n DataSourceInstanceSettings,\n DataSourceJsonData,\n DataSourceSettings,\n PanelData,\n TableData,\n} from '@grafana/data';\n\nimport Datasource from '../datasource';\n\nimport { AzureMonitorQuery } from './query';\n\nexport type AzureDataSourceSettings = DataSourceSettings;\nexport type AzureDataSourceInstanceSettings = DataSourceInstanceSettings;\n\nexport interface DatasourceValidationResult {\n status: 'success' | 'error';\n message: string;\n title?: string;\n}\n\n/**\n * Azure clouds known to Azure Monitor.\n */\nexport enum AzureCloud {\n Public = 'AzureCloud',\n China = 'AzureChinaCloud',\n USGovernment = 'AzureUSGovernment',\n Germany = 'AzureGermanCloud',\n None = '',\n}\n\nexport type AzureAuthType = 'msi' | 'clientsecret';\n\nexport type ConcealedSecret = symbol;\n\ninterface AzureCredentialsBase {\n authType: AzureAuthType;\n defaultSubscriptionId?: string;\n}\n\nexport interface AzureManagedIdentityCredentials extends AzureCredentialsBase {\n authType: 'msi';\n}\n\nexport interface AzureClientSecretCredentials extends AzureCredentialsBase {\n authType: 'clientsecret';\n azureCloud?: string;\n tenantId?: string;\n clientId?: string;\n clientSecret?: string | ConcealedSecret;\n}\n\nexport type AzureCredentials = AzureManagedIdentityCredentials | AzureClientSecretCredentials;\n\nexport interface AzureDataSourceJsonData extends DataSourceJsonData {\n cloudName: string;\n azureAuthType?: AzureAuthType;\n\n // monitor\n tenantId?: string;\n clientId?: string;\n subscriptionId?: string;\n\n // logs\n /** @deprecated Azure Logs credentials */\n azureLogAnalyticsSameAs?: boolean;\n /** @deprecated Azure Logs credentials */\n logAnalyticsTenantId?: string;\n /** @deprecated Azure Logs credentials */\n logAnalyticsClientId?: string;\n /** @deprecated Azure Logs credentials */\n logAnalyticsSubscriptionId?: string;\n /** @deprecated Azure Logs credentials */\n logAnalyticsDefaultWorkspace?: string;\n\n // App Insights\n appInsightsAppId?: string;\n}\n\nexport interface AzureDataSourceSecureJsonData {\n clientSecret?: string;\n appInsightsApiKey?: string;\n}\n\n// Represents an errors that come back from frontend requests.\n// Not totally sure how accurate this type is.\nexport type AzureMonitorErrorish = Error;\n\n// Azure Monitor API Types\nexport interface AzureMonitorMetricsMetadataResponse {\n value: AzureMonitorMetricMetadataItem[];\n}\n\nexport interface AzureMonitorMetricMetadataItem {\n id: string;\n resourceId: string;\n primaryAggregationType: string;\n supportedAggregationTypes: string[];\n name: AzureMonitorLocalizedValue;\n dimensions?: AzureMonitorLocalizedValue[];\n metricAvailabilities?: AzureMonitorMetricAvailabilityMetadata[];\n}\n\nexport interface AzureMonitorMetricAvailabilityMetadata {\n timeGrain: string;\n retention: string;\n}\n\nexport interface AzureMonitorLocalizedValue {\n value: string;\n localizedValue: string;\n}\n\nexport interface AzureMonitorMetricDefinitionsResponse {\n data: {\n value: Array<{ name: string; type: string; location?: string }>;\n };\n status: number;\n statusText: string;\n}\n\nexport interface AzureMonitorResourceGroupsResponse {\n data: {\n value: Array<{ name: string }>;\n };\n status: number;\n statusText: string;\n}\n\nexport interface AzureLogsVariable {\n text: string;\n value: string;\n}\n\nexport interface AzureLogsTableData extends TableData {\n columns: AzureLogsTableColumn[];\n rows: any[];\n type: string;\n}\n\nexport interface AzureLogsTableColumn {\n text: string;\n type: string;\n}\n\nexport interface AzureMonitorOption {\n label: string;\n value: T;\n options?: AzureMonitorOption[];\n}\n\nexport interface AzureQueryEditorFieldProps {\n data?: PanelData;\n query: AzureMonitorQuery;\n datasource: Datasource;\n subscriptionId?: string;\n variableOptionGroup: { label: string; options: AzureMonitorOption[] };\n\n onQueryChange: (newQuery: AzureMonitorQuery) => void;\n setError: (source: string, error: AzureMonitorErrorish | undefined) => void;\n}\n\nexport interface AzureResourceSummaryItem {\n subscriptionName: string;\n resourceGroupName: string | undefined;\n resourceName: string | undefined;\n}\n\nexport interface RawAzureSubscriptionItem {\n subscriptionName: string;\n subscriptionId: string;\n}\n\nexport interface RawAzureResourceGroupItem {\n resourceGroupURI: string;\n resourceGroupName: string;\n}\n\nexport interface RawAzureResourceItem {\n id: string;\n name: string;\n subscriptionId: string;\n resourceGroup: string;\n type: string;\n location: string;\n}\n\nexport interface AzureGraphResponse {\n data: T;\n // skipToken is used for pagination, to get the next page\n $skipToken?: string;\n}\n\n// https://docs.microsoft.com/en-us/rest/api/azureresourcegraph/resourcegraph(2021-03-01)/resources/resources#queryrequestoptions\nexport interface AzureResourceGraphOptions {\n $skip: number;\n $skipToken: string;\n $top: number;\n allowPartialScopes: boolean;\n resultFormat: 'objectArray' | 'table';\n}\n","import { map } from 'lodash';\n\nimport { rangeUtil } from '@grafana/data';\nimport { VariableWithMultiSupport } from 'app/features/variables/types';\n\nimport TimegrainConverter from '../time_grain_converter';\nimport { AzureMonitorOption } from '../types';\n\nexport const hasOption = (options: AzureMonitorOption[], value: string): boolean =>\n options.some((v) => (v.options ? hasOption(v.options, value) : v.value === value));\n\nexport const findOptions = (options: AzureMonitorOption[], values: string[] = []) => {\n if (values.length === 0) {\n return [];\n }\n const set = values.reduce((accum, item) => {\n accum.add(item);\n return accum;\n }, new Set());\n return options.filter((option) => set.has(option.value));\n};\n\nexport const toOption = (v: { text: string; value: string }) => ({ value: v.value, label: v.text });\n\nexport function convertTimeGrainsToMs(timeGrains: T[]) {\n const allowedTimeGrainsMs: number[] = [];\n timeGrains.forEach((tg: any) => {\n if (tg.value !== 'auto') {\n allowedTimeGrainsMs.push(rangeUtil.intervalToMs(TimegrainConverter.createKbnUnitFromISO8601Duration(tg.value)));\n }\n });\n return allowedTimeGrainsMs;\n}\n\n// Route definitions shared with the backend.\n// Check: /pkg/tsdb/azuremonitor/azuremonitor-resource-handler.go \nexport const routeNames = {\n azureMonitor: 'azuremonitor',\n logAnalytics: 'loganalytics',\n appInsights: 'appinsights',\n resourceGraph: 'resourcegraph',\n};\n\nexport function interpolateVariable(value: any, variable: VariableWithMultiSupport) {\n if (typeof value === 'string') {\n // When enabling multiple responses, quote the value to mimic the array result below\n // even if only one response is selected. This does not apply if only the \"include all\"\n // option is enabled but with a custom value.\n if (variable.multi || (variable.includeAll && !variable.allValue)) {\n return \"'\" + value + \"'\";\n } else {\n return value;\n }\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n const quotedValues = map(value, (val) => {\n if (typeof value === 'number') {\n return value;\n }\n\n return \"'\" + val + \"'\";\n });\n return quotedValues.join(',');\n}\n","import { setKustoQuery } from '../components/LogsQueryEditor/setQueryValue';\nimport {\n appendDimensionFilter,\n setTimeGrain as setMetricsTimeGrain,\n} from '../components/MetricsQueryEditor/setQueryValue';\nimport TimegrainConverter from '../time_grain_converter';\nimport { AzureMonitorQuery, AzureQueryType, DeprecatedAzureQueryType } from '../types';\n\nconst OLD_DEFAULT_DROPDOWN_VALUE = 'select';\n\nexport default function migrateQuery(query: AzureMonitorQuery): AzureMonitorQuery {\n let workingQuery = query;\n\n // The old angular controller also had a `migrateApplicationInsightsKeys` migraiton that\n // migrated old properties to other properties that still do not appear to be used anymore, so\n // we decided to not include that migration anymore\n // See https://github.com/grafana/grafana/blob/a6a09add/public/app/plugins/datasource/grafana-azure-monitor-datasource/query_ctrl.ts#L269-L288\n\n workingQuery = migrateTimeGrains(workingQuery);\n workingQuery = migrateLogAnalyticsToFromTimes(workingQuery);\n workingQuery = migrateToDefaultNamespace(workingQuery);\n workingQuery = migrateApplicationInsightsDimensions(workingQuery);\n workingQuery = migrateMetricsDimensionFilters(workingQuery);\n\n return workingQuery;\n}\n\nfunction migrateTimeGrains(query: AzureMonitorQuery): AzureMonitorQuery {\n let workingQuery = query;\n\n if (workingQuery.azureMonitor?.timeGrainUnit && workingQuery.azureMonitor.timeGrain !== 'auto') {\n const newTimeGrain = TimegrainConverter.createISO8601Duration(\n workingQuery.azureMonitor.timeGrain ?? 'auto',\n workingQuery.azureMonitor.timeGrainUnit\n );\n workingQuery = setMetricsTimeGrain(workingQuery, newTimeGrain);\n\n delete workingQuery.azureMonitor?.timeGrainUnit;\n }\n\n if (workingQuery.appInsights?.timeGrainUnit && workingQuery.appInsights.timeGrain !== 'auto') {\n const appInsights = {\n ...workingQuery.appInsights,\n };\n\n if (workingQuery.appInsights.timeGrainCount) {\n appInsights.timeGrain = TimegrainConverter.createISO8601Duration(\n workingQuery.appInsights.timeGrainCount,\n workingQuery.appInsights.timeGrainUnit\n );\n } else {\n appInsights.timeGrainCount = workingQuery.appInsights.timeGrain;\n\n if (workingQuery.appInsights.timeGrain) {\n appInsights.timeGrain = TimegrainConverter.createISO8601Duration(\n workingQuery.appInsights.timeGrain,\n workingQuery.appInsights.timeGrainUnit\n );\n }\n }\n\n workingQuery = {\n ...workingQuery,\n appInsights: appInsights,\n };\n }\n\n return workingQuery;\n}\n\nfunction migrateLogAnalyticsToFromTimes(query: AzureMonitorQuery): AzureMonitorQuery {\n let workingQuery = query;\n\n if (workingQuery.azureLogAnalytics?.query?.match(/\\$__from\\s/gi)) {\n workingQuery = setKustoQuery(\n workingQuery,\n workingQuery.azureLogAnalytics.query.replace(/\\$__from\\s/gi, '$__timeFrom() ')\n );\n }\n\n if (workingQuery.azureLogAnalytics?.query?.match(/\\$__to\\s/gi)) {\n workingQuery = setKustoQuery(\n workingQuery,\n workingQuery.azureLogAnalytics.query.replace(/\\$__to\\s/gi, '$__timeTo() ')\n );\n }\n\n return workingQuery;\n}\n\nfunction migrateToDefaultNamespace(query: AzureMonitorQuery): AzureMonitorQuery {\n const haveMetricNamespace =\n query.azureMonitor?.metricNamespace && query.azureMonitor.metricNamespace !== OLD_DEFAULT_DROPDOWN_VALUE;\n\n if (!haveMetricNamespace && query.azureMonitor?.metricDefinition) {\n return {\n ...query,\n azureMonitor: {\n ...query.azureMonitor,\n metricNamespace: query.azureMonitor.metricDefinition,\n },\n };\n }\n\n return query;\n}\n\nfunction migrateApplicationInsightsDimensions(query: AzureMonitorQuery): AzureMonitorQuery {\n const dimension = query?.appInsights?.dimension as unknown;\n\n if (dimension && typeof dimension === 'string') {\n return {\n ...query,\n appInsights: {\n ...query.appInsights,\n dimension: [dimension],\n },\n };\n }\n\n return query;\n}\n\n// Exported because its also used directly in the datasource.ts for some reason\nfunction migrateMetricsDimensionFilters(query: AzureMonitorQuery): AzureMonitorQuery {\n let workingQuery = query;\n\n const oldDimension = workingQuery.azureMonitor?.dimension;\n if (oldDimension && oldDimension !== 'None') {\n workingQuery = appendDimensionFilter(\n workingQuery,\n oldDimension,\n 'eq',\n workingQuery.azureMonitor?.dimensionFilter || ''\n );\n }\n\n return workingQuery;\n}\n\n// datasource.ts also contains some migrations, which have been moved to here. Unsure whether\n// they should also do all the other migrations...\nexport function datasourceMigrations(query: AzureMonitorQuery): AzureMonitorQuery {\n let workingQuery = query;\n\n if (workingQuery.queryType === DeprecatedAzureQueryType.ApplicationInsights && workingQuery.appInsights?.rawQuery) {\n workingQuery = {\n ...workingQuery,\n queryType: DeprecatedAzureQueryType.InsightsAnalytics,\n appInsights: undefined,\n insightsAnalytics: {\n query: workingQuery.appInsights.rawQuery,\n resultFormat: 'time_series',\n },\n };\n }\n\n if (!workingQuery.queryType) {\n workingQuery = {\n ...workingQuery,\n queryType: AzureQueryType.AzureMonitor,\n };\n }\n\n if (workingQuery.queryType === AzureQueryType.AzureMonitor && workingQuery.azureMonitor) {\n workingQuery = migrateMetricsDimensionFilters(workingQuery);\n }\n\n return workingQuery;\n}\n","import { useState, useCallback, useMemo } from 'react';\n\nimport { AzureMonitorErrorish } from '../types';\n\nimport messageFromError from './messageFromError';\n\ntype SourcedError = [string, AzureMonitorErrorish];\n\nexport default function useLastError() {\n const [errors, setErrors] = useState([]);\n\n // Handles errors from any child components that request data to display their options\n const addError = useCallback((errorSource: string, error: AzureMonitorErrorish | undefined) => {\n setErrors((errors) => {\n const errorsCopy = [...errors];\n const index = errors.findIndex(([vSource]) => vSource === errorSource);\n\n // If there's already an error, remove it. If we're setting a new error\n // below, we'll move it to the front\n if (index > -1) {\n errorsCopy.splice(index, 1);\n }\n\n // And then add the new error to the top of the array. If error is defined, it was already\n // removed above.\n if (error) {\n errorsCopy.unshift([errorSource, error]);\n }\n\n return errorsCopy;\n });\n }, []);\n\n const errorMessage = useMemo(() => {\n const recentError = errors[0];\n return recentError && messageFromError(recentError[1]);\n }, [errors]);\n\n return [errorMessage, addError] as const;\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n"],"names":["Field","props","InlineField","labelWidth","FORMAT_OPTIONS","label","value","query","variableOptionGroup","onQueryChange","options","useMemo","handleChange","useCallback","change","newQuery","setFormatAs","Select","menuShouldPortal","inputId","azureLogAnalytics","resultFormat","onChange","width","Deferred","constructor","this","resolve","undefined","reject","promise","Promise","Object","freeze","datasource","monacoPromiseRef","useRef","useEffect","resource","promises","azureLogAnalyticsDatasource","getKustoSchema","current","all","then","schema","monaco","editor","languages","kusto","getKustoWorker","model","getModel","uri","worker","setSchema","handleEditorMount","setKustoQuery","CodeEditor","language","height","showMiniMap","onBlur","onSave","onEditorDidMount","EntryIcon","isOpen","entry","type","ResourceRowType","Icon","name","theme","table","css","tableLayout","tableScroller","maxHeight","overflow","header","background","colors","secondary","row","borderBottom","border","weak","borderBottomColor","medium","disabledRow","opacity","cell","padding","spacing","textOverflow","collapseButton","margin","loadingCell","textAlign","spinner","marginBottom","nestedEntry","display","alignItems","entryContentItem","truncated","minWidth","whiteSpace","nestedRowCheckbox","zIndex","selectionFooter","position","bottom","primary","paddingTop","loadingWrapper","paddingBottom","color","text","NestedEntry","isSelected","isDisabled","isSelectable","scrollIntoView","level","onToggleCollapse","onSelectedChange","useTheme2","styles","useStyles2","getStyles","hasChildren","children","handleToggleCollapse","handleSelectedChanged","ev","target","checked","checkboxId","document","getElementById","behavior","block","className","style","marginLeft","gridSize","IconButton","onClick","id","Space","layout","h","Checkbox","disabled","htmlFor","cx","NestedRow","selectedRows","requestNestedRows","onRowSelectedChange","selectableEntryTypes","rowStatus","setRowStatus","useState","find","v","length","selectedRow","findRow","async","catch","some","typeLabel","location","keys","map","childRow","FadeTransition","visible","colSpan","LoadingPlaceholder","resourcePickerData","resourceURI","onApply","onCancel","loadingStatus","setLoadingStatus","azureRows","setAzureRows","internalSelectedURI","setInternalSelectedURI","errorMessage","setErrorMessage","isAdvancedOpen","setIsAdvancedOpen","includes","resources","getSubscriptions","parsedURI","parseResourceURI","resourceGroupURI","subscriptionID","resourceGroup","resourceGroups","getResourceGroupsBySubscriptionId","addResources","resourcesForResourceGroup","getResourcesForResourceGroup","error","messageFromError","loadInitialData","selectedResourceRows","found","resourceGroupOrSubscription","rows","newRows","handleSelectionChanged","handleApply","Collapse","collapsible","onToggle","Label","Tooltip","content","href","rel","placement","interactive","Input","event","currentTarget","placeholder","Button","variant","Alert","severity","title","parseResourceDetails","parsed","subscriptionName","resourceGroupName","resourceName","ResourceLabel","resourceComponents","setResourceComponents","getResourceURIDisplayProperties","FormattedResource","startsWith","Separator","pickerIsOpen","setPickerIsOpen","handleOpenPicker","closePicker","setResource","Modal","modal","onDismiss","trapFocus","breakpoints","values","lg","useMigrations","migrationError","setMigrationError","workspace","isGUIDish","getResourceURIFromWorkspace","migrateWorkspaceQueryToResourceQuery","err","message","subscriptionId","setError","hideFormatAs","InlineFieldRow","kustoQuery","formatAs","setSubscriptionID","subscription","azureMonitor","metricDefinition","metricNamespace","metricName","aggregation","timeGrain","dimensionFilters","setResourceGroup","setResourceType","resourceType","setResourceName","setMetricNamespace","setMetricName","setAggregation","setTimeGrain","setDimensionFilters","dimensions","appendDimensionFilter","dimension","operator","filter","existingFilters","removeDimensionFilter","indexToRemove","newFilters","splice","setDimensionFilterValue","index","fieldName","setTop","top","setLegendAlias","alias","subscriptions","multiSelect","queryType","AzureQueryType","onSubscriptionsChange","c","MultiSelect","isClearable","findOptions","allowCustomValue","azureResourceGraph","ERROR_SOURCE","fetchedRef","setSubscriptions","azureMonitorDatasource","results","fetchedSubscriptions","description","aggregationOptions","isLoading","data","dimensionOptions","dimensionLabels","setDimensionLabels","labelsObj","series","labels","flat","refId","flatMap","fields","item","entries","add","Set","prevLabels","newLabels","size","useDimensionLabels","dimensionOperators","validDimensionOptions","t","val","dimensionFilter","onFieldChange","filterIndex","getValidFilterOptions","selectedFilter","Array","from","toLowerCase","VerticalGroup","HorizontalGroup","selectedDimension","concat","selectedOperator","onFilterInputChange","icon","removeFilter","setValue","HTMLInputElement","handleBlur","metricNames","metricNamespaces","optionValues","m","p","push","resourceNames","resourceTypes","timeGrainOptions","timeGrains","autoInterval","TimegrainConverter","o","useAsyncState","asyncFn","dependencies","errorSource","Math","random","finalValue","useSubscriptions","defaultSubscription","defaultSubscriptionId","subscriptionOptions","formatOptions","hasOption","defaultSub","updateSubscriptions","rawResults","selectedValue","toOption","option","metricsMetadata","metricMetadata","setMetricMetadata","aggOptions","supportedAggTypes","primaryAggType","getMetricMetadata","metadata","aggregations","supportedTimeGrains","newAggregation","newTimeGrain","allowedTimeGrainsMs","rangeUtil","useMetricMetadata","getResourceGroups","useResourceGroups","getMetricDefinitions","useResourceTypes","getResourceNames","useResourceNames","getMetricNames","useMetricNames","getMetricNamespaces","useMetricNamespaces","ResourceTypeField","ReadOnlyTimeGrain","timeGrainCount","timeGrainType","timeGrainUnit","timeFields","timeField","groupBy","appInsights","insightsAnalytics","readOnly","initialQueryType","queryTypes","gtGrafana9","DeprecatedAzureQueryType","DEFAULT_QUERY","onChangeQuery","preparedQuery","withDefaults","defaults","migratedQuery","migrateQuery","deepEqual","prepareQuery","EditorForQueryType","config","LogsQueryEditor","baseQuery","onRunQuery","baseOnRunQuery","useLastError","debounce","usePreparedQuery","getVariables","RESOURCE_URI_REGEX","matches","exec","groups","input","match","result","targetParentId","newResources","produce","draftState","draftRow","wrapper","defaultProps","stylesFactory","paddingRight","isAppInsightsConfigured","jsonData","appInsightsAppId","secureJsonFields","appInsightsApiKey","valid","gt","TimeGrainConverter","toUpperCase","interval","slice","unit","indexOf","createISO8601Duration","toMinutes","allowedTimeGrains","closest","intervalMs","i","duration","offset","substring","timeUnitToText","timeUnitToKbn","AzureCloud","set","reduce","accum","has","routeNames","logAnalytics","resourceGraph","interpolateVariable","variable","multi","includeAll","allValue","join","OLD_DEFAULT_DROPDOWN_VALUE","workingQuery","setMetricsTimeGrain","migrateTimeGrains","replace","migrateLogAnalyticsToFromTimes","migrateToDefaultNamespace","migrateApplicationInsightsDimensions","migrateMetricsDimensionFilters","oldDimension","datasourceMigrations","rawQuery","errors","setErrors","addError","errorsCopy","findIndex","vSource","unshift","recentError","n","r","arguments","e","Error","Q","getPrototypeOf","hasOwnProperty","call","Function","toString","Z","isArray","L","s","nn","forEach","u","prototype","a","get","f","delete","X","Map","q","l","rn","writable","configurable","enumerable","create","d","y","clear","isFrozen","b","tn","_","U","j","O","g","S","w","P","M","x","H","A","I","k","R","D","F","z","getOwnPropertyDescriptor","E","N","T","C","en","on","Proxy","revocable","revoke","proxy","J","K","G","W","Symbol","B","Reflect","for","iterator","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","getOwnPropertyDescriptors","deleteProperty","defineProperty","setPrototypeOf","apply","un","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","path","op","$","an","fn","bind"],"sourceRoot":""}