diff --git a/src/sql/azdata.proposed.d.ts b/src/sql/azdata.proposed.d.ts index 8258d06147..4902876d45 100644 --- a/src/sql/azdata.proposed.d.ts +++ b/src/sql/azdata.proposed.d.ts @@ -983,4 +983,23 @@ declare module 'azdata' { */ MsGraph = 7 } + + export interface ResultSetSummary { + /** + * The visualization options for the result set. + */ + visualization?: VisualizationOptions; + } + + /** + * Defines all the supported visualization types + */ + export type VisualizationType = 'bar' | 'count' | 'doughnut' | 'horizontalBar' | 'image' | 'line' | 'pie' | 'scatter' | 'table' | 'timeSeries'; + + /** + * Defines the configuration options for visualization + */ + export interface VisualizationOptions { + type: VisualizationType; + } } diff --git a/src/sql/workbench/contrib/charts/browser/chartView.ts b/src/sql/workbench/contrib/charts/browser/chartView.ts index b6a65e76e7..51fe2d9304 100644 --- a/src/sql/workbench/contrib/charts/browser/chartView.ts +++ b/src/sql/workbench/contrib/charts/browser/chartView.ts @@ -8,7 +8,7 @@ import 'vs/css!./media/chartView'; import { IPanelView } from 'sql/base/browser/ui/panel/panel'; import { Insight } from './insight'; import QueryRunner from 'sql/workbench/services/query/common/queryRunner'; -import { ICellValue } from 'sql/workbench/services/query/common/query'; +import { ICellValue, VisualizationOptions } from 'sql/workbench/services/query/common/query'; import { ChartOptions, IChartOption, ControlType } from './chartOptions'; import { Extensions, IInsightRegistry, IInsightData } from 'sql/platform/dashboard/browser/insightRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; @@ -24,7 +24,7 @@ import { isUndefinedOrNull } from 'vs/base/common/types'; import { CreateInsightAction, CopyAction, SaveImageAction, IChartActionContext, ConfigureChartAction } from 'sql/workbench/contrib/charts/browser/actions'; import { Taskbar, ITaskbarContent } from 'sql/base/browser/ui/taskbar/taskbar'; import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox'; -import { IInsightOptions, ChartType } from 'sql/workbench/contrib/charts/common/interfaces'; +import { IInsightOptions, ChartType, InsightType } from 'sql/workbench/contrib/charts/common/interfaces'; import { ChartState } from 'sql/workbench/common/editor/query/chartState'; import * as nls from 'vs/nls'; import { INotificationService } from 'vs/platform/notification/common/notification'; @@ -453,4 +453,16 @@ export class ChartView extends Disposable implements IPanelView { } } } + + /** + * Set the visualization options, this method handles the conversion from VisualizationOptions(defined in azdata typing) to IInsightOptions + * @param options visualization options returned by query + */ + public setVisualizationOptions(options: VisualizationOptions): void { + if (options?.type) { + this.options = { + type: options.type as (ChartType | InsightType) + }; + } + } } diff --git a/src/sql/workbench/contrib/query/browser/queryResultsView.ts b/src/sql/workbench/contrib/query/browser/queryResultsView.ts index c66d22b01e..0a500983b5 100644 --- a/src/sql/workbench/contrib/query/browser/queryResultsView.ts +++ b/src/sql/workbench/contrib/query/browser/queryResultsView.ts @@ -237,6 +237,16 @@ export class QueryResultsView extends Disposable { if (runner.messages.some(v => v.isError)) { this._panelView.showTab(this.messagesTab.identifier); } + // Currently we only need to support visualization options for the first result set. + if (runner.batchSets[0]?.resultSetSummaries[0]?.visualization) { + const batchSet = runner.batchSets[0]; + const resultSet = batchSet.resultSetSummaries[0]; + this.chartData({ + resultId: batchSet.id, + batchId: resultSet.batchId + }); + this.chartTab.view.setVisualizationOptions(resultSet.visualization); + } })); if (this.input?.state.visibleTabs.has(this.chartTab.identifier) && !this._panelView.contains(this.chartTab)) { diff --git a/src/sql/workbench/services/query/common/query.ts b/src/sql/workbench/services/query/common/query.ts index e13f2dbfff..edeab42d45 100644 --- a/src/sql/workbench/services/query/common/query.ts +++ b/src/sql/workbench/services/query/common/query.ts @@ -11,12 +11,19 @@ export interface IColumn { isJson?: boolean; } +export type VisualizationType = 'bar' | 'count' | 'doughnut' | 'horizontalBar' | 'image' | 'line' | 'pie' | 'scatter' | 'table' | 'timeSeries'; + +export interface VisualizationOptions { + type: VisualizationType +} + export interface ResultSetSummary { id: number; batchId: number; rowCount: number; columnInfo: IColumn[]; complete: boolean; + visualization?: VisualizationOptions; } export interface BatchStartSummary {