diff --git a/src/actions/tutorialBuilderActions.js b/src/actions/tutorialBuilderActions.js index 03f7662..25304c8 100644 --- a/src/actions/tutorialBuilderActions.js +++ b/src/actions/tutorialBuilderActions.js @@ -1,5 +1,7 @@ import { PROGRESS, BUILDER_CHANGE, BUILDER_ERROR, BUILDER_TITLE, BUILDER_ID, BUILDER_ADD_STEP, BUILDER_DELETE_STEP, BUILDER_CHANGE_STEP, BUILDER_CHANGE_ORDER, BUILDER_DELETE_PROPERTY } from './types'; +import data from '../data/hardware.json'; + export const changeTutorialBuilder = () => (dispatch) => { dispatch({ type: BUILDER_CHANGE @@ -162,8 +164,23 @@ export const setSubmitError = () => (dispatch, getState) => { } for(var i = 0; i < builder.steps.length; i++){ builder.steps[i].id = i+1; - if(i === 0 && (builder.steps[i].hardware === undefined || builder.steps[i].hardware.length < 1)){ - dispatch(setError(i, 'hardware')); + if(i === 0){ + if(builder.steps[i].requirements && builder.steps[i].requirements.length > 0){ + var requirements = builder.steps[i].requirements.filter(requirement => typeof(requirement)==='number'); + if(requirements.length < builder.steps[i].requirements.length){ + dispatch(changeContent(i, 'requirements', requirements)); + } + } + if(builder.steps[i].hardware === undefined || builder.steps[i].hardware.length < 1){ + dispatch(setError(i, 'hardware')); + } + else{ + var hardwareIds = data.map(hardware => hardware.id); + var hardware = builder.steps[i].hardware.filter(hardware => hardwareIds.includes(hardware)); + if(hardware.length < builder.steps[i].hardware.length){ + dispatch(changeContent(i, 'hardware', hardware)); + } + } } if(builder.steps[i].headline === undefined || builder.steps[i].headline === ''){ dispatch(setError(i, 'headline')); diff --git a/src/components/Tutorial/Builder/BlocklyExample.js b/src/components/Tutorial/Builder/BlocklyExample.js index 9c64bf4..be7d6f5 100644 --- a/src/components/Tutorial/Builder/BlocklyExample.js +++ b/src/components/Tutorial/Builder/BlocklyExample.js @@ -79,8 +79,18 @@ class BlocklyExample extends Component { } } + render() { moment.locale('de', localization); + var initialXml = this.props.value; + // check if value is valid xml; + try{ + Blockly.Xml.textToDom(initialXml); + } + catch(err){ + initialXml = null; + this.props.setError(this.props.index, 'xml'); + } return (
Reiche deine Blöcke ein, indem du auf den rot gefärbten Button klickst. : Die letzte Einreichung erfolgte um {this.state.input} Uhr. : null} - {this.state.checked ? () => { - var initialXml = this.props.value; - // check if value is valid xml; - try{ - Blockly.Xml.textToDom(initialXml); - } - catch(err){ - initialXml = null; - this.props.setError(this.props.index, 'xml'); - } - return( -
- - - - + {this.state.checked ? +
+ + + - -
- )} +
+ +
: null}
); diff --git a/src/components/Tutorial/Builder/Builder.js b/src/components/Tutorial/Builder/Builder.js index 9b3aa8e..130be52 100644 --- a/src/components/Tutorial/Builder/Builder.js +++ b/src/components/Tutorial/Builder/Builder.js @@ -67,15 +67,12 @@ class Builder extends Component { reader.onloadend = () => { try { var result = JSON.parse(reader.result); - if(this.checkSteps(result.steps)){ - alert('Hier'); - this.props.readJSON(result); - } - else{ - this.props.progress(false); - alert('die JSON-Datei hat nicht die richtige Form'); + if(!this.checkSteps(result.steps)){ + result.steps = [{}]; } + this.props.readJSON(result); } catch(err){ + console.log(err); this.props.progress(false); alert('ungültige JSON-Datei'); this.setState({ open: true, file: false, title: 'Ungültige XML', content: 'Die XML-Datei konnte nicht in Blöcke zerlegt werden. Bitte überprüfe den XML-Code und versuche es erneut.' }); @@ -86,34 +83,8 @@ class Builder extends Component { checkSteps = (steps) => { if(!(steps && steps.length > 0)){ - alert(1); return false; } - steps.map((step, i) => { - if(i === 0){ - if(!(step.requirements && - step.requirements.length > 0 && - step.requirements.filter(requirement => typeof(requirement) === 'number').length === step.requirements.length)){ - alert(3); - return false; - } - var hardwareIds = data.map(hardware => hardware.id); - if(!(step.hardware && - step.hardware.length > 0 && - step.hardware.filter(hardware => typeof(hardware) === 'string' && hardwareIds.includes(hardware)).length === step.hardware.length)){ - alert(4); - return false; - } - } - if(!(step.headline && typeof(step.headline)==='string')){ - alert(5); - return false; - } - if(!(step.text && typeof(step.text)==='string')){ - alert(6); - return false; - } - }); return true; }