keep workspace code and prepare dialog
This commit is contained in:
parent
9ed49f2972
commit
53b4f5dfeb
@ -20,16 +20,18 @@ class BlocklyWindow extends Component {
|
||||
|
||||
componentDidMount() {
|
||||
const workspace = Blockly.getMainWorkspace();
|
||||
this.props.onChangeWorkspace({});
|
||||
this.props.clearStats();
|
||||
workspace.addChangeListener((event) => {
|
||||
this.props.onChangeWorkspace(event);
|
||||
// switch on that a block is displayed disabled or not depending on whether it is correctly connected
|
||||
// for SVG display, a deactivated block in the display is undesirable
|
||||
if (this.props.blockDisabled) {
|
||||
Blockly.Events.disableOrphans(event);
|
||||
}
|
||||
});
|
||||
if (!this.props.readOnly) {
|
||||
this.props.onChangeWorkspace({});
|
||||
this.props.clearStats();
|
||||
workspace.addChangeListener((event) => {
|
||||
this.props.onChangeWorkspace(event);
|
||||
// switch on that a block is displayed disabled or not depending on whether it is correctly connected
|
||||
// for SVG display, a deactivated block in the display is undesirable
|
||||
if (this.props.blockDisabled) {
|
||||
Blockly.Events.disableOrphans(event);
|
||||
}
|
||||
});
|
||||
}
|
||||
Blockly.svgResize(workspace);
|
||||
const zoomToFit = new ZoomToFitControl(workspace);
|
||||
zoomToFit.init();
|
||||
@ -37,21 +39,23 @@ class BlocklyWindow extends Component {
|
||||
|
||||
componentDidUpdate(props) {
|
||||
const workspace = Blockly.getMainWorkspace();
|
||||
var xml = this.props.initialXml;
|
||||
// if svg is true, then the update process is done in the BlocklySvg component
|
||||
if (props.initialXml !== xml && !this.props.svg) {
|
||||
// guarantees that the current xml-code (this.props.initialXml) is rendered
|
||||
workspace.clear();
|
||||
if (!xml) xml = initialXml;
|
||||
Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(xml), workspace);
|
||||
}
|
||||
if (props.language !== this.props.language) {
|
||||
// change language
|
||||
if (!xml) xml = initialXml;
|
||||
var xmlDom = Blockly.Xml.textToDom(xml);
|
||||
Blockly.Xml.clearWorkspaceAndLoadFromXml(xmlDom, workspace);
|
||||
// var toolbox = workspace.getToolbox();
|
||||
// workspace.updateToolbox(toolbox.toolboxDef_);
|
||||
if (!this.props.readOnly) {
|
||||
var xml = this.props.initialXml;
|
||||
// if svg is true, then the update process is done in the BlocklySvg component
|
||||
if (props.initialXml !== xml && !this.props.svg) {
|
||||
// guarantees that the current xml-code (this.props.initialXml) is rendered
|
||||
workspace.clear();
|
||||
if (!xml) xml = initialXml;
|
||||
Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(xml), workspace);
|
||||
}
|
||||
if (props.language !== this.props.language) {
|
||||
// change language
|
||||
if (!xml) xml = initialXml;
|
||||
var xmlDom = Blockly.Xml.textToDom(xml);
|
||||
Blockly.Xml.clearWorkspaceAndLoadFromXml(xmlDom, workspace);
|
||||
// var toolbox = workspace.getToolbox();
|
||||
// workspace.updateToolbox(toolbox.toolboxDef_);
|
||||
}
|
||||
}
|
||||
Blockly.svgResize(workspace);
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ class Home extends Component {
|
||||
|
||||
componentWillUnmount() {
|
||||
this.props.clearStats();
|
||||
this.props.workspaceName(null);
|
||||
// this.props.workspaceName(null);
|
||||
}
|
||||
|
||||
onChange = () => {
|
||||
@ -112,10 +112,17 @@ class Home extends Component {
|
||||
</Tooltip>
|
||||
<TrashcanButtons />
|
||||
<div className='blocklyWindow'>
|
||||
{this.props.project ?
|
||||
< BlocklyWindow blocklyCSS={{ height: '80vH' }} initialXml={this.props.project.xml} />
|
||||
: < BlocklyWindow blocklyCSS={{ height: '80vH' }} />
|
||||
}
|
||||
{this.props.project ? (
|
||||
<BlocklyWindow
|
||||
blocklyCSS={{ height: "80vH" }}
|
||||
initialXml={this.props.project.xml}
|
||||
/>
|
||||
) : (
|
||||
<BlocklyWindow
|
||||
blocklyCSS={{ height: "80vH" }}
|
||||
initialXml={this.props.workspaceCode?.xml}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</Grid>
|
||||
{this.state.codeOn ?
|
||||
@ -146,7 +153,8 @@ Home.propTypes = {
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
message: state.message,
|
||||
statistics: state.general.statistics
|
||||
statistics: state.general.statistics,
|
||||
workspaceCode: state.workspace.code
|
||||
});
|
||||
|
||||
|
||||
|
@ -18,6 +18,8 @@ import Divider from "@material-ui/core/Divider";
|
||||
import Typography from "@material-ui/core/Typography";
|
||||
import Backdrop from "@material-ui/core/Backdrop";
|
||||
import CircularProgress from "@material-ui/core/CircularProgress";
|
||||
import Dialog from "../Dialog";
|
||||
import Button from "@material-ui/core/Button";
|
||||
|
||||
const styles = (theme) => ({
|
||||
link: {
|
||||
@ -36,6 +38,7 @@ class ProjectHome extends Component {
|
||||
type: "",
|
||||
key: "",
|
||||
message: "",
|
||||
dialog: false,
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
@ -126,10 +129,24 @@ class ProjectHome extends Component {
|
||||
overflow: "hidden",
|
||||
}}
|
||||
>
|
||||
<Link
|
||||
to={`/${
|
||||
data === "Projekte" ? "project" : "gallery"
|
||||
}/${project._id}`}
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log(this.props.workspaceCode.arduino);
|
||||
const showDialog =
|
||||
this.props.workspaceCode.arduino !==
|
||||
"void setup() { } void loop() { } ";
|
||||
if (showDialog)
|
||||
this.setState({
|
||||
dialog: true,
|
||||
});
|
||||
else {
|
||||
this.props.history.push(
|
||||
`/${
|
||||
data === "Projekte" ? "project" : "gallery"
|
||||
}/${project._id}`
|
||||
);
|
||||
}
|
||||
}}
|
||||
style={{ textDecoration: "none", color: "inherit" }}
|
||||
>
|
||||
<h3 style={{ marginTop: 0 }}>{project.title}</h3>
|
||||
@ -139,6 +156,7 @@ class ProjectHome extends Component {
|
||||
<BlocklyWindow
|
||||
svg
|
||||
blockDisabled
|
||||
readOnly
|
||||
initialXml={project.xml}
|
||||
/>
|
||||
<Typography
|
||||
@ -151,7 +169,7 @@ class ProjectHome extends Component {
|
||||
>
|
||||
{project.description}
|
||||
</Typography>
|
||||
</Link>
|
||||
</div>
|
||||
{this.props.user &&
|
||||
this.props.user.email === project.creator ? (
|
||||
<div>
|
||||
@ -206,6 +224,27 @@ class ProjectHome extends Component {
|
||||
type={this.state.type}
|
||||
key={this.state.key}
|
||||
/>
|
||||
<Dialog
|
||||
open={this.state.dialog}
|
||||
title="Achtung"
|
||||
actions={
|
||||
<React.Fragment>
|
||||
<Button
|
||||
onClick={() => {
|
||||
this.setState({ dialog: false });
|
||||
}}
|
||||
color="secondary"
|
||||
>
|
||||
Schließen
|
||||
</Button>
|
||||
<Button onClick={() => {}} color="primary">
|
||||
Speichern
|
||||
</Button>
|
||||
</React.Fragment>
|
||||
}
|
||||
>
|
||||
Hello World
|
||||
</Dialog>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -226,6 +265,7 @@ const mapStateToProps = (state) => ({
|
||||
progress: state.project.progress,
|
||||
user: state.auth.user,
|
||||
message: state.message,
|
||||
workspaceCode: state.workspace.code,
|
||||
});
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
|
Loading…
x
Reference in New Issue
Block a user