@grafana/ui
Version:
Grafana Components Library
1 lines • 11.6 kB
Source Map (JSON)
{"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 { 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 { graphFieldOptions } from '../../components/uPlot/config';\nimport { t } from '../../utils/i18n';\n\nconst category = ['Axis'];\n\n/**\n * @alpha\n */\nexport function addAxisConfig(builder: FieldConfigEditorBuilder<AxisConfig>, defaultConfig: AxisConfig) {\n // options for axis appearance\n addAxisPlacement(builder);\n\n builder.addTextInput({\n path: 'axisLabel',\n name: 'Label',\n category,\n defaultValue: '',\n settings: {\n placeholder: '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: 'Show grid lines',\n category,\n defaultValue: undefined,\n settings: {\n options: [\n { value: undefined, label: 'Auto' },\n { value: true, label: 'On' },\n { value: false, label: 'Off' },\n ],\n },\n showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n })\n .addRadio({\n path: 'axisColorMode',\n name: 'Color',\n category,\n defaultValue: AxisColorMode.Text,\n settings: {\n options: [\n { value: AxisColorMode.Text, label: 'Text' },\n { value: AxisColorMode.Series, label: 'Series' },\n ],\n },\n showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n })\n .addBooleanSwitch({\n path: 'axisBorderShow',\n name: '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: '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: 'Centered zero',\n category,\n defaultValue: false,\n showIf: (c) => c.scaleDistribution?.type !== ScaleDistribution.Log,\n })\n .addNumberInput({\n path: 'axisSoftMin',\n name: 'Soft min',\n defaultValue: defaultConfig.axisSoftMin,\n category,\n settings: {\n placeholder: 'See: Standard options > Min',\n },\n })\n .addNumberInput({\n path: 'axisSoftMax',\n name: 'Soft max',\n defaultValue: defaultConfig.axisSoftMax,\n category,\n settings: {\n placeholder: 'See: Standard options > Max',\n },\n });\n}\n\nconst DISTRIBUTION_OPTIONS: Array<SelectableValue<ScaleDistribution>> = [\n {\n label: 'Linear',\n value: ScaleDistribution.Linear,\n },\n {\n label: 'Logarithmic',\n value: ScaleDistribution.Log,\n },\n {\n label: 'Symlog',\n value: ScaleDistribution.Symlog,\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\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/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: 'Width',\n category,\n settings: {\n placeholder: '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 builder.addRadio({\n path: 'axisPlacement',\n name: 'Placement',\n category,\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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"}