12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import produce from 'immer';
- import { FieldConfigSource } from '@grafana/data';
- import { GraphDrawStyle, GraphFieldConfig, StackingMode } from '@grafana/schema';
- import { ExploreGraphStyle } from '../../types';
- export type FieldConfig = FieldConfigSource<GraphFieldConfig>;
- export function applyGraphStyle(config: FieldConfig, style: ExploreGraphStyle): FieldConfig {
- return produce(config, (draft) => {
- if (draft.defaults.custom === undefined) {
- draft.defaults.custom = {};
- }
- const { custom } = draft.defaults;
- if (custom.stacking === undefined) {
- custom.stacking = { group: 'A' };
- }
- switch (style) {
- case 'lines':
- custom.drawStyle = GraphDrawStyle.Line;
- custom.stacking.mode = StackingMode.None;
- custom.fillOpacity = 0;
- break;
- case 'bars':
- custom.drawStyle = GraphDrawStyle.Bars;
- custom.stacking.mode = StackingMode.None;
- custom.fillOpacity = 100;
- break;
- case 'points':
- custom.drawStyle = GraphDrawStyle.Points;
- custom.stacking.mode = StackingMode.None;
- custom.fillOpacity = 0;
- break;
- case 'stacked_lines':
- custom.drawStyle = GraphDrawStyle.Line;
- custom.stacking.mode = StackingMode.Normal;
- custom.fillOpacity = 100;
- break;
- case 'stacked_bars':
- custom.drawStyle = GraphDrawStyle.Bars;
- custom.stacking.mode = StackingMode.Normal;
- custom.fillOpacity = 100;
- break;
- default: {
- // should never happen
- // NOTE: casting to `never` will cause typescript
- // to verify that the switch statement checks every possible
- // enum-value
- const invalidValue: never = style;
- throw new Error(`Invalid graph-style: ${invalidValue}`);
- }
- }
- });
- }
|