From e679d70a4bb205c64ffb38370b5c9f879f803fef Mon Sep 17 00:00:00 2001 From: Vladimir Chernov Date: Thu, 29 Oct 2020 01:57:08 +0300 Subject: [PATCH] append data functionality (#13120) append data functionality --- extensions/dacpac/src/test/testContext.ts | 1 + .../sql-assessment/src/assessmentResultGrid.ts | 5 +---- src/sql/azdata.proposed.d.ts | 8 ++++++++ src/sql/platform/dashboard/browser/interfaces.ts | 3 ++- src/sql/workbench/api/common/extHostModelView.ts | 4 +++- src/sql/workbench/api/common/sqlExtHostTypes.ts | 3 ++- .../browser/modelComponents/table.component.ts | 14 +++++++++++++- 7 files changed, 30 insertions(+), 8 deletions(-) diff --git a/extensions/dacpac/src/test/testContext.ts b/extensions/dacpac/src/test/testContext.ts index cb69336e23..66505af22a 100644 --- a/extensions/dacpac/src/test/testContext.ts +++ b/extensions/dacpac/src/test/testContext.ts @@ -195,6 +195,7 @@ export function createViewContext(): ViewTestContext { data: [] as any[][], columns: [] as string[], onRowSelected: onClick.event, + appendData: (data: any[][]) => undefined, }); let loadingComponent: () => azdata.LoadingComponent = () => Object.assign({}, componentBase, { diff --git a/extensions/sql-assessment/src/assessmentResultGrid.ts b/extensions/sql-assessment/src/assessmentResultGrid.ts index 3aceb510b8..daa5eb9426 100644 --- a/extensions/sql-assessment/src/assessmentResultGrid.ts +++ b/extensions/sql-assessment/src/assessmentResultGrid.ts @@ -121,10 +121,7 @@ export class AssessmentResultGrid implements vscode.Disposable { if (this.dataItems) { this.dataItems.push(...asmtResult.items); } - - await this.table.updateProperties({ - 'data': this.dataItems.map(item => this.convertToDataView(item)) - }); + this.table.appendData(asmtResult.items.map(item => this.convertToDataView(item))); } private async showDetails(rowNumber: number) { diff --git a/src/sql/azdata.proposed.d.ts b/src/sql/azdata.proposed.d.ts index 561fcae1c9..dbfaa8790b 100644 --- a/src/sql/azdata.proposed.d.ts +++ b/src/sql/azdata.proposed.d.ts @@ -803,4 +803,12 @@ declare module 'azdata' { */ headerFilter?: boolean, } + + export interface TableComponent { + + /** + * Append data to an exsiting table data. + */ + appendData(data: any[][]); + } } diff --git a/src/sql/platform/dashboard/browser/interfaces.ts b/src/sql/platform/dashboard/browser/interfaces.ts index 9b60dd8953..c2a91d2385 100644 --- a/src/sql/platform/dashboard/browser/interfaces.ts +++ b/src/sql/platform/dashboard/browser/interfaces.ts @@ -27,7 +27,8 @@ export enum ComponentEventType { * Actions that can be handled by ModelView components */ export enum ModelViewAction { - SelectTab = 'selectTab' + SelectTab = 'selectTab', + AppendData = 'appendData' } /** diff --git a/src/sql/workbench/api/common/extHostModelView.ts b/src/sql/workbench/api/common/extHostModelView.ts index c62b17d3ba..d7a141b497 100644 --- a/src/sql/workbench/api/common/extHostModelView.ts +++ b/src/sql/workbench/api/common/extHostModelView.ts @@ -1427,7 +1427,9 @@ class TableComponentWrapper extends ComponentWrapper implements azdata.TableComp return emitter && emitter.event; } - + public appendData(v: any[][]): void { + this.doAction(ModelViewAction.AppendData, v); + } } class DropDownWrapper extends ComponentWrapper implements azdata.DropDownComponent { diff --git a/src/sql/workbench/api/common/sqlExtHostTypes.ts b/src/sql/workbench/api/common/sqlExtHostTypes.ts index 2b77d8dc76..244e1554ec 100644 --- a/src/sql/workbench/api/common/sqlExtHostTypes.ts +++ b/src/sql/workbench/api/common/sqlExtHostTypes.ts @@ -181,7 +181,8 @@ export enum ModelComponentTypes { } export enum ModelViewAction { - SelectTab = 'selectTab' + SelectTab = 'selectTab', + AppendData = 'appendData' } export enum ColumnSizingMode { diff --git a/src/sql/workbench/browser/modelComponents/table.component.ts b/src/sql/workbench/browser/modelComponents/table.component.ts index 318fa8c3fe..f112e32244 100644 --- a/src/sql/workbench/browser/modelComponents/table.component.ts +++ b/src/sql/workbench/browser/modelComponents/table.component.ts @@ -25,7 +25,7 @@ import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { slickGridDataItemColumnValueWithNoData, textFormatter } from 'sql/base/browser/ui/table/formatters'; import { isUndefinedOrNull } from 'vs/base/common/types'; -import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; +import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType, ModelViewAction } from 'sql/platform/dashboard/browser/interfaces'; import { convertSizeToNumber } from 'sql/base/browser/dom'; import { ButtonColumn, ButtonClickEventArgs } from 'sql/base/browser/ui/table/plugins/buttonColumn.plugin'; import { createIconCssClass } from 'sql/workbench/browser/modelComponents/iconUtils'; @@ -489,4 +489,16 @@ export default class TableComponent extends ComponentBase((props) => props.headerFilter, false); } + + public doAction(action: string, ...args: any[]): void { + switch (action) { + case ModelViewAction.AppendData: + this.appendData(args[0]); + } + } + private appendData(data: any[][]) { + this._tableData.push(TableComponent.transformData(data, this.columns)); + this.data = this._tableData.getItems().map(dataObject => Object.values(dataObject)); + this.layoutTable(); + } }