mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Fixes the 'undefined' in connection tree when capabilities not loaded (#617)
* fixed the bug with loading the connection tree when capabilities not loaded
This commit is contained in:
@@ -41,6 +41,11 @@ export class ConnectionConfig implements IConnectionConfig {
|
|||||||
) {
|
) {
|
||||||
this._providerCapabilitiesMap = {};
|
this._providerCapabilitiesMap = {};
|
||||||
this.setCachedMetadata(cachedMetadata);
|
this.setCachedMetadata(cachedMetadata);
|
||||||
|
if (this._capabilitiesService && this._capabilitiesService.onCapabilitiesReady()) {
|
||||||
|
this._capabilitiesService.onCapabilitiesReady().then(() => {
|
||||||
|
this.setCachedMetadata(this._capabilitiesService.getCapabilities());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public setCachedMetadata(cachedMetadata: data.DataProtocolServerCapabilities[]): void {
|
public setCachedMetadata(cachedMetadata: data.DataProtocolServerCapabilities[]): void {
|
||||||
|
|||||||
@@ -79,9 +79,12 @@ export class ConnectionProfileGroup implements IConnectionProfileGroup {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if all connections in the tree have valid options using the correct capabilities
|
||||||
|
*/
|
||||||
public get hasValidConnections(): boolean {
|
public get hasValidConnections(): boolean {
|
||||||
if (this.connections) {
|
if (this.connections) {
|
||||||
let invalidConnections = this.connections.find(c => c.serverCapabilities === undefined);
|
let invalidConnections = this.connections.find(c => !c.isConnectionOptionsValid);
|
||||||
if (invalidConnections !== undefined) {
|
if (invalidConnections !== undefined) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -104,6 +104,23 @@ export class ProviderConnectionInfo implements data.ConnectionInfo {
|
|||||||
this.options[name] = value;
|
this.options[name] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the title of the connection
|
||||||
|
*/
|
||||||
|
public get title(): string {
|
||||||
|
let databaseName = this.databaseName ? this.databaseName : '<default>';
|
||||||
|
let userName = this.userName ? this.userName : 'Windows Authentication';
|
||||||
|
let label = this.serverName + ', ' + databaseName + ' (' + userName + ')';
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the capabilities and options are loaded correctly
|
||||||
|
*/
|
||||||
|
public get isConnectionOptionsValid(): boolean {
|
||||||
|
return this.serverCapabilities && this.title.indexOf('undefined') < 0;
|
||||||
|
}
|
||||||
|
|
||||||
public isPasswordRequired(): boolean {
|
public isPasswordRequired(): boolean {
|
||||||
let optionMetadata = this._serverCapabilities.connectionProvider.options.find(
|
let optionMetadata = this._serverCapabilities.connectionProvider.options.find(
|
||||||
option => option.specialValueType === ConnectionOptionSpecialType.password);
|
option => option.specialValueType === ConnectionOptionSpecialType.password);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import 'vs/css!sql/media/objectTypes/objecttypes';
|
|||||||
import 'vs/css!sql/media/icons/common-icons';
|
import 'vs/css!sql/media/icons/common-icons';
|
||||||
|
|
||||||
import * as dom from 'vs/base/browser/dom';
|
import * as dom from 'vs/base/browser/dom';
|
||||||
|
import { localize } from 'vs/nls';
|
||||||
import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
@@ -146,9 +147,10 @@ export class ServerTreeRenderer implements IRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let databaseName = connection.databaseName ? connection.databaseName : '<default>';
|
let label = connection.title;
|
||||||
let userName = connection.userName ? connection.userName : "Windows Authentication";
|
if (!connection.isConnectionOptionsValid) {
|
||||||
let label = connection.serverName + ', ' + databaseName + ' (' + userName + ')';
|
label = localize('loading', 'Loading...');
|
||||||
|
}
|
||||||
|
|
||||||
templateData.label.textContent = label;
|
templateData.label.textContent = label;
|
||||||
templateData.root.title = label;
|
templateData.root.title = label;
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ export class ServerTreeView {
|
|||||||
this);
|
this);
|
||||||
this._treeSelectionHandler = this._instantiationService.createInstance(TreeSelectionHandler);
|
this._treeSelectionHandler = this._instantiationService.createInstance(TreeSelectionHandler);
|
||||||
this._onSelectionOrFocusChange = new Emitter();
|
this._onSelectionOrFocusChange = new Emitter();
|
||||||
|
if (this._capabilitiesService) {
|
||||||
|
this._capabilitiesService.onCapabilitiesReady().then(() => {
|
||||||
|
this.refreshTree();
|
||||||
|
this._treeSelectionHandler.onTreeActionStateChange(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -134,23 +140,9 @@ export class ServerTreeView {
|
|||||||
self.refreshTree();
|
self.refreshTree();
|
||||||
let root = <ConnectionProfileGroup>this._tree.getInput();
|
let root = <ConnectionProfileGroup>this._tree.getInput();
|
||||||
if (root && !root.hasValidConnections) {
|
if (root && !root.hasValidConnections) {
|
||||||
|
|
||||||
this._treeSelectionHandler.onTreeActionStateChange(true);
|
this._treeSelectionHandler.onTreeActionStateChange(true);
|
||||||
if (this._capabilitiesService) {
|
|
||||||
this._capabilitiesService.onCapabilitiesReady().then(() => {
|
|
||||||
self.refreshTree();
|
|
||||||
this._treeSelectionHandler.onTreeActionStateChange(false);
|
|
||||||
resolve();
|
resolve();
|
||||||
|
|
||||||
}, error => {
|
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
self.refreshTree();
|
|
||||||
resolve();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user