Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3545483fc1 | ||
|
|
e5a1896414 | ||
|
|
bec8e72688 | ||
|
|
86748e6d69 | ||
|
|
596f09f754 | ||
|
|
563e25f073 | ||
|
|
1800d0baaf | ||
|
|
2182658301 | ||
|
|
3990719054 | ||
|
|
071b510fba | ||
|
|
d2d2ade9f7 | ||
|
|
d97d2e5c91 | ||
|
|
a6ba44e435 | ||
|
|
4967e630fb | ||
|
|
2508464fde | ||
|
|
782623cba9 | ||
|
|
36045c5381 |
@@ -2,7 +2,7 @@
|
|||||||
"name": "agent",
|
"name": "agent",
|
||||||
"displayName": "SQL Server Agent",
|
"displayName": "SQL Server Agent",
|
||||||
"description": "Manage and troubleshoot SQL Server Agent jobs (early preview)",
|
"description": "Manage and troubleshoot SQL Server Agent jobs (early preview)",
|
||||||
"version": "0.27.1",
|
"version": "0.28.0",
|
||||||
"publisher": "Microsoft",
|
"publisher": "Microsoft",
|
||||||
"preview": true,
|
"preview": true,
|
||||||
"license": "https://raw.githubusercontent.com/Microsoft/sqlopsstudio/master/LICENSE.txt",
|
"license": "https://raw.githubusercontent.com/Microsoft/sqlopsstudio/master/LICENSE.txt",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
|
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
|
||||||
"version": "1.4.0-alpha.18",
|
"version": "1.4.0-alpha.19",
|
||||||
"downloadFileNames": {
|
"downloadFileNames": {
|
||||||
"Windows_86": "win-x86-netcoreapp2.0.zip",
|
"Windows_86": "win-x86-netcoreapp2.0.zip",
|
||||||
"Windows_64": "win-x64-netcoreapp2.0.zip",
|
"Windows_64": "win-x64-netcoreapp2.0.zip",
|
||||||
|
|||||||
@@ -9,3 +9,5 @@ export const providerId = 'MSSQL';
|
|||||||
export const serviceCrashMessage = 'SQL Tools Service component exited unexpectedly. Please restart SQL Operations Studio.';
|
export const serviceCrashMessage = 'SQL Tools Service component exited unexpectedly. Please restart SQL Operations Studio.';
|
||||||
export const serviceCrashButton = 'View Known Issues';
|
export const serviceCrashButton = 'View Known Issues';
|
||||||
export const serviceCrashLink = 'https://github.com/Microsoft/vscode-mssql/wiki/SqlToolsService-Known-Issues';
|
export const serviceCrashLink = 'https://github.com/Microsoft/vscode-mssql/wiki/SqlToolsService-Known-Issues';
|
||||||
|
export const configLogDebugInfo = 'logDebugInfo';
|
||||||
|
export const extensionConfigSectionName = 'mssql';
|
||||||
@@ -16,7 +16,7 @@ import { CredentialStore } from './credentialstore/credentialstore';
|
|||||||
import { AzureResourceProvider } from './resourceProvider/resourceProvider';
|
import { AzureResourceProvider } from './resourceProvider/resourceProvider';
|
||||||
import * as Utils from './utils';
|
import * as Utils from './utils';
|
||||||
import { Telemetry, LanguageClientErrorHandler } from './telemetry';
|
import { Telemetry, LanguageClientErrorHandler } from './telemetry';
|
||||||
import { TelemetryFeature } from './features';
|
import { TelemetryFeature, AgentServicesFeature } from './features';
|
||||||
|
|
||||||
const baseConfig = require('./config.json');
|
const baseConfig = require('./config.json');
|
||||||
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
||||||
@@ -47,15 +47,17 @@ export async function activate(context: vscode.ExtensionContext) {
|
|||||||
let clientOptions: ClientOptions = {
|
let clientOptions: ClientOptions = {
|
||||||
documentSelector: ['sql'],
|
documentSelector: ['sql'],
|
||||||
synchronize: {
|
synchronize: {
|
||||||
configurationSection: 'mssql'
|
configurationSection: Constants.extensionConfigSectionName
|
||||||
},
|
},
|
||||||
providerId: Constants.providerId,
|
providerId: Constants.providerId,
|
||||||
errorHandler: new LanguageClientErrorHandler(),
|
errorHandler: new LanguageClientErrorHandler(),
|
||||||
features: [
|
features: [
|
||||||
// we only want to add new features
|
// we only want to add new features
|
||||||
...SqlOpsDataClient.defaultFeatures,
|
...SqlOpsDataClient.defaultFeatures,
|
||||||
TelemetryFeature
|
TelemetryFeature,
|
||||||
]
|
AgentServicesFeature
|
||||||
|
],
|
||||||
|
outputChannel: new CustomOutputChannel()
|
||||||
};
|
};
|
||||||
|
|
||||||
const installationStart = Date.now();
|
const installationStart = Date.now();
|
||||||
@@ -99,6 +101,13 @@ function generateServerOptions(executablePath: string): ServerOptions {
|
|||||||
launchArgs.push('--log-dir');
|
launchArgs.push('--log-dir');
|
||||||
let logFileLocation = path.join(Utils.getDefaultLogLocation(), 'mssql');
|
let logFileLocation = path.join(Utils.getDefaultLogLocation(), 'mssql');
|
||||||
launchArgs.push(logFileLocation);
|
launchArgs.push(logFileLocation);
|
||||||
|
let config = vscode.workspace.getConfiguration(Constants.extensionConfigSectionName);
|
||||||
|
if (config) {
|
||||||
|
let logDebugInfo = config[Constants.configLogDebugInfo];
|
||||||
|
if (logDebugInfo) {
|
||||||
|
launchArgs.push('--enable-logging');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return { command: executablePath, args: launchArgs, transport: TransportKind.stdio };
|
return { command: executablePath, args: launchArgs, transport: TransportKind.stdio };
|
||||||
}
|
}
|
||||||
@@ -138,3 +147,23 @@ function generateHandleServerProviderEvent() {
|
|||||||
// this method is called when your extension is deactivated
|
// this method is called when your extension is deactivated
|
||||||
export function deactivate(): void {
|
export function deactivate(): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CustomOutputChannel implements vscode.OutputChannel {
|
||||||
|
name: string;
|
||||||
|
append(value: string): void {
|
||||||
|
console.log(value);
|
||||||
|
}
|
||||||
|
appendLine(value: string): void {
|
||||||
|
console.log(value);
|
||||||
|
}
|
||||||
|
clear(): void {
|
||||||
|
}
|
||||||
|
show(preserveFocus?: boolean): void;
|
||||||
|
show(column?: vscode.ViewColumn, preserveFocus?: boolean): void;
|
||||||
|
show(column?: any, preserveFocus?: any) {
|
||||||
|
}
|
||||||
|
hide(): void {
|
||||||
|
}
|
||||||
|
dispose(): void {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
// "button.disabledForeground": "#888888" ,
|
// "button.disabledForeground": "#888888" ,
|
||||||
|
|
||||||
//Dropdown Control
|
//Dropdown Control
|
||||||
"dropdown.background": "#333333",
|
"dropdown.background": "#212121",
|
||||||
"dropdown.foreground": "#fffffe",
|
"dropdown.foreground": "#fffffe",
|
||||||
"dropdown.border": "#888888",
|
"dropdown.border": "#888888",
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
"panel.background": "#212121",
|
"panel.background": "#212121",
|
||||||
"panel.border": "#515151",
|
"panel.border": "#515151",
|
||||||
"panelTitle.activeForeground": "#ffffff",
|
"panelTitle.activeForeground": "#ffffff",
|
||||||
"panelTitle.inactiveForeground": "#888888"
|
"panelTitle.inactiveForeground": "#888888"
|
||||||
},
|
},
|
||||||
"tokenColors": [
|
"tokenColors": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
// "button.disabledForeground": "#888888",
|
// "button.disabledForeground": "#888888",
|
||||||
|
|
||||||
//Dropdown Control
|
//Dropdown Control
|
||||||
"dropdown.background": "#EAEAEA00",
|
"dropdown.background": "#fffffe",
|
||||||
"dropdown.foreground": "#4a4a4a",
|
"dropdown.foreground": "#4a4a4a",
|
||||||
"dropdown.border": "#C8C8C8",
|
"dropdown.border": "#C8C8C8",
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sqlops",
|
"name": "sqlops",
|
||||||
"version": "0.28.1",
|
"version": "0.28.2",
|
||||||
"distro": "8c3e97e3425cc9814496472ab73e076de2ba99ee",
|
"distro": "8c3e97e3425cc9814496472ab73e076de2ba99ee",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Microsoft Corporation"
|
"name": "Microsoft Corporation"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
|||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
import { Registry } from 'vs/platform/registry/common/platform';
|
||||||
import { DashboardEditor } from 'sql/parts/dashboard/dashboardEditor';
|
import { DashboardEditor } from 'sql/parts/dashboard/dashboardEditor';
|
||||||
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
|
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
|
||||||
import { AddServerGroupAction, AddServerAction } from 'sql/parts/registeredServer/viewlet/connectionTreeAction';
|
import { AddServerGroupAction, AddServerAction } from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
|
||||||
import { ClearRecentConnectionsAction } from 'sql/parts/connection/common/connectionActions';
|
import { ClearRecentConnectionsAction } from 'sql/parts/connection/common/connectionActions';
|
||||||
|
|
||||||
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/node/extensionGalleryService';
|
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/node/extensionGalleryService';
|
||||||
|
|||||||
@@ -12,58 +12,94 @@ import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
|||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { INotificationService, INotificationActions } from 'vs/platform/notification/common/notification';
|
import { INotificationService, INotificationActions } from 'vs/platform/notification/common/notification';
|
||||||
import Severity from 'vs/base/common/severity';
|
import Severity from 'vs/base/common/severity';
|
||||||
|
import { IConfirmationService, IChoiceService, IConfirmation, IConfirmationResult, Choice } from 'vs/platform/dialogs/common/dialogs';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Workbench action to clear the recent connnections list
|
* Workbench action to clear the recent connnections list
|
||||||
*/
|
*/
|
||||||
export class ClearRecentConnectionsAction extends Action {
|
export class ClearRecentConnectionsAction extends Action {
|
||||||
|
|
||||||
public static ID = 'clearRecentConnectionsAction';
|
public static ID = 'clearRecentConnectionsAction';
|
||||||
public static LABEL = nls.localize('ClearRecentlyUsedLabel', 'Clear Recent Connections List');
|
public static LABEL = nls.localize('ClearRecentlyUsedLabel', 'Clear Recent Connections List');
|
||||||
|
public static ICON = 'search-action clear-search-results';
|
||||||
|
|
||||||
constructor(
|
private _onRecentConnectionsRemoved = new Emitter<void>();
|
||||||
id: string,
|
public onRecentConnectionsRemoved: Event<void> = this._onRecentConnectionsRemoved.event;
|
||||||
label: string,
|
|
||||||
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService,
|
|
||||||
@INotificationService private _notificationService: INotificationService,
|
|
||||||
@IQuickOpenService private _quickOpenService: IQuickOpenService
|
|
||||||
) {
|
|
||||||
super(id, label);
|
|
||||||
this.enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public run(): TPromise<void> {
|
private _useConfirmationMessage = false;
|
||||||
let self = this;
|
|
||||||
return self.promptToClearRecentConnectionsList().then(result => {
|
constructor(
|
||||||
|
id: string,
|
||||||
|
label: string,
|
||||||
|
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService,
|
||||||
|
@INotificationService private _notificationService: INotificationService,
|
||||||
|
@IQuickOpenService private _quickOpenService: IQuickOpenService,
|
||||||
|
@IConfirmationService private _confirmationService: IConfirmationService,
|
||||||
|
) {
|
||||||
|
super(id, label, ClearRecentConnectionsAction.ICON);
|
||||||
|
this.enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public set useConfirmationMessage(value: boolean) {
|
||||||
|
this._useConfirmationMessage = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public run(): TPromise<void> {
|
||||||
|
if (this._useConfirmationMessage) {
|
||||||
|
return this.promptConfirmationMessage().then(result => {
|
||||||
if (result) {
|
if (result) {
|
||||||
self._connectionManagementService.clearRecentConnectionsList();
|
this._connectionManagementService.clearRecentConnectionsList();
|
||||||
|
this._onRecentConnectionsRemoved.fire();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return this.promptQuickOpenService().then(result => {
|
||||||
|
if (result) {
|
||||||
|
this._connectionManagementService.clearRecentConnectionsList();
|
||||||
|
|
||||||
const actions: INotificationActions = { primary: [ ] };
|
const actions: INotificationActions = { primary: [] };
|
||||||
self._notificationService.notify({
|
this._notificationService.notify({
|
||||||
severity: Severity.Info,
|
severity: Severity.Info,
|
||||||
message: nls.localize('ClearedRecentConnections', 'Recent connections list cleared'),
|
message: nls.localize('ClearedRecentConnections', 'Recent connections list cleared'),
|
||||||
actions
|
actions
|
||||||
});
|
});
|
||||||
|
this._onRecentConnectionsRemoved.fire();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private promptToClearRecentConnectionsList(): TPromise<boolean> {
|
|
||||||
const self = this;
|
|
||||||
return new TPromise<boolean>((resolve, reject) => {
|
|
||||||
let choices: { key, value }[] = [
|
|
||||||
{ key: nls.localize('connectionAction.yes', 'Yes'), value: true },
|
|
||||||
{ key: nls.localize('connectionAction.no', 'No'), value: false }
|
|
||||||
];
|
|
||||||
|
|
||||||
self._quickOpenService.pick(choices.map(x => x.key), { placeHolder: nls.localize('ClearRecentlyUsedLabel', 'Clear Recent Connections List'), ignoreFocusLost: true }).then((choice) => {
|
|
||||||
let confirm = choices.find(x => x.key === choice);
|
|
||||||
resolve(confirm && confirm.value);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private promptQuickOpenService(): TPromise<boolean> {
|
||||||
|
const self = this;
|
||||||
|
return new TPromise<boolean>((resolve, reject) => {
|
||||||
|
let choices: { key, value }[] = [
|
||||||
|
{ key: nls.localize('connectionAction.yes', 'Yes'), value: true },
|
||||||
|
{ key: nls.localize('connectionAction.no', 'No'), value: false }
|
||||||
|
];
|
||||||
|
|
||||||
|
self._quickOpenService.pick(choices.map(x => x.key), { placeHolder: nls.localize('ClearRecentlyUsedLabel', 'Clear Recent Connections List'), ignoreFocusLost: true }).then((choice) => {
|
||||||
|
let confirm = choices.find(x => x.key === choice);
|
||||||
|
resolve(confirm && confirm.value);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private promptConfirmationMessage(): TPromise<boolean> {
|
||||||
|
let confirm: IConfirmation = {
|
||||||
|
message: nls.localize('clearRecentConnectionMessage', 'Are you sure you want to delete all the connections from the list?'),
|
||||||
|
primaryButton: nls.localize('connectionDialog.yes', 'Yes'),
|
||||||
|
secondaryButton: nls.localize('connectionDialog.no', 'No'),
|
||||||
|
type: 'question'
|
||||||
|
};
|
||||||
|
|
||||||
|
return new TPromise<boolean>((resolve, reject) => {
|
||||||
|
this._confirmationService.confirm(confirm).then((confirmed) => {
|
||||||
|
resolve(confirmed);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action to delete one recently used connection from the MRU
|
* Action to delete one recently used connection from the MRU
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { IEditorGroupService } from 'vs/workbench/services/group/common/groupSer
|
|||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
|
|
||||||
// Connection status bar showing the current global connection
|
// Connection status bar showing the current global connection
|
||||||
|
|||||||
@@ -11,13 +11,14 @@ import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
|||||||
import { Modal } from 'sql/base/browser/ui/modal/modal';
|
import { Modal } from 'sql/base/browser/ui/modal/modal';
|
||||||
import { IConnectionManagementService, INewConnectionParams } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, INewConnectionParams } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import * as DialogHelper from 'sql/base/browser/ui/modal/dialogHelper';
|
import * as DialogHelper from 'sql/base/browser/ui/modal/dialogHelper';
|
||||||
import { TreeCreationUtils } from 'sql/parts/registeredServer/viewlet/treeCreationUtils';
|
import { TreeCreationUtils } from 'sql/parts/objectExplorer/viewlet/treeCreationUtils';
|
||||||
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
|
import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { TabbedPanel, PanelTabIdentifier } from 'sql/base/browser/ui/panel/panel';
|
import { TabbedPanel, PanelTabIdentifier } from 'sql/base/browser/ui/panel/panel';
|
||||||
import { RecentConnectionTreeController, RecentConnectionActionsProvider } from 'sql/parts/connection/connectionDialog/recentConnectionTreeController';
|
import { RecentConnectionTreeController, RecentConnectionActionsProvider } from 'sql/parts/connection/connectionDialog/recentConnectionTreeController';
|
||||||
import { SavedConnectionTreeController } from 'sql/parts/connection/connectionDialog/savedConnectionTreeController';
|
import { SavedConnectionTreeController } from 'sql/parts/connection/connectionDialog/savedConnectionTreeController';
|
||||||
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
||||||
|
import { ClearRecentConnectionsAction } from 'sql/parts/connection/common/connectionActions';
|
||||||
|
|
||||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
import { IWorkbenchThemeService, IColorTheme } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
import { IWorkbenchThemeService, IColorTheme } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
||||||
@@ -32,11 +33,11 @@ import { localize } from 'vs/nls';
|
|||||||
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
||||||
import { IContextMenuService, IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
import { IContextMenuService, IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { IConfirmationService, IChoiceService, IConfirmation, IConfirmationResult, Choice } from 'vs/platform/dialogs/common/dialogs';
|
|
||||||
import * as styler from 'vs/platform/theme/common/styler';
|
import * as styler from 'vs/platform/theme/common/styler';
|
||||||
import { TPromise } from 'vs/base/common/winjs.base';
|
import { TPromise } from 'vs/base/common/winjs.base';
|
||||||
import * as DOM from 'vs/base/browser/dom';
|
import * as DOM from 'vs/base/browser/dom';
|
||||||
import { DialogService } from 'vs/workbench/services/dialogs/electron-browser/dialogs';
|
import { DialogService } from 'vs/workbench/services/dialogs/electron-browser/dialogs';
|
||||||
|
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
||||||
|
|
||||||
export interface OnShowUIResponse {
|
export interface OnShowUIResponse {
|
||||||
selectedProviderType: string;
|
selectedProviderType: string;
|
||||||
@@ -58,6 +59,7 @@ export class ConnectionDialogWidget extends Modal {
|
|||||||
private _savedConnectionTree: ITree;
|
private _savedConnectionTree: ITree;
|
||||||
private $connectionUIContainer: Builder;
|
private $connectionUIContainer: Builder;
|
||||||
private _databaseDropdownExpanded: boolean;
|
private _databaseDropdownExpanded: boolean;
|
||||||
|
private _actionbar: ActionBar;
|
||||||
|
|
||||||
private _panel: TabbedPanel;
|
private _panel: TabbedPanel;
|
||||||
private _recentConnectionTabId: PanelTabIdentifier;
|
private _recentConnectionTabId: PanelTabIdentifier;
|
||||||
@@ -90,7 +92,6 @@ export class ConnectionDialogWidget extends Modal {
|
|||||||
@ITelemetryService telemetryService: ITelemetryService,
|
@ITelemetryService telemetryService: ITelemetryService,
|
||||||
@IContextKeyService contextKeyService: IContextKeyService,
|
@IContextKeyService contextKeyService: IContextKeyService,
|
||||||
@IContextMenuService private _contextMenuService: IContextMenuService,
|
@IContextMenuService private _contextMenuService: IContextMenuService,
|
||||||
@IConfirmationService private _confirmationService: IConfirmationService,
|
|
||||||
@IContextViewService private _contextViewService: IContextViewService
|
@IContextViewService private _contextViewService: IContextViewService
|
||||||
) {
|
) {
|
||||||
super(localize('connection', 'Connection'), TelemetryKeys.Connection, _partService, telemetryService, contextKeyService, { hasSpinner: true, hasErrors: true });
|
super(localize('connection', 'Connection'), TelemetryKeys.Connection, _partService, telemetryService, contextKeyService, { hasSpinner: true, hasErrors: true });
|
||||||
@@ -257,26 +258,6 @@ export class ConnectionDialogWidget extends Modal {
|
|||||||
this.hide();
|
this.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
private clearRecentConnectionList(): TPromise<boolean> {
|
|
||||||
|
|
||||||
let confirm: IConfirmation = {
|
|
||||||
message: localize('clearRecentConnectionMessage', 'Are you sure you want to delete all the connections from the list?'),
|
|
||||||
primaryButton: localize('connectionDialog.yes', 'Yes'),
|
|
||||||
secondaryButton: localize('connectionDialog.no', 'No'),
|
|
||||||
type: 'question'
|
|
||||||
};
|
|
||||||
|
|
||||||
return new TPromise<boolean>((resolve, reject) => {
|
|
||||||
this._confirmationService.confirm(confirm).then((confirmed) => {
|
|
||||||
if (confirmed) {
|
|
||||||
this._connectionManagementService.clearRecentConnectionsList();
|
|
||||||
this.open(false);
|
|
||||||
}
|
|
||||||
resolve(confirmed);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private createRecentConnectionList(): void {
|
private createRecentConnectionList(): void {
|
||||||
this._recentConnectionBuilder.div({ class: 'connection-recent-content' }, (recentConnectionContainer) => {
|
this._recentConnectionBuilder.div({ class: 'connection-recent-content' }, (recentConnectionContainer) => {
|
||||||
let recentHistoryLabel = localize('recentHistory', 'Recent history');
|
let recentHistoryLabel = localize('recentHistory', 'Recent history');
|
||||||
@@ -284,8 +265,12 @@ export class ConnectionDialogWidget extends Modal {
|
|||||||
container.div({ class: 'connection-history-label' }, (recentTitle) => {
|
container.div({ class: 'connection-history-label' }, (recentTitle) => {
|
||||||
recentTitle.innerHtml(recentHistoryLabel);
|
recentTitle.innerHtml(recentHistoryLabel);
|
||||||
});
|
});
|
||||||
container.div({ class: 'search-action clear-search-results' }, (clearSearchIcon) => {
|
container.div({ class: 'connection-history-actions' }, (actionsContainer) => {
|
||||||
clearSearchIcon.on('click', () => this.clearRecentConnectionList());
|
this._actionbar = this._register(new ActionBar(actionsContainer, { animated: false }));
|
||||||
|
let clearAction = this._instantiationService.createInstance(ClearRecentConnectionsAction, ClearRecentConnectionsAction.ID, ClearRecentConnectionsAction.LABEL);
|
||||||
|
clearAction.useConfirmationMessage = true;
|
||||||
|
clearAction.onRecentConnectionsRemoved(() => this.open(false));
|
||||||
|
this._actionbar.push(clearAction, { icon: true, label: false });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
recentConnectionContainer.div({ class: 'server-explorer-viewlet' }, (divContainer: Builder) => {
|
recentConnectionContainer.div({ class: 'server-explorer-viewlet' }, (divContainer: Builder) => {
|
||||||
|
|||||||
@@ -343,6 +343,12 @@ export class ConnectionWidget {
|
|||||||
public focusOnOpen(): void {
|
public focusOnOpen(): void {
|
||||||
this._serverNameInputBox.focus();
|
this._serverNameInputBox.focus();
|
||||||
this.focusPasswordIfNeeded();
|
this.focusPasswordIfNeeded();
|
||||||
|
this.clearValidationMessages();
|
||||||
|
}
|
||||||
|
|
||||||
|
private clearValidationMessages(): void {
|
||||||
|
this._serverNameInputBox.hideMessage();
|
||||||
|
this._userNameInputBox.hideMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
private getModelValue(value: string): string {
|
private getModelValue(value: string): string {
|
||||||
|
|||||||
@@ -69,15 +69,21 @@
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.connection-dialog .connection-history-actions .action-label.icon {
|
||||||
|
display: block;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
min-width: 20px;
|
||||||
|
background-size: 16px;
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
.search-action.clear-search-results {
|
.search-action.clear-search-results {
|
||||||
background: url('clear-search-results.svg') center right no-repeat;
|
background: url('clear-search-results.svg');
|
||||||
width: 10%;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.vs-dark .search-action.clear-search-results,
|
.vs-dark .search-action.clear-search-results,
|
||||||
.hc-black .search-action.clear-search-results {
|
.hc-black .search-action.clear-search-results {
|
||||||
background: url('clear-search-results-dark.svg') center right no-repeat;
|
background: url('clear-search-results-dark.svg');
|
||||||
width: 10%;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
|||||||
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
||||||
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||||
|
import Event from 'vs/base/common/event';
|
||||||
|
|
||||||
import { IAngularEventingService, AngularEventType, IAngularEvent } from 'sql/services/angularEventing/angularEventingService';
|
import { IAngularEventingService, AngularEventType, IAngularEvent } from 'sql/services/angularEventing/angularEventingService';
|
||||||
import { INewDashboardTabDialogService } from 'sql/parts/dashboard/newDashboardTabDialog/interface';
|
import { INewDashboardTabDialogService } from 'sql/parts/dashboard/newDashboardTabDialog/interface';
|
||||||
@@ -209,6 +210,7 @@ export class CollapseWidgetAction extends Action {
|
|||||||
private _uri: string,
|
private _uri: string,
|
||||||
private _widgetUuid: string,
|
private _widgetUuid: string,
|
||||||
private collpasedState: boolean,
|
private collpasedState: boolean,
|
||||||
|
private collapsedStateChangedEvent: Event<boolean>,
|
||||||
@IAngularEventingService private _angularEventService: IAngularEventingService
|
@IAngularEventingService private _angularEventService: IAngularEventingService
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
@@ -216,6 +218,7 @@ export class CollapseWidgetAction extends Action {
|
|||||||
collpasedState ? CollapseWidgetAction.EXPAND_LABEL : CollapseWidgetAction.COLLPASE_LABEL,
|
collpasedState ? CollapseWidgetAction.EXPAND_LABEL : CollapseWidgetAction.COLLPASE_LABEL,
|
||||||
collpasedState ? CollapseWidgetAction.EXPAND_ICON : CollapseWidgetAction.COLLAPSE_ICON
|
collpasedState ? CollapseWidgetAction.EXPAND_ICON : CollapseWidgetAction.COLLAPSE_ICON
|
||||||
);
|
);
|
||||||
|
this.collapsedStateChangedEvent(collapsed => this._updateState(collapsed));
|
||||||
}
|
}
|
||||||
|
|
||||||
run(): TPromise<boolean> {
|
run(): TPromise<boolean> {
|
||||||
@@ -225,7 +228,11 @@ export class CollapseWidgetAction extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _toggleState(): void {
|
private _toggleState(): void {
|
||||||
this.collpasedState = !this.collpasedState;
|
this._updateState(!this.collpasedState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private _updateState(collapsed: boolean): void {
|
||||||
|
this.collpasedState = collapsed;
|
||||||
this._setClass(this.collpasedState ? CollapseWidgetAction.EXPAND_ICON : CollapseWidgetAction.COLLAPSE_ICON);
|
this._setClass(this.collpasedState ? CollapseWidgetAction.EXPAND_ICON : CollapseWidgetAction.COLLAPSE_ICON);
|
||||||
this._setLabel(this.collpasedState ? CollapseWidgetAction.EXPAND_LABEL : CollapseWidgetAction.COLLPASE_LABEL);
|
this._setLabel(this.collpasedState ? CollapseWidgetAction.EXPAND_LABEL : CollapseWidgetAction.COLLPASE_LABEL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
|
|||||||
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
||||||
import { memoize } from 'vs/base/common/decorators';
|
import { memoize } from 'vs/base/common/decorators';
|
||||||
import { generateUuid } from 'vs/base/common/uuid';
|
import { generateUuid } from 'vs/base/common/uuid';
|
||||||
|
import { Emitter } from 'vs/base/common/event';
|
||||||
|
|
||||||
const componentMap: { [x: string]: Type<IDashboardWidget> } = {
|
const componentMap: { [x: string]: Type<IDashboardWidget> } = {
|
||||||
'properties-widget': PropertiesWidgetComponent,
|
'properties-widget': PropertiesWidgetComponent,
|
||||||
@@ -63,12 +64,17 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._collapsed = val;
|
this._collapsed = val;
|
||||||
|
if (this.collapsedStateChangedEmitter) {
|
||||||
|
this.collapsedStateChangedEmitter.fire(this._collapsed);
|
||||||
|
}
|
||||||
this._changeref.detectChanges();
|
this._changeref.detectChanges();
|
||||||
if (!val) {
|
if (!val) {
|
||||||
this.loadWidget();
|
this.loadWidget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private collapsedStateChangedEmitter: Emitter<boolean>;
|
||||||
|
|
||||||
@memoize
|
@memoize
|
||||||
public get guid(): string {
|
public get guid(): string {
|
||||||
return generateUuid();
|
return generateUuid();
|
||||||
@@ -108,7 +114,8 @@ export class DashboardWidgetWrapper extends AngularDisposable implements OnInit
|
|||||||
this._actionbar = new ActionBar(this._actionbarRef.nativeElement);
|
this._actionbar = new ActionBar(this._actionbarRef.nativeElement);
|
||||||
if (this._actions) {
|
if (this._actions) {
|
||||||
if (this.collapsable) {
|
if (this.collapsable) {
|
||||||
this._actionbar.push(this._bootstrap.instantiationService.createInstance(CollapseWidgetAction, this._bootstrap.getUnderlyingUri(), this.guid, this.collapsed), { icon: true, label: false });
|
this.collapsedStateChangedEmitter = new Emitter<boolean>();
|
||||||
|
this._actionbar.push(this._bootstrap.instantiationService.createInstance(CollapseWidgetAction, this._bootstrap.getUnderlyingUri(), this.guid, this.collapsed, this.collapsedStateChangedEmitter.event), { icon: true, label: false });
|
||||||
}
|
}
|
||||||
this._actionbar.push(this._bootstrap.instantiationService.createInstance(ToggleMoreWidgetAction, this._actions, this._component.actionsContext), { icon: true, label: false });
|
this._actionbar.push(this._bootstrap.instantiationService.createInstance(ToggleMoreWidgetAction, this._actions, this._component.actionsContext), { icon: true, label: false });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import {
|
|||||||
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
||||||
import { ConnectionManagementInfo } from 'sql/parts/connection/common/connectionManagementInfo';
|
import { ConnectionManagementInfo } from 'sql/parts/connection/common/connectionManagementInfo';
|
||||||
import * as Constants from 'sql/parts/connection/common/constants';
|
import * as Constants from 'sql/parts/connection/common/constants';
|
||||||
|
import { OEAction } from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
|
|
||||||
import { ObjectMetadata } from 'sqlops';
|
import { ObjectMetadata } from 'sqlops';
|
||||||
|
|
||||||
@@ -27,7 +28,8 @@ import { IAction } from 'vs/base/common/actions';
|
|||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { generateUuid } from 'vs/base/common/uuid';
|
import { generateUuid } from 'vs/base/common/uuid';
|
||||||
import { $ } from 'vs/base/browser/dom';
|
import { $ } from 'vs/base/browser/dom';
|
||||||
import { OEAction } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
import { ExecuteCommandAction } from 'vs/platform/actions/common/actions';
|
||||||
|
import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||||
|
|
||||||
export class ObjectMetadataWrapper implements ObjectMetadata {
|
export class ObjectMetadataWrapper implements ObjectMetadata {
|
||||||
public metadataType: MetadataType;
|
public metadataType: MetadataType;
|
||||||
@@ -164,6 +166,19 @@ export class ExplorerController extends TreeDefaults.DefaultController {
|
|||||||
this._router.navigate(['database-dashboard']);
|
this._router.navigate(['database-dashboard']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected onEnter(tree: tree.ITree, event: IKeyboardEvent): boolean {
|
||||||
|
let result = super.onEnter(tree, event);
|
||||||
|
if (result) {
|
||||||
|
const focus = tree.getFocus();
|
||||||
|
if (focus && !(focus instanceof ObjectMetadataWrapper)) {
|
||||||
|
this._connectionService.changeDatabase(focus.databaseName).then(result => {
|
||||||
|
this._router.navigate(['database-dashboard']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ExplorerDataSource implements tree.IDataSource {
|
export class ExplorerDataSource implements tree.IDataSource {
|
||||||
@@ -371,14 +386,14 @@ function GetExplorerActions(element: TreeResource, instantiationService: IInstan
|
|||||||
actions.push(instantiationService.createInstance(ScriptAlterAction, ScriptAlterAction.ID, ScriptAlterAction.LABEL));
|
actions.push(instantiationService.createInstance(ScriptAlterAction, ScriptAlterAction.ID, ScriptAlterAction.LABEL));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
actions.push(instantiationService.createInstance(OEAction, NewQueryAction.ID, NewQueryAction.LABEL));
|
actions.push(instantiationService.createInstance(CustomExecuteCommandAction, NewQueryAction.ID, NewQueryAction.LABEL));
|
||||||
|
|
||||||
let action: IAction = instantiationService.createInstance(OEAction, RestoreAction.ID, RestoreAction.LABEL);
|
let action: IAction = instantiationService.createInstance(CustomExecuteCommandAction, RestoreAction.ID, RestoreAction.LABEL);
|
||||||
if (capabilitiesService.isFeatureAvailable(action, info)) {
|
if (capabilitiesService.isFeatureAvailable(action, info)) {
|
||||||
actions.push(action);
|
actions.push(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
action = instantiationService.createInstance(OEAction, BackupAction.ID, BackupAction.LABEL);
|
action = instantiationService.createInstance(CustomExecuteCommandAction, BackupAction.ID, BackupAction.LABEL);
|
||||||
if (capabilitiesService.isFeatureAvailable(action, info)) {
|
if (capabilitiesService.isFeatureAvailable(action, info)) {
|
||||||
actions.push(action);
|
actions.push(action);
|
||||||
}
|
}
|
||||||
@@ -391,3 +406,9 @@ function GetExplorerActions(element: TreeResource, instantiationService: IInstan
|
|||||||
|
|
||||||
return TPromise.as(actions);
|
return TPromise.as(actions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CustomExecuteCommandAction extends ExecuteCommandAction {
|
||||||
|
run(context: ManageActionContext): TPromise<any> {
|
||||||
|
return super.run(context.profile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
|||||||
import { RunQueryOnConnectionMode, IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { RunQueryOnConnectionMode, IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
||||||
import { InsightActionContext } from 'sql/workbench/common/actions';
|
import { InsightActionContext } from 'sql/workbench/common/actions';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
|
|
||||||
export class RunInsightQueryAction extends Action {
|
export class RunInsightQueryAction extends Action {
|
||||||
|
|||||||
@@ -187,13 +187,14 @@ export class InsightsWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _updateChild(result: SimpleExecuteResult): void {
|
private _updateChild(result: SimpleExecuteResult): void {
|
||||||
|
this.componentHost.viewContainerRef.clear();
|
||||||
|
|
||||||
if (result.rowCount === 0) {
|
if (result.rowCount === 0) {
|
||||||
this.showError(nls.localize('noResults', 'No results to show'));
|
this.showError(nls.localize('noResults', 'No results to show'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let componentFactory = this._componentFactoryResolver.resolveComponentFactory<IInsightsView>(insightRegistry.getCtorFromId(this._typeKey));
|
let componentFactory = this._componentFactoryResolver.resolveComponentFactory<IInsightsView>(insightRegistry.getCtorFromId(this._typeKey));
|
||||||
this.componentHost.viewContainerRef.clear();
|
|
||||||
|
|
||||||
let componentRef = this.componentHost.viewContainerRef.createComponent(componentFactory);
|
let componentRef = this.componentHost.viewContainerRef.createComponent(componentFactory);
|
||||||
let componentInstance = componentRef.instance;
|
let componentInstance = componentRef.instance;
|
||||||
|
|||||||
@@ -111,7 +111,6 @@ export abstract class ChartInsight extends Disposable implements IInsightsView {
|
|||||||
|
|
||||||
protected abstract get chartType(): ChartType;
|
protected abstract get chartType(): ChartType;
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Inject(forwardRef(() => ChangeDetectorRef)) private _changeRef: ChangeDetectorRef,
|
@Inject(forwardRef(() => ChangeDetectorRef)) private _changeRef: ChangeDetectorRef,
|
||||||
@Inject(forwardRef(() => ElementRef)) private _el: ElementRef,
|
@Inject(forwardRef(() => ElementRef)) private _el: ElementRef,
|
||||||
@@ -127,7 +126,6 @@ export abstract class ChartInsight extends Disposable implements IInsightsView {
|
|||||||
// This is because chart.js doesn't auto-update anything other than dataset when re-rendering so defaults are used
|
// This is because chart.js doesn't auto-update anything other than dataset when re-rendering so defaults are used
|
||||||
// hence it's easier to not render until ready
|
// hence it's easier to not render until ready
|
||||||
this.options = mixin(this.options, { maintainAspectRatio: false });
|
this.options = mixin(this.options, { maintainAspectRatio: false });
|
||||||
this._isDataAvailable = true;
|
|
||||||
this._changeRef.detectChanges();
|
this._changeRef.detectChanges();
|
||||||
TelemetryUtils.addTelemetry(this._bootstrapService.telemetryService, TelemetryKeys.ChartCreated, { type: this.chartType });
|
TelemetryUtils.addTelemetry(this._bootstrapService.telemetryService, TelemetryKeys.ChartCreated, { type: this.chartType });
|
||||||
}
|
}
|
||||||
@@ -178,6 +176,9 @@ export abstract class ChartInsight extends Disposable implements IInsightsView {
|
|||||||
unmemoize(this, 'chartData');
|
unmemoize(this, 'chartData');
|
||||||
unmemoize(this, 'labels');
|
unmemoize(this, 'labels');
|
||||||
this._data = data;
|
this._data = data;
|
||||||
|
if (isValidData(data)) {
|
||||||
|
this._isDataAvailable = true;
|
||||||
|
}
|
||||||
|
|
||||||
this._changeRef.detectChanges();
|
this._changeRef.detectChanges();
|
||||||
}
|
}
|
||||||
@@ -226,14 +227,14 @@ export abstract class ChartInsight extends Disposable implements IInsightsView {
|
|||||||
data: this._data.rows.map(row => Number(row[i])),
|
data: this._data.rows.map(row => Number(row[i])),
|
||||||
label: this._data.columns[i]
|
label: this._data.columns[i]
|
||||||
};
|
};
|
||||||
}).slice(1);
|
});
|
||||||
} else {
|
} else {
|
||||||
return this._data.rows[0].map((row, i) => {
|
return this._data.rows[0].map((row, i) => {
|
||||||
return {
|
return {
|
||||||
data: this._data.rows.map(row => Number(row[i])),
|
data: this._data.rows.map(row => Number(row[i])),
|
||||||
label: 'Series' + i
|
label: 'Series' + i
|
||||||
};
|
};
|
||||||
}).slice(1);
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -284,3 +285,19 @@ export abstract class ChartInsight extends Disposable implements IInsightsView {
|
|||||||
this.options = mixin(this.options, options);
|
this.options = mixin(this.options, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isValidData(data: IInsightData): boolean {
|
||||||
|
if (types.isUndefinedOrNull(data)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (types.isUndefinedOrNull(data.columns)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (types.isUndefinedOrNull(data.rows)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ import * as DOM from 'vs/base/browser/dom';
|
|||||||
import { CommandsRegistry, ICommand } from 'vs/platform/commands/common/commands';
|
import { CommandsRegistry, ICommand } from 'vs/platform/commands/common/commands';
|
||||||
import { MenuRegistry, ICommandAction } from 'vs/platform/actions/common/actions';
|
import { MenuRegistry, ICommandAction } from 'vs/platform/actions/common/actions';
|
||||||
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||||
|
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||||
|
import { KeyCode } from 'vs/base/common/keyCodes';
|
||||||
|
|
||||||
interface ITask {
|
interface ITask {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -135,7 +137,15 @@ export class TasksWidget extends DashboardWidget implements IDashboardWidget, On
|
|||||||
}
|
}
|
||||||
innerTile.append(label);
|
innerTile.append(label);
|
||||||
tile.append(innerTile);
|
tile.append(innerTile);
|
||||||
|
tile.attr('tabindex', '0');
|
||||||
tile.on(DOM.EventType.CLICK, () => this.runTask(action));
|
tile.on(DOM.EventType.CLICK, () => this.runTask(action));
|
||||||
|
tile.on(DOM.EventType.KEY_DOWN, (e: KeyboardEvent) => {
|
||||||
|
let event = new StandardKeyboardEvent(e);
|
||||||
|
if (event.equals(KeyCode.Enter)) {
|
||||||
|
this.runTask(action);
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
}
|
||||||
|
});
|
||||||
return tile.getHTMLElement();
|
return tile.getHTMLElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { MssqlRestoreInfo } from 'sql/parts/disasterRecovery/restore/mssqlRestor
|
|||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
import { ProviderConnectionInfo } from 'sql/parts/connection/common/providerConnectionInfo';
|
import { ProviderConnectionInfo } from 'sql/parts/connection/common/providerConnectionInfo';
|
||||||
import * as Utils from 'sql/parts/connection/common/utils';
|
import * as Utils from 'sql/parts/connection/common/utils';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { ITaskService } from 'sql/parts/taskHistory/common/taskService';
|
import { ITaskService } from 'sql/parts/taskHistory/common/taskService';
|
||||||
import { TaskStatus, TaskNode } from 'sql/parts/taskHistory/common/taskNode';
|
import { TaskStatus, TaskNode } from 'sql/parts/taskHistory/common/taskNode';
|
||||||
|
|
||||||
|
|||||||
@@ -351,7 +351,9 @@ export class ChartViewerComponent implements OnInit, OnDestroy, IChartViewAction
|
|||||||
this.componentHost.viewContainerRef.clear();
|
this.componentHost.viewContainerRef.clear();
|
||||||
let componentRef = this.componentHost.viewContainerRef.createComponent(componentFactory);
|
let componentRef = this.componentHost.viewContainerRef.createComponent(componentFactory);
|
||||||
this._chartComponent = <ChartInsight>componentRef.instance;
|
this._chartComponent = <ChartInsight>componentRef.instance;
|
||||||
this._chartComponent.setConfig(this._chartConfig);
|
if (this._chartComponent.setConfig) {
|
||||||
|
this._chartComponent.setConfig(this._chartConfig);
|
||||||
|
}
|
||||||
this._chartComponent.data = this._executeResult;
|
this._chartComponent.data = this._executeResult;
|
||||||
this._chartComponent.options = mixin(this._chartComponent.options, { animation: { duration: 0 } });
|
this._chartComponent.options = mixin(this._chartComponent.options, { animation: { duration: 0 } });
|
||||||
if (this._chartComponent.init) {
|
if (this._chartComponent.init) {
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
<tab [title]="jobsComponentTitle" class="fullsize" [identifier]="jobsTabIdentifier"
|
<tab [title]="jobsComponentTitle" class="fullsize" [identifier]="jobsTabIdentifier"
|
||||||
[iconClass]="jobsIconClass">
|
[iconClass]="jobsIconClass">
|
||||||
<div id="jobsDiv" class="fullsize" *ngIf="showHistory === false">
|
<div id="jobsDiv" class="fullsize" *ngIf="showHistory === false">
|
||||||
<jobsview-component ></jobsview-component>
|
<jobsview-component></jobsview-component>
|
||||||
</div>
|
</div>
|
||||||
<div id="historyDiv" class="fullsize" *ngIf="showHistory === true">
|
<div id="historyDiv" class="fullsize" *ngIf="showHistory === true">
|
||||||
<jobhistory-component [jobId]="jobId" [agentJobInfo]="agentJobInfo"></jobhistory-component>
|
<jobhistory-component [jobId]="jobId" [agentJobInfo]="agentJobInfo" [agentJobHistories]="agentJobHistories"></jobhistory-component>
|
||||||
</div>
|
</div>
|
||||||
</tab>
|
</tab>
|
||||||
</panel>
|
</panel>
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import 'vs/css!../common/media/jobs';
|
import 'vs/css!../common/media/jobs';
|
||||||
|
import * as nls from 'vs/nls';
|
||||||
import { OnInit, Component, Inject, forwardRef, ElementRef, ChangeDetectorRef, OnDestroy, ViewChild, Injectable } from '@angular/core';
|
import { Component, Inject, forwardRef, ElementRef, ChangeDetectorRef, ViewChild, Injectable } from '@angular/core';
|
||||||
import * as Utils from 'sql/parts/connection/common/utils';
|
import * as Utils from 'sql/parts/connection/common/utils';
|
||||||
import { RefreshWidgetAction, EditDashboardAction } from 'sql/parts/dashboard/common/actions';
|
import { RefreshWidgetAction, EditDashboardAction } from 'sql/parts/dashboard/common/actions';
|
||||||
import { IColorTheme } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
import { IColorTheme } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
||||||
@@ -14,11 +14,9 @@ import * as themeColors from 'vs/workbench/common/theme';
|
|||||||
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
|
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
|
||||||
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
||||||
import { IBootstrapService, BOOTSTRAP_SERVICE_ID } from 'sql/services/bootstrap/bootstrapService';
|
import { IBootstrapService, BOOTSTRAP_SERVICE_ID } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { IJobManagementService } from '../common/interfaces';
|
|
||||||
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
||||||
import { AgentJobInfo, AgentJobHistoryInfo } from 'sqlops';
|
import { AgentJobInfo, AgentJobHistoryInfo } from 'sqlops';
|
||||||
import { PanelComponent, IPanelOptions, NavigationBarLayout } from 'sql/base/browser/ui/panel/panel.component';
|
import { PanelComponent, IPanelOptions, NavigationBarLayout } from 'sql/base/browser/ui/panel/panel.component';
|
||||||
import * as nls from 'vs/nls';
|
|
||||||
|
|
||||||
export const DASHBOARD_SELECTOR: string = 'agentview-component';
|
export const DASHBOARD_SELECTOR: string = 'agentview-component';
|
||||||
|
|
||||||
@@ -40,7 +38,7 @@ export class AgentViewComponent {
|
|||||||
private _showHistory: boolean = false;
|
private _showHistory: boolean = false;
|
||||||
private _jobId: string = null;
|
private _jobId: string = null;
|
||||||
private _agentJobInfo: AgentJobInfo = null;
|
private _agentJobInfo: AgentJobInfo = null;
|
||||||
private _agentJobHistoryInfo: AgentJobHistoryInfo[] = null;
|
private _agentJobHistories: AgentJobHistoryInfo[] = null;
|
||||||
|
|
||||||
public jobsIconClass: string = 'jobsview-icon';
|
public jobsIconClass: string = 'jobsview-icon';
|
||||||
|
|
||||||
@@ -52,8 +50,8 @@ export class AgentViewComponent {
|
|||||||
};
|
};
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Inject(forwardRef(() => ChangeDetectorRef)) private _cd: ChangeDetectorRef,
|
@Inject(forwardRef(() => ChangeDetectorRef)) private _cd: ChangeDetectorRef){
|
||||||
){}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public Getters
|
* Public Getters
|
||||||
@@ -70,8 +68,8 @@ export class AgentViewComponent {
|
|||||||
return this._agentJobInfo;
|
return this._agentJobInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public get agentJobHistoryInfo(): AgentJobHistoryInfo[] {
|
public get agentJobHistories(): AgentJobHistoryInfo[] {
|
||||||
return this._agentJobHistoryInfo;
|
return this._agentJobHistories;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,8 +91,8 @@ export class AgentViewComponent {
|
|||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
public set agentJobHistoryInfo(value: AgentJobHistoryInfo[]) {
|
public set agentJobHistories(value: AgentJobHistoryInfo[]) {
|
||||||
this._agentJobHistoryInfo = value;
|
this._agentJobHistories = value;
|
||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
54
src/sql/parts/jobManagement/common/agentJobCacheService.ts
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import * as sqlops from 'sqlops';
|
||||||
|
import * as vscode from 'vscode';
|
||||||
|
import { IAgentJobCacheService } from './interfaces';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class AgentJobCacheService implements IAgentJobCacheService {
|
||||||
|
_serviceBrand: any;
|
||||||
|
private _jobs: sqlops.AgentJobInfo[];
|
||||||
|
private _jobHistories: { [jobId: string]: sqlops.AgentJobHistoryInfo[]; } = {};
|
||||||
|
private _prevJobID: string;
|
||||||
|
|
||||||
|
/* Getters */
|
||||||
|
public get jobs(): sqlops.AgentJobInfo[] {
|
||||||
|
return this._jobs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get jobHistories(): { [jobId: string]: sqlops.AgentJobHistoryInfo[] } {
|
||||||
|
return this._jobHistories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get prevJobID(): string {
|
||||||
|
return this._prevJobID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getJobHistory(jobID: string): sqlops.AgentJobHistoryInfo[] {
|
||||||
|
return this._jobHistories[jobID];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Setters */
|
||||||
|
public set jobs(value: sqlops.AgentJobInfo[]) {
|
||||||
|
this._jobs = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public set jobHistories(value: { [jobId: string]: sqlops.AgentJobHistoryInfo[]; }) {
|
||||||
|
this._jobHistories = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public set prevJobID(value: string) {
|
||||||
|
this._prevJobID = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public setJobHistory(jobID:string, value: sqlops.AgentJobHistoryInfo[]) {
|
||||||
|
this._jobHistories[jobID] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,12 +5,15 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
|
||||||
import * as sqlops from 'sqlops';
|
import * as sqlops from 'sqlops';
|
||||||
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||||
|
import { Table } from 'sql/base/browser/ui/table/table';
|
||||||
|
|
||||||
export const SERVICE_ID = 'jobManagementService';
|
export const SERVICE_ID = 'jobManagementService';
|
||||||
|
export const CACHE_ID = 'jobCacheService';
|
||||||
|
|
||||||
export const IJobManagementService = createDecorator<IJobManagementService>(SERVICE_ID);
|
export const IJobManagementService = createDecorator<IJobManagementService>(SERVICE_ID);
|
||||||
|
export const IAgentJobCacheService = createDecorator<IAgentJobCacheService>(CACHE_ID);
|
||||||
|
|
||||||
export interface IJobManagementService {
|
export interface IJobManagementService {
|
||||||
_serviceBrand: any;
|
_serviceBrand: any;
|
||||||
@@ -23,3 +26,17 @@ export interface IJobManagementService {
|
|||||||
|
|
||||||
jobAction(connectionUri: string, jobName: string, action: string): Thenable<sqlops.AgentJobActionResult>;
|
jobAction(connectionUri: string, jobName: string, action: string): Thenable<sqlops.AgentJobActionResult>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IAgentJobCacheService {
|
||||||
|
_serviceBrand: any;
|
||||||
|
|
||||||
|
jobs: sqlops.AgentJobInfo[];
|
||||||
|
|
||||||
|
jobHistories: { [jobId: string]: sqlops.AgentJobHistoryInfo[]; };
|
||||||
|
|
||||||
|
prevJobID: string;
|
||||||
|
|
||||||
|
getJobHistory(jobID: string): sqlops.AgentJobHistoryInfo[];
|
||||||
|
|
||||||
|
setJobHistory(jobID: string, value: sqlops.AgentJobHistoryInfo[]);
|
||||||
|
}
|
||||||
@@ -132,3 +132,7 @@ jobhistory-component {
|
|||||||
.vs-dark .jobsview-icon {
|
.vs-dark .jobsview-icon {
|
||||||
content: url('./job_inverse.svg');
|
content: url('./job_inverse.svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
agentview-component .tabbedPanel .tabList .tab .tabLabel.icon {
|
||||||
|
padding: 20px 15px !important;
|
||||||
|
}
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
Job ID:
|
Job ID:
|
||||||
</td>
|
</td>
|
||||||
<td height="30">
|
<td height="30">
|
||||||
{{agentJobHistoryInfo?.jobId}}
|
{{agentJobHistoryInfo?.jobId || agentJobInfo?.jobId}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="step-row">
|
<tr class="step-row">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import 'vs/css!./jobHistory';
|
import 'vs/css!./jobHistory';
|
||||||
|
|
||||||
import { OnInit, OnChanges, Component, Inject, forwardRef, ElementRef, ChangeDetectorRef, OnDestroy, ViewChild, Input, Injectable } from '@angular/core';
|
import { OnInit, OnChanges, Component, Inject, forwardRef, ElementRef, ChangeDetectorRef, OnDestroy, ViewChild, Input, Injectable, ChangeDetectionStrategy } from '@angular/core';
|
||||||
import { AgentJobHistoryInfo, AgentJobInfo } from 'sqlops';
|
import { AgentJobHistoryInfo, AgentJobInfo } from 'sqlops';
|
||||||
import { IThemeService } from 'vs/platform/theme/common/themeService';
|
import { IThemeService } from 'vs/platform/theme/common/themeService';
|
||||||
import { attachListStyler } from 'vs/platform/theme/common/styler';
|
import { attachListStyler } from 'vs/platform/theme/common/styler';
|
||||||
@@ -14,7 +14,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
|
|||||||
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
|
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
|
||||||
import { PanelComponent } from 'sql/base/browser/ui/panel/panel.component';
|
import { PanelComponent } from 'sql/base/browser/ui/panel/panel.component';
|
||||||
import { IBootstrapService, BOOTSTRAP_SERVICE_ID } from 'sql/services/bootstrap/bootstrapService';
|
import { IBootstrapService, BOOTSTRAP_SERVICE_ID } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { IJobManagementService } from '../common/interfaces';
|
import { IJobManagementService, IAgentJobCacheService } from '../common/interfaces';
|
||||||
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
||||||
import { AgentViewComponent } from 'sql/parts/jobManagement/agent/agentView.component';
|
import { AgentViewComponent } from 'sql/parts/jobManagement/agent/agentView.component';
|
||||||
import { JobHistoryController, JobHistoryDataSource,
|
import { JobHistoryController, JobHistoryDataSource,
|
||||||
@@ -29,28 +29,30 @@ export const DASHBOARD_SELECTOR: string = 'jobhistory-component';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: DASHBOARD_SELECTOR,
|
selector: DASHBOARD_SELECTOR,
|
||||||
templateUrl: decodeURI(require.toUrl('./jobHistory.component.html'))
|
templateUrl: decodeURI(require.toUrl('./jobHistory.component.html')),
|
||||||
|
changeDetection: ChangeDetectionStrategy.OnPush
|
||||||
})
|
})
|
||||||
export class JobHistoryComponent extends Disposable implements OnInit {
|
export class JobHistoryComponent extends Disposable implements OnInit {
|
||||||
|
|
||||||
private _jobManagementService: IJobManagementService;
|
private _jobManagementService: IJobManagementService;
|
||||||
private _tree: Tree;
|
private _tree: Tree;
|
||||||
private _treeController = new JobHistoryController();
|
private _treeController: JobHistoryController;
|
||||||
private _treeDataSource = new JobHistoryDataSource();
|
private _treeDataSource: JobHistoryDataSource;
|
||||||
private _treeRenderer = new JobHistoryRenderer();
|
private _treeRenderer: JobHistoryRenderer;
|
||||||
private _treeFilter = new JobHistoryFilter();
|
private _treeFilter: JobHistoryFilter;
|
||||||
|
|
||||||
@ViewChild('table') private _tableContainer: ElementRef;
|
@ViewChild('table') private _tableContainer: ElementRef;
|
||||||
|
|
||||||
@Input() public agentJobInfo: AgentJobInfo = undefined;
|
@Input() public agentJobInfo: AgentJobInfo = undefined;
|
||||||
@Input() public jobId: string = undefined;
|
@Input() public jobId: string = undefined;
|
||||||
@Input() public agentJobHistoryInfo: AgentJobHistoryInfo = undefined;
|
@Input() public agentJobHistories: AgentJobHistoryInfo[] = undefined;
|
||||||
|
public agentJobHistoryInfo: AgentJobHistoryInfo = undefined;
|
||||||
|
|
||||||
private _prevJobId: string = undefined;
|
|
||||||
private _isVisible: boolean = false;
|
private _isVisible: boolean = false;
|
||||||
private _stepRows: JobStepsViewRow[] = [];
|
private _stepRows: JobStepsViewRow[] = [];
|
||||||
private _showSteps: boolean = false;
|
private _showSteps: boolean = false;
|
||||||
private _runStatus: string = undefined;
|
private _runStatus: string = undefined;
|
||||||
|
private _agentJobCacheService: IAgentJobCacheService;
|
||||||
private _notificationService: INotificationService;
|
private _notificationService: INotificationService;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@@ -61,7 +63,12 @@ export class JobHistoryComponent extends Disposable implements OnInit {
|
|||||||
@Inject(forwardRef(() => AgentViewComponent)) private _agentViewComponent: AgentViewComponent
|
@Inject(forwardRef(() => AgentViewComponent)) private _agentViewComponent: AgentViewComponent
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
|
this._treeController = new JobHistoryController();
|
||||||
|
this._treeDataSource = new JobHistoryDataSource();
|
||||||
|
this._treeRenderer = new JobHistoryRenderer();
|
||||||
|
this._treeFilter = new JobHistoryFilter();
|
||||||
this._jobManagementService = bootstrapService.jobManagementService;
|
this._jobManagementService = bootstrapService.jobManagementService;
|
||||||
|
this._agentJobCacheService = bootstrapService.agentJobCacheService;
|
||||||
this._notificationService = bootstrapService.notificationService;
|
this._notificationService = bootstrapService.notificationService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,10 +122,24 @@ export class JobHistoryComponent extends Disposable implements OnInit {
|
|||||||
|
|
||||||
ngAfterContentChecked() {
|
ngAfterContentChecked() {
|
||||||
if (this._isVisible === false && this._tableContainer.nativeElement.offsetParent !== null) {
|
if (this._isVisible === false && this._tableContainer.nativeElement.offsetParent !== null) {
|
||||||
if (this._prevJobId !== this.jobId) {
|
this._isVisible = true;
|
||||||
|
if (this.agentJobHistories && this.agentJobHistories.length > 0) {
|
||||||
|
if (this._agentJobCacheService.prevJobID === this.jobId || this.agentJobHistories[0].jobId === this.jobId) {
|
||||||
|
this.agentJobHistoryInfo = this.agentJobHistories[0];
|
||||||
|
this.agentJobHistoryInfo.runDate = this.formatTime(this.agentJobHistories[0].runDate);
|
||||||
|
this._treeController.jobHistories = this.agentJobHistories;
|
||||||
|
this._agentJobCacheService.setJobHistory(this.jobId, this.agentJobHistories);
|
||||||
|
let jobHistoryRows = this._treeController.jobHistories.map(job => this.convertToJobHistoryRow(job));
|
||||||
|
this._treeDataSource.data = jobHistoryRows;
|
||||||
|
this._tree.setInput(new JobHistoryModel());
|
||||||
|
this._cd.detectChanges();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
this.loadHistory();
|
this.loadHistory();
|
||||||
this._prevJobId = this.jobId;
|
|
||||||
}
|
}
|
||||||
|
this._agentJobCacheService.prevJobID = this.jobId;
|
||||||
|
} else if (this._isVisible === true && this._tableContainer.nativeElement.offsetParent === null) {
|
||||||
|
this._isVisible = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,6 +149,7 @@ export class JobHistoryComponent extends Disposable implements OnInit {
|
|||||||
this._jobManagementService.getJobHistory(ownerUri, this.jobId).then((result) => {
|
this._jobManagementService.getJobHistory(ownerUri, this.jobId).then((result) => {
|
||||||
if (result && result.jobs) {
|
if (result && result.jobs) {
|
||||||
self._treeController.jobHistories = result.jobs;
|
self._treeController.jobHistories = result.jobs;
|
||||||
|
self._agentJobCacheService.setJobHistory(self.jobId, result.jobs);
|
||||||
let jobHistoryRows = self._treeController.jobHistories.map(job => self.convertToJobHistoryRow(job));
|
let jobHistoryRows = self._treeController.jobHistories.map(job => self.convertToJobHistoryRow(job));
|
||||||
self._treeDataSource.data = jobHistoryRows;
|
self._treeDataSource.data = jobHistoryRows;
|
||||||
self._tree.setInput(new JobHistoryModel());
|
self._tree.setInput(new JobHistoryModel());
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import { IAction } from 'vs/base/common/actions';
|
|||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { generateUuid } from 'vs/base/common/uuid';
|
import { generateUuid } from 'vs/base/common/uuid';
|
||||||
import * as DOM from 'vs/base/browser/dom';
|
import * as DOM from 'vs/base/browser/dom';
|
||||||
import { OEAction } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
import { OEAction } from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
import { Builder, $, withElementById } from 'vs/base/browser/builder';
|
import { Builder, $, withElementById } from 'vs/base/browser/builder';
|
||||||
import { AgentJobHistoryInfo } from 'sqlops';
|
import { AgentJobHistoryInfo } from 'sqlops';
|
||||||
import { Agent } from 'vs/base/node/request';
|
import { Agent } from 'vs/base/node/request';
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import { IAction } from 'vs/base/common/actions';
|
|||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { generateUuid } from 'vs/base/common/uuid';
|
import { generateUuid } from 'vs/base/common/uuid';
|
||||||
import * as DOM from 'vs/base/browser/dom';
|
import * as DOM from 'vs/base/browser/dom';
|
||||||
import { OEAction } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
import { OEAction } from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
import { Builder, $, withElementById } from 'vs/base/browser/builder';
|
import { Builder, $, withElementById } from 'vs/base/browser/builder';
|
||||||
import { AgentJobHistoryInfo } from 'sqlops';
|
import { AgentJobHistoryInfo } from 'sqlops';
|
||||||
import { Agent } from 'vs/base/node/request';
|
import { Agent } from 'vs/base/node/request';
|
||||||
|
|||||||
@@ -11,16 +11,15 @@ import 'vs/css!sql/parts/grid/media/slickGrid';
|
|||||||
import 'vs/css!../common/media/jobs';
|
import 'vs/css!../common/media/jobs';
|
||||||
import 'vs/css!../common/media/detailview';
|
import 'vs/css!../common/media/detailview';
|
||||||
|
|
||||||
import { OnInit, Component, Inject, forwardRef, ElementRef, ChangeDetectorRef, OnDestroy, ViewChild } from '@angular/core';
|
import { Component, Inject, forwardRef, ElementRef, ChangeDetectorRef, ViewChild, Input } from '@angular/core';
|
||||||
import * as Utils from 'sql/parts/connection/common/utils';
|
import * as Utils from 'sql/parts/connection/common/utils';
|
||||||
import { RefreshWidgetAction, EditDashboardAction } from 'sql/parts/dashboard/common/actions';
|
|
||||||
import { IColorTheme } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
import { IColorTheme } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
||||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||||
import * as themeColors from 'vs/workbench/common/theme';
|
import * as themeColors from 'vs/workbench/common/theme';
|
||||||
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
|
import { DashboardPage } from 'sql/parts/dashboard/common/dashboardPage.component';
|
||||||
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
||||||
import { IBootstrapService, BOOTSTRAP_SERVICE_ID } from 'sql/services/bootstrap/bootstrapService';
|
import { IBootstrapService, BOOTSTRAP_SERVICE_ID } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { IJobManagementService } from '../common/interfaces';
|
import { IJobManagementService, IAgentJobCacheService } from '../common/interfaces';
|
||||||
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
|
||||||
import * as sqlops from 'sqlops';
|
import * as sqlops from 'sqlops';
|
||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
@@ -32,6 +31,7 @@ import { attachTableStyler } from 'sql/common/theme/styler';
|
|||||||
import { JobHistoryComponent } from './jobHistory.component';
|
import { JobHistoryComponent } from './jobHistory.component';
|
||||||
import { AgentViewComponent } from '../agent/agentView.component';
|
import { AgentViewComponent } from '../agent/agentView.component';
|
||||||
import { RowDetailView } from 'sql/base/browser/ui/table/plugins/rowdetailview';
|
import { RowDetailView } from 'sql/base/browser/ui/table/plugins/rowdetailview';
|
||||||
|
import { AgentJobCacheService } from 'sql/parts/jobManagement/common/agentJobCacheService';
|
||||||
|
|
||||||
export const JOBSVIEW_SELECTOR: string = 'jobsview-component';
|
export const JOBSVIEW_SELECTOR: string = 'jobsview-component';
|
||||||
|
|
||||||
@@ -39,9 +39,10 @@ export const JOBSVIEW_SELECTOR: string = 'jobsview-component';
|
|||||||
selector: JOBSVIEW_SELECTOR,
|
selector: JOBSVIEW_SELECTOR,
|
||||||
templateUrl: decodeURI(require.toUrl('./jobsView.component.html'))
|
templateUrl: decodeURI(require.toUrl('./jobsView.component.html'))
|
||||||
})
|
})
|
||||||
export class JobsViewComponent implements OnInit, OnDestroy {
|
export class JobsViewComponent {
|
||||||
|
|
||||||
private _jobManagementService: IJobManagementService;
|
private _jobManagementService: IJobManagementService;
|
||||||
|
private _jobCacheService: IAgentJobCacheService;
|
||||||
|
|
||||||
private _disposables = new Array<vscode.Disposable>();
|
private _disposables = new Array<vscode.Disposable>();
|
||||||
|
|
||||||
@@ -64,11 +65,8 @@ export class JobsViewComponent implements OnInit, OnDestroy {
|
|||||||
@ViewChild('jobsgrid') _gridEl: ElementRef;
|
@ViewChild('jobsgrid') _gridEl: ElementRef;
|
||||||
private isVisible: boolean = false;
|
private isVisible: boolean = false;
|
||||||
private isInitialized: boolean = false;
|
private isInitialized: boolean = false;
|
||||||
|
|
||||||
private _table: Table<any>;
|
private _table: Table<any>;
|
||||||
|
|
||||||
public jobs: sqlops.AgentJobInfo[];
|
public jobs: sqlops.AgentJobInfo[];
|
||||||
|
|
||||||
public jobHistories: { [jobId: string]: sqlops.AgentJobHistoryInfo[]; } = Object.create(null);
|
public jobHistories: { [jobId: string]: sqlops.AgentJobHistoryInfo[]; } = Object.create(null);
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@@ -79,21 +77,28 @@ export class JobsViewComponent implements OnInit, OnDestroy {
|
|||||||
@Inject(forwardRef(() => AgentViewComponent)) private _agentViewComponent: AgentViewComponent
|
@Inject(forwardRef(() => AgentViewComponent)) private _agentViewComponent: AgentViewComponent
|
||||||
) {
|
) {
|
||||||
this._jobManagementService = bootstrapService.jobManagementService;
|
this._jobManagementService = bootstrapService.jobManagementService;
|
||||||
|
this._jobCacheService = bootstrapService.agentJobCacheService;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngAfterContentChecked() {
|
ngAfterContentChecked() {
|
||||||
if (this.isVisible === false && this._gridEl.nativeElement.offsetParent !== null) {
|
if (this.isVisible === false && this._gridEl.nativeElement.offsetParent !== null) {
|
||||||
this.isVisible = true;
|
this.isVisible = true;
|
||||||
if (!this.isInitialized) {
|
if (!this.isInitialized) {
|
||||||
this.onFirstVisible();
|
if (this._jobCacheService.jobs !== undefined) {
|
||||||
this.isInitialized = true;
|
this.jobs = this._jobCacheService.jobs;
|
||||||
|
this.onFirstVisible(true);
|
||||||
|
this.isInitialized = true;
|
||||||
|
} else {
|
||||||
|
this.onFirstVisible(false);
|
||||||
|
this.isInitialized = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (this.isVisible === true && this._gridEl.nativeElement.offsetParent === null) {
|
} else if (this.isVisible === true && this._gridEl.nativeElement.offsetParent === null) {
|
||||||
this.isVisible = false;
|
this.isVisible = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onFirstVisible() {
|
onFirstVisible(cached?: boolean) {
|
||||||
let self = this;
|
let self = this;
|
||||||
let columns = this.columns.map((column) => {
|
let columns = this.columns.map((column) => {
|
||||||
column.rerenderOnResize = true;
|
column.rerenderOnResize = true;
|
||||||
@@ -128,17 +133,26 @@ export class JobsViewComponent implements OnInit, OnDestroy {
|
|||||||
self._agentViewComponent.jobId = job.jobId;
|
self._agentViewComponent.jobId = job.jobId;
|
||||||
self._agentViewComponent.agentJobInfo = job;
|
self._agentViewComponent.agentJobInfo = job;
|
||||||
self.isVisible = false;
|
self.isVisible = false;
|
||||||
self._agentViewComponent.showHistory = true;
|
if (self._jobCacheService.getJobHistory(job.jobId)) {
|
||||||
|
self._agentViewComponent.agentJobHistories = self._jobCacheService.getJobHistory(job.jobId);
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
self._agentViewComponent.showHistory = true;
|
||||||
|
}, 500);
|
||||||
});
|
});
|
||||||
this._cd.detectChanges();
|
this._cd.detectChanges();
|
||||||
|
if (cached) {
|
||||||
let ownerUri: string = this._dashboardService.connectionManagementService.connectionInfo.ownerUri;
|
this.onJobsAvailable(this._jobCacheService.jobs);
|
||||||
this._jobManagementService.getJobs(ownerUri).then((result) => {
|
} else {
|
||||||
if (result && result.jobs) {
|
let ownerUri: string = this._dashboardService.connectionManagementService.connectionInfo.ownerUri;
|
||||||
this.jobs = result.jobs;
|
this._jobManagementService.getJobs(ownerUri).then((result) => {
|
||||||
this.onJobsAvailable(result.jobs);
|
if (result && result.jobs) {
|
||||||
}
|
this.jobs = result.jobs;
|
||||||
});
|
this._jobCacheService.jobs = this.jobs;
|
||||||
|
this.onJobsAvailable(result.jobs);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onJobsAvailable(jobs: sqlops.AgentJobInfo[]) {
|
onJobsAvailable(jobs: sqlops.AgentJobInfo[]) {
|
||||||
@@ -177,12 +191,6 @@ export class JobsViewComponent implements OnInit, OnDestroy {
|
|||||||
this.loadJobHistories();
|
this.loadJobHistories();
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnDestroy() {
|
|
||||||
}
|
|
||||||
|
|
||||||
loadingTemplate() {
|
loadingTemplate() {
|
||||||
return '<div class="preload">Loading...</div>';
|
return '<div class="preload">Loading...</div>';
|
||||||
}
|
}
|
||||||
@@ -201,6 +209,7 @@ export class JobsViewComponent implements OnInit, OnDestroy {
|
|||||||
this._jobManagementService.getJobHistory(ownerUri, job.jobId).then((result) => {
|
this._jobManagementService.getJobHistory(ownerUri, job.jobId).then((result) => {
|
||||||
if (result.jobs) {
|
if (result.jobs) {
|
||||||
this.jobHistories[job.jobId] = result.jobs;
|
this.jobHistories[job.jobId] = result.jobs;
|
||||||
|
this._jobCacheService.setJobHistory(job.jobId, result.jobs);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
|
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
|
||||||
import { TreeNode, TreeItemCollapsibleState, ObjectExplorerCallbacks } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode, TreeItemCollapsibleState, ObjectExplorerCallbacks } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||||
@@ -18,7 +18,7 @@ import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
|||||||
import * as TelemetryUtils from 'sql/common/telemetryUtilities';
|
import * as TelemetryUtils from 'sql/common/telemetryUtilities';
|
||||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||||
import { warn, error } from 'sql/base/common/log';
|
import { warn, error } from 'sql/base/common/log';
|
||||||
import { ServerTreeView } from 'sql/parts/registeredServer/viewlet/serverTreeView';
|
import { ServerTreeView } from 'sql/parts/objectExplorer/viewlet/serverTreeView';
|
||||||
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
|
|||||||
import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
|
import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
|
||||||
|
|
||||||
import { VIEWLET_ID } from 'sql/parts/connection/common/connectionManagement';
|
import { VIEWLET_ID } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { ConnectionViewlet } from 'sql/parts/registeredServer/viewlet/connectionViewlet';
|
import { ConnectionViewlet } from 'sql/parts/objectExplorer/viewlet/connectionViewlet';
|
||||||
|
|
||||||
// Viewlet Action
|
// Viewlet Action
|
||||||
export class OpenConnectionsViewletAction extends ToggleViewletAction {
|
export class OpenConnectionsViewletAction extends ToggleViewletAction {
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
|
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
|
||||||
import * as sqlops from 'sqlops';
|
import * as sqlops from 'sqlops';
|
||||||
|
|
||||||
import * as UUID from 'vs/base/common/uuid';
|
import * as UUID from 'vs/base/common/uuid';
|
||||||
@@ -5,11 +5,13 @@
|
|||||||
import { IConfigurationRegistry, Extensions, IConfigurationNode } from 'vs/platform/configuration/common/configurationRegistry';
|
import { IConfigurationRegistry, Extensions, IConfigurationNode } from 'vs/platform/configuration/common/configurationRegistry';
|
||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
import { Registry } from 'vs/platform/registry/common/platform';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
|
import { localize } from 'vs/nls';
|
||||||
|
|
||||||
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
|
const configurationRegistry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
|
||||||
|
|
||||||
export const SERVER_GROUP_CONFIG = 'serverGroup';
|
export const SERVER_GROUP_CONFIG = 'serverGroup';
|
||||||
export const SERVER_GROUP_COLORS_CONFIG = 'colors';
|
export const SERVER_GROUP_COLORS_CONFIG = 'colors';
|
||||||
|
export const SERVER_GROUP_AUTOEXPAND_CONFIG = 'autoExpand';
|
||||||
|
|
||||||
const serverGroupConfig: IConfigurationNode = {
|
const serverGroupConfig: IConfigurationNode = {
|
||||||
id: 'Server Groups',
|
id: 'Server Groups',
|
||||||
@@ -18,6 +20,7 @@ const serverGroupConfig: IConfigurationNode = {
|
|||||||
[SERVER_GROUP_CONFIG + '.' + SERVER_GROUP_COLORS_CONFIG]: <IJSONSchema>{
|
[SERVER_GROUP_CONFIG + '.' + SERVER_GROUP_COLORS_CONFIG]: <IJSONSchema>{
|
||||||
type: 'array',
|
type: 'array',
|
||||||
items: 'string',
|
items: 'string',
|
||||||
|
'description': localize('serverGroup.colors', 'Server Group color palette used in the Object Explorer viewlet.'),
|
||||||
default: [
|
default: [
|
||||||
'#A1634D',
|
'#A1634D',
|
||||||
'#7F0000',
|
'#7F0000',
|
||||||
@@ -28,7 +31,12 @@ const serverGroupConfig: IConfigurationNode = {
|
|||||||
'#6A6599',
|
'#6A6599',
|
||||||
'#515151'
|
'#515151'
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
[SERVER_GROUP_CONFIG + '.' + SERVER_GROUP_AUTOEXPAND_CONFIG]: {
|
||||||
|
'type': 'boolean',
|
||||||
|
'description': localize('serverGroup.autoExpand', 'Auto-expand Server Groups in the Object Explorer viewlet.'),
|
||||||
|
'default': 'true'
|
||||||
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -9,8 +9,8 @@ import {
|
|||||||
IServerGroupController, IServerGroupDialogCallbacks
|
IServerGroupController, IServerGroupDialogCallbacks
|
||||||
} from 'sql/parts/connection/common/connectionManagement';
|
} from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IPartService } from 'vs/workbench/services/part/common/partService';
|
import { IPartService } from 'vs/workbench/services/part/common/partService';
|
||||||
import { ServerGroupDialog } from 'sql/parts/registeredServer/serverGroupDialog/serverGroupDialog';
|
import { ServerGroupDialog } from 'sql/parts/objectExplorer/serverGroupDialog/serverGroupDialog';
|
||||||
import { ServerGroupViewModel } from 'sql/parts/registeredServer/serverGroupDialog/serverGroupViewModel';
|
import { ServerGroupViewModel } from 'sql/parts/objectExplorer/serverGroupDialog/serverGroupViewModel';
|
||||||
import { TPromise } from 'vs/base/common/winjs.base';
|
import { TPromise } from 'vs/base/common/winjs.base';
|
||||||
import { ConnectionProfileGroup, IConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
import { ConnectionProfileGroup, IConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
||||||
import Severity from 'vs/base/common/severity';
|
import Severity from 'vs/base/common/severity';
|
||||||
@@ -22,7 +22,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
|||||||
import { Button } from 'sql/base/browser/ui/button/button';
|
import { Button } from 'sql/base/browser/ui/button/button';
|
||||||
import { Modal } from 'sql/base/browser/ui/modal/modal';
|
import { Modal } from 'sql/base/browser/ui/modal/modal';
|
||||||
import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox';
|
import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox';
|
||||||
import { ServerGroupViewModel } from 'sql/parts/registeredServer/serverGroupDialog/serverGroupViewModel';
|
import { ServerGroupViewModel } from 'sql/parts/objectExplorer/serverGroupDialog/serverGroupViewModel';
|
||||||
import { attachButtonStyler, attachModalDialogStyler } from 'sql/common/theme/styler';
|
import { attachButtonStyler, attachModalDialogStyler } from 'sql/common/theme/styler';
|
||||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||||
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
||||||
@@ -10,17 +10,17 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
|||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { IConnectionManagementService, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
||||||
import { ServerTreeView } from 'sql/parts/registeredServer/viewlet/serverTreeView';
|
import { ServerTreeView } from 'sql/parts/objectExplorer/viewlet/serverTreeView';
|
||||||
import { ConnectionViewlet } from 'sql/parts/registeredServer/viewlet/connectionViewlet';
|
import { ConnectionViewlet } from 'sql/parts/objectExplorer/viewlet/connectionViewlet';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
||||||
import * as Constants from 'sql/parts/connection/common/constants';
|
import * as Constants from 'sql/parts/connection/common/constants';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import Severity from 'vs/base/common/severity';
|
import Severity from 'vs/base/common/severity';
|
||||||
import { ObjectExplorerActionsContext, ObjectExplorerActionUtilities } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
import { ObjectExplorerActionsContext, ObjectExplorerActionUtilities } from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
|
|
||||||
export class RefreshAction extends Action {
|
export class RefreshAction extends Action {
|
||||||
@@ -20,12 +20,12 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
|
|||||||
import { isPromiseCanceledError } from 'vs/base/common/errors';
|
import { isPromiseCanceledError } from 'vs/base/common/errors';
|
||||||
import Severity from 'vs/base/common/severity';
|
import Severity from 'vs/base/common/severity';
|
||||||
import { IConnectionsViewlet, IConnectionManagementService, VIEWLET_ID } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionsViewlet, IConnectionManagementService, VIEWLET_ID } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { ServerTreeView } from 'sql/parts/registeredServer/viewlet/serverTreeView';
|
import { ServerTreeView } from 'sql/parts/objectExplorer/viewlet/serverTreeView';
|
||||||
import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox';
|
import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox';
|
||||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||||
import { ClearSearchAction, AddServerAction, AddServerGroupAction, ActiveConnectionsFilterAction } from 'sql/parts/registeredServer/viewlet/connectionTreeAction';
|
import { ClearSearchAction, AddServerAction, AddServerGroupAction, ActiveConnectionsFilterAction } from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
|
||||||
import { warn } from 'sql/base/common/log';
|
import { warn } from 'sql/base/common/log';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IPartService } from 'vs/workbench/services/part/common/partService';
|
import { IPartService } from 'vs/workbench/services/part/common/partService';
|
||||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ import { IConnectionManagementService } from 'sql/parts/connection/common/connec
|
|||||||
import { ITree, IDragAndDrop, IDragAndDropData, IDragOverReaction, DRAG_OVER_ACCEPT_BUBBLE_DOWN, DRAG_OVER_REJECT } from 'vs/base/parts/tree/browser/tree';
|
import { ITree, IDragAndDrop, IDragAndDropData, IDragOverReaction, DRAG_OVER_ACCEPT_BUBBLE_DOWN, DRAG_OVER_REJECT } from 'vs/base/parts/tree/browser/tree';
|
||||||
import * as Constants from 'sql/parts/connection/common/constants';
|
import * as Constants from 'sql/parts/connection/common/constants';
|
||||||
import { DragMouseEvent } from 'vs/base/browser/mouseEvent';
|
import { DragMouseEvent } from 'vs/base/browser/mouseEvent';
|
||||||
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
|
import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements drag and drop for the server tree
|
* Implements drag and drop for the server tree
|
||||||
|
Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 343 B |
|
Before Width: | Height: | Size: 447 B After Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 139 B |
|
Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 502 B |
|
Before Width: | Height: | Size: 507 B After Width: | Height: | Size: 507 B |
|
Before Width: | Height: | Size: 1002 B After Width: | Height: | Size: 1002 B |
|
Before Width: | Height: | Size: 1007 B After Width: | Height: | Size: 1007 B |
|
Before Width: | Height: | Size: 118 B After Width: | Height: | Size: 118 B |
|
Before Width: | Height: | Size: 759 B After Width: | Height: | Size: 759 B |
|
Before Width: | Height: | Size: 841 B After Width: | Height: | Size: 841 B |
@@ -9,19 +9,19 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
|||||||
import { Action } from 'vs/base/common/actions';
|
import { Action } from 'vs/base/common/actions';
|
||||||
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
||||||
import { IConnectionManagementService, IConnectionCompletionOptions, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, IConnectionCompletionOptions, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import {
|
import {
|
||||||
NewQueryAction, ScriptSelectAction, EditDataAction, ScriptCreateAction,
|
NewQueryAction, ScriptSelectAction, EditDataAction, ScriptCreateAction,
|
||||||
ScriptExecuteAction, ScriptDeleteAction, ScriptAlterAction
|
ScriptExecuteAction, ScriptDeleteAction, ScriptAlterAction
|
||||||
} from 'sql/workbench/common/actions';
|
} from 'sql/workbench/common/actions';
|
||||||
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
|
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
|
||||||
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
|
import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils';
|
||||||
import { TreeSelectionHandler } from 'sql/parts/registeredServer/viewlet/treeSelectionHandler';
|
import { TreeSelectionHandler } from 'sql/parts/objectExplorer/viewlet/treeSelectionHandler';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
||||||
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import * as Constants from 'sql/parts/connection/common/constants';
|
import * as Constants from 'sql/parts/connection/common/constants';
|
||||||
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
import { ExecuteCommandAction } from 'vs/platform/actions/common/actions';
|
import { ExecuteCommandAction } from 'vs/platform/actions/common/actions';
|
||||||
@@ -14,18 +14,18 @@ import {
|
|||||||
DisconnectConnectionAction, AddServerAction,
|
DisconnectConnectionAction, AddServerAction,
|
||||||
DeleteConnectionAction, RefreshAction, EditServerGroupAction
|
DeleteConnectionAction, RefreshAction, EditServerGroupAction
|
||||||
}
|
}
|
||||||
from 'sql/parts/registeredServer/viewlet/connectionTreeAction';
|
from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
|
||||||
import {
|
import {
|
||||||
DisconnectAction, ObjectExplorerActionUtilities,
|
DisconnectAction, ObjectExplorerActionUtilities,
|
||||||
ManageConnectionAction,
|
ManageConnectionAction,
|
||||||
OEAction
|
OEAction
|
||||||
} from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
} from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
|
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
|
||||||
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 { NewProfilerAction } from 'sql/parts/profiler/contrib/profilerActions';
|
import { NewProfilerAction } from 'sql/parts/profiler/contrib/profilerActions';
|
||||||
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
|
import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils';
|
||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { ExecuteCommandAction } from 'vs/platform/actions/common/actions';
|
import { ExecuteCommandAction } from 'vs/platform/actions/common/actions';
|
||||||
import { NewQueryAction } from 'sql/workbench/common/actions';
|
import { NewQueryAction } from 'sql/workbench/common/actions';
|
||||||
@@ -14,9 +14,10 @@ import { IMouseEvent } from 'vs/base/browser/mouseEvent';
|
|||||||
import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||||
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 { ServerTreeActionProvider } from 'sql/parts/registeredServer/viewlet/serverTreeActionProvider';
|
import { ServerTreeActionProvider } from 'sql/parts/objectExplorer/viewlet/serverTreeActionProvider';
|
||||||
import { ObjectExplorerActionsContext } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
import { ObjectExplorerActionsContext } from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
|
import { OpenMode } from 'vs/base/parts/tree/browser/treeDefaults';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extends the tree controller to handle clicks on the tree elements
|
* Extends the tree controller to handle clicks on the tree elements
|
||||||
@@ -29,7 +30,10 @@ export class ServerTreeController extends treedefaults.DefaultController {
|
|||||||
@ITelemetryService private telemetryService: ITelemetryService,
|
@ITelemetryService private telemetryService: ITelemetryService,
|
||||||
@IKeybindingService private keybindingService: IKeybindingService
|
@IKeybindingService private keybindingService: IKeybindingService
|
||||||
) {
|
) {
|
||||||
super({ clickBehavior: treedefaults.ClickBehavior.ON_MOUSE_DOWN });
|
super({
|
||||||
|
clickBehavior: treedefaults.ClickBehavior.ON_MOUSE_DOWN,
|
||||||
|
openMode: OpenMode.SINGLE_CLICK
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public onClick(tree: ITree, element: any, event: IMouseEvent): boolean {
|
public onClick(tree: ITree, element: any, event: IMouseEvent): boolean {
|
||||||
@@ -7,10 +7,10 @@
|
|||||||
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 { ITree, IDataSource } from 'vs/base/parts/tree/browser/tree';
|
import { ITree, IDataSource } from 'vs/base/parts/tree/browser/tree';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { TPromise } from 'vs/base/common/winjs.base';
|
import { TPromise } from 'vs/base/common/winjs.base';
|
||||||
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
|
import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils';
|
||||||
import { IConnectionManagementService, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import Severity from 'vs/base/common/severity';
|
import Severity from 'vs/base/common/severity';
|
||||||
|
|
||||||
@@ -13,11 +13,11 @@ import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionPr
|
|||||||
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';
|
||||||
import { ITree, IRenderer } from 'vs/base/parts/tree/browser/tree';
|
import { ITree, IRenderer } from 'vs/base/parts/tree/browser/tree';
|
||||||
import { IConnectionProfileGroupTemplateData, IConnectionTemplateData, IObjectExplorerTemplateData } from 'sql/parts/registeredServer/viewlet/templateData';
|
import { IConnectionProfileGroupTemplateData, IConnectionTemplateData, IObjectExplorerTemplateData } from 'sql/parts/objectExplorer/viewlet/templateData';
|
||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
||||||
import { IThemeService } from 'vs/platform/theme/common/themeService';
|
import { IThemeService } from 'vs/platform/theme/common/themeService';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the tree items.
|
* Renders the tree items.
|
||||||
@@ -17,18 +17,20 @@ 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 * as ConnectionUtils from 'sql/parts/connection/common/utils';
|
import * as ConnectionUtils from 'sql/parts/connection/common/utils';
|
||||||
import { ActiveConnectionsFilterAction } from 'sql/parts/registeredServer/viewlet/connectionTreeAction';
|
import { ActiveConnectionsFilterAction } from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
|
||||||
import { IConnectionManagementService, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { TreeCreationUtils } from 'sql/parts/registeredServer/viewlet/treeCreationUtils';
|
import { TreeCreationUtils } from 'sql/parts/objectExplorer/viewlet/treeCreationUtils';
|
||||||
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
|
import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils';
|
||||||
import { TreeSelectionHandler } from 'sql/parts/registeredServer/viewlet/treeSelectionHandler';
|
import { TreeSelectionHandler } from 'sql/parts/objectExplorer/viewlet/treeSelectionHandler';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
||||||
import { Button } from 'sql/base/browser/ui/button/button';
|
import { Button } from 'sql/base/browser/ui/button/button';
|
||||||
import { attachButtonStyler } from 'sql/common/theme/styler';
|
import { attachButtonStyler } from 'sql/common/theme/styler';
|
||||||
import Event, { Emitter } from 'vs/base/common/event';
|
import Event, { Emitter } from 'vs/base/common/event';
|
||||||
import { TreeNode, TreeItemCollapsibleState } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode, TreeItemCollapsibleState } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
|
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||||
|
import { SERVER_GROUP_CONFIG, SERVER_GROUP_AUTOEXPAND_CONFIG } from 'sql/parts/objectExplorer/serverGroupDialog/serverGroup.contribution';
|
||||||
|
|
||||||
const $ = builder.$;
|
const $ = builder.$;
|
||||||
|
|
||||||
@@ -52,6 +54,7 @@ export class ServerTreeView {
|
|||||||
@IThemeService private _themeService: IThemeService,
|
@IThemeService private _themeService: IThemeService,
|
||||||
@IErrorMessageService private _errorMessageService: IErrorMessageService,
|
@IErrorMessageService private _errorMessageService: IErrorMessageService,
|
||||||
@ICapabilitiesService private _capabilitiesService: ICapabilitiesService,
|
@ICapabilitiesService private _capabilitiesService: ICapabilitiesService,
|
||||||
|
@IConfigurationService private _configurationService: IConfigurationService
|
||||||
) {
|
) {
|
||||||
this._activeConnectionsFilterAction = this._instantiationService.createInstance(
|
this._activeConnectionsFilterAction = this._instantiationService.createInstance(
|
||||||
ActiveConnectionsFilterAction,
|
ActiveConnectionsFilterAction,
|
||||||
@@ -109,12 +112,10 @@ export class ServerTreeView {
|
|||||||
// Refresh Tree when these events are emitted
|
// Refresh Tree when these events are emitted
|
||||||
this._toDispose.push(this._connectionManagementService.onAddConnectionProfile((newProfile: IConnectionProfile) => {
|
this._toDispose.push(this._connectionManagementService.onAddConnectionProfile((newProfile: IConnectionProfile) => {
|
||||||
self.handleAddConnectionProfile(newProfile);
|
self.handleAddConnectionProfile(newProfile);
|
||||||
})
|
}));
|
||||||
);
|
|
||||||
this._toDispose.push(this._connectionManagementService.onDeleteConnectionProfile(() => {
|
this._toDispose.push(this._connectionManagementService.onDeleteConnectionProfile(() => {
|
||||||
self.refreshTree();
|
self.refreshTree();
|
||||||
})
|
}));
|
||||||
);
|
|
||||||
this._toDispose.push(this._connectionManagementService.onDisconnect((connectionParams) => {
|
this._toDispose.push(this._connectionManagementService.onDisconnect((connectionParams) => {
|
||||||
if (self.isObjectExplorerConnectionUri(connectionParams.connectionUri)) {
|
if (self.isObjectExplorerConnectionUri(connectionParams.connectionUri)) {
|
||||||
self.deleteObjectExplorerNodeAndRefreshTree(connectionParams.connectionProfile);
|
self.deleteObjectExplorerNodeAndRefreshTree(connectionParams.connectionProfile);
|
||||||
@@ -124,7 +125,7 @@ export class ServerTreeView {
|
|||||||
if (this._objectExplorerService && this._objectExplorerService.onUpdateObjectExplorerNodes) {
|
if (this._objectExplorerService && this._objectExplorerService.onUpdateObjectExplorerNodes) {
|
||||||
this._toDispose.push(this._objectExplorerService.onUpdateObjectExplorerNodes(args => {
|
this._toDispose.push(this._objectExplorerService.onUpdateObjectExplorerNodes(args => {
|
||||||
if (args.errorMessage) {
|
if (args.errorMessage) {
|
||||||
this.showError(args.errorMessage);
|
self.showError(args.errorMessage);
|
||||||
}
|
}
|
||||||
if (args.connection) {
|
if (args.connection) {
|
||||||
self.onObjectExplorerSessionCreated(args.connection);
|
self.onObjectExplorerSessionCreated(args.connection);
|
||||||
@@ -133,9 +134,15 @@ export class ServerTreeView {
|
|||||||
}
|
}
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
self.refreshTree();
|
self.refreshTree();
|
||||||
let root = <ConnectionProfileGroup>this._tree.getInput();
|
let root = <ConnectionProfileGroup>self._tree.getInput();
|
||||||
|
|
||||||
|
let expandGroups: boolean = self._configurationService.getValue(SERVER_GROUP_CONFIG)[SERVER_GROUP_AUTOEXPAND_CONFIG];
|
||||||
|
if (expandGroups) {
|
||||||
|
self._tree.expandAll(ConnectionProfileGroup.getSubgroups(root));
|
||||||
|
}
|
||||||
|
|
||||||
if (root && !root.hasValidConnections) {
|
if (root && !root.hasValidConnections) {
|
||||||
this._treeSelectionHandler.onTreeActionStateChange(true);
|
self._treeSelectionHandler.onTreeActionStateChange(true);
|
||||||
resolve();
|
resolve();
|
||||||
} else {
|
} else {
|
||||||
resolve();
|
resolve();
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox';
|
import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
|
|
||||||
export interface IConnectionTemplateData {
|
export interface IConnectionTemplateData {
|
||||||
root: HTMLElement;
|
root: HTMLElement;
|
||||||
@@ -7,14 +7,14 @@ import 'vs/css!./media/serverTreeActions';
|
|||||||
import nls = require('vs/nls');
|
import nls = require('vs/nls');
|
||||||
import { Tree } from 'vs/base/parts/tree/browser/treeImpl';
|
import { Tree } from 'vs/base/parts/tree/browser/treeImpl';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { ServerTreeRenderer } from 'sql/parts/registeredServer/viewlet/serverTreeRenderer';
|
import { ServerTreeRenderer } from 'sql/parts/objectExplorer/viewlet/serverTreeRenderer';
|
||||||
import { ServerTreeDataSource } from 'sql/parts/registeredServer/viewlet/serverTreeDataSource';
|
import { ServerTreeDataSource } from 'sql/parts/objectExplorer/viewlet/serverTreeDataSource';
|
||||||
import { ServerTreeController } from 'sql/parts/registeredServer/viewlet/serverTreeController';
|
import { ServerTreeController } from 'sql/parts/objectExplorer/viewlet/serverTreeController';
|
||||||
import { ServerTreeActionProvider } from 'sql/parts/registeredServer/viewlet/serverTreeActionProvider';
|
import { ServerTreeActionProvider } from 'sql/parts/objectExplorer/viewlet/serverTreeActionProvider';
|
||||||
import { DefaultFilter, DefaultAccessibilityProvider, DefaultController } from 'vs/base/parts/tree/browser/treeDefaults';
|
import { DefaultFilter, DefaultAccessibilityProvider, DefaultController } from 'vs/base/parts/tree/browser/treeDefaults';
|
||||||
import { IController } from 'vs/base/parts/tree/browser/tree';
|
import { IController } from 'vs/base/parts/tree/browser/tree';
|
||||||
import { ServerTreeDragAndDrop, RecentConnectionsDragAndDrop } from 'sql/parts/registeredServer/viewlet/dragAndDropController';
|
import { ServerTreeDragAndDrop, RecentConnectionsDragAndDrop } from 'sql/parts/objectExplorer/viewlet/dragAndDropController';
|
||||||
import { RecentConnectionDataSource } from 'sql/parts/registeredServer/viewlet/recentConnectionDataSource';
|
import { RecentConnectionDataSource } from 'sql/parts/objectExplorer/viewlet/recentConnectionDataSource';
|
||||||
|
|
||||||
export class TreeCreationUtils {
|
export class TreeCreationUtils {
|
||||||
/**
|
/**
|
||||||
@@ -6,11 +6,11 @@
|
|||||||
import { IConnectionManagementService, IConnectionCompletionOptions } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, IConnectionCompletionOptions } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
|
|
||||||
import { IProgressService, IProgressRunner } from 'vs/platform/progress/common/progress';
|
import { IProgressService, IProgressRunner } from 'vs/platform/progress/common/progress';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
|
import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils';
|
||||||
|
|
||||||
export class TreeSelectionHandler {
|
export class TreeSelectionHandler {
|
||||||
progressRunner: IProgressRunner;
|
progressRunner: IProgressRunner;
|
||||||
@@ -7,11 +7,11 @@ import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionPr
|
|||||||
import { IConnectionManagementService, IConnectionCompletionOptions, IConnectionCallbacks } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, IConnectionCompletionOptions, IConnectionCallbacks } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
|
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
|
||||||
|
|
||||||
import { TPromise } from 'vs/base/common/winjs.base';
|
import { TPromise } from 'vs/base/common/winjs.base';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import errors = require('vs/base/common/errors');
|
import errors = require('vs/base/common/errors');
|
||||||
|
|
||||||
export class TreeUpdateUtils {
|
export class TreeUpdateUtils {
|
||||||
@@ -10,7 +10,7 @@ import { IProfilerController } from 'sql/parts/profiler/editor/controller/interf
|
|||||||
import { ProfilerInput } from 'sql/parts/profiler/editor/profilerInput';
|
import { ProfilerInput } from 'sql/parts/profiler/editor/profilerInput';
|
||||||
import { BaseActionContext } from 'sql/workbench/common/actions';
|
import { BaseActionContext } from 'sql/workbench/common/actions';
|
||||||
import { Task } from 'sql/platform/tasks/common/tasks';
|
import { Task } from 'sql/platform/tasks/common/tasks';
|
||||||
import { ObjectExplorerActionsContext } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
import { ObjectExplorerActionsContext } from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { BootstrapParams } from 'sql/services/bootstrap/bootstrapParams';
|
|||||||
import { IConnectionManagementService, IConnectionDialogService, IErrorMessageService }
|
import { IConnectionManagementService, IConnectionDialogService, IErrorMessageService }
|
||||||
from 'sql/parts/connection/common/connectionManagement';
|
from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IMetadataService } from 'sql/services/metadata/metadataService';
|
import { IMetadataService } from 'sql/services/metadata/metadataService';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
||||||
import { IAngularEventingService } from 'sql/services/angularEventing/angularEventingService';
|
import { IAngularEventingService } from 'sql/services/angularEventing/angularEventingService';
|
||||||
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
||||||
@@ -40,7 +40,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
|||||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||||
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService';
|
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService';
|
||||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||||
import { IJobManagementService } from 'sql/parts/jobManagement/common/interfaces';
|
import { IJobManagementService, IAgentJobCacheService } from 'sql/parts/jobManagement/common/interfaces';
|
||||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||||
|
|
||||||
@@ -95,6 +95,7 @@ export interface IBootstrapService {
|
|||||||
commandService: ICommandService;
|
commandService: ICommandService;
|
||||||
dashboardWebviewService: IDashboardWebviewService;
|
dashboardWebviewService: IDashboardWebviewService;
|
||||||
jobManagementService: IJobManagementService;
|
jobManagementService: IJobManagementService;
|
||||||
|
agentJobCacheService: IAgentJobCacheService;
|
||||||
environmentService: IEnvironmentService;
|
environmentService: IEnvironmentService;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { BootstrapParams } from 'sql/services/bootstrap/bootstrapParams';
|
|||||||
import { IConnectionManagementService, IConnectionDialogService, IErrorMessageService }
|
import { IConnectionManagementService, IConnectionDialogService, IErrorMessageService }
|
||||||
from 'sql/parts/connection/common/connectionManagement';
|
from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IMetadataService } from 'sql/services/metadata/metadataService';
|
import { IMetadataService } from 'sql/services/metadata/metadataService';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
||||||
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
||||||
import { IQueryManagementService } from 'sql/parts/query/common/queryManagement';
|
import { IQueryManagementService } from 'sql/parts/query/common/queryManagement';
|
||||||
@@ -44,7 +44,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
|||||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||||
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService';
|
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService';
|
||||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||||
import { IJobManagementService } from 'sql/parts/jobManagement/common/interfaces';
|
import { IJobManagementService, IAgentJobCacheService } from 'sql/parts/jobManagement/common/interfaces';
|
||||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||||
|
|
||||||
@@ -104,6 +104,7 @@ export class BootstrapService implements IBootstrapService {
|
|||||||
@ICommandService public commandService: ICommandService,
|
@ICommandService public commandService: ICommandService,
|
||||||
@IDashboardWebviewService public dashboardWebviewService: IDashboardWebviewService,
|
@IDashboardWebviewService public dashboardWebviewService: IDashboardWebviewService,
|
||||||
@IJobManagementService public jobManagementService: IJobManagementService,
|
@IJobManagementService public jobManagementService: IJobManagementService,
|
||||||
|
@IAgentJobCacheService public agentJobCacheService: IAgentJobCacheService,
|
||||||
@IEnvironmentService public environmentService: IEnvironmentService
|
@IEnvironmentService public environmentService: IEnvironmentService
|
||||||
) {
|
) {
|
||||||
this.configurationEditorService = this.instantiationService.createInstance(ConfigurationEditingService);
|
this.configurationEditorService = this.instantiationService.createInstance(ConfigurationEditingService);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import * as sqlops from 'sqlops';
|
|||||||
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
|
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
|
||||||
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
|
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
|
||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesServ
|
|||||||
import { IQueryManagementService } from 'sql/parts/query/common/queryManagement';
|
import { IQueryManagementService } from 'sql/parts/query/common/queryManagement';
|
||||||
import * as sqlops from 'sqlops';
|
import * as sqlops from 'sqlops';
|
||||||
import { IMetadataService } from 'sql/services/metadata/metadataService';
|
import { IMetadataService } from 'sql/services/metadata/metadataService';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
import { IScriptingService } from 'sql/services/scripting/scriptingService';
|
||||||
import { IAdminService } from 'sql/parts/admin/common/adminService';
|
import { IAdminService } from 'sql/parts/admin/common/adminService';
|
||||||
import { IJobManagementService } from 'sql/parts/jobManagement/common/interfaces';
|
import { IJobManagementService } from 'sql/parts/jobManagement/common/interfaces';
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import * as vscode from 'vscode';
|
|||||||
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
|
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
|
||||||
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
|
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
|
||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IObjectExplorerService, NodeInfoWithConnection } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService, NodeInfoWithConnection } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { IAdminService } from 'sql/parts/admin/common/adminService';
|
|||||||
import * as Constants from 'sql/common/constants';
|
import * as Constants from 'sql/common/constants';
|
||||||
import { ScriptOperation } from 'sql/workbench/common/taskUtilities';
|
import { ScriptOperation } from 'sql/workbench/common/taskUtilities';
|
||||||
import { Task } from 'sql/platform/tasks/common/tasks';
|
import { Task } from 'sql/platform/tasks/common/tasks';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
|
|
||||||
import { ObjectMetadata } from 'sqlops';
|
import { ObjectMetadata } from 'sqlops';
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import * as sqlops from 'sqlops';
|
|||||||
import nls = require('vs/nls');
|
import nls = require('vs/nls');
|
||||||
import os = require('os');
|
import os = require('os');
|
||||||
import path = require('path');
|
import path = require('path');
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
import { QueryInput } from 'sql/parts/query/common/queryInput';
|
||||||
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
|
import { DashboardInput } from 'sql/parts/dashboard/dashboardInput';
|
||||||
|
|||||||
@@ -14,25 +14,25 @@ import {
|
|||||||
RefreshAction, AddServerAction, DeleteConnectionAction, DisconnectConnectionAction,
|
RefreshAction, AddServerAction, DeleteConnectionAction, DisconnectConnectionAction,
|
||||||
ActiveConnectionsFilterAction, RecentConnectionsFilterAction
|
ActiveConnectionsFilterAction, RecentConnectionsFilterAction
|
||||||
}
|
}
|
||||||
from 'sql/parts/registeredServer/viewlet/connectionTreeAction';
|
from 'sql/parts/objectExplorer/viewlet/connectionTreeAction';
|
||||||
import { TestConnectionManagementService } from 'sqltest/stubs/connectionManagementService.test';
|
import { TestConnectionManagementService } from 'sqltest/stubs/connectionManagementService.test';
|
||||||
import { ErrorMessageServiceStub } from 'sqltest/stubs/errorMessageServiceStub';
|
import { ErrorMessageServiceStub } from 'sqltest/stubs/errorMessageServiceStub';
|
||||||
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
|
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
|
||||||
import { ServerTreeView } from 'sql/parts/registeredServer/viewlet/serverTreeView';
|
import { ServerTreeView } from 'sql/parts/objectExplorer/viewlet/serverTreeView';
|
||||||
import * as Constants from 'sql/parts/connection/common/constants';
|
import * as Constants from 'sql/parts/connection/common/constants';
|
||||||
import * as LocalizedConstants from 'sql/parts/connection/common/localizedConstants';
|
import * as LocalizedConstants from 'sql/parts/connection/common/localizedConstants';
|
||||||
import { ObjectExplorerService, ObjectExplorerNodeEventArgs } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { ObjectExplorerService, ObjectExplorerNodeEventArgs } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
|
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
|
||||||
import { Tree } from 'vs/base/parts/tree/browser/treeImpl';
|
import { Tree } from 'vs/base/parts/tree/browser/treeImpl';
|
||||||
import { ServerTreeDataSource } from 'sql/parts/registeredServer/viewlet/serverTreeDataSource';
|
import { ServerTreeDataSource } from 'sql/parts/objectExplorer/viewlet/serverTreeDataSource';
|
||||||
import { Builder, $ } from 'vs/base/browser/builder';
|
import { Builder, $ } from 'vs/base/browser/builder';
|
||||||
import WinJS = require('vs/base/common/winjs.base');
|
import WinJS = require('vs/base/common/winjs.base');
|
||||||
import { Emitter } from 'vs/base/common/event';
|
import { Emitter } from 'vs/base/common/event';
|
||||||
import Severity from 'vs/base/common/severity';
|
import Severity from 'vs/base/common/severity';
|
||||||
import { ObjectExplorerActionsContext, ManageConnectionAction } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
|
import { ObjectExplorerActionsContext, ManageConnectionAction } from 'sql/parts/objectExplorer/viewlet/objectExplorerActions';
|
||||||
import { IConnectionResult, IConnectionParams } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionResult, IConnectionParams } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { TreeSelectionHandler } from 'sql/parts/registeredServer/viewlet/treeSelectionHandler';
|
import { TreeSelectionHandler } from 'sql/parts/objectExplorer/viewlet/treeSelectionHandler';
|
||||||
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService';
|
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService';
|
||||||
|
|
||||||
suite('SQL Connection Tree Action tests', () => {
|
suite('SQL Connection Tree Action tests', () => {
|
||||||
|
|||||||
@@ -8,15 +8,15 @@ import { ObjectExplorerProviderTestService } from 'sqltest/stubs/objectExplorerP
|
|||||||
import { TestConnectionManagementService } from 'sqltest/stubs/connectionManagementService.test';
|
import { TestConnectionManagementService } from 'sqltest/stubs/connectionManagementService.test';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
import { ConnectionProfileGroup } from 'sql/parts/connection/common/connectionProfileGroup';
|
||||||
import { ObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { ObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
|
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
|
||||||
import { TreeNode, TreeItemCollapsibleState, ObjectExplorerCallbacks } from 'sql/parts/registeredServer/common/treeNode';
|
import { TreeNode, TreeItemCollapsibleState, ObjectExplorerCallbacks } from 'sql/parts/objectExplorer/common/treeNode';
|
||||||
|
|
||||||
import { TPromise } from 'vs/base/common/winjs.base';
|
import { TPromise } from 'vs/base/common/winjs.base';
|
||||||
import * as sqlops from 'sqlops';
|
import * as sqlops from 'sqlops';
|
||||||
import * as TypeMoq from 'typemoq';
|
import * as TypeMoq from 'typemoq';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import { ServerTreeView } from 'sql/parts/registeredServer/viewlet/serverTreeView';
|
import { ServerTreeView } from 'sql/parts/objectExplorer/viewlet/serverTreeView';
|
||||||
import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes';
|
import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes';
|
||||||
import Event, { Emitter } from 'vs/base/common/event';
|
import Event, { Emitter } from 'vs/base/common/event';
|
||||||
import { CapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
import { CapabilitiesService } from 'sql/services/capabilities/capabilitiesService';
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
import { ServerTreeView } from 'sql/parts/registeredServer/viewlet/serverTreeView';
|
import { ServerTreeView } from 'sql/parts/objectExplorer/viewlet/serverTreeView';
|
||||||
import { ConnectionManagementService } from 'sql/parts/connection/common/connectionManagementService';
|
import { ConnectionManagementService } from 'sql/parts/connection/common/connectionManagementService';
|
||||||
|
|
||||||
import { Tree } from 'vs/base/parts/tree/browser/treeImpl';
|
import { Tree } from 'vs/base/parts/tree/browser/treeImpl';
|
||||||
@@ -24,7 +24,7 @@ suite('ServerTreeView onAddConnectionProfile handler tests', () => {
|
|||||||
let instantiationService = new TestInstantiationService();
|
let instantiationService = new TestInstantiationService();
|
||||||
let mockConnectionManagementService = TypeMoq.Mock.ofType(ConnectionManagementService, TypeMoq.MockBehavior.Strict, {}, {});
|
let mockConnectionManagementService = TypeMoq.Mock.ofType(ConnectionManagementService, TypeMoq.MockBehavior.Strict, {}, {});
|
||||||
mockConnectionManagementService.setup(x => x.getConnectionGroups()).returns(x => []);
|
mockConnectionManagementService.setup(x => x.getConnectionGroups()).returns(x => []);
|
||||||
serverTreeView = new ServerTreeView(mockConnectionManagementService.object, instantiationService, undefined, undefined, undefined, undefined);
|
serverTreeView = new ServerTreeView(mockConnectionManagementService.object, instantiationService, undefined, undefined, undefined, undefined, undefined);
|
||||||
let tree = <Tree>{
|
let tree = <Tree>{
|
||||||
clearSelection() { },
|
clearSelection() { },
|
||||||
getSelection() { },
|
getSelection() { },
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as TypeMoq from 'typemoq';
|
import * as TypeMoq from 'typemoq';
|
||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { TestConnectionManagementService } from 'sqltest/stubs/connectionManagementService.test';
|
import { TestConnectionManagementService } from 'sqltest/stubs/connectionManagementService.test';
|
||||||
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
||||||
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ import * as WorkbenchUtils from 'sql/workbench/common/sqlWorkbenchUtils';
|
|||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
|
|
||||||
interface IEditorInputLabel {
|
interface IEditorInputLabel {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -92,7 +92,7 @@ export class TabsTitleControl extends TitleControl {
|
|||||||
@IWorkspaceConfigurationService private workspaceConfigurationService: IWorkspaceConfigurationService,
|
@IWorkspaceConfigurationService private workspaceConfigurationService: IWorkspaceConfigurationService,
|
||||||
@IConnectionManagementService private connectionService: IConnectionManagementService,
|
@IConnectionManagementService private connectionService: IConnectionManagementService,
|
||||||
@IQueryEditorService private queryEditorService: IQueryEditorService,
|
@IQueryEditorService private queryEditorService: IQueryEditorService,
|
||||||
@IObjectExplorerService private objectExplorerService: IObjectExplorerService
|
@IObjectExplorerService private objectExplorerService: IObjectExplorerService
|
||||||
) {
|
) {
|
||||||
super(contextMenuService, instantiationService, editorService, editorGroupService, contextKeyService, keybindingService, telemetryService, notificationService, menuService, quickOpenService, themeService);
|
super(contextMenuService, instantiationService, editorService, editorGroupService, contextKeyService, keybindingService, telemetryService, notificationService, menuService, quickOpenService, themeService);
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ import { IConnectionManagementService, IConnectionDialogService, IErrorMessageSe
|
|||||||
import { ConnectionManagementService } from 'sql/parts/connection/common/connectionManagementService';
|
import { ConnectionManagementService } from 'sql/parts/connection/common/connectionManagementService';
|
||||||
import { ConnectionDialogService } from 'sql/parts/connection/connectionDialog/connectionDialogService';
|
import { ConnectionDialogService } from 'sql/parts/connection/connectionDialog/connectionDialogService';
|
||||||
import { ErrorMessageService } from 'sql/workbench/errorMessageDialog/errorMessageService';
|
import { ErrorMessageService } from 'sql/workbench/errorMessageDialog/errorMessageService';
|
||||||
import { ServerGroupController } from 'sql/parts/registeredServer/serverGroupDialog/serverGroupController';
|
import { ServerGroupController } from 'sql/parts/objectExplorer/serverGroupDialog/serverGroupController';
|
||||||
|
|
||||||
import { IBootstrapService } from 'sql/services/bootstrap/bootstrapService';
|
import { IBootstrapService } from 'sql/services/bootstrap/bootstrapService';
|
||||||
import { IAngularEventingService, AngularEventingService } from 'sql/services/angularEventing/angularEventingService';
|
import { IAngularEventingService, AngularEventingService } from 'sql/services/angularEventing/angularEventingService';
|
||||||
@@ -120,7 +120,7 @@ import { ICapabilitiesService, CapabilitiesService } from 'sql/services/capabili
|
|||||||
import { ICredentialsService, CredentialsService } from 'sql/services/credentials/credentialsService';
|
import { ICredentialsService, CredentialsService } from 'sql/services/credentials/credentialsService';
|
||||||
import { ISerializationService, SerializationService } from 'sql/services/serialization/serializationService';
|
import { ISerializationService, SerializationService } from 'sql/services/serialization/serializationService';
|
||||||
import { IMetadataService, MetadataService } from 'sql/services/metadata/metadataService';
|
import { IMetadataService, MetadataService } from 'sql/services/metadata/metadataService';
|
||||||
import { IObjectExplorerService, ObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService, ObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { ITaskService, TaskService } from 'sql/parts/taskHistory/common/taskService';
|
import { ITaskService, TaskService } from 'sql/parts/taskHistory/common/taskService';
|
||||||
import { IQueryModelService } from 'sql/parts/query/execution/queryModel';
|
import { IQueryModelService } from 'sql/parts/query/execution/queryModel';
|
||||||
import { QueryModelService } from 'sql/parts/query/execution/queryModelService';
|
import { QueryModelService } from 'sql/parts/query/execution/queryModelService';
|
||||||
@@ -130,8 +130,9 @@ import { IQueryManagementService, QueryManagementService } from 'sql/parts/query
|
|||||||
import { IEditorDescriptorService, EditorDescriptorService } from 'sql/parts/query/editor/editorDescriptorService';
|
import { IEditorDescriptorService, EditorDescriptorService } from 'sql/parts/query/editor/editorDescriptorService';
|
||||||
import { IScriptingService, ScriptingService } from 'sql/services/scripting/scriptingService';
|
import { IScriptingService, ScriptingService } from 'sql/services/scripting/scriptingService';
|
||||||
import { IAdminService, AdminService } from 'sql/parts/admin/common/adminService';
|
import { IAdminService, AdminService } from 'sql/parts/admin/common/adminService';
|
||||||
import { IJobManagementService } from 'sql/parts/jobManagement/common/interfaces';
|
import { IJobManagementService, IAgentJobCacheService } from 'sql/parts/jobManagement/common/interfaces';
|
||||||
import { JobManagementService } from 'sql/parts/jobManagement/common/jobManagementService';
|
import { JobManagementService } from 'sql/parts/jobManagement/common/jobManagementService';
|
||||||
|
import { AgentJobCacheService } from 'sql/parts/jobManagement/common/agentJobCacheService';
|
||||||
import { IBackupService, IBackupUiService } from 'sql/parts/disasterRecovery/backup/common/backupService';
|
import { IBackupService, IBackupUiService } from 'sql/parts/disasterRecovery/backup/common/backupService';
|
||||||
import { BackupService, BackupUiService } from 'sql/parts/disasterRecovery/backup/common/backupServiceImp';
|
import { BackupService, BackupUiService } from 'sql/parts/disasterRecovery/backup/common/backupServiceImp';
|
||||||
import { IRestoreDialogController, IRestoreService } from 'sql/parts/disasterRecovery/restore/common/restoreService';
|
import { IRestoreDialogController, IRestoreService } from 'sql/parts/disasterRecovery/restore/common/restoreService';
|
||||||
@@ -702,6 +703,7 @@ export class Workbench implements IPartService {
|
|||||||
serviceCollection.set(IScriptingService, this.instantiationService.createInstance(ScriptingService));
|
serviceCollection.set(IScriptingService, this.instantiationService.createInstance(ScriptingService));
|
||||||
serviceCollection.set(IAdminService, this.instantiationService.createInstance(AdminService));
|
serviceCollection.set(IAdminService, this.instantiationService.createInstance(AdminService));
|
||||||
serviceCollection.set(IJobManagementService, this.instantiationService.createInstance(JobManagementService));
|
serviceCollection.set(IJobManagementService, this.instantiationService.createInstance(JobManagementService));
|
||||||
|
serviceCollection.set(IAgentJobCacheService, this.instantiationService.createInstance(AgentJobCacheService));
|
||||||
serviceCollection.set(IBackupService, this.instantiationService.createInstance(BackupService));
|
serviceCollection.set(IBackupService, this.instantiationService.createInstance(BackupService));
|
||||||
serviceCollection.set(IBackupUiService, this.instantiationService.createInstance(BackupUiService));
|
serviceCollection.set(IBackupUiService, this.instantiationService.createInstance(BackupUiService));
|
||||||
serviceCollection.set(IRestoreService, this.instantiationService.createInstance(RestoreService));
|
serviceCollection.set(IRestoreService, this.instantiationService.createInstance(RestoreService));
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ import { INotificationService, Severity } from 'vs/platform/notification/common/
|
|||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
|
||||||
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
||||||
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
|
||||||
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
||||||
|
|
||||||
@@ -494,7 +494,7 @@ export class GlobalNewUntitledFileAction extends Action {
|
|||||||
) {
|
) {
|
||||||
super(id, label);
|
super(id, label);
|
||||||
}
|
}
|
||||||
|
|
||||||
public run(): TPromise<any> {
|
public run(): TPromise<any> {
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
TaskUtilities.newQuery(undefined, this.connectionManagementService, this.queryEditorService, this._objectExplorerService, this.editorService);
|
TaskUtilities.newQuery(undefined, this.connectionManagementService, this.queryEditorService, this._objectExplorerService, this.editorService);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import { escape } from 'vs/base/common/strings';
|
|||||||
import { QUICKOPEN_ACTION_ID } from 'vs/workbench/browser/parts/quickopen/quickopen';
|
import { QUICKOPEN_ACTION_ID } from 'vs/workbench/browser/parts/quickopen/quickopen';
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
import { OpenConnectionsViewletAction } from 'sql/parts/registeredServer/common/registeredServer.contribution';
|
import { OpenConnectionsViewletAction } from 'sql/parts/objectExplorer/common/registeredServer.contribution';
|
||||||
|
|
||||||
|
|
||||||
interface WatermarkEntry {
|
interface WatermarkEntry {
|
||||||
|
|||||||
@@ -140,15 +140,15 @@ import 'vs/workbench/parts/welcome/overlay/browser/welcomeOverlay';
|
|||||||
import 'sql/parts/taskHistory/common/taskHistory.contribution';
|
import 'sql/parts/taskHistory/common/taskHistory.contribution';
|
||||||
import 'sql/parts/taskHistory/viewlet/taskHistoryViewlet';
|
import 'sql/parts/taskHistory/viewlet/taskHistoryViewlet';
|
||||||
import 'sql/parts/tasks/common/tasks.contribution';
|
import 'sql/parts/tasks/common/tasks.contribution';
|
||||||
import 'sql/parts/registeredServer/common/registeredServer.contribution';
|
import 'sql/parts/objectExplorer/common/registeredServer.contribution';
|
||||||
import 'sql/parts/registeredServer/viewlet/connectionViewlet';
|
import 'sql/parts/objectExplorer/viewlet/connectionViewlet';
|
||||||
import 'sql/workbench/api/node/sqlExtHost.contribution';
|
import 'sql/workbench/api/node/sqlExtHost.contribution';
|
||||||
import 'sql/parts/connection/common/connection.contribution';
|
import 'sql/parts/connection/common/connection.contribution';
|
||||||
import 'sql/parts/query/common/query.contribution';
|
import 'sql/parts/query/common/query.contribution';
|
||||||
import 'sql/parts/query/editor/resultsGridContribution';
|
import 'sql/parts/query/editor/resultsGridContribution';
|
||||||
import 'sql/parts/profiler/contrib/profiler.contribution';
|
import 'sql/parts/profiler/contrib/profiler.contribution';
|
||||||
import 'sql/parts/profiler/contrib/profilerActions.contribution';
|
import 'sql/parts/profiler/contrib/profilerActions.contribution';
|
||||||
import 'sql/parts/registeredServer/serverGroupDialog/serverGroup.contribution';
|
import 'sql/parts/objectExplorer/serverGroupDialog/serverGroup.contribution';
|
||||||
import 'sql/parts/accountManagement/common/accountManagement.contribution';
|
import 'sql/parts/accountManagement/common/accountManagement.contribution';
|
||||||
/* Insights */
|
/* Insights */
|
||||||
import 'sql/parts/dashboard/widgets/insights/views/charts/types/barChart.contribution';
|
import 'sql/parts/dashboard/widgets/insights/views/charts/types/barChart.contribution';
|
||||||
|
|||||||