resource label update (#13129)

* resource label update

* preserve existing behavior

* fix connection group color

* comments
This commit is contained in:
Alan Ren
2020-10-29 14:42:01 -07:00
committed by GitHub
parent 8c956cdb79
commit 7819d25c95
28 changed files with 138 additions and 72 deletions

View File

@@ -35,23 +35,29 @@ declare module 'azureResource' {
readonly treeItem: TreeItem;
}
export interface IAzureSubscriptionInfo {
id: string;
name: string;
}
export interface AzureResource {
name: string;
id: string;
subscriptionId: string;
subscription: IAzureSubscriptionInfo;
resourceGroup?: string;
tenant?: string;
}
export interface AzureResourceSubscription extends Omit<AzureResource, 'subscriptionId'> {
export interface AzureResourceSubscription extends Omit<AzureResource, 'subscription'> {
}
export interface AzureSqlResource extends AzureResource {
loginName: string;
}
export interface AzureGraphResource extends Omit<AzureResource, 'tenant'> {
export interface AzureGraphResource extends Omit<AzureResource, 'tenant' | 'subscription'> {
tenantId: string;
subscriptionId: string;
type: string;
location: string;
}

View File

@@ -51,7 +51,10 @@ export class AzureResourceDatabaseService implements IAzureResourceService<azure
serverName: server.name,
serverFullName: server.properties.fullyQualifiedDomainName,
loginName: server.properties.administratorLogin,
subscriptionId: db.subscriptionId,
subscription: {
id: db.subscriptionId,
name: (subscriptions.find(sub => sub.id === db.subscriptionId))?.name
},
tenant: db.tenantId,
resourceGroup: db.resourceGroup
});

View File

@@ -10,7 +10,7 @@ const localize = nls.loadMessageBundle();
import { azureResource } from 'azureResource';
import { AzureResourceItemType } from '../../../azureResource/constants';
import { generateGuid } from '../../utils';
import { generateGuid, isConnectionDialogBrowseViewEnabled } from '../../utils';
import { IAzureResourceService } from '../../interfaces';
import { ResourceTreeDataProviderBase } from '../resourceTreeDataProviderBase';
@@ -28,12 +28,12 @@ export class AzureResourceDatabaseTreeDataProvider extends ResourceTreeDataProvi
protected getTreeItemForResource(database: azureResource.AzureResourceDatabase, account: Account): TreeItem {
return {
id: `databaseServer_${database.serverFullName}.database_${database.name}`,
label: `${database.name} (${database.serverName})`,
label: isConnectionDialogBrowseViewEnabled() ? `${database.serverName}/${database.name} (${AzureResourceDatabaseTreeDataProvider.containerLabel}, ${database.subscription.name})` : `${database.name} (${database.serverName})`,
iconPath: {
dark: this._extensionContext.asAbsolutePath('resources/dark/sql_database_inverse.svg'),
light: this._extensionContext.asAbsolutePath('resources/light/sql_database.svg')
},
collapsibleState: vscode.workspace.getConfiguration('connection').get<boolean>('dialog.browse') ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed,
collapsibleState: isConnectionDialogBrowseViewEnabled() ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed,
contextValue: AzureResourceItemType.database,
payload: {
id: generateGuid(),

View File

@@ -7,7 +7,6 @@
import { ResourceServiceBase, GraphData } from '../resourceTreeDataProviderBase';
import { azureResource } from 'azureResource';
export interface DbServerGraphData extends GraphData {
properties: {
fullyQualifiedDomainName: string;
@@ -30,7 +29,10 @@ export class AzureResourceDatabaseServerService extends ResourceServiceBase<DbSe
fullName: resource.properties.fullyQualifiedDomainName,
loginName: resource.properties.administratorLogin,
defaultDatabaseName: 'master',
subscriptionId: resource.subscriptionId,
subscription: {
id: resource.subscriptionId,
name: resource.subscriptionName
},
tenant: resource.tenantId,
resourceGroup: resource.resourceGroup
};

View File

@@ -9,7 +9,7 @@ import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import { AzureResourceItemType } from '../../../azureResource/constants';
import { generateGuid } from '../../utils';
import { generateGuid, isConnectionDialogBrowseViewEnabled } from '../../utils';
import { IAzureResourceService } from '../../interfaces';
import { ResourceTreeDataProviderBase } from '../resourceTreeDataProviderBase';
import { azureResource } from 'azureResource';
@@ -29,12 +29,12 @@ export class AzureResourceDatabaseServerTreeDataProvider extends ResourceTreeDat
protected getTreeItemForResource(databaseServer: azureResource.AzureResourceDatabaseServer, account: Account): TreeItem {
return {
id: `databaseServer_${databaseServer.id ? databaseServer.id : databaseServer.name}`,
label: databaseServer.name,
label: isConnectionDialogBrowseViewEnabled() ? `${databaseServer.name} (${AzureResourceDatabaseServerTreeDataProvider.containerLabel}, ${databaseServer.subscription.name})` : databaseServer.name,
iconPath: {
dark: this._extensionContext.asAbsolutePath('resources/dark/sql_server_inverse.svg'),
light: this._extensionContext.asAbsolutePath('resources/light/sql_server.svg')
},
collapsibleState: vscode.workspace.getConfiguration('connection').get<boolean>('dialog.browse') ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed,
collapsibleState: isConnectionDialogBrowseViewEnabled() ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed,
contextValue: AzureResourceItemType.databaseServer,
payload: {
id: generateGuid(),

View File

@@ -29,7 +29,10 @@ export class KustoResourceService extends ResourceServiceBase<KustoGraphData, az
fullName: resource.properties.uri.replace('https://', ''),
loginName: '',
defaultDatabaseName: '',
subscriptionId: resource.subscriptionId,
subscription: {
id: resource.subscriptionId,
name: resource.subscriptionName
},
tenant: resource.tenantId,
resourceGroup: resource.resourceGroup
};

View File

@@ -4,19 +4,19 @@
*--------------------------------------------------------------------------------------------*/
import { ExtensionNodeType, TreeItem, Account } from 'azdata';
import { TreeItemCollapsibleState, ExtensionContext, workspace } from 'vscode';
import { TreeItemCollapsibleState, ExtensionContext } from 'vscode';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import { AzureResourceItemType } from '../../constants';
import { generateGuid } from '../../utils';
import { generateGuid, isConnectionDialogBrowseViewEnabled } from '../../utils';
import { IAzureResourceService } from '../../interfaces';
import { ResourceTreeDataProviderBase } from '../resourceTreeDataProviderBase';
import { azureResource } from 'azureResource';
export class KustoTreeDataProvider extends ResourceTreeDataProviderBase<azureResource.AzureResourceDatabaseServer> {
private static readonly containerId = 'azure.resource.providers.KustoContainer';
private static readonly containerLabel = localize('azure.resource.providers.KustoContainerLabel', "Azure Data Explorer Clusters");
private static readonly containerLabel = localize('azure.resource.providers.KustoContainerLabel', "Azure Data Explorer Cluster");
public constructor(
databaseServerService: IAzureResourceService<azureResource.AzureResourceDatabaseServer>,
@@ -29,12 +29,12 @@ export class KustoTreeDataProvider extends ResourceTreeDataProviderBase<azureRes
protected getTreeItemForResource(databaseServer: azureResource.AzureResourceDatabaseServer, account: Account): TreeItem {
return {
id: `Kusto_${databaseServer.id ? databaseServer.id : databaseServer.name}`,
label: databaseServer.name,
label: isConnectionDialogBrowseViewEnabled() ? `${databaseServer.name} (${KustoTreeDataProvider.containerLabel}, ${databaseServer.subscription.name})` : databaseServer.name,
iconPath: {
dark: this._extensionContext.asAbsolutePath('resources/dark/azureDE_inverse.svg'),
light: this._extensionContext.asAbsolutePath('resources/light/azureDE.svg')
},
collapsibleState: workspace.getConfiguration('connection').get<boolean>('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
contextValue: AzureResourceItemType.azureDataExplorer,
payload: {
id: generateGuid(),

View File

@@ -27,7 +27,10 @@ export class PostgresServerArcService extends ResourceServiceBase<PostgresArcSer
fullName: resource.name,
loginName: resource.properties.admin,
defaultDatabaseName: 'postgres',
subscriptionId: resource.subscriptionId,
subscription: {
id: resource.subscriptionId,
name: resource.subscriptionName
},
tenant: resource.tenantId,
resourceGroup: resource.resourceGroup
};

View File

@@ -4,12 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import { ExtensionNodeType, TreeItem, Account } from 'azdata';
import { TreeItemCollapsibleState, ExtensionContext, workspace } from 'vscode';
import { TreeItemCollapsibleState, ExtensionContext } from 'vscode';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import { AzureResourceItemType } from '../../constants';
import { generateGuid } from '../../utils';
import { generateGuid, isConnectionDialogBrowseViewEnabled } from '../../utils';
import { IAzureResourceService } from '../../interfaces';
import { ResourceTreeDataProviderBase } from '../resourceTreeDataProviderBase';
import { azureResource } from 'azureResource';
@@ -29,12 +29,12 @@ export class PostgresServerArcTreeDataProvider extends ResourceTreeDataProviderB
protected getTreeItemForResource(databaseServer: azureResource.AzureResourceDatabaseServer, account: Account): TreeItem {
return {
id: `databaseServer_${databaseServer.id ? databaseServer.id : databaseServer.name}`,
label: databaseServer.name,
label: isConnectionDialogBrowseViewEnabled() ? `${databaseServer.name} (${PostgresServerArcTreeDataProvider.containerLabel}, ${databaseServer.subscription.name})` : databaseServer.name,
iconPath: {
dark: this._extensionContext.asAbsolutePath('resources/dark/sql_server_inverse.svg'),
light: this._extensionContext.asAbsolutePath('resources/light/sql_server.svg')
},
collapsibleState: workspace.getConfiguration('connection').get<boolean>('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
contextValue: AzureResourceItemType.databaseServer,
payload: {
id: generateGuid(),

View File

@@ -30,7 +30,10 @@ export class PostgresServerService extends ResourceServiceBase<DbServerGraphData
fullName: resource.properties.fullyQualifiedDomainName,
loginName: resource.properties.administratorLogin,
defaultDatabaseName: 'postgres',
subscriptionId: resource.subscriptionId,
subscription: {
id: resource.subscriptionId,
name: resource.subscriptionName
},
tenant: resource.tenantId,
resourceGroup: resource.resourceGroup
};

View File

@@ -4,12 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import { ExtensionNodeType, TreeItem, Account } from 'azdata';
import { TreeItemCollapsibleState, ExtensionContext, workspace } from 'vscode';
import { TreeItemCollapsibleState, ExtensionContext } from 'vscode';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import { AzureResourceItemType } from '../../constants';
import { generateGuid } from '../../utils';
import { generateGuid, isConnectionDialogBrowseViewEnabled } from '../../utils';
import { IAzureResourceService } from '../../interfaces';
import { ResourceTreeDataProviderBase } from '../resourceTreeDataProviderBase';
import { azureResource } from 'azureResource';
@@ -29,12 +29,12 @@ export class PostgresServerTreeDataProvider extends ResourceTreeDataProviderBase
protected getTreeItemForResource(databaseServer: azureResource.AzureResourceDatabaseServer, account: Account): TreeItem {
return {
id: `databaseServer_${databaseServer.id ? databaseServer.id : databaseServer.name}`,
label: databaseServer.name,
label: isConnectionDialogBrowseViewEnabled() ? `${databaseServer.name} (${PostgresServerTreeDataProvider.containerLabel}, ${databaseServer.subscription.name})` : databaseServer.name,
iconPath: {
dark: this._extensionContext.asAbsolutePath('resources/dark/sql_server_inverse.svg'),
light: this._extensionContext.asAbsolutePath('resources/light/sql_server.svg')
},
collapsibleState: workspace.getConfiguration('connection').get<boolean>('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
contextValue: AzureResourceItemType.databaseServer,
payload: {
id: generateGuid(),

View File

@@ -17,7 +17,10 @@ export class AzureResourceGroupService extends ResourceServiceBase<DbServerGraph
return {
id: resource.id,
name: resource.name,
subscriptionId: resource.subscriptionId,
subscription: {
id: resource.subscriptionId,
name: resource.subscriptionName
},
tenant: resource.tenantId
};
}

View File

@@ -55,6 +55,7 @@ export abstract class ResourceTreeDataProviderBase<T extends azureResource.Azure
export interface GraphData {
subscriptionId: string,
subscriptionName?: string,
tenantId: string;
id: string;
name: string;
@@ -122,12 +123,13 @@ export abstract class ResourceServiceBase<T extends GraphData, U extends azureRe
public async getResources(subscriptions: azureResource.AzureResourceSubscription[], credential: msRest.ServiceClientCredentials, account: azdata.Account): Promise<U[]> {
const convertedResources: U[] = [];
const resourceClient = new ResourceGraphClient(credential, { baseUri: account.properties.providerSettings.settings.armResource.endpoint });
let graphResources = await queryGraphResources<T>(resourceClient, subscriptions, this.query);
let ids = new Set<string>();
const graphResources = await queryGraphResources<T>(resourceClient, subscriptions, this.query);
const ids = new Set<string>();
graphResources.forEach((res) => {
if (!ids.has(res.id)) {
ids.add(res.id);
let converted = this.convertResource(res);
res.subscriptionName = subscriptions.find(sub => sub.id === res.subscriptionId).name;
const converted = this.convertResource(res);
convertedResources.push(converted);
}
});

View File

@@ -28,7 +28,10 @@ export class SqlInstanceResourceService extends ResourceServiceBase<SqlInstanceG
fullName: resource.properties.fullyQualifiedDomainName,
loginName: resource.properties.administratorLogin,
defaultDatabaseName: 'master',
subscriptionId: resource.subscriptionId,
subscription: {
id: resource.subscriptionId,
name: resource.subscriptionName
},
tenant: resource.tenantId,
resourceGroup: resource.resourceGroup
};

View File

@@ -4,12 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import { ExtensionNodeType, TreeItem, Account } from 'azdata';
import { TreeItemCollapsibleState, ExtensionContext, workspace } from 'vscode';
import { TreeItemCollapsibleState, ExtensionContext } from 'vscode';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import { AzureResourceItemType } from '../../constants';
import { generateGuid } from '../../utils';
import { generateGuid, isConnectionDialogBrowseViewEnabled } from '../../utils';
import { IAzureResourceService } from '../../interfaces';
import { ResourceTreeDataProviderBase } from '../resourceTreeDataProviderBase';
import { azureResource } from 'azureResource';
@@ -29,12 +29,12 @@ export class SqlInstanceTreeDataProvider extends ResourceTreeDataProviderBase<az
protected getTreeItemForResource(databaseServer: azureResource.AzureResourceDatabaseServer, account: Account): TreeItem {
return {
id: `sqlInstance_${databaseServer.id ? databaseServer.id : databaseServer.name}`,
label: databaseServer.name,
label: isConnectionDialogBrowseViewEnabled() ? `${databaseServer.name} (${SqlInstanceTreeDataProvider.containerLabel}, ${databaseServer.subscription.name})` : databaseServer.name,
iconPath: {
dark: this._extensionContext.asAbsolutePath('resources/dark/sql_instance_inverse.svg'),
light: this._extensionContext.asAbsolutePath('resources/light/sql_instance.svg')
},
collapsibleState: workspace.getConfiguration('connection').get<boolean>('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
contextValue: AzureResourceItemType.databaseServer,
payload: {
id: generateGuid(),

View File

@@ -27,7 +27,10 @@ export class SqlInstanceArcResourceService extends ResourceServiceBase<SqlInstan
fullName: resource.name,
loginName: resource.properties.admin,
defaultDatabaseName: 'master',
subscriptionId: resource.subscriptionId,
subscription: {
id: resource.subscriptionId,
name: resource.subscriptionName
},
tenant: resource.tenantId,
resourceGroup: resource.resourceGroup
};

View File

@@ -4,12 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import { ExtensionNodeType, TreeItem, Account } from 'azdata';
import { TreeItemCollapsibleState, ExtensionContext, workspace } from 'vscode';
import { TreeItemCollapsibleState, ExtensionContext } from 'vscode';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import { AzureResourceItemType } from '../../constants';
import { generateGuid } from '../../utils';
import { generateGuid, isConnectionDialogBrowseViewEnabled } from '../../utils';
import { IAzureResourceService } from '../../interfaces';
import { ResourceTreeDataProviderBase } from '../resourceTreeDataProviderBase';
import { azureResource } from 'azureResource';
@@ -29,12 +29,12 @@ export class SqlInstanceArcTreeDataProvider extends ResourceTreeDataProviderBase
protected getTreeItemForResource(databaseServer: azureResource.AzureResourceDatabaseServer, account: Account): TreeItem {
return {
id: `sqlInstance_${databaseServer.id ? databaseServer.id : databaseServer.name}`,
label: databaseServer.name,
label: isConnectionDialogBrowseViewEnabled() ? `${databaseServer.name} (${SqlInstanceArcTreeDataProvider.containerLabel}, ${databaseServer.subscription.name})` : databaseServer.name,
iconPath: {
dark: this._extensionContext.asAbsolutePath('resources/dark/sql_instance_inverse.svg'),
light: this._extensionContext.asAbsolutePath('resources/light/sql_instance.svg')
},
collapsibleState: workspace.getConfiguration('connection').get<boolean>('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed,
contextValue: AzureResourceItemType.databaseServer,
payload: {
id: generateGuid(),

View File

@@ -13,6 +13,7 @@ import { AppContext } from '../appContext';
import { AzureResourceServiceNames } from './constants';
import { IAzureResourceSubscriptionFilterService, IAzureResourceSubscriptionService } from './interfaces';
import { AzureResourceGroupService } from './providers/resourceGroup/resourceGroupService';
import * as vscode from 'vscode';
const localize = nls.loadMessageBundle();
@@ -284,3 +285,7 @@ export async function getSelectedSubscriptions(appContext: AppContext, account?:
}
return result;
}
export function isConnectionDialogBrowseViewEnabled(): boolean {
return vscode.workspace.getConfiguration('connection').get<boolean>('dialog.browse');
}

View File

@@ -76,7 +76,10 @@ const mockDatabases: azureResource.AzureResourceDatabase[] = [
serverName: 'mock database server 1',
serverFullName: 'mock database server full name 1',
loginName: 'mock login',
subscriptionId: 'mock_subscription',
subscription: {
id: 'mock_subscription',
name: 'mock_subscription'
},
resourceGroup: 'rg1'
},
{
@@ -85,7 +88,10 @@ const mockDatabases: azureResource.AzureResourceDatabase[] = [
serverName: 'mock database server 2',
serverFullName: 'mock database server full name 2',
loginName: 'mock login',
subscriptionId: 'mock_subscription',
subscription: {
id: 'mock_subscription',
name: 'mock_subscription'
},
resourceGroup: 'rg2'
}
];

View File

@@ -75,7 +75,10 @@ const mockDatabaseServers: azureResource.AzureResourceDatabaseServer[] = [
fullName: 'mock database server full name 1',
loginName: 'mock login',
defaultDatabaseName: 'master',
subscriptionId: 'mock_subscription',
subscription: {
id: 'mock_subscription',
name: 'mock_subscription'
},
resourceGroup: 'rg1'
},
{
@@ -84,7 +87,10 @@ const mockDatabaseServers: azureResource.AzureResourceDatabaseServer[] = [
fullName: 'mock database server full name 2',
loginName: 'mock login',
defaultDatabaseName: 'master',
subscriptionId: 'mock_subscription',
subscription: {
id: 'mock_subscription',
name: 'mock_subscription'
},
resourceGroup: 'rg2'
}
];

View File

@@ -88,7 +88,10 @@ function createContext(): TestContext {
{
name: 'g1',
id: 'g1',
subscriptionId: 's1'
subscription: {
id: 's1',
name: 's1'
}
}
],
workspaces: [{

View File

@@ -42,7 +42,10 @@ const groups: azureResource.AzureResourceResourceGroup[] = [
{
name: 'group',
id: '3',
subscriptionId: 's1'
subscription: {
id: 's1',
name: 's1'
}
}
];
const workspaces: Workspace[] = [

View File

@@ -57,7 +57,10 @@ describe('Azure Models Component', () => {
{
name: 'group',
id: '3',
subscriptionId: 's1'
subscription: {
id: 's1',
name: 's1'
}
}
];
let workspaces: Workspace[] = [

View File

@@ -65,7 +65,10 @@ describe('Predict Wizard', () => {
{
name: 'group',
id: '3',
subscriptionId: 's1'
subscription: {
id: 's1',
name: 's1'
}
}
];
let workspaces: Workspace[] = [
@@ -137,44 +140,44 @@ describe('Predict Wizard', () => {
};
view.on(ListModelsEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListModelsEventName), { inputArgs: args, data: localModels });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListModelsEventName), { inputArgs: args, data: localModels });
});
view.on(ListAccountsEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListAccountsEventName), { inputArgs: args, data: accounts });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListAccountsEventName), { inputArgs: args, data: accounts });
});
view.on(ListSubscriptionsEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListSubscriptionsEventName), { inputArgs: args, data: subscriptions });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListSubscriptionsEventName), { inputArgs: args, data: subscriptions });
});
view.on(ListGroupsEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListGroupsEventName), { inputArgs: args, data: groups });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListGroupsEventName), { inputArgs: args, data: groups });
});
view.on(ListWorkspacesEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListWorkspacesEventName), { inputArgs: args, data: workspaces });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListWorkspacesEventName), { inputArgs: args, data: workspaces });
});
view.on(ListAzureModelsEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListAzureModelsEventName), { inputArgs: args, data: models });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListAzureModelsEventName), { inputArgs: args, data: models });
});
view.on(ListDatabaseNamesEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListDatabaseNamesEventName), { inputArgs: args, data: dbNames });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListDatabaseNamesEventName), { inputArgs: args, data: dbNames });
});
view.on(ListTableNamesEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListTableNamesEventName), { inputArgs: args, data: tableNames });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListTableNamesEventName), { inputArgs: args, data: tableNames });
});
view.on(ListColumnNamesEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListColumnNamesEventName), { inputArgs: args, data: columnNames });
view.sendCallbackRequest(ViewBase.getCallbackEventName(ListColumnNamesEventName), { inputArgs: args, data: columnNames });
});
view.on(LoadModelParametersEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(LoadModelParametersEventName), { inputArgs: args, data: modelParameters });
view.sendCallbackRequest(ViewBase.getCallbackEventName(LoadModelParametersEventName), { inputArgs: args, data: modelParameters });
});
view.on(DownloadAzureModelEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(DownloadAzureModelEventName), { inputArgs: args, data: 'path' });
view.sendCallbackRequest(ViewBase.getCallbackEventName(DownloadAzureModelEventName), { inputArgs: args, data: 'path' });
});
view.on(DownloadRegisteredModelEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(DownloadRegisteredModelEventName), { inputArgs: args, data: 'path' });
view.sendCallbackRequest(ViewBase.getCallbackEventName(DownloadRegisteredModelEventName), { inputArgs: args, data: 'path' });
});
view.on(VerifyImportTableEventName, (args) => {
view.sendCallbackRequest(ViewBase.getCallbackEventName(VerifyImportTableEventName), { inputArgs: args, data: view.importTable });
view.sendCallbackRequest(ViewBase.getCallbackEventName(VerifyImportTableEventName), { inputArgs: args, data: view.importTable });
});
if (view.modelBrowsePage) {
view.modelBrowsePage.modelSourceType = ModelSourceType.Azure;
@@ -202,7 +205,7 @@ describe('Predict Wizard', () => {
await view.columnsSelectionPage?.inputColumnsComponent?.loadWithTable(tableNames[0]);
should.notEqual(view.columnsSelectionPage?.data, undefined, 'Data from column selection component should not be null');
should.equal(view.columnsSelectionPage?.data?.inputColumns?.length, modelParameters.inputs.length, `unexpected number of inputs. ${view.columnsSelectionPage?.data?.inputColumns?.length}` );
should.equal(view.columnsSelectionPage?.data?.inputColumns?.length, modelParameters.inputs.length, `unexpected number of inputs. ${view.columnsSelectionPage?.data?.inputColumns?.length}`);
should.equal(view.columnsSelectionPage?.data?.outputColumns?.length, modelParameters.outputs.length, `unexpected number of outputs. ${view.columnsSelectionPage?.data?.outputColumns?.length}`);
});
});

