diff --git a/extensions/sql-migration/src/constants/strings.ts b/extensions/sql-migration/src/constants/strings.ts index 9369a290c6..212aaccd5b 100644 --- a/extensions/sql-migration/src/constants/strings.ts +++ b/extensions/sql-migration/src/constants/strings.ts @@ -366,7 +366,8 @@ export const FILE_NAME = localize('sql.migration.file.name', "File name"); export const SIZE_COLUMN_HEADER = localize('sql.migration.size.column.header', "Size"); export const NO_PENDING_BACKUPS = localize('sql.migration.no.pending.backups', "No pending backups. Click refresh to check current status."); //Migration status dialog -export const ADD_ACCOUNT = localize('sql.migration.status.add.account', "Add your Azure account to view existing migrations and their status."); +export const ADD_ACCOUNT = localize('sql.migration.status.add.account', "Add account"); +export const ADD_ACCOUNT_MESSAGE = localize('sql.migration.status.add.account.MESSAGE', "Add your Azure account to view existing migrations and their status."); export const STATUS_ALL = localize('sql.migration.status.dropdown.all', "Status: All"); export const STATUS_ONGOING = localize('sql.migration.status.dropdown.ongoing', "Status: Ongoing"); export const STATUS_COMPLETING = localize('sql.migration.status.dropdown.completing', "Status: Completing"); diff --git a/extensions/sql-migration/src/dashboard/sqlServerDashboard.ts b/extensions/sql-migration/src/dashboard/sqlServerDashboard.ts index 65f1a96f30..35cd3d6e93 100644 --- a/extensions/sql-migration/src/dashboard/sqlServerDashboard.ts +++ b/extensions/sql-migration/src/dashboard/sqlServerDashboard.ts @@ -617,14 +617,14 @@ export class DashboardWidget { height: 96, CSSStyles: { 'opacity': '50%', - 'margin': '20% auto 10% auto', + 'margin': '15% auto 10% auto', 'filter': 'drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25))', 'display': 'none' } }).component(); const addAccountText = view.modelBuilder.text().withProps({ - value: loc.ADD_ACCOUNT, + value: loc.ADD_ACCOUNT_MESSAGE, width: 198, height: 34, CSSStyles: { @@ -637,6 +637,37 @@ export class DashboardWidget { } }).component(); + const addAccountButton = view.modelBuilder.button().withProps({ + label: loc.ADD_ACCOUNT, + width: '100px', + enabled: true, + CSSStyles: { + 'margin': '5% 40%', + 'display': 'none' + } + }).component(); + + this._disposables.push(addAccountButton.onDidClick(async (e) => { + await vscode.commands.executeCommand('workbench.actions.modal.linkedAccount'); + addAccountButton.enabled = false; + let accounts = await azdata.accounts.getAllAccounts(); + + if (accounts.length !== 0) { + addAccountImage.updateCssStyles({ + 'display': 'none' + }); + addAccountText.updateCssStyles({ + 'display': 'none' + }); + addAccountButton.updateCssStyles({ + 'display': 'none' + }); + this._migrationStatusCardsContainer.updateCssStyles({ 'visibility': 'visible' }); + this._viewAllMigrationsButton.updateCssStyles({ 'visibility': 'visible' }); + } + await this.refreshMigrations(); + })); + const header = view.modelBuilder.flexContainer().withItems( [ statusContainerTitle, @@ -657,13 +688,11 @@ export class DashboardWidget { addAccountText.updateCssStyles({ 'display': 'block' }); - this._migrationStatusCardsContainer.updateCssStyles({ - 'visibility': 'hidden' - }); - buttonContainer.removeItem(this._viewAllMigrationsButton); - refreshButton.updateCssStyles({ - 'float': 'right' + addAccountButton.updateCssStyles({ + 'display': 'block' }); + this._migrationStatusCardsContainer.updateCssStyles({ 'visibility': 'hidden' }); + this._viewAllMigrationsButton.updateCssStyles({ 'visibility': 'hidden' }); } this._inProgressMigrationButton = this.createStatusCard( @@ -754,6 +783,7 @@ export class DashboardWidget { statusContainer.addItem(addAccountImage, {}); statusContainer.addItem(addAccountText, {}); + statusContainer.addItem(addAccountButton, {}); statusContainer.addItem(this._migrationStatusCardLoadingContainer, { CSSStyles: {