mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
VisualizationSuggestions: More suggestions and refinements (#41480)
* VisualizationSuggestions: More suggestions * more refinements * Minor fixes
This commit is contained in:
@@ -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());
|
||||
|
||||
48
public/app/plugins/panel/status-history/suggestions.ts
Normal file
48
public/app/plugins/panel/status-history/suggestions.ts
Normal 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 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user