Skip to content

Env visualiser #541

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 18, 2019
Merged
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
577 changes: 577 additions & 0 deletions public/externalLibs/env_visualizer/ConcreteJs.js

Large diffs are not rendered by default.

890 changes: 890 additions & 0 deletions public/externalLibs/env_visualizer/visualizer - Copy.js

Large diffs are not rendered by default.

1,022 changes: 1,022 additions & 0 deletions public/externalLibs/env_visualizer/visualizer.js

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions public/externalLibs/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,11 @@ function loadAllLibs() {
'/externalLibs/streams/stream.js',
'/externalLibs/pe_library.js',
'/externalLibs/assert_compiled.js',
//inspector
'/externalLibs/inspector/inspector.js'
// inspector
'/externalLibs/inspector/inspector.js',
// env visualizer
'/externalLibs/env_visualizer/ConcreteJS.js',
'/externalLibs/env_visualizer/visualizer.js'
]

for (var i = 0; i < files.length; i++) {
Expand Down
11 changes: 9 additions & 2 deletions src/components/Playground.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { ExternalLibraryName } from './assessment/assessmentShape';
import Markdown from './commons/Markdown';
import Workspace, { WorkspaceProps } from './workspace';
import { SideContentTab } from './workspace/side-content';
import EnvVisualizer from './workspace/side-content/EnvVisualizer';
import Inspector from './workspace/side-content/Inspector';
import ListVisualizer from './workspace/side-content/ListVisualizer';

Expand Down Expand Up @@ -155,7 +156,7 @@ class Playground extends React.Component<IPlaygroundProps, PlaygroundState> {
sideContentProps: {
activeTab: this.props.activeTab,
handleChangeActiveTab: this.props.handleChangeActiveTab,
tabs: [playgroundIntroductionTab, listVisualizerTab, inspectorTab]
tabs: [playgroundIntroductionTab, listVisualizerTab, inspectorTab, envVisualizerTab]
}
};
return (
Expand All @@ -181,7 +182,7 @@ const playgroundIntroductionTab: SideContentTab = {
};

const listVisualizerTab: SideContentTab = {
label: 'List Visualizer',
label: 'Data Visualizer',
icon: IconNames.EYE_OPEN,
body: <ListVisualizer />
};
Expand All @@ -192,4 +193,10 @@ const inspectorTab: SideContentTab = {
body: <Inspector />
};

const envVisualizerTab: SideContentTab = {
label: 'Env Visualizer',
icon: IconNames.EYE_OPEN,
body: <EnvVisualizer />
};

export default Playground;
17 changes: 17 additions & 0 deletions src/components/workspace/side-content/EnvVisualizer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import * as React from 'react';

class EnvVisualizer extends React.Component<{}, {}> {
private $parent: HTMLElement | null;

public componentDidMount() {
if (this.$parent) {
(window as any).EnvVisualizer.init(this.$parent);
}
}

public render() {
return <div ref={r => (this.$parent = r)} className="sa-env-visualizer pt-dark" />;
}
}

export default EnvVisualizer;
3 changes: 2 additions & 1 deletion src/sagas/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { externalLibraries } from '../reducers/externalLibraries';
import { defaultEditorValue, IState, IWorkspaceState } from '../reducers/states';
import { IVLE_KEY, USE_BACKEND } from '../utils/constants';
import { showSuccessMessage, showWarningMessage } from '../utils/notification';
import { highlightLine, inspectorUpdate } from '../utils/slangHelper';
import { highlightLine, inspectorUpdate, visualiseEnv } from '../utils/slangHelper';
import backendSaga from './backend';

function* mainSaga() {
Expand Down Expand Up @@ -312,6 +312,7 @@ function* updateInspector() {
const start = lastDebuggerResult.context.runtime.nodes[0].loc.start.line - 1;
const end = lastDebuggerResult.context.runtime.nodes[0].loc.end.line - 1;
yield put(actions.highlightEditorLine([start, end], location));
visualiseEnv(lastDebuggerResult);
inspectorUpdate(lastDebuggerResult);
} catch (e) {
put(actions.highlightEditorLine([], location));
Expand Down
8 changes: 8 additions & 0 deletions src/utils/slangHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,14 @@ function visualiseList(list: any) {
}
}

export function visualiseEnv(context: Context) {
if ((window as any).EnvVisualizer) {
(window as any).EnvVisualizer.draw_env({ context });
} else {
throw new Error('Env visualizer is not enabled');
}
}

export function highlightLine(line: number) {
if ((window as any).Inspector) {
(window as any).Inspector.highlightClean();
Expand Down