From 9d99c5c30bf769e0dc55fe12eb4e7ec9e0fc436e Mon Sep 17 00:00:00 2001
From: Delucse <46593742+Delucse@users.noreply.github.com>
Date: Sun, 27 Sep 2020 20:15:11 +0200
Subject: [PATCH] display of the blocks as SVG in instruction-component
---
src/components/Blockly/BlocklyComponent.css | 7 --
src/components/Blockly/BlocklyComponent.jsx | 1 -
src/components/Blockly/BlocklySvg.js | 65 ++++++++++++++++
src/components/Blockly/BlocklyWindow.js | 76 ++++++++++---------
src/components/Home.js | 2 +-
src/components/Tutorial/Assessment.js | 5 +-
.../Tutorial/Builder/BlocklyExample.js | 5 +-
src/components/Tutorial/Instruction.js | 7 +-
8 files changed, 115 insertions(+), 53 deletions(-)
delete mode 100644 src/components/Blockly/BlocklyComponent.css
create mode 100644 src/components/Blockly/BlocklySvg.js
diff --git a/src/components/Blockly/BlocklyComponent.css b/src/components/Blockly/BlocklyComponent.css
deleted file mode 100644
index 8705fbc..0000000
--- a/src/components/Blockly/BlocklyComponent.css
+++ /dev/null
@@ -1,7 +0,0 @@
-#blocklyDiv {
- height: 100%;
- min-height: 500px;
- width: 100%;
- /* border: 1px solid #4EAF47; */
- position: relative;
-}
diff --git a/src/components/Blockly/BlocklyComponent.jsx b/src/components/Blockly/BlocklyComponent.jsx
index 627df9a..e76de57 100644
--- a/src/components/Blockly/BlocklyComponent.jsx
+++ b/src/components/Blockly/BlocklyComponent.jsx
@@ -22,7 +22,6 @@
*/
import React from 'react';
-import './BlocklyComponent.css';
import Blockly from 'blockly/core';
import locale from 'blockly/msg/en';
diff --git a/src/components/Blockly/BlocklySvg.js b/src/components/Blockly/BlocklySvg.js
new file mode 100644
index 0000000..174b7c3
--- /dev/null
+++ b/src/components/Blockly/BlocklySvg.js
@@ -0,0 +1,65 @@
+import React, { Component } from 'react';
+
+import * as Blockly from 'blockly/core';
+
+class BlocklySvg extends Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ svg: ''
+ };
+ }
+
+ componentDidMount() {
+ this.getSvg();
+ }
+
+ componentDidUpdate(props) {
+ if(props.initialXml !== this.props.initialXml){
+ this.getSvg();
+ }
+ }
+
+ getSvg = () => {
+ const workspace = Blockly.getMainWorkspace();
+ workspace.clear();
+ Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(this.props.initialXml), workspace);
+ var canvas = workspace.svgBlockCanvas_.cloneNode(true);
+
+ if (canvas.children[0] !== undefined) {
+ canvas.removeAttribute("transform");
+
+ // does not work in react
+ // var cssContent = Blockly.Css.CONTENT.join('');
+ var cssContent = '';
+ for (var i = 0; i < document.getElementsByTagName('style').length; i++) {
+ if(/^blockly.*$/.test(document.getElementsByTagName('style')[i].id)){
+ cssContent += document.getElementsByTagName('style')[i].firstChild.data.replace(/\..* \./g, '.');
+ }
+ }
+
+ var css = '