sql-migration: update migration status page latest design (#16099)

* add migrations status context menu and commands

* add migration status images

* remove test code, add account validation

* fix command registration to occure once

* fix typo
This commit is contained in:
brian-harris
2021-07-16 12:20:19 -07:00
committed by GitHub
parent 3f047ae15a
commit 78a144b5ca
6 changed files with 684 additions and 380 deletions

View File

@@ -77,6 +77,9 @@ export const AZURE_TENANT = localize('sql.migration.azure.tenant', "Azure AD ten
export function ACCOUNT_STALE_ERROR(account: AzureAccount) {
return localize('azure.accounts.accountStaleError', "The access token for selected account '{0}' is no longer valid. Please click the 'Link Account' button and refresh the account or select a different account.", `${account.displayInfo.displayName} (${account.displayInfo.userId})`);
}
export function ACCOUNT_ACCESS_ERROR(account: AzureAccount, error: Error) {
return localize('azure.accounts.accountAccessError', "An error occurred while accessing the selected account '{0}'. Please click the 'Link Account' button and refresh the account or select a different account. Error '{1}'", `${account.displayInfo.displayName} (${account.displayInfo.userId})`, error.message);
}
// database backup page
export const DATABASE_BACKUP_PAGE_TITLE = localize('sql.migration.database.page.title', "Database Backup");
@@ -330,7 +333,7 @@ export const SOURCE_VERSION = localize('sql.migration.source.version', "Source v
export const TARGET_DATABASE_NAME = localize('sql.migration.target.database.name', "Target database name");
export const TARGET_SERVER = localize('sql.migration.target.server', "Target server");
export const TARGET_VERSION = localize('sql.migration.target.version', "Target version");
export const MIGRATION_STATUS = localize('sql.migration.migration.status', "Migration status");
export const MIGRATION_STATUS = localize('sql.migration.migration.status', "Migration Status");
export const MIGRATION_STATUS_FILTER = localize('sql.migration.migration.status.filter', "Migration status filter");
export const FULL_BACKUP_FILES = localize('sql.migration.full.backup.files', "Full backup files");
export const LAST_APPLIED_LSN = localize('sql.migration.last.applied.lsn', "Last applied LSN");
@@ -372,6 +375,9 @@ export const CONFIRM_CUTOVER_CHECKBOX = localize('sql.migration.confirm.checkbox
export function CUTOVER_IN_PROGRESS(dbName: string): string {
return localize('sql.migration.cutover.in.progress', "Cutover in progress for database '{0}'", dbName);
}
export const MIGRATION_CANNOT_CANCEL = localize('sql.migration.cannot.cancel', 'Migration is not in progress and cannot be cancelled.');
export const MIGRATION_CANNOT_CUTOVER = localize('sql.migration.cannot.cutover', 'Migration is not in progress and cannot be cutover.');
//Migration status dialog
export const SEARCH_FOR_MIGRATIONS = localize('sql.migration.search.for.migration', "Search for migrations");
export const ONLINE = localize('sql.migration.online', "Online");
@@ -386,24 +392,47 @@ export const TARGET_AZURE_SQL_INSTANCE_NAME = localize('sql.migration.target.azu
export const MIGRATION_MODE = localize('sql.migration.cutover.type', "Migration Mode");
export const START_TIME = localize('sql.migration.start.time', "Start Time");
export const FINISH_TIME = localize('sql.migration.finish.time', "Finish Time");
export function STATUS_WARNING_COUNT(status: string, count: number): string {
if (status === 'InProgress' || status === 'Creating' || status === 'Completing' || status === 'Creating') {
export function STATUS_VALUE(status: string, count: number): string {
if (count > 0) {
return localize('sql.migration.status.error.count.some', "{0} (", StatusLookup[status]);
}
return localize('sql.migration.status.error.count.none', "{0}", StatusLookup[status]);
}
export interface LookupTable<T> {
[key: string]: T;
}
export const StatusLookup: LookupTable<string | undefined> = {
['InProgress']: localize('sql.migration.status.inprogress', 'In progress'),
['Succeeded']: localize('sql.migration.status.succeeded', 'Succeeded'),
['Creating']: localize('sql.migration.status.creating', 'Creating'),
['Completing']: localize('sql.migration.status.completing', 'Completing'),
['Cancelling']: localize('sql.migration.status.cancelling', 'Cancelling'),
['Failed']: localize('sql.migration.status.failed', 'Failed'),
default: undefined,
};
export function STATUS_WARNING_COUNT(status: string, count: number): string | undefined {
if (status === 'InProgress' || status === 'Creating' || status === 'Completing') {
switch (count) {
case 0:
return localize('sql.migration.status.warning.count.none', "{0}", status);
return undefined;
case 1:
return localize('sql.migration.status.warning.count.single', "{0} ({1} Warning)", status, count);
return localize('sql.migration.status.warning.count.single', "{0} Warning)", count);
default:
return localize('sql.migration.status.warning.count.multiple', "{0} ({1} Warnings)", status, count);
return localize('sql.migration.status.warning.count.multiple', "{0} Warnings)", count);
}
} else {
switch (count) {
case 0:
return localize('sql.migration.status.error.count.none', "{0}", status);
return undefined;
case 1:
return localize('sql.migration.status.error.count.single', "{0} ({1} Error)", status, count);
return localize('sql.migration.status.error.count.single', "{0} Error)", count);
default:
return localize('sql.migration.status.error.count.multiple', "{0} ({1} Errors)", status, count);
return localize('sql.migration.status.error.count.multiple', "{0} Errors)", count);
}
}
}
@@ -474,6 +503,8 @@ export const AUTHENTICATION_TYPE = localize('sql.migration.authentication.type',
export const SQL_LOGIN = localize('sql.migration.sql.login', "SQL Login");
export const WINDOWS_AUTHENTICATION = localize('sql.migration.windows.auth', "Windows Authentication");
export const REFRESH_BUTTON_LABEL = localize('sql.migration.status.refresh.label', 'Refresh');
//AutoRefresh
export function AUTO_REFRESH_BUTTON_TEXT(interval: SupportedAutoRefreshIntervals): string {
switch (interval) {