1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import { FieldColorModeId, VisualizationSuggestionsBuilder } from '@grafana/data';
- import { SuggestionName } from 'app/types/suggestions';
- import { StatusPanelOptions, StatusFieldConfig } from './types';
- export class StatusHistorySuggestionsSupplier {
- getSuggestionsForData(builder: VisualizationSuggestionsBuilder) {
- const { dataSummary: ds } = builder;
- if (!ds.hasData) {
- return;
- }
- // This panel needs a time field and a string or number field
- if (!ds.hasTimeField || (!ds.hasStringField && !ds.hasNumberField)) {
- return;
- }
- // If there are many series then they won't fit on y-axis so this panel is not good fit
- if (ds.numberFieldCount >= 30) {
- return;
- }
- // if there a lot of data points for each series then this is not a good match
- if (ds.rowCountMax > 100) {
- return;
- }
- // Probably better ways to filter out this by inspecting the types of string values so view this as temporary
- if (ds.preferredVisualisationType === 'logs') {
- return;
- }
- const list = builder.getListAppender<StatusPanelOptions, StatusFieldConfig>({
- name: '',
- pluginId: 'status-history',
- options: {},
- fieldConfig: {
- defaults: {
- color: {
- mode: FieldColorModeId.ContinuousGrYlRd,
- },
- custom: {},
- },
- overrides: [],
- },
- cardOptions: {
- previewModifier: (s) => {
- s.options!.colWidth = 0.7;
- },
- },
- });
- list.append({ name: SuggestionName.StatusHistory });
- }
- }
|