import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { workspaceName } from '../../actions/workspaceActions'; import { tutorialId, tutorialStep } from '../../actions/tutorialActions'; import Breadcrumbs from '../Breadcrumbs'; import StepperHorizontal from './StepperHorizontal'; import StepperVertical from './StepperVertical'; import Instruction from './Instruction'; import Assessment from './Assessment'; import NotFound from '../NotFound'; import { detectWhitespacesAndReturnReadableResult } from '../../helpers/whitespace'; import tutorials from '../../data/tutorials.json'; import Card from '@material-ui/core/Card'; import Button from '@material-ui/core/Button'; class Tutorial extends Component { componentDidMount(){ this.props.tutorialId(Number(this.props.match.params.tutorialId)); } componentDidUpdate(props, state){ if(props.currentTutorialId !== Number(this.props.match.params.tutorialId)){ this.props.tutorialId(Number(this.props.match.params.tutorialId)); } } componentWillUnmount(){ this.props.tutorialId(null); this.props.workspaceName(null); } render() { var currentTutorialId = this.props.currentTutorialId; var tutorial = tutorials.filter(tutorial => tutorial.id === currentTutorialId)[0]; var steps = tutorial ? tutorial.steps : null; var step = steps ? steps[this.props.activeStep] : null; var name = step ? `${detectWhitespacesAndReturnReadableResult(tutorial.title)}_${detectWhitespacesAndReturnReadableResult(step.headline)}` : null; return ( !Number.isInteger(currentTutorialId) || currentTutorialId < 1 || !tutorial ? :
{/* calc(Card-padding: 10px + Button-height: 35px + Button-marginTop: 15px)*/} {step ? step.type === 'instruction' ? : // if step.type === 'assessment' : null}
); }; } Tutorial.propTypes = { tutorialId: PropTypes.func.isRequired, tutorialStep: PropTypes.func.isRequired, workspaceName: PropTypes.func.isRequired, currentTutorialId: PropTypes.number, status: PropTypes.array.isRequired, change: PropTypes.number.isRequired, activeStep: PropTypes.number.isRequired }; const mapStateToProps = state => ({ change: state.tutorial.change, status: state.tutorial.status, currentTutorialId: state.tutorial.currentId, activeStep: state.tutorial.activeStep }); export default connect(mapStateToProps, { tutorialId, tutorialStep, workspaceName })(Tutorial);