Просмотр исходного кода

Fix the kernel toolbar indicator to show the kernel connection status when not connected.

Jason Grout 5 лет назад
Родитель
Сommit
b9e7aff3bc
2 измененных файлов с 12 добавлено и 4 удалено
  1. 9 2
      packages/apputils/src/toolbar.tsx
  2. 3 2
      tests/test-apputils/src/toolbar.spec.ts

+ 9 - 2
packages/apputils/src/toolbar.tsx

@@ -710,7 +710,14 @@ namespace Private {
       if (this.isDisposed) {
         return;
       }
-      let status = sessionContext.session?.kernel?.status ?? 'unknown';
+
+      let kernel = sessionContext.session?.kernel;
+      let status: Kernel.Status | Kernel.ConnectionStatus =
+        (kernel?.connectionStatus === 'connected'
+          ? kernel?.status
+          : kernel?.connectionStatus) ?? 'unknown';
+
+      sessionContext.session?.kernel?.status ?? 'unknown';
       const busy = this._isBusy(status);
       this.toggleClass(TOOLBAR_BUSY_CLASS, busy);
       this.toggleClass(TOOLBAR_IDLE_CLASS, !busy);
@@ -721,7 +728,7 @@ namespace Private {
     /**
      * Check if status should be shown as busy.
      */
-    private _isBusy(status: Kernel.Status): boolean {
+    private _isBusy(status: Kernel.Status | Kernel.ConnectionStatus): boolean {
       return (
         status === 'busy' || status === 'starting' || status === 'restarting'
       );

+ 3 - 2
tests/test-apputils/src/toolbar.spec.ts

@@ -364,9 +364,10 @@ describe('@jupyterlab/apputils', () => {
           await session.kernel.info;
           await session.shutdown();
           session = await createSessionContext();
+          await session.initialize();
           const item = Toolbar.createKernelStatusItem(session);
-          expect(item.node.title).to.equal('Kernel Starting');
-          expect(item.hasClass('jp-FilledCircleIcon')).to.equal(true);
+          expect(item.node.title).to.equal('Kernel Connecting');
+          expect(item.hasClass('jp-FilledCircleIcon')).to.equal(false);
           await session.initialize();
           await session.kernel.info;
         });