grafana/public/app/plugins/panel/stat/module.tsx
Jev Forsberg 93bcc3b26c
Stat Panel: Add an option for a non-gradient/solid background (#65052)
* baldm0mma/statNoGrad/ add no gradient option

* baldm0mma/statsNoGrad/ update migration and tests

* baldm0mma/statsNoGrad/ update suggestions module

* baldm0mma/statsNoGrad/ update bigValueLayout test

* baldm0mma/statNoGrad/ remove unused comment

* baldm0mma/statNoGrad/ revert to background

* baldm0mma/statNoGrad/ update enum values
2023-03-20 11:13:27 -06:00

82 lines
2.9 KiB
TypeScript

import { PanelPlugin } from '@grafana/data';
import { BigValueColorMode, BigValueGraphMode, BigValueJustifyMode, BigValueTextMode } from '@grafana/schema';
import { commonOptionsBuilder, sharedSingleStatMigrationHandler } from '@grafana/ui';
import { statPanelChangedHandler } from './StatMigrations';
import { StatPanel } from './StatPanel';
import { addStandardDataReduceOptions, addOrientationOption } from './common';
import { defaultPanelOptions, PanelOptions } from './panelcfg.gen';
import { StatSuggestionsSupplier } from './suggestions';
export const plugin = new PanelPlugin<PanelOptions>(StatPanel)
.useFieldConfig()
.setPanelOptions((builder) => {
const mainCategory = ['Stat styles'];
addStandardDataReduceOptions(builder);
addOrientationOption(builder, mainCategory);
commonOptionsBuilder.addTextSizeOptions(builder);
builder.addSelect({
path: 'textMode',
name: 'Text mode',
description: 'Control if name and value is displayed or just name',
category: mainCategory,
settings: {
options: [
{ value: BigValueTextMode.Auto, label: 'Auto' },
{ value: BigValueTextMode.Value, label: 'Value' },
{ value: BigValueTextMode.ValueAndName, label: 'Value and name' },
{ value: BigValueTextMode.Name, label: 'Name' },
{ value: BigValueTextMode.None, label: 'None' },
],
},
defaultValue: defaultPanelOptions.textMode,
});
builder
.addSelect({
path: 'colorMode',
name: 'Color mode',
defaultValue: BigValueColorMode.Value,
category: mainCategory,
settings: {
options: [
{ value: BigValueColorMode.None, label: 'None' },
{ value: BigValueColorMode.Value, label: 'Value' },
{ value: BigValueColorMode.Background, label: 'Background Gradient' },
{ value: BigValueColorMode.BackgroundSolid, label: 'Background Solid' },
],
},
})
.addRadio({
path: 'graphMode',
name: 'Graph mode',
description: 'Stat panel graph / sparkline mode',
category: mainCategory,
defaultValue: defaultPanelOptions.graphMode,
settings: {
options: [
{ value: BigValueGraphMode.None, label: 'None' },
{ value: BigValueGraphMode.Area, label: 'Area' },
],
},
})
.addRadio({
path: 'justifyMode',
name: 'Text alignment',
defaultValue: defaultPanelOptions.justifyMode,
category: mainCategory,
settings: {
options: [
{ value: BigValueJustifyMode.Auto, label: 'Auto' },
{ value: BigValueJustifyMode.Center, label: 'Center' },
],
},
});
})
.setNoPadding()
.setPanelChangeHandler(statPanelChangedHandler)
.setSuggestionsSupplier(new StatSuggestionsSupplier())
.setMigrationHandler(sharedSingleStatMigrationHandler);