refresh the table designer after publishing (#18220)

This commit is contained in:
Alan Ren
2022-02-04 09:32:07 -08:00
committed by GitHub
parent 83c6eee8e2
commit 4c49e1cd41
6 changed files with 24 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
{ {
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}", "downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
"version": "3.0.0-release.193", "version": "3.0.0-release.195",
"downloadFileNames": { "downloadFileNames": {
"Windows_86": "win-x86-net6.0.zip", "Windows_86": "win-x86-net6.0.zip",
"Windows_64": "win-x64-net6.0.zip", "Windows_64": "win-x64-net6.0.zip",

View File

@@ -40,7 +40,7 @@ export function registerTableDesignerCommands(appContext: AppContext) {
isNewTable: false, isNewTable: false,
name: name, name: name,
schema: schema, schema: schema,
id: `${connectionString}|${database}|${schema}|${name}`, id: `${sqlProviderName}|${server}|${database}|${schema}|${name}`,
connectionString: connectionString connectionString: connectionString
}, telemetryInfo); }, telemetryInfo);
})); }));

View File

@@ -1436,6 +1436,10 @@ declare module 'azdata' {
* The new table information after the changes are published. * The new table information after the changes are published.
*/ */
newTableInfo: TableInfo; newTableInfo: TableInfo;
/**
* The new view model.
*/
viewModel: DesignerViewModel;
} }
} }

View File

@@ -262,6 +262,9 @@ export class Designer extends Disposable implements IThemable {
this._inputDisposable.add(this._input.onStateChange((args) => { this._inputDisposable.add(this._input.onStateChange((args) => {
this.handleInputStateChangedEvent(args); this.handleInputStateChangedEvent(args);
})); }));
this._inputDisposable.add(this._input.onRefreshRequested(() => {
this.refresh();
}));
if (this._input.view === undefined) { if (this._input.view === undefined) {
this._input.initialize(); this._input.initialize();
@@ -369,6 +372,11 @@ export class Designer extends Disposable implements IThemable {
} }
} }
private refresh() {
this.updateComponentValues();
this.updatePropertiesPane(this._propertiesPane.objectPath);
}
private layoutTabbedPanel() { private layoutTabbedPanel() {
this._tabbedPanel.layout(new DOM.Dimension(this._tabbedPanelContainer.clientWidth, this._tabbedPanelContainer.clientHeight)); this._tabbedPanel.layout(new DOM.Dimension(this._tabbedPanelContainer.clientWidth, this._tabbedPanelContainer.clientHeight));
} }

View File

@@ -23,6 +23,11 @@ export interface DesignerComponentInput {
*/ */
readonly onEditProcessed: Event<DesignerEditProcessedEventArgs>; readonly onEditProcessed: Event<DesignerEditProcessedEventArgs>;
/**
* The event that is triggerd when a refresh of the UI is requested.
*/
readonly onRefreshRequested: Event<void>;
/** /**
* Gets the object type display name. * Gets the object type display name.
*/ */

View File

@@ -27,11 +27,13 @@ export class TableDesignerComponentInput implements DesignerComponentInput {
private _onStateChange = new Emitter<DesignerStateChangedEventArgs>(); private _onStateChange = new Emitter<DesignerStateChangedEventArgs>();
private _onInitialized = new Emitter<void>(); private _onInitialized = new Emitter<void>();
private _onEditProcessed = new Emitter<DesignerEditProcessedEventArgs>(); private _onEditProcessed = new Emitter<DesignerEditProcessedEventArgs>();
private _onRefreshRequested = new Emitter<void>();
private _originalViewModel: DesignerViewModel; private _originalViewModel: DesignerViewModel;
public readonly onInitialized: Event<void> = this._onInitialized.event; public readonly onInitialized: Event<void> = this._onInitialized.event;
public readonly onEditProcessed: Event<DesignerEditProcessedEventArgs> = this._onEditProcessed.event; public readonly onEditProcessed: Event<DesignerEditProcessedEventArgs> = this._onEditProcessed.event;
public readonly onStateChange: Event<DesignerStateChangedEventArgs> = this._onStateChange.event; public readonly onStateChange: Event<DesignerStateChangedEventArgs> = this._onStateChange.event;
public readonly onRefreshRequested: Event<void> = this._onRefreshRequested.event;
private readonly designerEditTypeDisplayValue: { [key: number]: string } = { private readonly designerEditTypeDisplayValue: { [key: number]: string } = {
0: 'Add', 1: 'Remove', 2: 'Update' 0: 'Add', 1: 'Remove', 2: 'Update'
@@ -140,10 +142,12 @@ export class TableDesignerComponentInput implements DesignerComponentInput {
try { try {
this.updateState(this.valid, this.dirty, 'publish'); this.updateState(this.valid, this.dirty, 'publish');
const result = await this._provider.publishChanges(this.tableInfo); const result = await this._provider.publishChanges(this.tableInfo);
this._originalViewModel = this._viewModel; this._viewModel = result.viewModel;
this._originalViewModel = result.viewModel;
saveNotificationHandle.updateMessage(localize('tableDesigner.publishChangeSuccess', "The changes have been successfully published.")); saveNotificationHandle.updateMessage(localize('tableDesigner.publishChangeSuccess', "The changes have been successfully published."));
this.tableInfo = result.newTableInfo; this.tableInfo = result.newTableInfo;
this.updateState(true, false); this.updateState(true, false);
this._onRefreshRequested.fire();
publishEvent.withAdditionalMeasurements({ publishEvent.withAdditionalMeasurements({
'elapsedTimeMs': new Date().getTime() - startTime 'elapsedTimeMs': new Date().getTime() - startTime
}).send(); }).send();