Add new help articles to sql migration dashboard (#18240)

* add new articles to help section

* Update extensions/sql-migration/src/dashboard/sqlServerDashboard.ts

* fix typo, remove link

* remove locale in links

Co-authored-by: Mohamed Kabiruddin <39162740+mokabiru@users.noreply.github.com>
This commit is contained in:
Rachel Kim
2022-02-10 18:30:19 -08:00
committed by GitHub
parent 7078b9ea33
commit a2e34c4609
3 changed files with 40 additions and 37 deletions

View File

@@ -33,7 +33,7 @@ The following migration modes are supported for the corresponding Azure SQL targ
## Need assistance or have questions/feedback ## Need assistance or have questions/feedback
Refer to [Get help from Microsoft support](https://docs.microsoft.com/en-us/sql/azure-data-studio/extensions/azure-sql-migration-extension#get-help-from-microsoft-support). Refer to [Get help from Microsoft support](https://docs.microsoft.com/sql/azure-data-studio/extensions/azure-sql-migration-extension#get-help-from-microsoft-support).
## Code of Conduct ## Code of Conduct

View File

@@ -309,8 +309,6 @@ export const DASHBOARD_DESCRIPTION = localize('sql.migration.dashboard.descripti
export const DASHBOARD_MIGRATE_TASK_BUTTON_TITLE = localize('sql.migration.dashboard.migrate.task.button', "Migrate to Azure SQL"); export const DASHBOARD_MIGRATE_TASK_BUTTON_TITLE = localize('sql.migration.dashboard.migrate.task.button', "Migrate to Azure SQL");
export const DASHBOARD_MIGRATE_TASK_BUTTON_DESCRIPTION = localize('sql.migration.dashboard.migrate.task.button.description', "Migrate a SQL Server instance to Azure SQL."); export const DASHBOARD_MIGRATE_TASK_BUTTON_DESCRIPTION = localize('sql.migration.dashboard.migrate.task.button.description', "Migrate a SQL Server instance to Azure SQL.");
export const DATABASE_MIGRATION_STATUS = localize('sql.migration.database.migration.status', "Database migration status"); export const DATABASE_MIGRATION_STATUS = localize('sql.migration.database.migration.status', "Database migration status");
export const HELP_LINK1_TITLE = localize('sql.migration.dashboard.link1.title', "Assessment rules for Azure SQL Managed Instance");
export const HELP_LINK1_DESCRIPTION = localize('sql.migration.dashboard.link1.description', "Assessment rules used to determine the feasibility of migrating your SQL Server instance to Azure SQL Managed Instance.");
export const HELP_TITLE = localize('sql.migration.dashboard.help.title', "Help articles and video links"); export const HELP_TITLE = localize('sql.migration.dashboard.help.title', "Help articles and video links");
export const PRE_REQ_TITLE = localize('sql.migration.pre.req.title', "Things you need before starting a migration:"); export const PRE_REQ_TITLE = localize('sql.migration.pre.req.title', "Things you need before starting a migration:");
export const PRE_REQ_1 = localize('sql.migration.pre.req.1', "Azure account details"); export const PRE_REQ_1 = localize('sql.migration.pre.req.1', "Azure account details");

View File

@@ -13,6 +13,8 @@ import { MigrationStatusDialog } from '../dialog/migrationStatus/migrationStatus
import { AdsMigrationStatus } from '../dialog/migrationStatus/migrationStatusDialogModel'; import { AdsMigrationStatus } from '../dialog/migrationStatus/migrationStatusDialogModel';
import { filterMigrations, SupportedAutoRefreshIntervals } from '../api/utils'; import { filterMigrations, SupportedAutoRefreshIntervals } from '../api/utils';
import * as styles from '../constants/styles'; import * as styles from '../constants/styles';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
interface IActionMetadata { interface IActionMetadata {
title?: string, title?: string,
@@ -448,7 +450,7 @@ export class DashboardWidget {
const statusContainer = view.modelBuilder.flexContainer().withLayout({ const statusContainer = view.modelBuilder.flexContainer().withLayout({
flexFlow: 'column', flexFlow: 'column',
width: '400px', width: '400px',
height: '350px', height: '360px',
justifyContent: 'flex-start', justifyContent: 'flex-start',
}).withProps({ }).withProps({
CSSStyles: { CSSStyles: {
@@ -688,12 +690,13 @@ export class DashboardWidget {
const linksContainer = view.modelBuilder.flexContainer().withLayout({ const linksContainer = view.modelBuilder.flexContainer().withLayout({
flexFlow: 'column', flexFlow: 'column',
width: '400px', width: '400px',
height: '350px', height: '360px',
justifyContent: 'flex-start', justifyContent: 'flex-start',
}).withProps({ }).withProps({
CSSStyles: { CSSStyles: {
'border': '1px solid rgba(0, 0, 0, 0.1)', 'border': '1px solid rgba(0, 0, 0, 0.1)',
'padding': '16px' 'padding': '16px',
'overflow': 'scroll',
} }
}).component(); }).component();
const titleComponent = view.modelBuilder.text().withProps({ const titleComponent = view.modelBuilder.text().withProps({
@@ -709,24 +712,38 @@ export class DashboardWidget {
} }
}); });
const links = [{ const links = [
title: loc.HELP_LINK1_TITLE, {
description: loc.HELP_LINK1_DESCRIPTION, title: localize('sql.migration.dashboard.help.link.migrateUsingADS', 'Migrate databases using Azure Data Studio'),
link: 'https://docs.microsoft.com/azure/azure-sql/migration-guides/managed-instance/sql-server-to-sql-managed-instance-assessment-rules' description: localize('sql.migration.dashboard.help.description.migrateUsingADS', 'The Azure SQL Migration extension for Azure Data Studio provides capabilities to assess, get right-sized Azure recommendations and migrate SQL Server databases to Azure.'),
}]; link: 'https://docs.microsoft.com/azure/dms/migration-using-azure-data-studio'
},
{
title: localize('sql.migration.dashboard.help.link.mi', 'Tutorial: Migrate to Azure SQL Managed Instance (online)'),
description: localize('sql.migration.dashboard.help.description.mi', 'A step-by-step tutorial to migrate databases from a SQL Server instance (on-premises or Azure Virtual Machines) to Azure SQL Managed Instance with minimal downtime.'),
link: 'https://docs.microsoft.com/azure/dms/tutorial-sql-server-managed-instance-online-ads'
},
{
title: localize('sql.migration.dashboard.help.link.vm', 'Tutorial: Migrate to SQL Server on Azure Virtual Machines (online)'),
description: localize('sql.migration.dashboard.help.description.vm', 'A step-by-step tutorial to migrate databases from a SQL Server instance (on-premises) to SQL Server on Azure Virtual Machines with minimal downtime.'),
link: 'https://docs.microsoft.com/azure/dms/tutorial-sql-server-to-virtual-machine-online-ads'
},
{
title: localize('sql.migration.dashboard.help.link.dmsGuide', 'Azure Database Migration Guides'),
description: localize('sql.migration.dashboard.help.description.dmsGuide', 'A hub of migration articles that provides step-by-step guidance for migrating and modernizing your data assets in Azure.'),
link: 'https://docs.microsoft.com/data-migration/'
},
];
linksContainer.addItems(links.map(l => this.createLink(view, l)), { linksContainer.addItems(links.map(l => this.createLink(view, l)), {});
CSSStyles: {
'margin-bottom': '8px'
}
});
const videosContainer = this.createVideoLinkContainers(view, []); const videoLinks: IActionMetadata[] = [];
linksContainer.addItem(videosContainer, { const videosContainer = view.modelBuilder.flexContainer().withLayout({
CSSStyles: { flexFlow: 'row',
'margin-bottom': '8px' width: maxWidth,
} }).component();
}); videosContainer.addItems(videoLinks.map(l => this.createVideoLink(view, l)), {});
linksContainer.addItem(videosContainer);
return linksContainer; return linksContainer;
} }
@@ -737,13 +754,14 @@ export class DashboardWidget {
CSSStyles: { CSSStyles: {
'flex-direction': 'column', 'flex-direction': 'column',
'width': `${maxWidth}px`, 'width': `${maxWidth}px`,
'justify-content': 'flex-start' 'justify-content': 'flex-start',
'margin-bottom': '12px'
} }
}).component(); }).component();
const linkContainer = view.modelBuilder.flexContainer().withProps({ const linkContainer = view.modelBuilder.flexContainer().withProps({
CSSStyles: { CSSStyles: {
'flex-direction': 'row', 'flex-direction': 'row',
'width': `${maxWidth + 10}px`, 'width': `${maxWidth}px`,
'justify-content': 'flex-start', 'justify-content': 'flex-start',
'margin-bottom': '4px' 'margin-bottom': '4px'
} }
@@ -769,19 +787,6 @@ export class DashboardWidget {
return labelsContainer; return labelsContainer;
} }
private createVideoLinkContainers(view: azdata.ModelView, links: IActionMetadata[]): azdata.Component {
const maxWidth = 400;
const videosContainer = view.modelBuilder.flexContainer().withLayout({
flexFlow: 'row',
width: maxWidth,
}).component();
links.forEach(link => {
const videoContainer = this.createVideoLink(view, link);
videosContainer.addItem(videoContainer);
});
return videosContainer;
}
private createVideoLink(view: azdata.ModelView, linkMetaData: IActionMetadata): azdata.Component { private createVideoLink(view: azdata.ModelView, linkMetaData: IActionMetadata): azdata.Component {
const maxWidth = 150; const maxWidth = 150;
const videosContainer = view.modelBuilder.flexContainer().withLayout({ const videosContainer = view.modelBuilder.flexContainer().withLayout({