hardware of steps
This commit is contained in:
		
							parent
							
								
									b78b704755
								
							
						
					
					
						commit
						07042ae055
					
				
							
								
								
									
										82
									
								
								src/components/Tutorial/Builder/Hardware.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								src/components/Tutorial/Builder/Hardware.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | ||||
| import React, { Component } from 'react'; | ||||
| import PropTypes from 'prop-types'; | ||||
| import { connect } from 'react-redux'; | ||||
| import { changeContent } from '../../../actions/tutorialBuilderActions'; | ||||
| 
 | ||||
| import hardware from '../../../data/hardware.json'; | ||||
| 
 | ||||
| import { fade } from '@material-ui/core/styles/colorManipulator'; | ||||
| import { withStyles } from '@material-ui/core/styles'; | ||||
| import withWidth, { isWidthDown } from '@material-ui/core/withWidth'; | ||||
| import GridList from '@material-ui/core/GridList'; | ||||
| import GridListTile from '@material-ui/core/GridListTile'; | ||||
| import GridListTileBar from '@material-ui/core/GridListTileBar'; | ||||
| 
 | ||||
| const styles = theme => ({ | ||||
|   multiGridListTile: { | ||||
|     background: fade(theme.palette.secondary.main, 0.5), | ||||
|     height: '30px' | ||||
|   }, | ||||
|   multiGridListTileTitle: { | ||||
|     color: theme.palette.text.primary | ||||
|   }, | ||||
|   border: { | ||||
|     '&:hover': { | ||||
|       width: 'calc(100% - 4px)', | ||||
|       height: 'calc(100% - 4px)', | ||||
|       border: `2px solid ${theme.palette.primary.main}` | ||||
|     } | ||||
|   }, | ||||
|   active: { | ||||
|     width: 'calc(100% - 4px)', | ||||
|     height: 'calc(100% - 4px)', | ||||
|     border: `2px solid ${theme.palette.primary.main}` | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| class Requirements extends Component { | ||||
| 
 | ||||
|   onChange = (hardware) => { | ||||
|     var hardwareArray = this.props.value; | ||||
|     if(hardwareArray.filter(value => value === hardware).length > 0){ | ||||
|       hardwareArray = hardwareArray.filter(value => value !== hardware); | ||||
|     } | ||||
|     else { | ||||
|       hardwareArray.push(hardware); | ||||
|     } | ||||
|     this.props.changeContent(this.props.index, 'hardware', hardwareArray); | ||||
|   } | ||||
| 
 | ||||
|   render() { | ||||
|     var cols = isWidthDown('md', this.props.width) ? isWidthDown('sm', this.props.width) ? isWidthDown('xs', this.props.width) ? 2 : 3 : 4 : 6; | ||||
|     return ( | ||||
|         <GridList cellHeight={100} cols={cols} spacing={10}> | ||||
|         {hardware.map((picture,i) => ( | ||||
|           <GridListTile key={i} onClick={() => this.onChange(picture.id)} classes={{tile: this.props.value.filter(value => value === picture.id).length > 0 ? this.props.classes.active : this.props.classes.border}}> | ||||
|             <div style={{margin: 'auto', width: 'max-content'}}> | ||||
|               <img src={`/media/hardware/${picture.src}`} alt={picture.name} height={100} style={{cursor: 'pointer'}} /> | ||||
|             </div> | ||||
|             <GridListTileBar | ||||
|               classes={{root: this.props.classes.multiGridListTile}} | ||||
|               title={ | ||||
|                 <div style={{overflow: 'hidden', textOverflow: 'ellipsis'}} className={this.props.classes.multiGridListTileTitle}> | ||||
|                   {picture.id} | ||||
|                 </div> | ||||
|               } | ||||
|             /> | ||||
|           </GridListTile> | ||||
|         ))} | ||||
|         </GridList> | ||||
|     ); | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
| Requirements.propTypes = { | ||||
|   changeContent: PropTypes.func.isRequired | ||||
| }; | ||||
| 
 | ||||
| const mapStateToProps = state => ({ | ||||
|   change: state.builder.change | ||||
| }); | ||||
| 
 | ||||
| export default connect(mapStateToProps, { changeContent })(withStyles(styles, { withTheme: true })(withWidth()(Requirements))); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user