From 65d85ca9bf056d816329ad445352fb60b7cd7665 Mon Sep 17 00:00:00 2001 From: Sarah Zinger Date: Tue, 20 Jun 2023 08:40:28 -0400 Subject: [PATCH] Suggestions: Prioritize preferred visualizations for suggestion list (#67326) Prioritize preferred visualizations for suggestion list. --- .../panel/state/getAllSuggestions.test.ts | 23 +++++++++++++++++++ .../features/panel/state/getAllSuggestions.ts | 8 +++++++ 2 files changed, 31 insertions(+) diff --git a/public/app/features/panel/state/getAllSuggestions.test.ts b/public/app/features/panel/state/getAllSuggestions.test.ts index b8ae2419131..590575b01b4 100644 --- a/public/app/features/panel/state/getAllSuggestions.test.ts +++ b/public/app/features/panel/state/getAllSuggestions.test.ts @@ -338,6 +338,29 @@ scenario('Given default loki logs data', (ctx) => { }); }); +scenario('Given a preferredVisualisationType', (ctx) => { + ctx.setData([ + toDataFrame({ + meta: { + preferredVisualisationType: 'table', + }, + fields: [ + { + name: 'Trace Id', + type: FieldType.number, + values: [1, 2, 3], + config: {}, + }, + { name: 'Trace Group', type: FieldType.string, values: ['traceGroup1', 'traceGroup2', 'traceGroup3'] }, + ], + }), + ]); + + it('should return the preferred visualization first', () => { + expect(ctx.names()[0]).toEqual(SuggestionName.Table); + }); +}); + function repeatFrame(count: number, frame: DataFrame): DataFrame[] { const frames: DataFrame[] = []; for (let i = 0; i < count; i++) { diff --git a/public/app/features/panel/state/getAllSuggestions.ts b/public/app/features/panel/state/getAllSuggestions.ts index aaecfdf7d0c..2ae840213ab 100644 --- a/public/app/features/panel/state/getAllSuggestions.ts +++ b/public/app/features/panel/state/getAllSuggestions.ts @@ -54,6 +54,14 @@ export async function getAllSuggestions(data?: PanelData, panel?: PanelModel): P } return list.sort((a, b) => { + if (builder.dataSummary.preferredVisualisationType) { + if (a.pluginId === builder.dataSummary.preferredVisualisationType) { + return -1; + } + if (b.pluginId === builder.dataSummary.preferredVisualisationType) { + return 1; + } + } return (b.score ?? VisualizationSuggestionScore.OK) - (a.score ?? VisualizationSuggestionScore.OK); }); }