mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -05:00
improve dropdown autopopulation behavior (#23420)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
"name": "sql-migration",
|
||||
"displayName": "%displayName%",
|
||||
"description": "%description%",
|
||||
"version": "1.4.6",
|
||||
"version": "1.4.7",
|
||||
"publisher": "Microsoft",
|
||||
"preview": false,
|
||||
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
|
||||
|
||||
@@ -241,9 +241,9 @@ export function selectDefaultDropdownValue(dropDown: DropDownComponent, value?:
|
||||
if (value) {
|
||||
const searchValue = value.toLowerCase();
|
||||
if (useDisplayName) {
|
||||
selectedIndex = dropDown.values.findIndex((v: any) => (v as CategoryValue)?.displayName?.toLowerCase() === searchValue);
|
||||
selectedIndex = dropDown.values?.findIndex((v: any) => (v as CategoryValue)?.displayName?.toLowerCase() === searchValue);
|
||||
} else {
|
||||
selectedIndex = dropDown.values.findIndex((v: any) => (v as CategoryValue)?.name?.toLowerCase() === searchValue);
|
||||
selectedIndex = dropDown.values?.findIndex((v: any) => (v as CategoryValue)?.name?.toLowerCase() === searchValue);
|
||||
}
|
||||
} else {
|
||||
selectedIndex = -1;
|
||||
@@ -1169,7 +1169,7 @@ export function createRegistrationInstructions(view: ModelView, testConnectionBu
|
||||
}).component();
|
||||
}
|
||||
|
||||
export function clearDropDown(dropDown: DropDownComponent): void {
|
||||
dropDown.values = [];
|
||||
dropDown.value = undefined;
|
||||
export async function clearDropDown(dropDown: DropDownComponent): Promise<void> {
|
||||
await dropDown.updateProperty('value', undefined);
|
||||
await dropDown.updateProperty('values', []);
|
||||
}
|
||||
|
||||
@@ -146,8 +146,10 @@ export class SelectMigrationServiceDialog {
|
||||
this._serviceContext.azureAccount = selectedAccount
|
||||
? utils.deepClone(selectedAccount)
|
||||
: undefined!;
|
||||
} else {
|
||||
this._serviceContext.azureAccount = undefined;
|
||||
}
|
||||
utils.clearDropDown(this._accountTenantDropdown);
|
||||
await utils.clearDropDown(this._accountTenantDropdown);
|
||||
await this._populateTentantsDropdown();
|
||||
}));
|
||||
|
||||
@@ -194,8 +196,10 @@ export class SelectMigrationServiceDialog {
|
||||
this._serviceContext.tenant = selectedTenant
|
||||
? utils.deepClone(selectedTenant)
|
||||
: undefined!;
|
||||
} else {
|
||||
this._serviceContext.tenant = undefined;
|
||||
}
|
||||
utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await this._populateSubscriptionDropdown();
|
||||
}));
|
||||
|
||||
@@ -235,8 +239,10 @@ export class SelectMigrationServiceDialog {
|
||||
this._serviceContext.subscription = selectedSubscription
|
||||
? utils.deepClone(selectedSubscription)
|
||||
: undefined!;
|
||||
} else {
|
||||
this._serviceContext.subscription = undefined;
|
||||
}
|
||||
utils.clearDropDown(this._azureLocationDropdown);
|
||||
await utils.clearDropDown(this._azureLocationDropdown);
|
||||
await this._populateLocationDropdown();
|
||||
}));
|
||||
|
||||
@@ -264,8 +270,10 @@ export class SelectMigrationServiceDialog {
|
||||
this._serviceContext.location = selectedLocation
|
||||
? utils.deepClone(selectedLocation)
|
||||
: undefined!;
|
||||
} else {
|
||||
this._serviceContext.location = undefined;
|
||||
}
|
||||
utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
await utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
await this._populateResourceGroupDropdown();
|
||||
}));
|
||||
|
||||
@@ -293,8 +301,10 @@ export class SelectMigrationServiceDialog {
|
||||
this._serviceContext.resourceGroup = selectedResourceGroup
|
||||
? utils.deepClone(selectedResourceGroup)
|
||||
: undefined!;
|
||||
} else {
|
||||
this._serviceContext.resourceGroup = undefined;
|
||||
}
|
||||
utils.clearDropDown(this._azureServiceDropdown);
|
||||
await utils.clearDropDown(this._azureServiceDropdown);
|
||||
this._populateMigrationServiceDropdown();
|
||||
}));
|
||||
|
||||
@@ -322,6 +332,8 @@ export class SelectMigrationServiceDialog {
|
||||
this._serviceContext.migrationService = selectedDms
|
||||
? utils.deepClone(selectedDms)
|
||||
: undefined!;
|
||||
} else {
|
||||
this._serviceContext.migrationService = undefined;
|
||||
}
|
||||
await this._updateButtonState();
|
||||
}));
|
||||
@@ -353,14 +365,14 @@ export class SelectMigrationServiceDialog {
|
||||
private async _populateAzureAccountsDropdown(): Promise<void> {
|
||||
try {
|
||||
this._azureAccountsDropdown.loading = true;
|
||||
|
||||
await utils.clearDropDown(this._azureAccountsDropdown);
|
||||
this._azureAccounts = await utils.getAzureAccounts();
|
||||
this._azureAccountsDropdown.values = await utils.getAzureAccountsDropdownValues(this._azureAccounts);
|
||||
if (this._azureAccountsDropdown.values.length > 0) {
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureAccountsDropdown,
|
||||
this._serviceContext.azureAccount?.displayInfo?.userId,
|
||||
false);
|
||||
}
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureAccountsDropdown,
|
||||
this._serviceContext.azureAccount?.displayInfo?.userId,
|
||||
false);
|
||||
} catch (error) {
|
||||
logError(TelemetryViews.SelectMigrationServiceDialog, '_populateAzureAccountsDropdown', error);
|
||||
void vscode.window.showErrorMessage(
|
||||
@@ -374,18 +386,17 @@ export class SelectMigrationServiceDialog {
|
||||
private async _populateTentantsDropdown(): Promise<void> {
|
||||
try {
|
||||
this._accountTenantDropdown.loading = true;
|
||||
|
||||
this._accountTenants = utils.getAzureTenants(this._serviceContext.azureAccount);
|
||||
this._accountTenantDropdown.values = utils.getAzureTenantsDropdownValues(this._accountTenants);
|
||||
await this._accountTenantFlexContainer.updateCssStyles(
|
||||
this._accountTenants.length > 1
|
||||
? STYLE_ShOW
|
||||
: STYLE_HIDE);
|
||||
if (this._accountTenantDropdown.values.length > 0) {
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._accountTenantDropdown,
|
||||
this._serviceContext.tenant?.id,
|
||||
false);
|
||||
}
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._accountTenantDropdown,
|
||||
this._serviceContext.tenant?.id,
|
||||
false);
|
||||
} catch (error) {
|
||||
logError(TelemetryViews.SelectMigrationServiceDialog, '_populateTentantsDropdown', error);
|
||||
void vscode.window.showErrorMessage(
|
||||
@@ -393,24 +404,21 @@ export class SelectMigrationServiceDialog {
|
||||
error.message);
|
||||
} finally {
|
||||
this._accountTenantDropdown.loading = false;
|
||||
utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await this._populateSubscriptionDropdown();
|
||||
}
|
||||
}
|
||||
|
||||
private async _populateSubscriptionDropdown(): Promise<void> {
|
||||
try {
|
||||
this._azureSubscriptionDropdown.loading = true;
|
||||
|
||||
this._subscriptions = await utils.getAzureSubscriptions(
|
||||
this._serviceContext.azureAccount,
|
||||
this._serviceContext.tenant?.id);
|
||||
this._azureSubscriptionDropdown.values = await utils.getAzureSubscriptionsDropdownValues(this._subscriptions);
|
||||
if (this._azureSubscriptionDropdown.values.length > 0) {
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureSubscriptionDropdown,
|
||||
this._serviceContext.subscription?.id,
|
||||
false);
|
||||
}
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureSubscriptionDropdown,
|
||||
this._serviceContext.subscription?.id,
|
||||
false);
|
||||
} catch (error) {
|
||||
logError(TelemetryViews.SelectMigrationServiceDialog, '_populateSubscriptionDropdown', error);
|
||||
void vscode.window.showErrorMessage(
|
||||
@@ -424,6 +432,7 @@ export class SelectMigrationServiceDialog {
|
||||
private async _populateLocationDropdown(): Promise<void> {
|
||||
try {
|
||||
this._azureLocationDropdown.loading = true;
|
||||
|
||||
this._sqlMigrationServices = await utils.getAzureSqlMigrationServices(
|
||||
this._serviceContext.azureAccount,
|
||||
this._serviceContext.subscription);
|
||||
@@ -431,14 +440,11 @@ export class SelectMigrationServiceDialog {
|
||||
this._serviceContext.azureAccount,
|
||||
this._serviceContext.subscription,
|
||||
this._sqlMigrationServices);
|
||||
|
||||
this._azureLocationDropdown.values = utils.getAzureLocationsDropdownValues(this._locations);
|
||||
if (this._azureLocationDropdown.values.length > 0) {
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureLocationDropdown,
|
||||
this._serviceContext.location?.displayName,
|
||||
true);
|
||||
}
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureLocationDropdown,
|
||||
this._serviceContext.location?.displayName,
|
||||
true);
|
||||
} catch (error) {
|
||||
logError(TelemetryViews.SelectMigrationServiceDialog, '_populateLocationDropdown', error);
|
||||
void vscode.window.showErrorMessage(
|
||||
@@ -452,19 +458,17 @@ export class SelectMigrationServiceDialog {
|
||||
private async _populateResourceGroupDropdown(): Promise<void> {
|
||||
try {
|
||||
this._azureResourceGroupDropdown.loading = true;
|
||||
|
||||
this._resourceGroups = utils.getServiceResourceGroupsByLocation(
|
||||
this._sqlMigrationServices,
|
||||
this._serviceContext.location!);
|
||||
this._azureResourceGroupDropdown.values = utils.getResourceDropdownValues(
|
||||
this._resourceGroups,
|
||||
constants.RESOURCE_GROUP_NOT_FOUND);
|
||||
|
||||
if (this._azureResourceGroupDropdown.values.length > 0) {
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureResourceGroupDropdown,
|
||||
this._serviceContext.resourceGroup?.id,
|
||||
false);
|
||||
}
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureResourceGroupDropdown,
|
||||
this._serviceContext.resourceGroup?.id,
|
||||
false);
|
||||
} catch (error) {
|
||||
logError(TelemetryViews.SelectMigrationServiceDialog, '_populateResourceGroupDropdown', error);
|
||||
void vscode.window.showErrorMessage(
|
||||
@@ -478,18 +482,16 @@ export class SelectMigrationServiceDialog {
|
||||
private _populateMigrationServiceDropdown(): void {
|
||||
try {
|
||||
this._azureServiceDropdown.loading = true;
|
||||
|
||||
this._azureServiceDropdown.values = utils.getAzureResourceDropdownValues(
|
||||
this._sqlMigrationServices,
|
||||
this._serviceContext.location!,
|
||||
this._serviceContext.resourceGroup?.name,
|
||||
constants.SQL_MIGRATION_SERVICE_NOT_FOUND_ERROR);
|
||||
|
||||
if (this._azureServiceDropdown.values.length > 0) {
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureServiceDropdown,
|
||||
this._serviceContext?.migrationService?.id,
|
||||
false);
|
||||
}
|
||||
utils.selectDefaultDropdownValue(
|
||||
this._azureServiceDropdown,
|
||||
this._serviceContext?.migrationService?.id,
|
||||
false);
|
||||
} catch (error) {
|
||||
logError(TelemetryViews.SelectMigrationServiceDialog, '_populateMigrationServiceDropdown', error);
|
||||
void vscode.window.showErrorMessage(
|
||||
|
||||
@@ -327,8 +327,7 @@ export class IntergrationRuntimePage extends MigrationWizardPage {
|
||||
} else {
|
||||
this.migrationStateModel._sqlMigrationServiceSubscription = undefined!;
|
||||
}
|
||||
|
||||
utils.clearDropDown(this._resourceGroupDropdown);
|
||||
await utils.clearDropDown(this._resourceGroupDropdown);
|
||||
await this.loadResourceGroupDropdown();
|
||||
}));
|
||||
|
||||
@@ -372,7 +371,7 @@ export class IntergrationRuntimePage extends MigrationWizardPage {
|
||||
else {
|
||||
this.migrationStateModel._sqlMigrationServiceResourceGroup = undefined!;
|
||||
}
|
||||
utils.clearDropDown(this._dmsDropdown);
|
||||
await utils.clearDropDown(this._dmsDropdown);
|
||||
this.loadDmsDropdown();
|
||||
}));
|
||||
|
||||
|
||||
@@ -377,8 +377,10 @@ export class LoginMigrationTargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._azureAccount = selectedAccount
|
||||
? utils.deepClone(selectedAccount)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._azureAccount = undefined!;
|
||||
}
|
||||
utils.clearDropDown(this._accountTenantDropdown);
|
||||
await utils.clearDropDown(this._accountTenantDropdown);
|
||||
await this.populateTenantsDropdown();
|
||||
}));
|
||||
|
||||
@@ -430,8 +432,10 @@ export class LoginMigrationTargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._azureTenant = selectedTenant
|
||||
? utils.deepClone(selectedTenant)
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._azureTenant = undefined!;
|
||||
}
|
||||
utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await this.populateSubscriptionDropdown();
|
||||
}));
|
||||
|
||||
@@ -472,9 +476,11 @@ export class LoginMigrationTargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._targetSubscription = (selectedSubscription)
|
||||
? utils.deepClone(selectedSubscription)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._targetSubscription = undefined!;
|
||||
}
|
||||
this.migrationStateModel.refreshDatabaseBackupPage = true;
|
||||
utils.clearDropDown(this._azureLocationDropdown);
|
||||
await utils.clearDropDown(this._azureLocationDropdown);
|
||||
await this.populateLocationDropdown();
|
||||
}));
|
||||
|
||||
@@ -503,9 +509,11 @@ export class LoginMigrationTargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._location = (selectedLocation)
|
||||
? utils.deepClone(selectedLocation)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._location = undefined!;
|
||||
}
|
||||
this.migrationStateModel.refreshDatabaseBackupPage = true;
|
||||
utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
await utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
await this.populateResourceGroupDropdown();
|
||||
}));
|
||||
|
||||
@@ -732,8 +740,10 @@ export class LoginMigrationTargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._resourceGroup = (selectedResourceGroup)
|
||||
? utils.deepClone(selectedResourceGroup)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._resourceGroup = undefined!;
|
||||
}
|
||||
utils.clearDropDown(this._azureResourceDropdown);
|
||||
await utils.clearDropDown(this._azureResourceDropdown);
|
||||
await this.populateResourceInstanceDropdown();
|
||||
}));
|
||||
|
||||
|
||||
@@ -267,12 +267,12 @@ export class TargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._resourceGroup = undefined!;
|
||||
this.migrationStateModel._targetServerInstance = undefined!;
|
||||
|
||||
utils.clearDropDown(this._azureAccountsDropdown);
|
||||
utils.clearDropDown(this._accountTenantDropdown);
|
||||
utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
utils.clearDropDown(this._azureLocationDropdown);
|
||||
utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
utils.clearDropDown(this._azureResourceDropdown);
|
||||
await utils.clearDropDown(this._azureAccountsDropdown);
|
||||
await utils.clearDropDown(this._accountTenantDropdown);
|
||||
await utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await utils.clearDropDown(this._azureLocationDropdown);
|
||||
await utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
await utils.clearDropDown(this._azureResourceDropdown);
|
||||
}
|
||||
|
||||
await this.populateAzureAccountsDropdown();
|
||||
@@ -313,8 +313,10 @@ export class TargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._azureAccount = (selectedAccount)
|
||||
? utils.deepClone(selectedAccount)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._azureAccount = undefined!;
|
||||
}
|
||||
utils.clearDropDown(this._accountTenantDropdown);
|
||||
await utils.clearDropDown(this._accountTenantDropdown);
|
||||
await this.populateTenantsDropdown();
|
||||
}));
|
||||
|
||||
@@ -366,8 +368,10 @@ export class TargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._azureTenant = selectedTenant
|
||||
? utils.deepClone(selectedTenant)
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._azureTenant = undefined!;
|
||||
}
|
||||
utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await utils.clearDropDown(this._azureSubscriptionDropdown);
|
||||
await this.populateSubscriptionDropdown();
|
||||
}));
|
||||
|
||||
@@ -408,9 +412,11 @@ export class TargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._targetSubscription = (selectedSubscription)
|
||||
? utils.deepClone(selectedSubscription)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._targetSubscription = undefined!;
|
||||
}
|
||||
this.migrationStateModel.refreshDatabaseBackupPage = true;
|
||||
utils.clearDropDown(this._azureLocationDropdown);
|
||||
await utils.clearDropDown(this._azureLocationDropdown);
|
||||
await this.populateLocationDropdown();
|
||||
}));
|
||||
|
||||
@@ -439,9 +445,11 @@ export class TargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._location = (selectedLocation)
|
||||
? utils.deepClone(selectedLocation)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._location = undefined!;
|
||||
}
|
||||
this.migrationStateModel.refreshDatabaseBackupPage = true;
|
||||
utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
await utils.clearDropDown(this._azureResourceGroupDropdown);
|
||||
await this.populateResourceGroupDropdown();
|
||||
}));
|
||||
|
||||
@@ -667,8 +675,10 @@ export class TargetSelectionPage extends MigrationWizardPage {
|
||||
this.migrationStateModel._resourceGroup = (selectedResourceGroup)
|
||||
? utils.deepClone(selectedResourceGroup)!
|
||||
: undefined!;
|
||||
} else {
|
||||
this.migrationStateModel._resourceGroup = undefined!;
|
||||
}
|
||||
utils.clearDropDown(this._azureResourceDropdown);
|
||||
await utils.clearDropDown(this._azureResourceDropdown);
|
||||
await this.populateResourceInstanceDropdown();
|
||||
}));
|
||||
|
||||
@@ -775,6 +785,8 @@ export class TargetSelectionPage extends MigrationWizardPage {
|
||||
await this._validateFields();
|
||||
} else {
|
||||
this.migrationStateModel._targetServerInstance = undefined!;
|
||||
this.migrationStateModel._vmInstanceView = undefined!;
|
||||
|
||||
if (isSqlDbTarget) {
|
||||
this._targetUserNameInputBox.value = '';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user