diff --git a/src/sql/parts/grid/common/gridContentEvents.ts b/src/sql/parts/grid/common/gridContentEvents.ts index 91609e06b8..9b2f0eea8f 100644 --- a/src/sql/parts/grid/common/gridContentEvents.ts +++ b/src/sql/parts/grid/common/gridContentEvents.ts @@ -17,4 +17,6 @@ export let SelectAllMessages = 'SelectAllMessages'; export let SaveAsCsv = 'SaveAsCSV'; export let SaveAsJSON = 'SaveAsJSON'; export let SaveAsExcel = 'SaveAsExcel'; +export let ViewAsChart = 'ViewAsChart'; export let GoToNextQueryOutputTab = 'GoToNextQueryOutputTab'; +export let GoToNextGrid = 'GoToNextGrid'; diff --git a/src/sql/parts/grid/views/gridActions.ts b/src/sql/parts/grid/views/gridActions.ts index bd773b0a1e..7cc7d319d7 100644 --- a/src/sql/parts/grid/views/gridActions.ts +++ b/src/sql/parts/grid/views/gridActions.ts @@ -25,7 +25,8 @@ export const MESSAGES_COPY_ID = 'grid.messages.copy'; export const TOGGLERESULTS_ID = 'grid.toggleResultPane'; export const TOGGLEMESSAGES_ID = 'grid.toggleMessagePane'; export const GOTONEXTQUERYOUTPUTTAB_ID = 'query.goToNextQueryOutputTab'; - +export const GRID_VIEWASCHART_ID = 'grid.viewAsChart'; +export const GRID_GOTONEXTGRID_ID = 'grid.goToNextGrid'; export class GridActionProvider { diff --git a/src/sql/parts/grid/views/gridCommands.ts b/src/sql/parts/grid/views/gridCommands.ts index f53f3ee53a..7d7f1a4432 100644 --- a/src/sql/parts/grid/views/gridCommands.ts +++ b/src/sql/parts/grid/views/gridCommands.ts @@ -77,4 +77,11 @@ export const selectAllMessages = (accessor: ServicesAccessor) => { runActionOnActiveResultsEditor(accessor, GridContentEvents.SelectAllMessages); }; +export const viewAsChart = (accessor: ServicesAccessor) => { + runActionOnActiveResultsEditor(accessor, GridContentEvents.ViewAsChart); +}; + +export const goToNextGrid = (accessor: ServicesAccessor) => { + runActionOnActiveResultsEditor(accessor, GridContentEvents.GoToNextGrid); +}; diff --git a/src/sql/parts/grid/views/gridParentComponent.ts b/src/sql/parts/grid/views/gridParentComponent.ts index 494602aac2..1b4818d345 100644 --- a/src/sql/parts/grid/views/gridParentComponent.ts +++ b/src/sql/parts/grid/views/gridParentComponent.ts @@ -168,6 +168,12 @@ export abstract class GridParentComponent { case GridContentEvents.GoToNextQueryOutputTab: self.goToNextQueryOutputTab(); break; + case GridContentEvents.ViewAsChart: + self.showChartForGrid(self.activeGrid); + break; + case GridContentEvents.GoToNextGrid: + self.goToNextGrid(); + break; default: error('Unexpected grid content event type "' + type + '" sent'); break; @@ -278,6 +284,22 @@ export abstract class GridParentComponent { protected goToNextQueryOutputTab(): void { } + protected showChartForGrid(index: number) { + } + + protected goToNextGrid() { + if (this.renderedDataSets.length > 0) { + let next = this.activeGrid + 1; + if (next >= this.renderedDataSets.length) { + next = 0; + } + this.navigateToGrid(next); + } + } + + protected navigateToGrid(index: number) { + } + private initShortcutsBase(): void { let shortcuts = { 'ToggleResultPane': () => { diff --git a/src/sql/parts/grid/views/query/query.component.ts b/src/sql/parts/grid/views/query/query.component.ts index 0c4fcffe92..aba98f09da 100644 --- a/src/sql/parts/grid/views/query/query.component.ts +++ b/src/sql/parts/grid/views/query/query.component.ts @@ -589,7 +589,7 @@ export class QueryComponent extends GridParentComponent implements OnInit, OnDes }); } - private showChartForGrid(index: number) { + protected showChartForGrid(index: number) { if (this.renderedDataSets.length > index) { this.showChartRequested.emit(this.renderedDataSets[index]); } diff --git a/src/sql/parts/query/common/query.contribution.ts b/src/sql/parts/query/common/query.contribution.ts index 987e0a9883..59de4386ad 100644 --- a/src/sql/parts/query/common/query.contribution.ts +++ b/src/sql/parts/query/common/query.contribution.ts @@ -211,6 +211,22 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ handler: gridCommands.saveAsExcel }); +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: gridActions.GRID_VIEWASCHART_ID, + weight: KeybindingsRegistry.WEIGHT.workbenchContrib(gridCommandsWeightBonus), + when: ResultsGridFocusCondition, + primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_R, KeyMod.CtrlCmd | KeyCode.KEY_V), + handler: gridCommands.viewAsChart +}); + +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: gridActions.GRID_GOTONEXTGRID_ID, + weight: KeybindingsRegistry.WEIGHT.workbenchContrib(gridCommandsWeightBonus), + when: ResultsGridFocusCondition, + primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_R, KeyMod.CtrlCmd | KeyCode.KEY_N), + handler: gridCommands.goToNextGrid +}); + KeybindingsRegistry.registerCommandAndKeybindingRule({ id: gridActions.TOGGLERESULTS_ID, weight: KeybindingsRegistry.WEIGHT.workbenchContrib(gridCommandsWeightBonus), diff --git a/src/sql/parts/query/views/queryOutput.component.ts b/src/sql/parts/query/views/queryOutput.component.ts index 8ef7997604..71d820b347 100644 --- a/src/sql/parts/query/views/queryOutput.component.ts +++ b/src/sql/parts/query/views/queryOutput.component.ts @@ -102,7 +102,6 @@ export class QueryOutputComponent implements OnDestroy { }))); this._disposables.push(toDisposableSubscription(this.queryComponent.goToNextQueryOutputTabRequested.subscribe(() => { - let activeTab = this._panel.getActiveTab; this._panel.selectOnNextTab(); }))); }