mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Add resource type filtering to deployment wizard (#11079)
This commit is contained in:
@@ -20,7 +20,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
|
|||||||
vscode.window.registerTreeDataProvider('azureArc', treeDataProvider);
|
vscode.window.registerTreeDataProvider('azureArc', treeDataProvider);
|
||||||
|
|
||||||
vscode.commands.registerCommand('arc.createController', async () => {
|
vscode.commands.registerCommand('arc.createController', async () => {
|
||||||
await vscode.commands.executeCommand('azdata.resource.deploy');
|
await vscode.commands.executeCommand('azdata.resource.deploy', 'arc.control.create', ['arc.control.create']);
|
||||||
});
|
});
|
||||||
|
|
||||||
vscode.commands.registerCommand('arc.connectToController', async () => {
|
vscode.commands.registerCommand('arc.connectToController', async () => {
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ export class ControllerDashboardOverviewPage extends DashboardPage {
|
|||||||
|
|
||||||
this.disposables.push(
|
this.disposables.push(
|
||||||
newInstance.onDidClick(async () => {
|
newInstance.onDidClick(async () => {
|
||||||
await vscode.commands.executeCommand('azdata.resource.deploy');
|
await vscode.commands.executeCommand('azdata.resource.deploy', 'arc.sql', ['arc.sql', 'arc.postgres']);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Refresh
|
// Refresh
|
||||||
|
|||||||
@@ -29,12 +29,18 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
|
|||||||
validationFailures.forEach(message => console.error(message));
|
validationFailures.forEach(message => console.error(message));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const openDialog = (resourceTypeName: string) => {
|
/**
|
||||||
const filtered = resourceTypes.filter(resourceType => resourceType.name === resourceTypeName);
|
* Opens a new ResourceTypePickerDialog
|
||||||
if (filtered.length !== 1) {
|
* @param defaultResourceTypeName The resource type name to have selected by default
|
||||||
vscode.window.showErrorMessage(localize('resourceDeployment.UnknownResourceType', "The resource type: {0} is not defined", resourceTypeName));
|
* @param resourceTypeNameFilters Optional filters to apply to the resource types displayed. If undefined all
|
||||||
|
* resource types will be displayed
|
||||||
|
*/
|
||||||
|
const openDialog = (defaultResourceTypeName: string, resourceTypeNameFilters?: string[]) => {
|
||||||
|
const defaultResourceType = resourceTypes.find(resourceType => resourceType.name === defaultResourceTypeName);
|
||||||
|
if (!defaultResourceType) {
|
||||||
|
vscode.window.showErrorMessage(localize('resourceDeployment.UnknownResourceType', "The resource type: {0} is not defined", defaultResourceTypeName));
|
||||||
} else {
|
} else {
|
||||||
const dialog = new ResourceTypePickerDialog(toolsService, resourceTypeService, filtered[0]);
|
const dialog = new ResourceTypePickerDialog(toolsService, resourceTypeService, defaultResourceType, resourceTypeNameFilters);
|
||||||
dialog.open();
|
dialog.open();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -45,9 +51,14 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
|
|||||||
vscode.commands.registerCommand('azdata.resource.sql-bdc.deploy', () => {
|
vscode.commands.registerCommand('azdata.resource.sql-bdc.deploy', () => {
|
||||||
openDialog('sql-bdc');
|
openDialog('sql-bdc');
|
||||||
});
|
});
|
||||||
vscode.commands.registerCommand('azdata.resource.deploy', (resourceType: string) => {
|
vscode.commands.registerCommand('azdata.resource.deploy', (defaultResourceTypeName?: string, resourceTypeNameFilters?: string[]) => {
|
||||||
if (typeof resourceType === 'string') {
|
if ((resourceTypeNameFilters && !Array.isArray(resourceTypeNameFilters) ||
|
||||||
openDialog(resourceType);
|
(resourceTypeNameFilters && resourceTypeNameFilters.length > 0 && typeof resourceTypeNameFilters[0] !== 'string'))) {
|
||||||
|
throw new Error('resourceTypeNameFilters must either be undefined or an array of strings');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof defaultResourceTypeName === 'string') {
|
||||||
|
openDialog(defaultResourceTypeName, resourceTypeNameFilters);
|
||||||
} else {
|
} else {
|
||||||
let defaultDeploymentType: string;
|
let defaultDeploymentType: string;
|
||||||
if (platformService.platform() === 'win32') {
|
if (platformService.platform() === 'win32') {
|
||||||
@@ -55,7 +66,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
|
|||||||
} else {
|
} else {
|
||||||
defaultDeploymentType = 'sql-image';
|
defaultDeploymentType = 'sql-image';
|
||||||
}
|
}
|
||||||
openDialog(defaultDeploymentType);
|
openDialog(defaultDeploymentType, resourceTypeNameFilters);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
vscode.commands.registerCommand('azdata.openNotebookInputDialog', (dialogInfo: NotebookBasedDialogInfo) => {
|
vscode.commands.registerCommand('azdata.openNotebookInputDialog', (dialogInfo: NotebookBasedDialogInfo) => {
|
||||||
|
|||||||
@@ -33,9 +33,10 @@ export class ResourceTypePickerDialog extends DialogBase {
|
|||||||
constructor(
|
constructor(
|
||||||
private toolsService: IToolsService,
|
private toolsService: IToolsService,
|
||||||
private resourceTypeService: IResourceTypeService,
|
private resourceTypeService: IResourceTypeService,
|
||||||
resourceType: ResourceType) {
|
defaultResourceType: ResourceType,
|
||||||
|
private _resourceTypeNameFilters?: string[]) {
|
||||||
super(localize('resourceTypePickerDialog.title', "Select the deployment options"), 'ResourceTypePickerDialog', true);
|
super(localize('resourceTypePickerDialog.title', "Select the deployment options"), 'ResourceTypePickerDialog', true);
|
||||||
this._selectedResourceType = resourceType;
|
this._selectedResourceType = defaultResourceType;
|
||||||
this._installToolButton = azdata.window.createButton(localize('deploymentDialog.InstallToolsButton', "Install tools"));
|
this._installToolButton = azdata.window.createButton(localize('deploymentDialog.InstallToolsButton', "Install tools"));
|
||||||
this._toDispose.push(this._installToolButton.onClick(() => {
|
this._toDispose.push(this._installToolButton.onClick(() => {
|
||||||
this.installTools().catch(error => console.log(error));
|
this.installTools().catch(error => console.log(error));
|
||||||
@@ -61,9 +62,12 @@ export class ResourceTypePickerDialog extends DialogBase {
|
|||||||
tab.registerContent((view: azdata.ModelView) => {
|
tab.registerContent((view: azdata.ModelView) => {
|
||||||
const tableWidth = 1126;
|
const tableWidth = 1126;
|
||||||
this._view = view;
|
this._view = view;
|
||||||
const resourceTypes = this.resourceTypeService.getResourceTypes().sort((a: ResourceType, b: ResourceType) => {
|
const resourceTypes = this.resourceTypeService
|
||||||
return (a.displayIndex || Number.MAX_VALUE) - (b.displayIndex || Number.MAX_VALUE);
|
.getResourceTypes()
|
||||||
});
|
.filter(rt => !this._resourceTypeNameFilters || this._resourceTypeNameFilters.find(rtn => rt.name === rtn))
|
||||||
|
.sort((a: ResourceType, b: ResourceType) => {
|
||||||
|
return (a.displayIndex || Number.MAX_VALUE) - (b.displayIndex || Number.MAX_VALUE);
|
||||||
|
});
|
||||||
this._cardGroup = view.modelBuilder.radioCardGroup().withProperties<azdata.RadioCardGroupComponentProperties>({
|
this._cardGroup = view.modelBuilder.radioCardGroup().withProperties<azdata.RadioCardGroupComponentProperties>({
|
||||||
cards: resourceTypes.map((resourceType) => {
|
cards: resourceTypes.map((resourceType) => {
|
||||||
return <azdata.RadioCard>{
|
return <azdata.RadioCard>{
|
||||||
|
|||||||
Reference in New Issue
Block a user