{"version":3,"file":"PromQueryBuilderOptions.cjs","sources":["../../../../src/querybuilder/components/PromQueryBuilderOptions.tsx"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryBuilderOptions.tsx\nimport { map } from 'lodash';\nimport { type SyntheticEvent } from 'react';\nimport * as React from 'react';\n\nimport { CoreApp, type SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { Trans, t } from '@grafana/i18n';\nimport { EditorField, EditorSwitch } from '@grafana/plugin-ui';\nimport { AutoSizeInput, Box, RadioButtonGroup, Select } from '@grafana/ui';\n\nimport { getQueryTypeChangeHandler, getQueryTypeOptions } from '../../components/PromExploreExtraField';\nimport { type PromQueryFormat } from '../../dataquery';\nimport { type PromQuery } from '../../types';\nimport { QueryOptionGroup } from '../shared/QueryOptionGroup';\n\nimport { getLegendModeLabel, PromQueryLegendEditor } from './PromQueryLegendEditor';\n\ninterface PromQueryBuilderOptionsProps {\n  query: PromQuery;\n  app?: CoreApp;\n  onChange: (update: PromQuery) => void;\n  onRunQuery: () => void;\n}\n\nconst INTERVAL_FACTOR_OPTIONS: Array<SelectableValue<number>> = map([1, 2, 3, 4, 5, 10], (value: number) => ({\n  value,\n  label: '1/' + value,\n}));\n\nexport const PromQueryBuilderOptions = React.memo<PromQueryBuilderOptionsProps>(\n  ({ query, app, onChange, onRunQuery }) => {\n    const FORMAT_OPTIONS: Array<SelectableValue<PromQueryFormat>> = [\n      {\n        label: t(\n          'grafana-prometheus.querybuilder.prom-query-builder-options.format-options.label-time-series',\n          'Time series'\n        ),\n        value: 'time_series',\n      },\n      {\n        label: t('grafana-prometheus.querybuilder.prom-query-builder-options.format-options.label-table', 'Table'),\n        value: 'table',\n      },\n      {\n        label: t('grafana-prometheus.querybuilder.prom-query-builder-options.format-options.label-heatmap', 'Heatmap'),\n        value: 'heatmap',\n      },\n    ];\n\n    const onChangeFormat = (value: SelectableValue<PromQueryFormat>) => {\n      onChange({ ...query, format: value.value });\n      onRunQuery();\n    };\n\n    const onChangeStep = (evt: React.FormEvent<HTMLInputElement>) => {\n      onChange({ ...query, interval: evt.currentTarget.value.trim() });\n      onRunQuery();\n    };\n\n    const queryTypeOptions = getQueryTypeOptions(\n      app === CoreApp.Explore || app === CoreApp.Correlations || app === CoreApp.PanelEditor\n    );\n\n    const onQueryTypeChange = getQueryTypeChangeHandler(query, onChange);\n\n    const onExemplarChange = (event: SyntheticEvent<HTMLInputElement>) => {\n      const isEnabled = event.currentTarget.checked;\n      onChange({ ...query, exemplar: isEnabled });\n      onRunQuery();\n    };\n\n    const onIntervalFactorChange = (value: SelectableValue<number>) => {\n      onChange({ ...query, intervalFactor: value.value });\n      onRunQuery();\n    };\n\n    const formatOption = FORMAT_OPTIONS.find((option) => option.value === query.format) || FORMAT_OPTIONS[0];\n    const queryTypeValue = getQueryTypeValue(query);\n    const queryTypeLabel = queryTypeOptions.find((x) => x.value === queryTypeValue)!.label;\n\n    return (\n      <Box backgroundColor={'secondary'} borderRadius=\"default\">\n        <div data-testid={selectors.components.DataSource.Prometheus.queryEditor.options}>\n          <QueryOptionGroup\n            title={t('grafana-prometheus.querybuilder.prom-query-builder-options.title-options', 'Options')}\n            collapsedInfo={getCollapsedInfo(query, formatOption.label!, queryTypeLabel, app)}\n          >\n            <PromQueryLegendEditor\n              legendFormat={query.legendFormat}\n              onChange={(legendFormat) => onChange({ ...query, legendFormat })}\n              onRunQuery={onRunQuery}\n            />\n            <EditorField\n              label={t('grafana-prometheus.querybuilder.prom-query-builder-options.label-min-step', 'Min step')}\n              tooltip={\n                <>\n                  <Trans\n                    i18nKey=\"grafana-prometheus.querybuilder.prom-query-builder-options.tooltip-min-step\"\n                    values={{\n                      interval: '$__interval',\n                      rateInterval: '$__rate_interval',\n                    }}\n                  >\n                    An additional lower limit for the step parameter of the Prometheus query and for the{' '}\n                    <code>{'{{interval}}'}</code> and <code>{'{{rateInterval}}'}</code> variables.\n                  </Trans>\n                </>\n              }\n            >\n              <AutoSizeInput\n                type=\"text\"\n                aria-label={t(\n                  'grafana-prometheus.querybuilder.prom-query-builder-options.aria-label-lower-limit-parameter',\n                  'Min step text box, set lower limit for the step parameter'\n                )}\n                placeholder={t('grafana-prometheus.querybuilder.prom-query-builder-options.placeholder-auto', 'auto')}\n                minWidth={10}\n                onCommitChange={onChangeStep}\n                defaultValue={query.interval}\n                data-testid={selectors.components.DataSource.Prometheus.queryEditor.step}\n              />\n            </EditorField>\n            <EditorField label={t('grafana-prometheus.querybuilder.prom-query-builder-options.label-format', 'Format')}>\n              <Select\n                data-testid={selectors.components.DataSource.Prometheus.queryEditor.format}\n                value={formatOption}\n                allowCustomValue\n                onChange={onChangeFormat}\n                options={FORMAT_OPTIONS}\n                aria-label={t(\n                  'grafana-prometheus.querybuilder.prom-query-builder-options.aria-label-format',\n                  'Format combobox'\n                )}\n              />\n            </EditorField>\n            <EditorField\n              label={t('grafana-prometheus.querybuilder.prom-query-builder-options.label-type', 'Type')}\n              data-testid={selectors.components.DataSource.Prometheus.queryEditor.type}\n            >\n              <RadioButtonGroup\n                options={queryTypeOptions}\n                value={queryTypeValue}\n                onChange={onQueryTypeChange}\n                aria-label={t(\n                  'grafana-prometheus.querybuilder.prom-query-builder-options.aria-label-type',\n                  'Type radio button group'\n                )}\n              />\n            </EditorField>\n            {shouldShowExemplarSwitch(query, app) && (\n              <EditorField\n                label={t('grafana-prometheus.querybuilder.prom-query-builder-options.label-exemplars', 'Exemplars')}\n              >\n                <EditorSwitch\n                  value={query.exemplar || false}\n                  onChange={onExemplarChange}\n                  data-testid={selectors.components.DataSource.Prometheus.queryEditor.exemplars}\n                  aria-label={t(\n                    'grafana-prometheus.querybuilder.prom-query-builder-options.aria-label-exemplars',\n                    'Exemplars switch.'\n                  )}\n                />\n              </EditorField>\n            )}\n            {query.intervalFactor && query.intervalFactor > 1 && (\n              <EditorField\n                label={t('grafana-prometheus.querybuilder.prom-query-builder-options.label-resolution', 'Resolution')}\n              >\n                <Select\n                  aria-label={t(\n                    'grafana-prometheus.querybuilder.prom-query-builder-options.aria-label-select-resolution',\n                    'Select resolution'\n                  )}\n                  isSearchable={false}\n                  options={INTERVAL_FACTOR_OPTIONS}\n                  onChange={onIntervalFactorChange}\n                  value={INTERVAL_FACTOR_OPTIONS.find((option) => option.value === query.intervalFactor)}\n                />\n              </EditorField>\n            )}\n          </QueryOptionGroup>\n        </div>\n      </Box>\n    );\n  }\n);\n\nfunction shouldShowExemplarSwitch(query: PromQuery, app?: CoreApp) {\n  if (app === CoreApp.UnifiedAlerting || !query.range) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction getQueryTypeValue(query: PromQuery) {\n  return query.range && query.instant ? 'both' : query.instant ? 'instant' : 'range';\n}\n\nfunction getCollapsedInfo(query: PromQuery, formatOption: string, queryType: string, app?: CoreApp): string[] {\n  const items: string[] = [];\n\n  items.push(\n    t('grafana-prometheus.querybuilder.get-collapsed-info.legend', 'Legend: {{value}}', {\n      value: getLegendModeLabel(query.legendFormat),\n    })\n  );\n  items.push(\n    t('grafana-prometheus.querybuilder.get-collapsed-info.format', 'Format: {{value}}', { value: formatOption })\n  );\n  items.push(\n    t('grafana-prometheus.querybuilder.get-collapsed-info.step', 'Step: {{value}}', { value: query.interval ?? 'auto' })\n  );\n  items.push(t('grafana-prometheus.querybuilder.get-collapsed-info.type', 'Type: {{value}}', { value: queryType }));\n\n  if (shouldShowExemplarSwitch(query, app)) {\n    items.push(\n      t('grafana-prometheus.querybuilder.get-collapsed-info.exemplars', 'Exemplars: {{value}}', {\n        value: query.exemplar ? 'true' : 'false',\n      })\n    );\n  }\n  return items;\n}\n\nPromQueryBuilderOptions.displayName = 'PromQueryBuilderOptions';\n"],"names":["map","React","t","getQueryTypeOptions","CoreApp","getQueryTypeChangeHandler","jsx","Box","selectors","jsxs","QueryOptionGroup","PromQueryLegendEditor","EditorField","Fragment","Trans","AutoSizeInput","Select","RadioButtonGroup","EditorSwitch","getLegendModeLabel"],"mappings":"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"}