UNPKG

@grafana/ui

Version:
1 lines 13.8 kB
{"version":3,"file":"axis.mjs","sources":["../../../../src/options/builder/axis.tsx"],"sourcesContent":["import {\n FieldConfigEditorBuilder,\n FieldType,\n identityOverrideProcessor,\n SelectableValue,\n StandardEditorProps,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { AxisColorMode, AxisConfig, AxisPlacement, ScaleDistribution, ScaleDistributionConfig } from '@grafana/schema';\n\nimport { Field } from '../../components/Forms/Field';\nimport { RadioButtonGroup } from '../../components/Forms/RadioButtonGroup/RadioButtonGroup';\nimport { Input } from '../../components/Input/Input';\nimport { Stack } from '../../components/Layout/Stack/Stack';\nimport { Select } from '../../components/Select/Select';\nimport { getGraphFieldOptions } from '../../components/uPlot/config';\n\n/**\n * @alpha\n */\nexport function addAxisConfig(builder: FieldConfigEditorBuilder<AxisConfig>, defaultConfig: AxisConfig) {\n // options for axis appearance\n addAxisPlacement(builder);\n const category = [t('grafana-ui.builder.axis.category-axis', 'Axis')];\n\n builder.addTextInput({\n path: 'axisLabel',\n name: t('grafana-ui.builder.axis.name-label', 'Label'),\n category,\n defaultValue: '',\n settings: {\n placeholder: t('grafana-ui.builder.axis.placeholder-label', 'Optional text'),\n expandTemplateVars: true,\n },\n showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n // Do not apply default settings to time and string fields which are used as x-axis fields in Time series and Bar chart panels\n shouldApply: (f) => f.type !== FieldType.time && f.type !== FieldType.string,\n });\n\n addAxisWidth(builder);\n\n builder\n .addRadio({\n path: 'axisGridShow',\n name: t('grafana-ui.builder.axis.name-grid-lines', 'Show grid lines'),\n category,\n defaultValue: undefined,\n settings: {\n options: [\n { value: undefined, label: t('grafana-ui.builder.axis.grid-line-options.label-auto', 'Auto') },\n { value: true, label: t('grafana-ui.builder.axis.grid-line-options.label-on', 'On') },\n { value: false, label: t('grafana-ui.builder.axis.grid-line-options.label-off', 'Off') },\n ],\n },\n showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n })\n .addRadio({\n path: 'axisColorMode',\n name: t('grafana-ui.builder.axis.color-label', 'Color'),\n category,\n defaultValue: AxisColorMode.Text,\n settings: {\n options: [\n { value: AxisColorMode.Text, label: t('grafana-ui.builder.axis.color-options.label-text', 'Text') },\n { value: AxisColorMode.Series, label: t('grafana-ui.builder.axis.color-options.label-series', 'Series') },\n ],\n },\n showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n })\n .addBooleanSwitch({\n path: 'axisBorderShow',\n name: t('grafana-ui.builder.axis.name-show-border', 'Show border'),\n category,\n defaultValue: false,\n showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n });\n\n // options for scale range\n builder\n .addCustomEditor<void, ScaleDistributionConfig>({\n id: 'scaleDistribution',\n path: 'scaleDistribution',\n name: t('grafana-ui.builder.axis.name-scale', 'Scale'),\n category,\n editor: ScaleDistributionEditor,\n override: ScaleDistributionEditor,\n defaultValue: { type: ScaleDistribution.Linear },\n shouldApply: (f) => f.type === FieldType.number,\n process: identityOverrideProcessor,\n })\n .addBooleanSwitch({\n path: 'axisCenteredZero',\n name: t('grafana-ui.builder.axis.name-centered-zero', 'Centered zero'),\n category,\n defaultValue: false,\n showIf: (c) => c.scaleDistribution?.type !== ScaleDistribution.Log,\n })\n .addNumberInput({\n path: 'axisSoftMin',\n name: t('grafana-ui.builder.axis.name-soft-min', 'Soft min'),\n defaultValue: defaultConfig.axisSoftMin,\n category,\n settings: {\n placeholder: t('grafana-ui.builder.axis.placeholder-soft-min', 'See: Standard options > Min'),\n },\n })\n .addNumberInput({\n path: 'axisSoftMax',\n name: t('grafana-ui.builder.axis.name-soft-max', 'Soft max'),\n defaultValue: defaultConfig.axisSoftMax,\n category,\n settings: {\n placeholder: t('grafana-ui.builder.axis.placeholder-soft-max', 'See: Standard options > Max'),\n },\n });\n}\n\nconst LOG_DISTRIBUTION_OPTIONS: Array<SelectableValue<number>> = [\n {\n label: '2',\n value: 2,\n },\n {\n label: '10',\n value: 10,\n },\n];\n\n/**\n * @internal\n */\nexport const ScaleDistributionEditor = ({ value, onChange }: StandardEditorProps<ScaleDistributionConfig>) => {\n const type = value?.type ?? ScaleDistribution.Linear;\n const log = value?.log ?? 2;\n const DISTRIBUTION_OPTIONS: Array<SelectableValue<ScaleDistribution>> = [\n {\n label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-linear', 'Linear'),\n value: ScaleDistribution.Linear,\n },\n {\n label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-log', 'Logarithmic'),\n value: ScaleDistribution.Log,\n },\n {\n label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-symlog', 'Symlog'),\n value: ScaleDistribution.Symlog,\n },\n ];\n\n return (\n <Stack direction=\"column\" gap={2}>\n <RadioButtonGroup\n value={type}\n options={DISTRIBUTION_OPTIONS}\n onChange={(v) => {\n onChange({\n ...value,\n type: v!,\n log: v === ScaleDistribution.Linear ? undefined : log,\n });\n }}\n />\n {(type === ScaleDistribution.Log || type === ScaleDistribution.Symlog) && (\n <Field label={t('grafana-ui.axis-builder.log-base', 'Log base')}>\n <Select\n options={LOG_DISTRIBUTION_OPTIONS}\n value={log}\n onChange={(v) => {\n onChange({\n ...value,\n log: v.value!,\n });\n }}\n />\n </Field>\n )}\n {type === ScaleDistribution.Symlog && (\n <Field label={t('grafana-ui.axis-builder.linear-threshold', 'Linear threshold')} style={{ marginBottom: 0 }}>\n <Input\n // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n placeholder=\"1\"\n value={value?.linearThreshold}\n onChange={(v) => {\n onChange({\n ...value,\n linearThreshold: Number(v.currentTarget.value),\n });\n }}\n />\n </Field>\n )}\n </Stack>\n );\n};\n\n/** @internal */\nexport function addAxisWidth(builder: FieldConfigEditorBuilder<AxisConfig>) {\n builder.addNumberInput({\n path: 'axisWidth',\n name: t('grafana-ui.builder.axis.name-width', 'Width'),\n category: [t('grafana-ui.builder.axis.category-axis', 'Axis')],\n settings: {\n placeholder: t('grafana-ui.builder.axis.placeholder-width', 'Auto'),\n },\n showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n });\n}\n\n/** @internal */\nexport function addAxisPlacement(\n builder: FieldConfigEditorBuilder<AxisConfig>,\n optionsFilter = (placement: AxisPlacement) => true\n) {\n const graphFieldOptions = getGraphFieldOptions();\n builder.addRadio({\n path: 'axisPlacement',\n name: t('grafana-ui.builder.axis.name-placement', 'Placement'),\n category: [t('grafana-ui.builder.axis.category-axis', 'Axis')],\n defaultValue: graphFieldOptions.axisPlacement[0].value,\n settings: {\n options: graphFieldOptions.axisPlacement.filter((placement) => optionsFilter(placement.value!)),\n },\n });\n}\n"],"names":[],"mappings":"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"}