Showing
5 changed files
with
94 additions
and
42 deletions
| ... | @@ -10,6 +10,7 @@ import TodoCard from "./TodoCard.js"; | ... | @@ -10,6 +10,7 @@ import TodoCard from "./TodoCard.js"; |
| 10 | 10 | ||
| 11 | const useStyles = makeStyles((theme) => ({ | 11 | const useStyles = makeStyles((theme) => ({ |
| 12 | root: { | 12 | root: { |
| 13 | + minHeight:"100vh", | ||
| 13 | backgroundColor: "rgba(1,0,0,0.5)" | 14 | backgroundColor: "rgba(1,0,0,0.5)" |
| 14 | }, | 15 | }, |
| 15 | container: { | 16 | container: { |
| ... | @@ -18,12 +19,12 @@ const useStyles = makeStyles((theme) => ({ | ... | @@ -18,12 +19,12 @@ const useStyles = makeStyles((theme) => ({ |
| 18 | paddingBottom: "1rem", | 19 | paddingBottom: "1rem", |
| 19 | marginLeft: "auto", | 20 | marginLeft: "auto", |
| 20 | marginRight: "auto", | 21 | marginRight: "auto", |
| 21 | - }, | 22 | + } |
| 22 | - item: {}, | ||
| 23 | })); | 23 | })); |
| 24 | 24 | ||
| 25 | export default function BodyLayout() { | 25 | export default function BodyLayout() { |
| 26 | const classes = useStyles(); | 26 | const classes = useStyles(); |
| 27 | + | ||
| 27 | const [data, setData] = useState([]); | 28 | const [data, setData] = useState([]); |
| 28 | const [isLoading, setIsLoading] = useState(1); | 29 | const [isLoading, setIsLoading] = useState(1); |
| 29 | 30 | ||
| ... | @@ -56,7 +57,7 @@ export default function BodyLayout() { | ... | @@ -56,7 +57,7 @@ export default function BodyLayout() { |
| 56 | {data.map((data) => { | 57 | {data.map((data) => { |
| 57 | return ( | 58 | return ( |
| 58 | <Grid item xs={6} sm={6} md={3}> | 59 | <Grid item xs={6} sm={6} md={3}> |
| 59 | - <TodoCard data={data} id={data.date}/> | 60 | + <TodoCard id={data.id} data={data} /> |
| 60 | </Grid> | 61 | </Grid> |
| 61 | ); | 62 | ); |
| 62 | })} | 63 | })} | ... | ... |
client/src/components/Modal.js
0 → 100644
| 1 | +import React from 'react'; | ||
| 2 | +import { makeStyles } from '@material-ui/core/styles'; | ||
| 3 | +import Modal from '@material-ui/core/Modal'; | ||
| 4 | + | ||
| 5 | +function rand() { | ||
| 6 | + return Math.round(Math.random() * 20) - 10; | ||
| 7 | +} | ||
| 8 | + | ||
| 9 | +function getModalStyle() { | ||
| 10 | + const top = 50 + rand(); | ||
| 11 | + const left = 50 + rand(); | ||
| 12 | + | ||
| 13 | + return { | ||
| 14 | + top: `${top}%`, | ||
| 15 | + left: `${left}%`, | ||
| 16 | + transform: `translate(-${top}%, -${left}%)`, | ||
| 17 | + }; | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +const useStyles = makeStyles((theme) => ({ | ||
| 21 | + paper: { | ||
| 22 | + position: 'absolute', | ||
| 23 | + width: 400, | ||
| 24 | + backgroundColor: theme.palette.background.paper, | ||
| 25 | + border: '2px solid #000', | ||
| 26 | + boxShadow: theme.shadows[5], | ||
| 27 | + padding: theme.spacing(2, 4, 3), | ||
| 28 | + }, | ||
| 29 | +})); | ||
| 30 | + | ||
| 31 | +export default function SimpleModal() { | ||
| 32 | + const classes = useStyles(); | ||
| 33 | + // getModalStyle is not a pure function, we roll the style only on the first render | ||
| 34 | + const [modalStyle] = React.useState(getModalStyle); | ||
| 35 | + const [open, setOpen] = React.useState(false); | ||
| 36 | + | ||
| 37 | + const handleOpen = () => { | ||
| 38 | + setOpen(true); | ||
| 39 | + }; | ||
| 40 | + | ||
| 41 | + const handleClose = () => { | ||
| 42 | + setOpen(false); | ||
| 43 | + }; | ||
| 44 | + | ||
| 45 | + const body = ( | ||
| 46 | + <div style={modalStyle} className={classes.paper}> | ||
| 47 | + <h2 id="simple-modal-title">Text in a modal</h2> | ||
| 48 | + <p id="simple-modal-description"> | ||
| 49 | + Duis mollis, est non commodo luctus, nisi erat porttitor ligula. | ||
| 50 | + </p> | ||
| 51 | + <SimpleModal /> | ||
| 52 | + </div> | ||
| 53 | + ); | ||
| 54 | + | ||
| 55 | + return ( | ||
| 56 | + <div> | ||
| 57 | + <button type="button" onClick={handleOpen}> | ||
| 58 | + Open Modal | ||
| 59 | + </button> | ||
| 60 | + <Modal | ||
| 61 | + open={open} | ||
| 62 | + onClose={handleClose} | ||
| 63 | + aria-labelledby="simple-modal-title" | ||
| 64 | + aria-describedby="simple-modal-description" | ||
| 65 | + > | ||
| 66 | + {body} | ||
| 67 | + </Modal> | ||
| 68 | + </div> | ||
| 69 | + ); | ||
| 70 | +} |
| ... | @@ -9,7 +9,7 @@ import Icon from "@material-ui/core/Icon"; | ... | @@ -9,7 +9,7 @@ import Icon from "@material-ui/core/Icon"; |
| 9 | 9 | ||
| 10 | const useStyles = makeStyles({ | 10 | const useStyles = makeStyles({ |
| 11 | root: { | 11 | root: { |
| 12 | - margin:10 | 12 | + margin: 10, |
| 13 | }, | 13 | }, |
| 14 | date: { | 14 | date: { |
| 15 | fontSize: 14, | 15 | fontSize: 14, |
| ... | @@ -38,6 +38,12 @@ const useStyles = makeStyles({ | ... | @@ -38,6 +38,12 @@ const useStyles = makeStyles({ |
| 38 | export default function TodoCard(props) { | 38 | export default function TodoCard(props) { |
| 39 | const classes = useStyles(); | 39 | const classes = useStyles(); |
| 40 | const data = props.data; | 40 | const data = props.data; |
| 41 | + const todo = data.todo.split(","); | ||
| 42 | + const isTrue = "1"; | ||
| 43 | + const check = data.ck.split(",").map((ck) => { | ||
| 44 | + return isTrue == ck; | ||
| 45 | + }); | ||
| 46 | + | ||
| 41 | return ( | 47 | return ( |
| 42 | <Card className={classes.root}> | 48 | <Card className={classes.root}> |
| 43 | <CardContent> | 49 | <CardContent> |
| ... | @@ -52,16 +58,18 @@ export default function TodoCard(props) { | ... | @@ -52,16 +58,18 @@ export default function TodoCard(props) { |
| 52 | <Typography className={classes.title} variant="h6"> | 58 | <Typography className={classes.title} variant="h6"> |
| 53 | {data.title} | 59 | {data.title} |
| 54 | </Typography> | 60 | </Typography> |
| 55 | - <Typography className={classes.percent} variant="h6"> | 61 | + |
| 62 | + {/* <Typography className={classes.percent} variant="h6"> | ||
| 56 | 99% | 63 | 99% |
| 57 | - </Typography> | 64 | + </Typography> */} |
| 58 | 65 | ||
| 59 | - {data.todo.map((todo) => { | 66 | + {todo.map((item, idx) => { |
| 60 | return ( | 67 | return ( |
| 61 | <FormControlLabel | 68 | <FormControlLabel |
| 62 | className={classes.checkBox} | 69 | className={classes.checkBox} |
| 63 | control={<Checkbox />} | 70 | control={<Checkbox />} |
| 64 | - label={todo} | 71 | + checked={check[idx]} |
| 72 | + label={item} | ||
| 65 | /> | 73 | /> |
| 66 | ); | 74 | ); |
| 67 | })} | 75 | })} | ... | ... |
| 1 | +const fs = require("fs"); | ||
| 1 | const express = require("express"); | 2 | const express = require("express"); |
| 2 | const bodyParser = require("body-parser"); | 3 | const bodyParser = require("body-parser"); |
| 3 | const app = express(); | 4 | const app = express(); |
| 4 | -//const mysql = require('mysql'); | ||
| 5 | 5 | ||
| 6 | const port = process.env.PORT || 5000; | 6 | const port = process.env.PORT || 5000; |
| 7 | 7 | ||
| 8 | -/* | ||
| 9 | const data = fs.readFileSync('./database.json'); | 8 | const data = fs.readFileSync('./database.json'); |
| 10 | const conf = JSON.parse(data); | 9 | const conf = JSON.parse(data); |
| 10 | +const mysql = require('mysql'); | ||
| 11 | 11 | ||
| 12 | const connection = mysql.createConnection({ | 12 | const connection = mysql.createConnection({ |
| 13 | host: conf.host, | 13 | host: conf.host, |
| ... | @@ -18,42 +18,17 @@ const connection = mysql.createConnection({ | ... | @@ -18,42 +18,17 @@ const connection = mysql.createConnection({ |
| 18 | }); | 18 | }); |
| 19 | 19 | ||
| 20 | connection.connect(); | 20 | connection.connect(); |
| 21 | -*/ | ||
| 22 | 21 | ||
| 23 | app.use(bodyParser.json()); | 22 | app.use(bodyParser.json()); |
| 24 | app.use(bodyParser.urlencoded({ extended: true })); | 23 | app.use(bodyParser.urlencoded({ extended: true })); |
| 25 | 24 | ||
| 26 | app.get("/api/cards", (req, res) => { | 25 | app.get("/api/cards", (req, res) => { |
| 27 | - res.send([ | 26 | + connection.query( |
| 28 | - { | 27 | + 'SELECT * FROM CARDINFO', |
| 29 | - date: "2020-99-99", | 28 | + (err,rows,fields)=>{ |
| 30 | - name: "daehwi", | 29 | + res.send(rows); |
| 31 | - isPublic: true, | ||
| 32 | - title: "열글자까지가능합니다.", | ||
| 33 | - todo: ["휴대폰하기", "리액트하기", "옾소과제"], | ||
| 34 | - }, | ||
| 35 | - { | ||
| 36 | - date: "2020-99-99", | ||
| 37 | - name: "fuck", | ||
| 38 | - isPublic: true, | ||
| 39 | - title: "열글자까지가능합니다.", | ||
| 40 | - todo: ["헬스", "낮잠", "확랜과제"], | ||
| 41 | - }, | ||
| 42 | - { | ||
| 43 | - date: "2020-99-99", | ||
| 44 | - name: "talk", | ||
| 45 | - isPublic: true, | ||
| 46 | - title: "열글자까지가능할걸요.", | ||
| 47 | - todo: ["카톡", "라인", "페메","DM"], | ||
| 48 | - }, | ||
| 49 | - { | ||
| 50 | - date: "2020-99-99", | ||
| 51 | - name: "성훈정", | ||
| 52 | - isPublic: true, | ||
| 53 | - title: "하나둘셋넷다섯여섯일.", | ||
| 54 | - todo: ["쌍쌍바ㅏ", "비비빅", "메로나"], | ||
| 55 | } | 30 | } |
| 56 | - ]); | 31 | + ) |
| 57 | }); | 32 | }); |
| 58 | 33 | ||
| 59 | app.listen(port, () => console.log(`Listening on port ${port}`)); | 34 | app.listen(port, () => console.log(`Listening on port ${port}`)); | ... | ... |
-
Please register or login to post a comment