View File

@@ -41,7 +41,10 @@ let groups: azureResource.AzureResourceResourceGroup[] = [
{
name: 'group',
id: '3',
subscriptionId: 's1'
subscription: {
id: 's1',
name: 's1'
}
}
];
let workspaces: Workspace[] = [

View File

@@ -27,6 +27,8 @@ export class ConnectionProfileGroup extends Disposable implements IConnectionPro
public parentId?: string;
private _isRenamed = false;
public readonly isRoot: boolean = false;
public readonly textColor: string = 'white'; // This value should come from the constructor when issue: https://github.com/microsoft/azuredatastudio/issues/13138 is fixed
public constructor(
public name: string,
public parent?: ConnectionProfileGroup,

View File

@@ -244,7 +244,7 @@ export class ConnectionBrowserView extends Disposable implements IPanelView {
export interface ITreeItemFromProvider {
readonly element: ITreeItem;
readonly treeId?: string;
getChildren?(): Promise<ITreeItemFromProvider[]>
getChildren?(): Promise<ITreeItemFromProvider[]>;
}
export function instanceOfITreeItemFromProvider(obj: any): obj is ITreeItemFromProvider {
@@ -425,7 +425,11 @@ class DataSource implements IAsyncDataSource<TreeModel, TreeElement> {
public get expandableTreeNodes(): TreeElement[] {
return this.treeNodes.filter(node => {
return instanceOfITreeItemFromProvider(node) && node.element.collapsibleState !== TreeItemCollapsibleState.None;
return (node instanceof TreeModel)
|| (node instanceof ConnectionDialogTreeProviderElement)
|| (node instanceof SavedConnectionNode)
|| (node instanceof ConnectionProfileGroup)
|| (instanceOfITreeItemFromProvider(node) && node.element.collapsibleState !== TreeItemCollapsibleState.None);
});
}
@@ -440,11 +444,7 @@ class DataSource implements IAsyncDataSource<TreeModel, TreeElement> {
children = (children as (ConnectionProfile | ConnectionProfileGroup)[]).filter(item => {
return (item instanceof ConnectionProfileGroup) || this._filterRegex.test(item.title);
});
} else if (
!(element instanceof TreeModel) &&
!(element instanceof TreeNode) &&
!(element instanceof ConnectionDialogTreeProviderElement)
) {
} else if (instanceOfITreeItemFromProvider(element)) {
children = (children as ITreeItemFromProvider[]).filter(item => {
return item.element.collapsibleState !== TreeItemCollapsibleState.None || this._filterRegex.test(item.element.label.label);
});

View File

@@ -43,6 +43,7 @@ class ConnectionProfileGroupTemplate extends Disposable {
set(element: ConnectionProfileGroup) {
let rowElement = findParentElement(this._root, 'monaco-list-row');
if (rowElement) {
rowElement.style.color = element.textColor;
if (element.color) {
rowElement.style.background = element.color;
} else {