diff --git a/extensions/azurecore/src/azureResource/azure-resource.d.ts b/extensions/azurecore/src/azureResource/azure-resource.d.ts index 8551a27044..75d3178138 100644 --- a/extensions/azurecore/src/azureResource/azure-resource.d.ts +++ b/extensions/azurecore/src/azureResource/azure-resource.d.ts @@ -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 { + export interface AzureResourceSubscription extends Omit { } export interface AzureSqlResource extends AzureResource { loginName: string; } - export interface AzureGraphResource extends Omit { + export interface AzureGraphResource extends Omit { tenantId: string; + subscriptionId: string; type: string; location: string; } diff --git a/extensions/azurecore/src/azureResource/providers/database/databaseService.ts b/extensions/azurecore/src/azureResource/providers/database/databaseService.ts index ff6fbf5f72..e5dd34c367 100644 --- a/extensions/azurecore/src/azureResource/providers/database/databaseService.ts +++ b/extensions/azurecore/src/azureResource/providers/database/databaseService.ts @@ -51,7 +51,10 @@ export class AzureResourceDatabaseService implements IAzureResourceService sub.id === db.subscriptionId))?.name + }, tenant: db.tenantId, resourceGroup: db.resourceGroup }); diff --git a/extensions/azurecore/src/azureResource/providers/database/databaseTreeDataProvider.ts b/extensions/azurecore/src/azureResource/providers/database/databaseTreeDataProvider.ts index 1693d37bc7..45db0445c6 100644 --- a/extensions/azurecore/src/azureResource/providers/database/databaseTreeDataProvider.ts +++ b/extensions/azurecore/src/azureResource/providers/database/databaseTreeDataProvider.ts @@ -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('dialog.browse') ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed, + collapsibleState: isConnectionDialogBrowseViewEnabled() ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed, contextValue: AzureResourceItemType.database, payload: { id: generateGuid(), diff --git a/extensions/azurecore/src/azureResource/providers/databaseServer/databaseServerService.ts b/extensions/azurecore/src/azureResource/providers/databaseServer/databaseServerService.ts index 9b367eb35f..005b002220 100644 --- a/extensions/azurecore/src/azureResource/providers/databaseServer/databaseServerService.ts +++ b/extensions/azurecore/src/azureResource/providers/databaseServer/databaseServerService.ts @@ -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('dialog.browse') ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed, + collapsibleState: isConnectionDialogBrowseViewEnabled() ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed, contextValue: AzureResourceItemType.databaseServer, payload: { id: generateGuid(), diff --git a/extensions/azurecore/src/azureResource/providers/kusto/kustoService.ts b/extensions/azurecore/src/azureResource/providers/kusto/kustoService.ts index 0ffe1d20b6..b95ed6edfd 100644 --- a/extensions/azurecore/src/azureResource/providers/kusto/kustoService.ts +++ b/extensions/azurecore/src/azureResource/providers/kusto/kustoService.ts @@ -29,7 +29,10 @@ export class KustoResourceService extends ResourceServiceBase { 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, @@ -29,12 +29,12 @@ export class KustoTreeDataProvider extends ResourceTreeDataProviderBase('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, + collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, contextValue: AzureResourceItemType.azureDataExplorer, payload: { id: generateGuid(), diff --git a/extensions/azurecore/src/azureResource/providers/postgresArcServer/postgresServerService.ts b/extensions/azurecore/src/azureResource/providers/postgresArcServer/postgresServerService.ts index 79a4b710bb..3b215afbb8 100644 --- a/extensions/azurecore/src/azureResource/providers/postgresArcServer/postgresServerService.ts +++ b/extensions/azurecore/src/azureResource/providers/postgresArcServer/postgresServerService.ts @@ -27,7 +27,10 @@ export class PostgresServerArcService extends ResourceServiceBase('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, + collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, contextValue: AzureResourceItemType.databaseServer, payload: { id: generateGuid(), diff --git a/extensions/azurecore/src/azureResource/providers/postgresServer/postgresServerService.ts b/extensions/azurecore/src/azureResource/providers/postgresServer/postgresServerService.ts index 9b586aba39..dbecdcfd94 100644 --- a/extensions/azurecore/src/azureResource/providers/postgresServer/postgresServerService.ts +++ b/extensions/azurecore/src/azureResource/providers/postgresServer/postgresServerService.ts @@ -30,7 +30,10 @@ export class PostgresServerService extends ResourceServiceBase('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, + collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, contextValue: AzureResourceItemType.databaseServer, payload: { id: generateGuid(), diff --git a/extensions/azurecore/src/azureResource/providers/resourceGroup/resourceGroupService.ts b/extensions/azurecore/src/azureResource/providers/resourceGroup/resourceGroupService.ts index c1d2ebd245..a285080bc1 100644 --- a/extensions/azurecore/src/azureResource/providers/resourceGroup/resourceGroupService.ts +++ b/extensions/azurecore/src/azureResource/providers/resourceGroup/resourceGroupService.ts @@ -17,7 +17,10 @@ export class AzureResourceGroupService extends ResourceServiceBase { const convertedResources: U[] = []; const resourceClient = new ResourceGraphClient(credential, { baseUri: account.properties.providerSettings.settings.armResource.endpoint }); - let graphResources = await queryGraphResources(resourceClient, subscriptions, this.query); - let ids = new Set(); + const graphResources = await queryGraphResources(resourceClient, subscriptions, this.query); + const ids = new Set(); 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); } }); diff --git a/extensions/azurecore/src/azureResource/providers/sqlinstance/sqlInstanceService.ts b/extensions/azurecore/src/azureResource/providers/sqlinstance/sqlInstanceService.ts index 3e5ffa3d11..99af435b08 100644 --- a/extensions/azurecore/src/azureResource/providers/sqlinstance/sqlInstanceService.ts +++ b/extensions/azurecore/src/azureResource/providers/sqlinstance/sqlInstanceService.ts @@ -28,7 +28,10 @@ export class SqlInstanceResourceService extends ResourceServiceBase('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, + collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, contextValue: AzureResourceItemType.databaseServer, payload: { id: generateGuid(), diff --git a/extensions/azurecore/src/azureResource/providers/sqlinstanceArc/sqlInstanceArcService.ts b/extensions/azurecore/src/azureResource/providers/sqlinstanceArc/sqlInstanceArcService.ts index 8bc2eaf5d1..e7c2b4182a 100644 --- a/extensions/azurecore/src/azureResource/providers/sqlinstanceArc/sqlInstanceArcService.ts +++ b/extensions/azurecore/src/azureResource/providers/sqlinstanceArc/sqlInstanceArcService.ts @@ -27,7 +27,10 @@ export class SqlInstanceArcResourceService extends ResourceServiceBase('dialog.browse') ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, + collapsibleState: isConnectionDialogBrowseViewEnabled() ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, contextValue: AzureResourceItemType.databaseServer, payload: { id: generateGuid(), diff --git a/extensions/azurecore/src/azureResource/utils.ts b/extensions/azurecore/src/azureResource/utils.ts index 0f31689055..71997b9760 100644 --- a/extensions/azurecore/src/azureResource/utils.ts +++ b/extensions/azurecore/src/azureResource/utils.ts @@ -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('dialog.browse'); +} diff --git a/extensions/azurecore/src/test/azureResource/providers/database/databaseTreeDataProvider.test.ts b/extensions/azurecore/src/test/azureResource/providers/database/databaseTreeDataProvider.test.ts index 40a598bb09..66f3b172ed 100644 --- a/extensions/azurecore/src/test/azureResource/providers/database/databaseTreeDataProvider.test.ts +++ b/extensions/azurecore/src/test/azureResource/providers/database/databaseTreeDataProvider.test.ts @@ -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' } ]; diff --git a/extensions/azurecore/src/test/azureResource/providers/databaseServer/databaseServerTreeDataProvider.test.ts b/extensions/azurecore/src/test/azureResource/providers/databaseServer/databaseServerTreeDataProvider.test.ts index 5e52dff0c6..0a3b499d6e 100644 --- a/extensions/azurecore/src/test/azureResource/providers/databaseServer/databaseServerTreeDataProvider.test.ts +++ b/extensions/azurecore/src/test/azureResource/providers/databaseServer/databaseServerTreeDataProvider.test.ts @@ -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' } ]; diff --git a/extensions/machine-learning/src/test/modelManagement/azureModelRegistryService.test.ts b/extensions/machine-learning/src/test/modelManagement/azureModelRegistryService.test.ts index ed1fa6bf45..03374d03d0 100644 --- a/extensions/machine-learning/src/test/modelManagement/azureModelRegistryService.test.ts +++ b/extensions/machine-learning/src/test/modelManagement/azureModelRegistryService.test.ts @@ -88,7 +88,10 @@ function createContext(): TestContext { { name: 'g1', id: 'g1', - subscriptionId: 's1' + subscription: { + id: 's1', + name: 's1' + } } ], workspaces: [{ diff --git a/extensions/machine-learning/src/test/views/models/ModelManagementController.test.ts b/extensions/machine-learning/src/test/views/models/ModelManagementController.test.ts index 621ecbee23..47bc61f6ba 100644 --- a/extensions/machine-learning/src/test/views/models/ModelManagementController.test.ts +++ b/extensions/machine-learning/src/test/views/models/ModelManagementController.test.ts @@ -42,7 +42,10 @@ const groups: azureResource.AzureResourceResourceGroup[] = [ { name: 'group', id: '3', - subscriptionId: 's1' + subscription: { + id: 's1', + name: 's1' + } } ]; const workspaces: Workspace[] = [ diff --git a/extensions/machine-learning/src/test/views/models/azureModelsComponent.test.ts b/extensions/machine-learning/src/test/views/models/azureModelsComponent.test.ts index c33a272b76..1829aa038a 100644 --- a/extensions/machine-learning/src/test/views/models/azureModelsComponent.test.ts +++ b/extensions/machine-learning/src/test/views/models/azureModelsComponent.test.ts @@ -57,7 +57,10 @@ describe('Azure Models Component', () => { { name: 'group', id: '3', - subscriptionId: 's1' + subscription: { + id: 's1', + name: 's1' + } } ]; let workspaces: Workspace[] = [ diff --git a/extensions/machine-learning/src/test/views/models/predictWizard.test.ts b/extensions/machine-learning/src/test/views/models/predictWizard.test.ts index c3b683f220..d5f0ca7f7c 100644 --- a/extensions/machine-learning/src/test/views/models/predictWizard.test.ts +++ b/extensions/machine-learning/src/test/views/models/predictWizard.test.ts @@ -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}`); }); }); diff --git a/extensions/machine-learning/src/test/views/models/registerModelWizard.test.ts b/extensions/machine-learning/src/test/views/models/registerModelWizard.test.ts index 485a64b473..ac58d0328f 100644 --- a/extensions/machine-learning/src/test/views/models/registerModelWizard.test.ts +++ b/extensions/machine-learning/src/test/views/models/registerModelWizard.test.ts @@ -41,7 +41,10 @@ let groups: azureResource.AzureResourceResourceGroup[] = [ { name: 'group', id: '3', - subscriptionId: 's1' + subscription: { + id: 's1', + name: 's1' + } } ]; let workspaces: Workspace[] = [ diff --git a/src/sql/platform/connection/common/connectionProfileGroup.ts b/src/sql/platform/connection/common/connectionProfileGroup.ts index 38a38b9b08..b0c3aa6ca9 100644 --- a/src/sql/platform/connection/common/connectionProfileGroup.ts +++ b/src/sql/platform/connection/common/connectionProfileGroup.ts @@ -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, diff --git a/src/sql/workbench/services/connection/browser/connectionBrowseTab.ts b/src/sql/workbench/services/connection/browser/connectionBrowseTab.ts index 511248ecdf..3382213d6e 100644 --- a/src/sql/workbench/services/connection/browser/connectionBrowseTab.ts +++ b/src/sql/workbench/services/connection/browser/connectionBrowseTab.ts @@ -244,7 +244,7 @@ export class ConnectionBrowserView extends Disposable implements IPanelView { export interface ITreeItemFromProvider { readonly element: ITreeItem; readonly treeId?: string; - getChildren?(): Promise + getChildren?(): Promise; } export function instanceOfITreeItemFromProvider(obj: any): obj is ITreeItemFromProvider { @@ -425,7 +425,11 @@ class DataSource implements IAsyncDataSource { 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 { 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); }); diff --git a/src/sql/workbench/services/objectExplorer/browser/asyncServerTreeRenderer.ts b/src/sql/workbench/services/objectExplorer/browser/asyncServerTreeRenderer.ts index e5059236fc..3323fea06e 100644 --- a/src/sql/workbench/services/objectExplorer/browser/asyncServerTreeRenderer.ts +++ b/src/sql/workbench/services/objectExplorer/browser/asyncServerTreeRenderer.ts @@ -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 {