Allow for "when" clause filtering for Notebook Toolbar Given ProviderId Changes (#3712)

* Integrate first SQL Notebooks Bits into Master (#3679)

* First crack tsql notebook (no output rendered yet)

* getting messages back

* intellisense working first cell, no connection errors

* sql notebook cell output functioning

* Latest SQL noteobook changes

* Undo change to launch.json

* Plumbing providers through

* Kernels shown from multiple providers, can switch between them. No mementos yet

* Ensure we have a feature flag for SQL notebooks, ensure existing functionality still works

* Fix tslint duplicate imports issue

* Addressing PR comments

* second round of PR feedback to cleanup notebook service manager code

* merge latest from master

* Enable notebook toolbar actions to disable themselves on provider change

* Undo changes to taskbar/actionbar

* very minor change due to latest merge
This commit is contained in:
Chris LaFreniere
2019-01-26 11:01:40 -08:00
committed by GitHub
parent 43be88a37c
commit 9cffe4d476
2 changed files with 61 additions and 18 deletions

View File

@@ -49,6 +49,7 @@ export class NotebookModel extends Disposable implements INotebookModel {
private _activeClientSession: IClientSession;
private _sessionLoadFinished: Promise<void>;
private _onClientSessionReady = new Emitter<IClientSession>();
private _onProviderIdChanged = new Emitter<string>();
private _activeContexts: IDefaultConnection;
private _trustedMode: boolean;
@@ -75,6 +76,7 @@ export class NotebookModel extends Disposable implements INotebookModel {
}
this._trustedMode = false;
this._providerId = notebookOptions.providerId;
this._onProviderIdChanged.fire(this._providerId);
this.notebookOptions.standardKernels.forEach(kernel => {
this._kernelDisplayNameToConnectionProviderIds.set(kernel.name, kernel.connectionProviderIds);
this._kernelDisplayNameToNotebookProviderIds.set(kernel.name, kernel.notebookProvider);
@@ -209,6 +211,10 @@ export class NotebookModel extends Disposable implements INotebookModel {
return this._onClientSessionReady.event;
}
public get onProviderIdChange(): Event<string> {
return this._onProviderIdChanged.event;
}
public getApplicableConnectionProviderIds(kernelDisplayName: string): string[] {
let ids = [];
if (kernelDisplayName) {
@@ -605,7 +611,10 @@ export class NotebookModel extends Disposable implements INotebookModel {
let index = this.notebookManagers[i].sessionManager.specs.kernels.findIndex(kernel => kernel.name === kernelSpec.name);
if (index >= 0) {
this._activeClientSession = this._clientSessions[i];
this._providerId = this.notebookManagers[i].providerId;
if (this.notebookManagers[i].providerId !== this._providerId) {
this._providerId = this.notebookManagers[i].providerId;
this._onProviderIdChanged.fire(this._providerId);
}
sessionManagerFound = true;
break;
}
@@ -617,6 +626,7 @@ export class NotebookModel extends Disposable implements INotebookModel {
let provider = this._kernelDisplayNameToNotebookProviderIds.get(kernelSpec.display_name);
if (provider) {
this._providerId = provider;
this._onProviderIdChanged.fire(this._providerId);
}
}
}