Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"outFiles": [
"${workspaceFolder}/out/**/*"
],
"preLaunchTask": "Compile",
// "preLaunchTask": "Compile",
"skipFiles": [
"<node_internals>/**"
],
Expand Down
24 changes: 11 additions & 13 deletions src/client/datascience/data-viewing/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
'use strict';
import { JSONObject } from '@phosphor/coreutils';

import { CssMessages, IGetCssRequest, IGetCssResponse, SharedMessages } from '../messages';
import { SharedMessages } from '../messages';
import { IJupyterVariable } from '../types';

export const CellFetchAllLimit = 100000;
Expand Down Expand Up @@ -40,15 +40,13 @@ export interface IGetRowsResponse {
}

// Map all messages to specific payloads
export class IDataViewerMapping {
public [DataViewerMessages.Started]: never | undefined;
public [DataViewerMessages.UpdateSettings]: string;
public [DataViewerMessages.InitializeData]: IJupyterVariable;
public [DataViewerMessages.GetAllRowsRequest]: never | undefined;
public [DataViewerMessages.GetAllRowsResponse]: JSONObject;
public [DataViewerMessages.GetRowsRequest]: IGetRowsRequest;
public [DataViewerMessages.GetRowsResponse]: IGetRowsResponse;
public [DataViewerMessages.CompletedData]: never | undefined;
public [CssMessages.GetCssRequest]: IGetCssRequest;
public [CssMessages.GetCssResponse]: IGetCssResponse;
}
export type IDataViewerMapping = {
[DataViewerMessages.Started]: never | undefined;
[DataViewerMessages.UpdateSettings]: string;
[DataViewerMessages.InitializeData]: IJupyterVariable;
[DataViewerMessages.GetAllRowsRequest]: never | undefined;
[DataViewerMessages.GetAllRowsResponse]: JSONObject;
[DataViewerMessages.GetRowsRequest]: IGetRowsRequest;
[DataViewerMessages.GetRowsResponse]: IGetRowsResponse;
[DataViewerMessages.CompletedData]: never | undefined;
};
9 changes: 8 additions & 1 deletion src/client/datascience/interactive-common/interactiveBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { CancellationToken, ConfigurationTarget, Event, EventEmitter, Memento, P
import { Disposable } from 'vscode-jsonrpc';

import { ServerStatus } from '../../../datascience-ui/interactive-common/mainState';
import { CommonActionType } from '../../../datascience-ui/interactive-common/redux/reducers/types';
import { IApplicationShell, ICommandManager, IDocumentManager, ILiveShareApi, IWebPanelProvider, IWorkspaceService } from '../../common/application/types';
import { CancellationError } from '../../common/cancellation';
import { EXTENSION_ROOT_DIR, PYTHON_LANGUAGE } from '../../common/constants';
Expand Down Expand Up @@ -43,7 +44,7 @@ import { JupyterInstallError } from '../jupyter/jupyterInstallError';
import { JupyterSelfCertsError } from '../jupyter/jupyterSelfCertsError';
import { JupyterKernelPromiseFailedError } from '../jupyter/kernels/jupyterKernelPromiseFailedError';
import { LiveKernelModel } from '../jupyter/kernels/types';
import { CssMessages } from '../messages';
import { CssMessages, SharedMessages } from '../messages';
import { ProgressReporter } from '../progress/progressReporter';
import {
CellState,
Expand Down Expand Up @@ -72,6 +73,7 @@ import {
} from '../types';
import { WebViewHost } from '../webViewHost';
import { InteractiveWindowMessageListener } from './interactiveWindowMessageListener';
import { BaseReduxActionPayload } from './types';

@injectable()
export abstract class InteractiveBase extends WebViewHost<IInteractiveWindowMapping> implements IInteractiveBase {
Expand Down Expand Up @@ -174,6 +176,11 @@ export abstract class InteractiveBase extends WebViewHost<IInteractiveWindowMapp
// tslint:disable-next-line: no-any no-empty cyclomatic-complexity max-func-body-length
public onMessage(message: string, payload: any) {
switch (message) {
case InteractiveWindowMessages.Sync:
// tslint:disable-next-line: no-any
const syncPayload = payload as { type: InteractiveWindowMessages | SharedMessages | CommonActionType; payload: BaseReduxActionPayload<any> };
this.postMessageInternal(syncPayload.type, syncPayload.payload).ignoreErrors();
break;
case InteractiveWindowMessages.GotoCodeCell:
this.handleMessage(message, payload, this.gotoCode);
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ import { ILiveShareApi, IWebPanel, IWebPanelMessageListener } from '../../common
import { Identifiers, LiveShare } from '../constants';
import { PostOffice } from '../liveshare/postOffice';
import { InteractiveWindowMessages, InteractiveWindowRemoteMessages } from './interactiveWindowTypes';
import { BaseReduxActionPayload } from './types';

// tslint:disable:no-any

// This class listens to messages that come from the local Python Interactive window
export class InteractiveWindowMessageListener implements IWebPanelMessageListener {
private static handlers = new Map<InteractiveWindowMessageListener, (message: string, payload: any) => void>();
private postOffice: PostOffice;
private disposedCallback: () => void;
private callback: (message: string, payload: any) => void;
Expand All @@ -40,6 +42,7 @@ export class InteractiveWindowMessageListener implements IWebPanelMessageListene
this.interactiveWindowMessages.forEach(m => {
this.postOffice.registerCallback(m, a => callback(m, a)).ignoreErrors();
});
InteractiveWindowMessageListener.handlers.set(this, callback);
}

public async dispose() {
Expand All @@ -48,6 +51,19 @@ export class InteractiveWindowMessageListener implements IWebPanelMessageListene
}

public onMessage(message: string, payload: any) {
if (message === InteractiveWindowMessages.Sync) {
const syncPayload = payload as BaseReduxActionPayload;
Array.from(InteractiveWindowMessageListener.handlers.keys()).forEach(item => {
if (item === this) {
return;
}
const cb = InteractiveWindowMessageListener.handlers.get(item);
if (cb) {
cb(InteractiveWindowMessages.Sync, { type: message, payload: syncPayload.data });
}
});
return;
}
// We received a message from the local webview. Broadcast it to everybody if it's a remote message
if (InteractiveWindowRemoteMessages.indexOf(message) >= 0) {
this.postOffice.postCommand(message, payload).ignoreErrors();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
'use strict';
import * as monacoEditor from 'monaco-editor/esm/vs/editor/editor.api';
import { IServerState } from '../../../datascience-ui/interactive-common/mainState';
import { IAddCellAction } from '../../../datascience-ui/interactive-common/redux/reducers/types';
import { CssMessages, IGetCssRequest, IGetCssResponse, IGetMonacoThemeRequest } from '../messages';
import { CommonActionType, IAddCellAction, ICellAction } from '../../../datascience-ui/interactive-common/redux/reducers/types';
import { CssMessages, IGetCssRequest, IGetCssResponse, IGetMonacoThemeRequest, SharedMessages } from '../messages';
import { IGetMonacoThemeResponse } from '../monacoMessages';
import { ICell, IInteractiveWindowInfo, IJupyterVariable, IJupyterVariablesRequest, IJupyterVariablesResponse } from '../types';
import { BaseReduxActionPayload } from './types';

export enum InteractiveWindowMessages {
StartCell = 'start_cell',
Expand Down Expand Up @@ -57,6 +59,7 @@ export enum InteractiveWindowMessages {
EditCell = 'edit_cell',
RemoveCell = 'remove_cell',
SwapCells = 'swap_cells',
Sync = 'sync_message_used_to_broadcasst_and_sync_editors',
InsertCell = 'insert_cell',
LoadOnigasmAssemblyRequest = 'load_onigasm_assembly_request',
LoadOnigasmAssemblyResponse = 'load_onigasm_assembly_response',
Expand Down Expand Up @@ -305,9 +308,9 @@ export class IInteractiveWindowMapping {
public [InteractiveWindowMessages.SelectKernel]: IServerState | undefined;
public [InteractiveWindowMessages.SelectJupyterServer]: never | undefined;
public [InteractiveWindowMessages.Export]: ICell[];
public [InteractiveWindowMessages.GetAllCells]: ICell;
public [InteractiveWindowMessages.GetAllCells]: never | undefined;
public [InteractiveWindowMessages.ReturnAllCells]: ICell[];
public [InteractiveWindowMessages.DeleteCell]: never | undefined;
public [InteractiveWindowMessages.DeleteCell]: ICellAction;
public [InteractiveWindowMessages.DeleteAllCells]: IAddCellAction;
public [InteractiveWindowMessages.Undo]: never | undefined;
public [InteractiveWindowMessages.Redo]: never | undefined;
Expand All @@ -331,6 +334,7 @@ export class IInteractiveWindowMapping {
public [CssMessages.GetCssRequest]: IGetCssRequest;
public [CssMessages.GetCssResponse]: IGetCssResponse;
public [CssMessages.GetMonacoThemeRequest]: IGetMonacoThemeRequest;
public [CssMessages.GetMonacoThemeResponse]: IGetMonacoThemeResponse;
public [InteractiveWindowMessages.ProvideCompletionItemsRequest]: IProvideCompletionItemsRequest;
public [InteractiveWindowMessages.CancelCompletionItemsRequest]: ICancelIntellisenseRequest;
public [InteractiveWindowMessages.ProvideCompletionItemsResponse]: IProvideCompletionItemsResponse;
Expand Down Expand Up @@ -366,15 +370,20 @@ export class IInteractiveWindowMapping {
public [InteractiveWindowMessages.NotebookDirty]: never | undefined;
public [InteractiveWindowMessages.NotebookClean]: never | undefined;
public [InteractiveWindowMessages.SaveAll]: ISaveAll;
// tslint:disable-next-line: no-any
public [InteractiveWindowMessages.Sync]: { type: InteractiveWindowMessages | SharedMessages | CommonActionType; payload: BaseReduxActionPayload<any> };
public [InteractiveWindowMessages.NativeCommand]: INativeCommand;
public [InteractiveWindowMessages.VariablesComplete]: never | undefined;
public [InteractiveWindowMessages.NotebookRunAllCells]: never | undefined;
public [InteractiveWindowMessages.NotebookRunSelectedCell]: never | undefined;
public [InteractiveWindowMessages.NotebookAddCellBelow]: never | undefined;
public [InteractiveWindowMessages.NotebookAddCellBelow]: IAddCellAction;
public [InteractiveWindowMessages.DoSave]: never | undefined;
public [InteractiveWindowMessages.ExecutionRendered]: IRenderComplete;
public [InteractiveWindowMessages.FocusedCellEditor]: IFocusedCellEditor;
public [InteractiveWindowMessages.UnfocusedCellEditor]: never | undefined;
public [InteractiveWindowMessages.MonacoReady]: never | undefined;
public [InteractiveWindowMessages.ClearAllOutputs]: never | undefined;
public [InteractiveWindowMessages.UpdateKernel]: IServerState | undefined;
public [InteractiveWindowMessages.UpdateKernel]: IServerState;
public [SharedMessages.UpdateSettings]: string;
public [SharedMessages.LocInit]: string;
}
Loading