Files
Ashley Harrison 38fc06a6ff Internationalisation: Mark up panel edit options (#107051)
* markup timeseries panel edit

* mark up matchers ui

* mark up bar chart

* mark up stat panel

* mark up gauge

* mark up bar gauge

* mark up table component

* mark up pie chart

* mark up state timeline

* mark up heatmap

* mark up status history

* mark up histogram

* mark up text panel

* mark up alert list

* mark up dashboard list

* mark up news panel

* mark up annolist

* mark up logs panel

* mark up node-graph

* mark up traces

* mark up trend

* mark up xychart

* fix build
2025-06-24 12:55:55 +01:00

142 lines
5.5 KiB
TypeScript

import { PanelPlugin } from '@grafana/data';
import { t } from '@grafana/i18n';
import {
BigValueColorMode,
BigValueGraphMode,
BigValueJustifyMode,
BigValueTextMode,
PercentChangeColorMode,
} from '@grafana/schema';
import { commonOptionsBuilder, sharedSingleStatMigrationHandler } from '@grafana/ui';
import { statPanelChangedHandler } from './StatMigrations';
import { StatPanel } from './StatPanel';
import { addStandardDataReduceOptions, addOrientationOption } from './common';
import { defaultOptions, Options } from './panelcfg.gen';
import { StatSuggestionsSupplier } from './suggestions';
export const plugin = new PanelPlugin<Options>(StatPanel)
.useFieldConfig()
.setPanelOptions((builder) => {
const mainCategory = [t('stat.category-stat-styles', 'Stat styles')];
addStandardDataReduceOptions(builder);
addOrientationOption(builder, mainCategory);
commonOptionsBuilder.addTextSizeOptions(builder);
builder
.addSelect({
path: 'textMode',
name: t('stat.name-text-mode', 'Text mode'),
description: t('stat.description-text-mode', 'Control if name and value is displayed or just name'),
category: mainCategory,
settings: {
options: [
{ value: BigValueTextMode.Auto, label: t('stat.text-mode-options.label-auto', 'Auto') },
{ value: BigValueTextMode.Value, label: t('stat.text-mode-options.label-value', 'Value') },
{
value: BigValueTextMode.ValueAndName,
label: t('stat.text-mode-options.label-value-and-name', 'Value and name'),
},
{ value: BigValueTextMode.Name, label: t('stat.text-mode-options.label-name', 'Name') },
{ value: BigValueTextMode.None, label: t('stat.text-mode-options.label-none', 'None') },
],
},
defaultValue: defaultOptions.textMode,
})
.addRadio({
path: 'wideLayout',
name: t('stat.name-wide-layout', 'Wide layout'),
category: mainCategory,
settings: {
options: [
{ value: true, label: t('stat.wide-layout-options.label-on', 'On') },
{ value: false, label: t('stat.wide-layout-options.label-off', 'Off') },
],
},
defaultValue: defaultOptions.wideLayout,
showIf: (config) => config.textMode === BigValueTextMode.ValueAndName,
});
builder
.addSelect({
path: 'colorMode',
name: t('stat.name-color-modcolor-mode-options.label', 'Color mode'),
defaultValue: BigValueColorMode.Value,
category: mainCategory,
settings: {
options: [
{ value: BigValueColorMode.None, label: t('stat.color-mode-options.label-none', 'None') },
{ value: BigValueColorMode.Value, label: t('stat.color-mode-options.label-value', 'Value') },
{
value: BigValueColorMode.Background,
label: t('stat.color-mode-options.label-background-gradient', 'Background Gradient'),
},
{
value: BigValueColorMode.BackgroundSolid,
label: t('stat.color-mode-options.label-background-solid', 'Background Solid'),
},
],
},
})
.addRadio({
path: 'graphMode',
name: t('stat.name-graph-mode', 'Graph mode'),
description: t('stat.description-graph-mode', 'Stat panel graph / sparkline mode'),
category: mainCategory,
defaultValue: defaultOptions.graphMode,
settings: {
options: [
{ value: BigValueGraphMode.None, label: t('stat.graph-mode.options.label-none', 'None') },
{ value: BigValueGraphMode.Area, label: t('stat.graph-mode.options.label-area', 'Area') },
],
},
})
.addRadio({
path: 'justifyMode',
name: t('stat.name-text-alignment', 'Text alignment'),
defaultValue: defaultOptions.justifyMode,
category: mainCategory,
settings: {
options: [
{ value: BigValueJustifyMode.Auto, label: t('stat.text-alignment-options.label-auto', 'Auto') },
{ value: BigValueJustifyMode.Center, label: t('stat.text-alignment-options.label-center', 'Center') },
],
},
})
.addBooleanSwitch({
path: 'showPercentChange',
name: t('stat.name-show-percent-change', 'Show percent change'),
defaultValue: defaultOptions.showPercentChange,
category: mainCategory,
showIf: (config) => !config.reduceOptions.values,
})
.addSelect({
path: 'percentChangeColorMode',
name: t('stat.percent-change-color-mode', 'Percent change color mode'),
defaultValue: defaultOptions.percentChangeColorMode,
category: mainCategory,
settings: {
options: [
{
value: PercentChangeColorMode.Standard,
label: t('stat.percent-change-color-mode-options.label-standard', 'Standard'),
},
{
value: PercentChangeColorMode.Inverted,
label: t('stat.percent-change-color-mode-options.label-inverted', 'Inverted'),
},
{
value: PercentChangeColorMode.SameAsValue,
label: t('stat.percent-change-color-mode-options.label-same-as-value', 'Same as Value'),
},
],
},
showIf: (config) => config.showPercentChange,
});
})
.setNoPadding()
.setPanelChangeHandler(statPanelChangedHandler)
.setSuggestionsSupplier(new StatSuggestionsSupplier())
.setMigrationHandler(sharedSingleStatMigrationHandler);