diff --git a/src/sql/parts/disasterRecovery/restore/restoreDialog.ts b/src/sql/parts/disasterRecovery/restore/restoreDialog.ts index d42a799c62..5b9dfcaf31 100644 --- a/src/sql/parts/disasterRecovery/restore/restoreDialog.ts +++ b/src/sql/parts/disasterRecovery/restore/restoreDialog.ts @@ -96,10 +96,13 @@ export class RestoreDialog extends Modal { private _fileListTable: Table; private _fileListData: TableDataView; + private _fileListTableContainer: HTMLElement; private _restorePlanTable: Table; private _restorePlanData: TableDataView; private _restorePlanColumn; + private _restorePlanTableContainer: HTMLElement; + private _isRenderedRestorePlanTable: boolean; private _onRestore = new Emitter(); public onRestore: Event = this._onRestore.event; @@ -141,6 +144,8 @@ export class RestoreDialog extends Modal { this.viewModel.onSetRestoreOption((optionParams) => this.updateRestoreOption(optionParams)); this.viewModel.onUpdateBackupSetsToRestore((backupSets) => this.updateBackupSetsToRestore(backupSets)); this.viewModel.onUpdateRestoreDatabaseFiles((files) => this.updateRestoreDatabaseFiles(files)); + + this._isRenderedRestorePlanTable = false; } public render() { @@ -254,6 +259,8 @@ export class RestoreDialog extends Modal { // Backup sets table restorePlanContainer.div({ class: 'dialog-input-section restore-list' }, (labelContainer) => { + this._restorePlanTableContainer = labelContainer.getHTMLElement(); + labelContainer.hide(); this._restorePlanData = new TableDataView(); this._restorePlanTable = new Table(labelContainer.getHTMLElement(), this._restorePlanData, this._restorePlanColumn, { enableColumnReorder: false }); this._restorePlanTable.setSelectionModel(new RowSelectionModel({ selectActiveRow: false })); @@ -287,6 +294,8 @@ export class RestoreDialog extends Modal { this.createLabelElement(sectionContainer, localize('restoreDatabaseFileDetails', 'Restore database file details'), true); // file list table sectionContainer.div({ class: 'dialog-input-section restore-list' }, (fileNameContainer) => { + this._fileListTableContainer = fileNameContainer.getHTMLElement(); + fileNameContainer.hide(); let logicalFileName = localize('logicalFileName', 'Logical file Name'); let fileType = localize('fileType', 'File type'); let originalFileName = localize('originalFileName', 'Original File Name'); @@ -540,9 +549,23 @@ export class RestoreDialog extends Modal { return inputBox; } + private clearRestorePlanDataTable(): void { + if (this._restorePlanData.getLength() > 0) { + this._restorePlanData.clear(); + new Builder(this._restorePlanTableContainer).hide(); + } + } + + private clearFileListTable(): void { + if (this._fileListData.getLength() > 0) { + this._fileListData.clear(); + new Builder(this._fileListTableContainer).hide(); + } + } + private resetRestoreContent(): void { - this._restorePlanData.clear(); - this._fileListData.clear(); + this.clearRestorePlanDataTable(); + this.clearFileListTable(); this._restoreButton.enabled = false; this._scriptButton.enabled = false; } @@ -803,8 +826,8 @@ export class RestoreDialog extends Modal { } private updateRestoreDatabaseFiles(dbFiles: sqlops.RestoreDatabaseFileInfo[]) { - this._fileListData.clear(); - if (dbFiles) { + this.clearFileListTable(); + if (dbFiles && dbFiles.length > 0) { let data = []; for (let i = 0; i < dbFiles.length; i++) { data[i] = { @@ -814,7 +837,7 @@ export class RestoreDialog extends Modal { restoreAs: dbFiles[i].restoreAsFileName }; } - + new Builder(this._fileListTableContainer).show(); this._fileListData.push(data); // Select the first row for the table by default @@ -833,7 +856,7 @@ export class RestoreDialog extends Modal { } this._restorePlanTable.setSelectedRows(selectedRow); } else { - this._restorePlanData.clear(); + this.clearRestorePlanDataTable(); if (backupSetsToRestore && backupSetsToRestore.length > 0) { if (!this._restorePlanColumn) { let firstRow = backupSetsToRestore[0]; @@ -865,9 +888,16 @@ export class RestoreDialog extends Modal { selectedRow.push(i); } } + new Builder(this._restorePlanTableContainer).show(); this._restorePlanData.push(data); this._restorePlanTable.setSelectedRows(selectedRow); this._restorePlanTable.setActiveCell(selectedRow[0], 0); + + if (!this._isRenderedRestorePlanTable) { + this._isRenderedRestorePlanTable = true; + this._restorePlanTable.resizeCanvas(); + this._restorePlanTable.autosizeColumns(); + } } } }