@@ -636,17 +636,49 @@ Component[OptionsPattern[]] := With[{
636636 ];
637637 ]],
638638
639- "ChangeKernel" -> Function[Null,
640-
641- If[Length[ReleaseHold @ kernels] == 0, WebUISubmit[Alert["No Kernels are available"], $Client]; Return[] ];
642- requestKernel[notebook, kernels, modals, $Client, Function[Null,
643- (*/* reset all links */*)
639+ "ChangeKernel" -> Function[p, Module[{kernel, client, payload = <||>},
640+ If[AssociationQ[p], payload = p];
641+
642+ client = Lookup[payload, "Client", $Client];
643+
644+ If[Length[ReleaseHold @ kernels] == 0, WebUISubmit[Alert["No Kernels are available"], client]; Return[] ];
645+
646+ notebook["Evaluator"] = .;
647+ notebook["WebSocketQ"] = False;
648+ WebUISubmit[UINotebook["CreateServer"], client];
649+
650+ With[{cli = client},
651+
652+ If[KeyExistsQ[payload, "Kernel"],
653+
654+ notebook["Evaluator"] = payload["Kernel"]["Container"];
655+
656+ If[TrueQ[payload["Kernel"]["ContainerReadyQ"]],
657+ EventFire[notebook, "AquairedKernel", True];
658+ Then[checkWSLink[notebook, cli, secret, log], Function[Null,
659+ Echo["Kernel was changed!"];
660+
661+ ClearAll[client];
662+ ClearAll[kernel]; ClearAll[payload];
663+ ] ];
664+ ,
665+ WebUISubmit[Alert["Initialization is not complete"], cli];
666+ ];
667+
668+ ,
669+
670+ requestKernel[notebook, kernels, modals, cli, Function[Null,
671+ Then[checkWSLink[notebook, cli, secret, log], Function[Null,
672+ Echo["Kernel was changed!"];
673+
674+ ClearAll[client];
675+ ClearAll[kernel]; ClearAll[payload];
676+ ] ];
677+ ]];
644678
645- notebook["Evaluator"] = .;
646- notebook["WebSocketQ"] = False;
647- WebUISubmit[UINotebook["CreateServer"], $Client];
648- ]];
649- ],
679+ ];
680+ ];
681+ ] ],
650682
651683 "RestartKernel" -> Function[Null,
652684 Echo["Manual Kernel restart"];
0 commit comments