Fix filtered resource options persisting across deployments (#14702) (#14711)

This commit is contained in:
Charles Gagnon
2021-03-15 12:06:54 -07:00
committed by GitHub
parent 3368af9371
commit e2ce6bebac
2 changed files with 4 additions and 3 deletions

View File

@@ -21,6 +21,7 @@ import { DeployAzureSQLDBWizardModel } from './deployAzureSQLDBWizard/deployAzur
import { ToolsAndEulaPage } from './toolsAndEulaSettingsPage'; import { ToolsAndEulaPage } from './toolsAndEulaSettingsPage';
import { OptionValuesFilter, ResourceTypeService } from '../services/resourceTypeService'; import { OptionValuesFilter, ResourceTypeService } from '../services/resourceTypeService';
import { PageLessDeploymentModel } from './pageLessDeploymentModel'; import { PageLessDeploymentModel } from './pageLessDeploymentModel';
import { deepClone } from '../common/utils';
export class ResourceTypeWizard { export class ResourceTypeWizard {
private customButtons: azdata.window.Button[] = []; private customButtons: azdata.window.Button[] = [];
@@ -65,7 +66,7 @@ export class ResourceTypeWizard {
* Setting the first provider from the first value of the dropdowns. * Setting the first provider from the first value of the dropdowns.
* If there are no options (dropdowns) then the resource type has only one provider which is set as default here. * If there are no options (dropdowns) then the resource type has only one provider which is set as default here.
*/ */
let filteredOptions = resourceType.options; let filteredOptions = deepClone(resourceType.options);
const optionsFilter = this._optionValuesFilter?.[this.resourceType.name]; const optionsFilter = this._optionValuesFilter?.[this.resourceType.name];
if (optionsFilter) { if (optionsFilter) {
filteredOptions.forEach(option => { filteredOptions.forEach(option => {

View File

@@ -10,7 +10,7 @@ import { AgreementInfo, DeploymentProvider, HelpText, ITool, ResourceType, Resou
import { createFlexContainer } from './modelViewUtils'; import { createFlexContainer } from './modelViewUtils';
import * as loc from '../localizedConstants'; import * as loc from '../localizedConstants';
import { IToolsService } from '../services/toolsService'; import { IToolsService } from '../services/toolsService';
import { getErrorMessage } from '../common/utils'; import { deepClone, getErrorMessage } from '../common/utils';
import { ResourceTypePage } from './resourceTypePage'; import { ResourceTypePage } from './resourceTypePage';
import { ResourceTypeWizard } from './resourceTypeWizard'; import { ResourceTypeWizard } from './resourceTypeWizard';
import { OptionValuesFilter as OptionValuesFilter } from '../services/resourceTypeService'; import { OptionValuesFilter as OptionValuesFilter } from '../services/resourceTypeService';
@@ -200,7 +200,7 @@ export class ToolsAndEulaPage extends ResourceTypePage {
}).component(); }).component();
this._optionsContainer.addItem(optionsTitle); this._optionsContainer.addItem(optionsTitle);
this._resourceType.options.forEach((option, index) => { this._resourceType.options.forEach((option, index) => {
let optionValues = option.values; let optionValues = deepClone(option.values);
const optionValueFilter = this.optionValuesFilter?.[this._resourceType.name]?.[option.name]; const optionValueFilter = this.optionValuesFilter?.[this._resourceType.name]?.[option.name];
if (optionValueFilter) { if (optionValueFilter) {
optionValues = optionValues.filter(optionValue => optionValueFilter.includes(optionValue.name)); optionValues = optionValues.filter(optionValue => optionValueFilter.includes(optionValue.name));