A self hosted solution for privately rating and reviewing different sorts of media
at master 83 lines 2.9 kB view raw
1import { Add } from '@mui/icons-material' 2import { Button, Slider, TextField } from '@mui/material' 3import React, { useState } from 'react' 4import styles from "./seasons.module.css" 5 6import SeasonComponent from "./SeasonComponent" 7 8const SeasonCreateComponent = (props) => { 9 10 let [name, setName] = useState("") 11 let [studio, setStudio] = useState("") 12 let [rating, setRating] = useState(-1) 13 let [notes, setNotes] = useState("") 14 15 let [expandedSeason, setExpandedSeason] = useState("") 16 17 function createSeason(media) { 18 let new_data = JSON.parse(JSON.stringify(props.editableData)) 19 new_data[media]["seasons"][name.toLowerCase()] = { 20 "disname": name, 21 "rating": rating, 22 "studio": studio, 23 "notes": notes 24 }; 25 props.setEditableData(new_data) 26 console.log("Created Season") 27 28 setName("") 29 setNotes("") 30 setRating(-1) 31 setStudio("") 32 } 33 34 return ( 35 <div> 36 <div className={styles.seasons}> 37 { 38 Object.keys(props.editableData[props.editMedia]["seasons"]).map((val, idx) => { 39 40 return ( 41 <div key={props.editMedia + val}> 42 <SeasonComponent {...{...props, ...{val: val, expandedSeason: expandedSeason, setExpandedSeason: setExpandedSeason}}} /> 43 </div> 44 ) 45 }) 46 } 47 </div> 48 <div className={styles.scontainer}> 49 <div className={styles.title}> 50 Name 51 </div> 52 <TextField className={styles.filter_input} placeholder="Season 1" value={name} onChange={(e) => setName(e.target.value)}/> 53 54 <div className={styles.title}> 55 Rating ({rating}) 56 </div> 57 <Slider value={rating} onChange={(e) => setRating(e.target.value)} min={-1}/> 58 59 <div className={styles.title}> 60 Studio 61 </div> 62 <TextField className={styles.filter_input} placeholder="Netflix" value={studio} onChange={(e) => setStudio(e.target.value)}/> 63 64 <div className={styles.title}> 65 Notes 66 </div> 67 <TextField 68 multiline 69 rows={5} 70 fullWidth 71 className={styles.create_notes} 72 value={notes} 73 placeholder="I liked this because..." 74 onChange={(e) => setNotes(e.target.value)} 75 /> 76 77 <Button className={styles.create_button} startIcon={<Add />} variant="outlined" onClick={() => createSeason(props.editMedia)}>Create Season</Button> 78 </div> 79 </div> 80 ) 81} 82 83export default SeasonCreateComponent