mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
fix dirty state of table designer (#17640)
* dirty state * update original value on save
This commit is contained in:
@@ -10,6 +10,7 @@ import { localize } from 'vs/nls';
|
|||||||
import { designers } from 'sql/workbench/api/common/sqlExtHostTypes';
|
import { designers } from 'sql/workbench/api/common/sqlExtHostTypes';
|
||||||
import { Emitter, Event } from 'vs/base/common/event';
|
import { Emitter, Event } from 'vs/base/common/event';
|
||||||
import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
|
import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
|
||||||
|
import { deepClone, equals } from 'vs/base/common/objects';
|
||||||
|
|
||||||
export class TableDesignerComponentInput implements DesignerComponentInput {
|
export class TableDesignerComponentInput implements DesignerComponentInput {
|
||||||
|
|
||||||
@@ -21,6 +22,7 @@ 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 _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;
|
||||||
@@ -59,10 +61,8 @@ export class TableDesignerComponentInput implements DesignerComponentInput {
|
|||||||
this.updateState(this.valid, this.dirty, 'processEdit');
|
this.updateState(this.valid, this.dirty, 'processEdit');
|
||||||
this._provider.processTableEdit(this._tableInfo, this._viewModel!, edit).then(
|
this._provider.processTableEdit(this._tableInfo, this._viewModel!, edit).then(
|
||||||
result => {
|
result => {
|
||||||
if (result.isValid) {
|
|
||||||
this._viewModel = result.viewModel;
|
this._viewModel = result.viewModel;
|
||||||
}
|
this.updateState(result.isValid, !equals(this._viewModel, this._originalViewModel), undefined);
|
||||||
this.updateState(result.isValid, true, undefined);
|
|
||||||
|
|
||||||
this._onEditProcessed.fire({
|
this._onEditProcessed.fire({
|
||||||
edit: edit,
|
edit: edit,
|
||||||
@@ -87,6 +87,7 @@ export class TableDesignerComponentInput implements DesignerComponentInput {
|
|||||||
try {
|
try {
|
||||||
this.updateState(this.valid, this.dirty, 'save');
|
this.updateState(this.valid, this.dirty, 'save');
|
||||||
await this._provider.saveTable(this._tableInfo, this._viewModel);
|
await this._provider.saveTable(this._tableInfo, this._viewModel);
|
||||||
|
this._originalViewModel = this._viewModel;
|
||||||
this.updateState(true, false);
|
this.updateState(true, false);
|
||||||
notificationHandle.updateMessage(localize('tableDesigner.savedChangeSuccess', "The changes have been successfully saved."));
|
notificationHandle.updateMessage(localize('tableDesigner.savedChangeSuccess', "The changes have been successfully saved."));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -141,6 +142,7 @@ export class TableDesignerComponentInput implements DesignerComponentInput {
|
|||||||
private doInitialization(designerInfo: azdata.designers.TableDesignerInfo): void {
|
private doInitialization(designerInfo: azdata.designers.TableDesignerInfo): void {
|
||||||
this.updateState(true, false);
|
this.updateState(true, false);
|
||||||
this._viewModel = designerInfo.viewModel;
|
this._viewModel = designerInfo.viewModel;
|
||||||
|
this._originalViewModel = deepClone(this._viewModel);
|
||||||
this.setDefaultData();
|
this.setDefaultData();
|
||||||
|
|
||||||
const generalTabComponents: DesignerDataPropertyInfo[] = [
|
const generalTabComponents: DesignerDataPropertyInfo[] = [
|
||||||
|
|||||||
Reference in New Issue
Block a user