浏览代码

Merge pull request #22 from blink1073/pr/1052

Do not show the running sessions with the same kernel
Afshin Darian 8 年之前
父节点
当前提交
8bb6229124
共有 1 个文件被更改,包括 13 次插入5 次删除
  1. 13 5
      src/docregistry/kernelselector.ts

+ 13 - 5
src/docregistry/kernelselector.ts

@@ -40,7 +40,7 @@ interface IKernelSelection {
   preferredLanguage: string;
 
   /**
-   * The optional existing kernel id.
+   * The optional existing kernel model.
    */
   kernel?: Kernel.IModel;
 
@@ -66,6 +66,11 @@ interface IPopulateOptions {
    */
   sessions: Session.IModel[];
 
+  /**
+   * The optional existing kernel model.
+   */
+  kernel?: Kernel.IModel;
+
   /**
    * The preferred kernel name.
    */
@@ -100,7 +105,7 @@ function selectKernel(options: IKernelSelection): Promise<Kernel.IModel> {
   body.appendChild(selector);
 
   // Get the current sessions, populate the kernels, and show the dialog.
-  populateKernels(selector, { specs, sessions, preferredLanguage });
+  populateKernels(selector, { specs, sessions, preferredLanguage, kernel });
   return showDialog({
     title: 'Select Kernel',
     body,
@@ -202,7 +207,8 @@ function populateKernels(node: HTMLSelectElement, options: IPopulateOptions): vo
   }
   let maxLength = 10;
 
-  let { preferredKernel, preferredLanguage, sessions, specs } = options;
+  let { preferredKernel, preferredLanguage, sessions, specs, kernel } = options;
+  let existing = kernel ? kernel.id : void 0;
 
   // Create mappings of display names and languages for kernel name.
   let displayNames: { [key: string]: string } = Object.create(null);
@@ -262,7 +268,8 @@ function populateKernels(node: HTMLSelectElement, options: IPopulateOptions): vo
   let matchingSessions: Session.IModel[] = [];
   if (preferredLanguage) {
     for (let session of sessions) {
-      if (languages[session.kernel.name] === preferredLanguage) {
+      if (languages[session.kernel.name] === preferredLanguage &&
+          session.kernel.id !== existing) {
         matchingSessions.push(session);
       }
     }
@@ -280,7 +287,8 @@ function populateKernels(node: HTMLSelectElement, options: IPopulateOptions): vo
   // Add the other remaining sessions.
   let otherSessions: Session.IModel[] = [];
   for (let session of sessions) {
-    if (matchingSessions.indexOf(session) === -1) {
+    if (matchingSessions.indexOf(session) === -1 &&
+        session.kernel.id !== existing) {
       otherSessions.push(session);
     }
   }