{"version":3,"file":"AnnotationQueryEditor.cjs","sources":["../../../src/components/AnnotationQueryEditor.tsx"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/components/AnnotationQueryEditor.tsx\n\nimport { memo } from 'react';\n\nimport { type AnnotationQuery } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { Trans, t } from '@grafana/i18n';\nimport { EditorField, EditorRow, EditorRows, EditorSwitch } from '@grafana/plugin-ui';\nimport { AutoSizeInput, Input, Space } from '@grafana/ui';\n\nimport { PromQueryCodeEditor } from '../querybuilder/components/PromQueryCodeEditor';\nimport { type PromQuery } from '../types';\n\nimport { type PromQueryEditorProps } from './types';\n\ntype Props = PromQueryEditorProps & {\n  annotation?: AnnotationQuery<PromQuery>;\n  onAnnotationChange?: (annotation: AnnotationQuery<PromQuery>) => void;\n};\n\nconst PLACEHOLDER_TITLE = '{{alertname}}';\nconst PLACEHOLDER_TEXT = '{{instance}}';\nconst PLACEHOLDER_TAGS = 'label1,label2';\n\n/**\n * AnnotationQueryEditor component for Prometheus datasource.\n * Allows users to configure annotation queries with options for title, tags, text format,\n * and timestamp settings.\n */\nexport const AnnotationQueryEditor = memo(function AnnotationQueryEditor(props: Props) {\n  const { annotation, onAnnotationChange, onChange, onRunQuery, query } = props;\n\n  if (!annotation || !onAnnotationChange) {\n    return (\n      <h3>\n        <Trans i18nKey=\"grafana-prometheus.components.annotation-query-editor.annotation-data-load-error\">\n          Annotation data load error!\n        </Trans>\n      </h3>\n    );\n  }\n\n  const handleMinStepChange = (value: string) => {\n    onChange({ ...query, interval: value });\n  };\n\n  const handleTitleChange = (value: string) => {\n    onAnnotationChange({\n      ...annotation,\n      titleFormat: value,\n    });\n  };\n\n  const handleTagsChange = (value: string) => {\n    onAnnotationChange({\n      ...annotation,\n      tagKeys: value,\n    });\n  };\n\n  const handleTextChange = (value: string) => {\n    onAnnotationChange({\n      ...annotation,\n      textFormat: value,\n    });\n  };\n\n  const handleUseValueForTimeChange = (checked: boolean) => {\n    onAnnotationChange({\n      ...annotation,\n      useValueForTime: checked,\n    });\n  };\n\n  return (\n    <>\n      <EditorRows>\n        <PromQueryCodeEditor {...props} query={query} showExplain={false} onRunQuery={onRunQuery} onChange={onChange} />\n        <EditorRow>\n          <EditorField\n            label={t('grafana-prometheus.components.annotation-query-editor.label-min-step', 'Min step')}\n            tooltip={\n              <Trans\n                i18nKey=\"grafana-prometheus.components.annotation-query-editor.tooltip-min-step\"\n                values={{ intervalVar: '$__interval', rateIntervalVar: '$__rate_interval' }}\n              >\n                An additional lower limit for the step parameter of the Prometheus query and for the{' '}\n                <code>{'{{intervalVar}}'}</code> and <code>{'{{rateIntervalVar}}'}</code> variables.\n              </Trans>\n            }\n          >\n            <AutoSizeInput\n              type=\"text\"\n              aria-label={t(\n                'grafana-prometheus.components.annotation-query-editor.aria-label-lower-limit-parameter',\n                'Set lower limit for the step parameter'\n              )}\n              placeholder={t('grafana-prometheus.components.annotation-query-editor.placeholder-auto', 'auto')}\n              minWidth={10}\n              value={query.interval ?? ''}\n              onChange={(e) => handleMinStepChange(e.currentTarget.value)}\n              id={selectors.components.DataSource.Prometheus.annotations.minStep}\n              data-testid={selectors.components.DataSource.Prometheus.annotations.minStep}\n            />\n          </EditorField>\n        </EditorRow>\n      </EditorRows>\n      <Space v={0.5} />\n      <EditorRow>\n        <EditorField\n          label={t('grafana-prometheus.components.annotation-query-editor.label-title', 'Title')}\n          tooltip={t(\n            'grafana-prometheus.components.annotation-query-editor.tooltip-either-pattern-example-instance-replaced-label',\n            'Use either the name or a pattern. For example, {{labelTemplate}} is replaced with label value for the label {{labelName}}.',\n            { labelName: 'instance', labelTemplate: '{{instance}}' }\n          )}\n        >\n          <Input\n            type=\"text\"\n            placeholder={PLACEHOLDER_TITLE}\n            value={annotation.titleFormat ?? ''}\n            onChange={(event) => handleTitleChange(event.currentTarget.value)}\n            data-testid={selectors.components.DataSource.Prometheus.annotations.title}\n          />\n        </EditorField>\n        <EditorField label={t('grafana-prometheus.components.annotation-query-editor.label-tags', 'Tags')}>\n          <Input\n            type=\"text\"\n            placeholder={PLACEHOLDER_TAGS}\n            value={annotation.tagKeys ?? ''}\n            onChange={(event) => handleTagsChange(event.currentTarget.value)}\n            data-testid={selectors.components.DataSource.Prometheus.annotations.tags}\n          />\n        </EditorField>\n        <EditorField\n          label={t('grafana-prometheus.components.annotation-query-editor.label-text', 'Text')}\n          tooltip={t(\n            'grafana-prometheus.components.annotation-query-editor.tooltip-either-pattern-example-instance-replaced-label',\n            'Use either the name or a pattern. For example, {{labelTemplate}} is replaced with label value for the label {{labelName}}.',\n            { labelName: 'instance', labelTemplate: '{{instance}}' }\n          )}\n        >\n          <Input\n            type=\"text\"\n            placeholder={PLACEHOLDER_TEXT}\n            value={annotation.textFormat ?? ''}\n            onChange={(event) => handleTextChange(event.currentTarget.value)}\n            data-testid={selectors.components.DataSource.Prometheus.annotations.text}\n          />\n        </EditorField>\n        <EditorField\n          label={t(\n            'grafana-prometheus.components.annotation-query-editor.label-series-value-as-timestamp',\n            'Series value as timestamp'\n          )}\n          tooltip={t(\n            'grafana-prometheus.components.annotation-query-editor.tooltip-timestamp-milliseconds-series-value-seconds-multiply',\n            'The unit of timestamp is milliseconds. If the unit of the series value is seconds, multiply its range vector by 1000.'\n          )}\n        >\n          <EditorSwitch\n            value={annotation.useValueForTime ?? false}\n            onChange={(event) => handleUseValueForTimeChange(event.currentTarget.checked)}\n            data-testid={selectors.components.DataSource.Prometheus.annotations.seriesValueAsTimestamp}\n          />\n        </EditorField>\n      </EditorRow>\n    </>\n  );\n});\n"],"names":["memo","AnnotationQueryEditor","jsx","Trans","jsxs","Fragment","EditorRows","PromQueryCodeEditor","EditorRow","EditorField","t","AutoSizeInput","selectors","Space","Input","EditorSwitch"],"mappings":"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"}