1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import {
- PanelData,
- VisualizationSuggestion,
- VisualizationSuggestionsBuilder,
- PanelModel,
- VisualizationSuggestionScore,
- } from '@grafana/data';
- import { config } from '@grafana/runtime';
- import { importPanelPlugin } from 'app/features/plugins/importPanelPlugin';
- export const panelsToCheckFirst = [
- 'timeseries',
- 'barchart',
- 'gauge',
- 'stat',
- 'piechart',
- 'bargauge',
- 'table',
- 'state-timeline',
- 'status-history',
- 'logs',
- 'candlestick',
- ];
- export async function getAllSuggestions(data?: PanelData, panel?: PanelModel): Promise<VisualizationSuggestion[]> {
- const builder = new VisualizationSuggestionsBuilder(data, panel);
- for (const pluginId of panelsToCheckFirst) {
- const plugin = await importPanelPlugin(pluginId);
- const supplier = plugin.getSuggestionsSupplier();
- if (supplier) {
- supplier.getSuggestionsForData(builder);
- }
- }
- const list = builder.getList();
- if (builder.dataSummary.fieldCount === 0) {
- for (const plugin of Object.values(config.panels)) {
- if (!plugin.skipDataQuery || plugin.hideFromList) {
- continue;
- }
- list.push({
- name: plugin.name,
- pluginId: plugin.id,
- description: plugin.info.description,
- cardOptions: {
- imgSrc: plugin.info.logos.small,
- },
- });
- }
- }
- return list.sort((a, b) => {
- return (b.score ?? VisualizationSuggestionScore.OK) - (a.score ?? VisualizationSuggestionScore.OK);
- });
- }
|