From c00c0949e4d2c076994d5f4bd90a34d60b5500cd Mon Sep 17 00:00:00 2001 From: Delucse <46593742+Delucse@users.noreply.github.com> Date: Fri, 4 Sep 2020 11:50:04 +0200 Subject: [PATCH] clear workspace after changing tutorial --- src/components/Tutorial/Tutorial.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/Tutorial/Tutorial.js b/src/components/Tutorial/Tutorial.js index caebc9d..1102f2a 100644 --- a/src/components/Tutorial/Tutorial.js +++ b/src/components/Tutorial/Tutorial.js @@ -1,5 +1,7 @@ import React, { Component } from 'react'; +import * as Blockly from 'blockly/core'; + import Breadcrumbs from '../Breadcrumbs'; import StepperHorizontal from './StepperHorizontal'; import StepperVertical from './StepperVertical'; @@ -8,6 +10,7 @@ import CodeViewer from '../CodeViewer'; import NotFound from '../NotFound'; import tutorials from './tutorials.json'; +import { initialXml } from '../Blockly/initialXml.js'; import Tabs from '@material-ui/core/Tabs'; import Tab from '@material-ui/core/Tab'; @@ -23,7 +26,14 @@ class Tutorial extends Component { componentDidUpdate(props, state){ if(state.tutorialId !== Number(this.props.match.params.tutorialId)){ - this.setState({tutorialId: Number(this.props.match.params.tutorialId)}) + this.setState({tutorialId: Number(this.props.match.params.tutorialId)}); + // clear workspace + const workspace = Blockly.getMainWorkspace(); + Blockly.Events.disable(); // https://groups.google.com/forum/#!topic/blockly/m7e3g0TC75Y + // if events are disabled, then the workspace will be cleared AND the blocks are not in the trashcan + const xmlDom = Blockly.Xml.textToDom(initialXml) + Blockly.Xml.clearWorkspaceAndLoadFromXml(xmlDom, workspace); + Blockly.Events.enable(); } }