A self hosted solution for privately rating and reviewing different sorts of media
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