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":";;;;;;;;;;;AAoBgB,SAAA,aAAA,CAAc,SAA+C,aAA2B,EAAA;AAEtG,EAAA,gBAAA,CAAiB,OAAO,CAAA;AACxB,EAAA,MAAM,QAAW,GAAA,CAAC,CAAE,CAAA,uCAAA,EAAyC,MAAM,CAAC,CAAA;AAEpE,EAAA,OAAA,CAAQ,YAAa,CAAA;AAAA,IACnB,IAAM,EAAA,WAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,oCAAA,EAAsC,OAAO,CAAA;AAAA,IACrD,QAAA;AAAA,IACA,YAAc,EAAA,EAAA;AAAA,IACd,QAAU,EAAA;AAAA,MACR,WAAA,EAAa,CAAE,CAAA,2CAAA,EAA6C,eAAe,CAAA;AAAA,MAC3E,kBAAoB,EAAA;AAAA,KACtB;AAAA,IACA,MAAQ,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,kBAAkB,aAAc,CAAA,MAAA;AAAA;AAAA,IAEjD,WAAA,EAAa,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,SAAU,CAAA,IAAA,IAAQ,CAAE,CAAA,IAAA,KAAS,SAAU,CAAA;AAAA,GACvE,CAAA;AAED,EAAA,YAAA,CAAa,OAAO,CAAA;AAEpB,EAAA,OAAA,CACG,QAAS,CAAA;AAAA,IACR,IAAM,EAAA,cAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,yCAAA,EAA2C,iBAAiB,CAAA;AAAA,IACpE,QAAA;AAAA,IACA,YAAc,EAAA,KAAA,CAAA;AAAA,IACd,QAAU,EAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,EAAE,KAAO,EAAA,KAAA,CAAA,EAAW,OAAO,CAAE,CAAA,sDAAA,EAAwD,MAAM,CAAE,EAAA;AAAA,QAC7F,EAAE,KAAO,EAAA,IAAA,EAAM,OAAO,CAAE,CAAA,oDAAA,EAAsD,IAAI,CAAE,EAAA;AAAA,QACpF,EAAE,KAAO,EAAA,KAAA,EAAO,OAAO,CAAE,CAAA,qDAAA,EAAuD,KAAK,CAAE;AAAA;AACzF,KACF;AAAA,IACA,MAAQ,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,kBAAkB,aAAc,CAAA;AAAA,GAClD,EACA,QAAS,CAAA;AAAA,IACR,IAAM,EAAA,eAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,qCAAA,EAAuC,OAAO,CAAA;AAAA,IACtD,QAAA;AAAA,IACA,cAAc,aAAc,CAAA,IAAA;AAAA,IAC5B,QAAU,EAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,EAAE,OAAO,aAAc,CAAA,IAAA,EAAM,OAAO,CAAE,CAAA,kDAAA,EAAoD,MAAM,CAAE,EAAA;AAAA,QAClG,EAAE,OAAO,aAAc,CAAA,MAAA,EAAQ,OAAO,CAAE,CAAA,oDAAA,EAAsD,QAAQ,CAAE;AAAA;AAC1G,KACF;AAAA,IACA,MAAQ,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,kBAAkB,aAAc,CAAA;AAAA,GAClD,EACA,gBAAiB,CAAA;AAAA,IAChB,IAAM,EAAA,gBAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,0CAAA,EAA4C,aAAa,CAAA;AAAA,IACjE,QAAA;AAAA,IACA,YAAc,EAAA,KAAA;AAAA,IACd,MAAQ,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,kBAAkB,aAAc,CAAA;AAAA,GAClD,CAAA;AAGH,EAAA,OAAA,CACG,eAA+C,CAAA;AAAA,IAC9C,EAAI,EAAA,mBAAA;AAAA,IACJ,IAAM,EAAA,mBAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,oCAAA,EAAsC,OAAO,CAAA;AAAA,IACrD,QAAA;AAAA,IACA,MAAQ,EAAA,uBAAA;AAAA,IACR,QAAU,EAAA,uBAAA;AAAA,IACV,YAAc,EAAA,EAAE,IAAM,EAAA,iBAAA,CAAkB,MAAO,EAAA;AAAA,IAC/C,WAAa,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,SAAU,CAAA,MAAA;AAAA,IACzC,OAAS,EAAA;AAAA,GACV,EACA,gBAAiB,CAAA;AAAA,IAChB,IAAM,EAAA,kBAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,4CAAA,EAA8C,eAAe,CAAA;AAAA,IACrE,QAAA;AAAA,IACA,YAAc,EAAA,KAAA;AAAA,IACd,MAAA,EAAQ,CAAC,CAAG,KAAA;AA/FlB,MAAA,IAAA,EAAA;AA+FqB,MAAE,OAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA,iBAAA,KAAF,IAAqB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,MAAS,iBAAkB,CAAA,GAAA;AAAA;AAAA,GAChE,EACA,cAAe,CAAA;AAAA,IACd,IAAM,EAAA,aAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,uCAAA,EAAyC,UAAU,CAAA;AAAA,IAC3D,cAAc,aAAc,CAAA,WAAA;AAAA,IAC5B,QAAA;AAAA,IACA,QAAU,EAAA;AAAA,MACR,WAAA,EAAa,CAAE,CAAA,8CAAA,EAAgD,6BAA6B;AAAA;AAC9F,GACD,EACA,cAAe,CAAA;AAAA,IACd,IAAM,EAAA,aAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,uCAAA,EAAyC,UAAU,CAAA;AAAA,IAC3D,cAAc,aAAc,CAAA,WAAA;AAAA,IAC5B,QAAA;AAAA,IACA,QAAU,EAAA;AAAA,MACR,WAAA,EAAa,CAAE,CAAA,8CAAA,EAAgD,6BAA6B;AAAA;AAC9F,GACD,CAAA;AACL;AAEA,MAAM,wBAA2D,GAAA;AAAA,EAC/D;AAAA,IACE,KAAO,EAAA,GAAA;AAAA,IACP,KAAO,EAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA,IAAA;AAAA,IACP,KAAO,EAAA;AAAA;AAEX,CAAA;AAKO,MAAM,uBAA0B,GAAA,CAAC,EAAE,KAAA,EAAO,UAA6D,KAAA;AAnI9G,EAAA,IAAA,EAAA,EAAA,EAAA;AAoIE,EAAA,MAAM,IAAO,GAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,IAAP,KAAA,IAAA,GAAA,EAAA,GAAe,iBAAkB,CAAA,MAAA;AAC9C,EAAM,MAAA,GAAA,GAAA,CAAM,EAAO,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAP,IAAc,GAAA,EAAA,GAAA,CAAA;AAC1B,EAAA,MAAM,oBAAkE,GAAA;AAAA,IACtE;AAAA,MACE,KAAA,EAAO,CAAE,CAAA,qFAAA,EAAuF,QAAQ,CAAA;AAAA,MACxG,OAAO,iBAAkB,CAAA;AAAA,KAC3B;AAAA,IACA;AAAA,MACE,KAAA,EAAO,CAAE,CAAA,kFAAA,EAAoF,aAAa,CAAA;AAAA,MAC1G,OAAO,iBAAkB,CAAA;AAAA,KAC3B;AAAA,IACA;AAAA,MACE,KAAA,EAAO,CAAE,CAAA,qFAAA,EAAuF,QAAQ,CAAA;AAAA,MACxG,OAAO,iBAAkB,CAAA;AAAA;AAC3B,GACF;AAEA,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA,EAAM,SAAU,EAAA,QAAA,EAAS,KAAK,CAC7B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,IAAA;AAAA,QACP,OAAS,EAAA,oBAAA;AAAA,QACT,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,UAAS,QAAA,CAAA;AAAA,YACP,GAAG,KAAA;AAAA,YACH,IAAM,EAAA,CAAA;AAAA,YACN,GAAK,EAAA,CAAA,KAAM,iBAAkB,CAAA,MAAA,GAAS,KAAY,CAAA,GAAA;AAAA,WACnD,CAAA;AAAA;AACH;AAAA,KACF;AAAA,IAAA,CACE,IAAS,KAAA,iBAAA,CAAkB,GAAO,IAAA,IAAA,KAAS,iBAAkB,CAAA,MAAA,qBAC5D,GAAA,CAAA,KAAA,EAAA,EAAM,KAAO,EAAA,CAAA,CAAE,kCAAoC,EAAA,UAAU,CAC5D,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAS,EAAA,wBAAA;AAAA,QACT,KAAO,EAAA,GAAA;AAAA,QACP,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,UAAS,QAAA,CAAA;AAAA,YACP,GAAG,KAAA;AAAA,YACH,KAAK,CAAE,CAAA;AAAA,WACR,CAAA;AAAA;AACH;AAAA,KAEJ,EAAA,CAAA;AAAA,IAED,IAAS,KAAA,iBAAA,CAAkB,MAC1B,oBAAA,GAAA,CAAC,SAAM,KAAO,EAAA,CAAA,CAAE,0CAA4C,EAAA,kBAAkB,CAAG,EAAA,KAAA,EAAO,EAAE,YAAA,EAAc,GACtG,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,WAAY,EAAA,GAAA;AAAA,QACZ,OAAO,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,eAAA;AAAA,QACd,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,UAAS,QAAA,CAAA;AAAA,YACP,GAAG,KAAA;AAAA,YACH,eAAiB,EAAA,MAAA,CAAO,CAAE,CAAA,aAAA,CAAc,KAAK;AAAA,WAC9C,CAAA;AAAA;AACH;AAAA,KAEJ,EAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ;AAGO,SAAS,aAAa,OAA+C,EAAA;AAC1E,EAAA,OAAA,CAAQ,cAAe,CAAA;AAAA,IACrB,IAAM,EAAA,WAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,oCAAA,EAAsC,OAAO,CAAA;AAAA,IACrD,QAAU,EAAA,CAAC,CAAE,CAAA,uCAAA,EAAyC,MAAM,CAAC,CAAA;AAAA,IAC7D,QAAU,EAAA;AAAA,MACR,WAAA,EAAa,CAAE,CAAA,2CAAA,EAA6C,MAAM;AAAA,KACpE;AAAA,IACA,MAAQ,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,kBAAkB,aAAc,CAAA;AAAA,GAClD,CAAA;AACH;AAGO,SAAS,gBACd,CAAA,OAAA,EACA,aAAgB,GAAA,CAAC,cAA6B,IAC9C,EAAA;AACA,EAAA,MAAM,oBAAoB,oBAAqB,EAAA;AAC/C,EAAA,OAAA,CAAQ,QAAS,CAAA;AAAA,IACf,IAAM,EAAA,eAAA;AAAA,IACN,IAAA,EAAM,CAAE,CAAA,wCAAA,EAA0C,WAAW,CAAA;AAAA,IAC7D,QAAU,EAAA,CAAC,CAAE,CAAA,uCAAA,EAAyC,MAAM,CAAC,CAAA;AAAA,IAC7D,YAAc,EAAA,iBAAA,CAAkB,aAAc,CAAA,CAAC,CAAE,CAAA,KAAA;AAAA,IACjD,QAAU,EAAA;AAAA,MACR,OAAA,EAAS,kBAAkB,aAAc,CAAA,MAAA,CAAO,CAAC,SAAc,KAAA,aAAA,CAAc,SAAU,CAAA,KAAM,CAAC;AAAA;AAChG,GACD,CAAA;AACH;;;;"}