VisualizationSuggestions: More suggestions and refinements (#41480)

* VisualizationSuggestions: More suggestions

* more refinements

* Minor fixes
This commit is contained in:
Torkel Ödegaard
2021-11-11 14:10:23 +01:00
committed by GitHub
parent c712c31721
commit 6da6ef98be
7 changed files with 100 additions and 4 deletions

View File

@@ -3,6 +3,7 @@ import { StatusHistoryPanel } from './StatusHistoryPanel';
import { StatusPanelOptions, StatusFieldConfig, defaultStatusFieldConfig } from './types';
import { VisibilityMode } from '@grafana/schema';
import { commonOptionsBuilder } from '@grafana/ui';
import { StatusHistorySuggestionsSupplier } from './suggestions';
export const plugin = new PanelPlugin<StatusPanelOptions, StatusFieldConfig>(StatusHistoryPanel)
.useFieldConfig({
@@ -77,4 +78,5 @@ export const plugin = new PanelPlugin<StatusPanelOptions, StatusFieldConfig>(Sta
commonOptionsBuilder.addLegendOptions(builder, false);
commonOptionsBuilder.addTooltipOptions(builder, true);
});
})
.setSuggestionsSupplier(new StatusHistorySuggestionsSupplier());

View File

@@ -0,0 +1,48 @@
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 } = builder;
if (!dataSummary.hasData) {
return;
}
// This panel needs a time field and a string or number field
if (!dataSummary.hasTimeField || (!dataSummary.hasStringField && !dataSummary.hasNumberField)) {
return;
}
// If there are many series then they won't fit on y-axis so this panel is not good fit
if (dataSummary.numberFieldCount >= 30) {
return;
}
// if there a lot of data points for each series then this is not a good match
if (dataSummary.rowCountMax > 100) {
return;
}
const list = builder.getListAppender<StatusPanelOptions, StatusFieldConfig>({
name: '',
pluginId: 'status-history',
options: {},
fieldConfig: {
defaults: {
color: {
mode: FieldColorModeId.ContinuousGrYlRd,
},
custom: {},
},
overrides: [],
},
previewModifier: (s) => {
s.options!.colWidth = 0.7;
},
});
list.append({ name: SuggestionName.StatusHistory });
}
}