[{"C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\index.js":"1","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\reportWebVitals.js":"2","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Pages\\App.js":"3","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Pages\\Search.js":"4","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Components\\Place.js":"5","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Components\\Paginations.js":"6"},{"size":1133,"mtime":1610956158273,"results":"7","hashOfConfig":"8"},{"size":375,"mtime":1610931750280,"results":"9","hashOfConfig":"8"},{"size":1553,"mtime":1610931750241,"results":"10","hashOfConfig":"8"},{"size":7829,"mtime":1611126427967,"results":"11","hashOfConfig":"8"},{"size":1608,"mtime":1611080275421,"results":"12","hashOfConfig":"8"},{"size":2199,"mtime":1610931750239,"results":"13","hashOfConfig":"8"},{"filePath":"14","messages":"15","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"16"},"1hwnshv",{"filePath":"17","messages":"18","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"16"},{"filePath":"19","messages":"20","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"21","usedDeprecatedRules":"16"},{"filePath":"22","messages":"23","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"24","usedDeprecatedRules":"16"},{"filePath":"25","messages":"26","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"27","usedDeprecatedRules":"16"},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},"C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\index.js",[],["31","32"],"C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\reportWebVitals.js",[],"C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Pages\\App.js",["33","34","35"],"import React, { useEffect, useState } from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport ohuh from '../ohuh.PNG';\r\nimport { Container, Row, Form, Image, InputGroup, Button, Col, FormControl } from 'react-bootstrap';\r\n\r\nfunction App() {\r\n const [state, setState] = useState(false);\r\n const [search, setSearch] = useState(\"\");\r\n\r\n if (state !== false) {\r\n return <Redirect to={{\r\n pathname: `/search/${search}`,\r\n state: { id: search },\r\n }} />;\r\n }\r\n\r\n const handleChange = (e) => {\r\n setSearch(e.target.value);\r\n }\r\n\r\n const handleSubmit = () => {\r\n setState(true);\r\n }\r\n\r\n return (\r\n <Container className=\"vh-100 d-flex justify-content-md-center align-items-center\">\r\n <Col md={6} lassName=\" d-flex justify-content-center\">\r\n <Row style={{marginBottom:20}}>\r\n <Image src={ohuh} />\r\n </Row>\r\n <Row style={{marginBottom:500}}>\r\n <Form className=\"vw-100\" onSubmit={handleSubmit}>\r\n <InputGroup>\r\n <Form.Control\r\n size=\"lg\"\r\n placeholder=\"검색어를 입력하세요.\"\r\n aria-label=\"Large\"\r\n aria-describedby=\"inputGroup-sizing-sm\"\r\n onChange={handleChange}\r\n />\r\n <InputGroup.Append>\r\n <Button type='submit' variant=\"outline-secondary\">검색</Button>\r\n </InputGroup.Append>\r\n </InputGroup>\r\n </Form>\r\n </Row>\r\n </Col>\r\n </Container>\r\n );\r\n}\r\n\r\nexport default App;","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Pages\\Search.js",["36","37","38","39","40","41","42"],"import React, { useState, useEffect } from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport ohuh from '../ohuh-sm.PNG';\r\nimport Place from '../Components/Place';\r\nimport { Container, Form, Row, Col, Card, Image, InputGroup, FormControl, Button, Pagination } from 'react-bootstrap';\r\nimport Paginations from '../Components/Paginations';\r\nimport axios from 'axios';\r\n\r\nfunction Search(props) {\r\n const endPage = 10;\r\n const [state, setState] = useState(false);\r\n const [index, setIndex] = useState(1);\r\n const [showSet, setShowSet] = useState([false, false, false, false]);\r\n const [search, setSearch] = useState(props.location.state.id);\r\n const [mobile, setMobile] = useState();\r\n const [place, setPlace] = useState([{ name: \"\", category: \"\", address: \"\" }])\r\n const [imgUrl, setImgUrl] = useState([])\r\n const [association, setAssociation] = useState([])\r\n\r\n const getImg = () => {\r\n axios.get(`/api/search/imges/${search}`)\r\n .then(res => {\r\n console.log(\"images=\", res.data)\r\n setImgUrl(res.data)\r\n })\r\n .catch(err => {\r\n console.log('search.images 에러 발생', err)\r\n })\r\n }\r\n\r\n const getPlace = () => {\r\n axios.get(`/api/search/places/${search}`)\r\n .then(res => {\r\n console.log(\"places=\", res.data)\r\n setPlace(res.data)\r\n })\r\n .catch(err => {\r\n console.log('search.places 에러 발생', err)\r\n })\r\n }\r\n\r\n const getAssociation =() => {\r\n axios.get(`/api/search/association/${search}`)\r\n .then(res => {\r\n console.log(\"Associations = \", res.data)\r\n setAssociation(res.data)\r\n })\r\n .catch(err => {\r\n console.log(\"search.associations 에러 발생\", err)\r\n })\r\n }\r\n\r\n\r\n\r\n useEffect(() => {\r\n getPlace()\r\n getImg()\r\n getAssociation()\r\n if (window.innerWidth < 960) {\r\n setMobile(true)\r\n } else {\r\n setMobile(false)\r\n }\r\n }, []);\r\n\r\n\r\n\r\n\r\n\r\n\r\n const places = [{\r\n name: \"한라산(hallasan)\",\r\n address: \"제주 서귀포시 토평동 산15-1\",\r\n img: \"https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg/269px-KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg?size=200x200\",\r\n }, {\r\n name: \"성산일출봉(sungsan)\",\r\n address: \"제주 서귀포시 성산읍 성산리 1\",\r\n img: \"https://www.jeju.go.kr/pub/site/geopark/images/sub/sub03/02%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84%EC%9D%B4%EC%95%BC%EA%B8%B0/%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84/%EC%A7%80%EC%A7%88%EB%A7%88%EC%9D%84_%EC%84%B1%EC%82%B0%EC%9D%BC%EC%B6%9C%EB%B4%89/1412402261.jpg?400/400\",\r\n }, {\r\n name: \"해녀의 집(haenyeo)\",\r\n address: \"제주 서귀포시 성산읍 한도로 141-13지번오조리 3 오조해녀의집\",\r\n img: \"https://mblogthumb-phinf.pstatic.net/MjAxNjExMTdfMTc0/MDAxNDc5MzU3ODU0ODQy.KZYXCjzsXT3rCsE4HXBfxyCg2buvluBvN_7NxVp7BSwg.loJc89d8JjGXdNCn-4yMd7aMWPjfrZn21TI9Hyzemkog.JPEG.icocam11/20161010_100205.jpg?type=w800\",\r\n }, {\r\n name: \"오설록 티 뮤지엄(osulloc)\",\r\n address: \"제주 서귀포시 안덕면 신화역사로 15 오설록지번서광리 1235-1 오설록\",\r\n img: \"https://cdnweb01.wikitree.co.kr/webdata/editor/202007/01/img_20200701143323_2ced7627.webp\",\r\n }, {\r\n name: \"오설록 티 뮤지엄(osulloc)\",\r\n address: \"제주 서귀포시 안덕면 신화역사로 15 오설록지번서광리 1235-1 오설록\",\r\n img: \"https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg/269px-KOCIS_Halla_Mountain_in_Jeju-do_%286387785543%29.jpg\",\r\n }]\r\n\r\n if (state !== false) {\r\n return <Redirect to={{\r\n pathname: `/search/${search}`,\r\n state: { id: search },\r\n }} />;\r\n }\r\n\r\n const handlePage = (num) => {\r\n setIndex(num);\r\n }\r\n\r\n\r\n const handleChange = (e) => {\r\n setSearch(e.target.value);\r\n }\r\n\r\n const handleSubmit = (e) => {\r\n setState(true);\r\n }\r\n\r\n function paginate(items, pageNumber, itemNumber) {\r\n const page = [];\r\n const startIndex = (pageNumber - 1) * itemNumber\r\n for (var i = 0; i < itemNumber; i++) {\r\n page.push(items[(startIndex + i)])\r\n }\r\n return page\r\n }\r\n\r\n const pagePlace = paginate(association, index, association.length)\r\n\r\n\r\n // function times (){\r\n // let time = new Date()\r\n // console.log(time)\r\n // return time\r\n // }\r\n // console.log(times())\r\n\r\n let time = new Date()\r\n\r\n return (\r\n <Container >\r\n <Link to=\"/\" className=\"d-flex justify-content-center\"><Image src={ohuh} /></Link>\r\n <Row className=\"mb-2\" className=\"d-flex justify-content-center\">\r\n <Form style={{ width: \"90vw\" }} onSubmit={handleSubmit}>\r\n <InputGroup size=\"lg\">\r\n <FormControl\r\n placeholder=\"검색어를 입력하세요.\"\r\n value={search}\r\n aria-label=\"Large\"\r\n aria-describedby=\"inputGroup-sizing-sm\"\r\n onChange={handleChange}\r\n />\r\n <InputGroup.Append>\r\n <Button type=\"submit\" variant=\"outline-secondary\" >검색</Button>\r\n </InputGroup.Append>\r\n </InputGroup>\r\n </Form>\r\n </Row>\r\n {/* {time.toString()}**** */}\r\n {time.toLocaleString()}\r\n {/* {time.toLocaleDateString()}****\r\n {time.toLocaleTimeString()}**** */}\r\n \r\n <Row className=\"d-flex flex-wrap\">\r\n {pagePlace.map((place, index) => {\r\n return (\r\n <Col key={index} md={6} >\r\n <Card align=\"center\" border=\"info\" style={{ margin: \"3%\" }}>\r\n <Card.Title style={{ margin: \"3%\", fontSize: '200%', fontWeight: 'bold' }} >{place.name}</Card.Title>\r\n <Card.Img variant=\"top\" style={{ padding: \"5%\", width: \"100%\", height: \"340px\" }} src={place.img} />\r\n <Card.Body >\r\n <Card.Text style={{ overflow: 'auto', fontSize: '25px', width: '100%', height: \"80px\" }} >\r\n {place.address} </Card.Text>\r\n <Button variant=\"primary\" onClick={() => {\r\n const showArr = [false, false, false, false]\r\n showArr[index] = true\r\n setShowSet(showArr)\r\n }}>{place.name} 자세히 살펴보기</Button>\r\n <Place search={place} index={index} show={showSet[index]} onHide={() => setShowSet([false, false, false, false])} />\r\n </Card.Body>\r\n </Card>\r\n </Col>\r\n )\r\n })}\r\n </Row>\r\n {/* {console.log(showSet)} */}\r\n {/* show가 전부 true로 바뀌어서 전부 다 보이게 되는 것이다. */}\r\n <Row className=\"mt-2 d-flex justify-content-center\">\r\n <Paginations index={index} endPage={endPage} handlePage={handlePage}></Paginations>\r\n </Row>\r\n </Container>\r\n );\r\n}\r\n\r\nexport default Search;\r\n","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Components\\Place.js",["43","44","45","46","47","48"],"import axios from 'axios';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Modal, Container, Row, Col, Button, Badge, Card, Accordion, Carousel } from 'react-bootstrap';\r\n\r\nfunction Place(props) {\r\n const [reviews, setReviews] = useState([])\r\n const getReview = () => {\r\n axios.get(`/api/review/${props.search.name}`)\r\n .then(res => {\r\n console.log(\"place res.data\", res.data)\r\n setReviews(res.data)\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getReview();\r\n }, [])\r\n\r\n\r\n return (\r\n <Modal {...props}\r\n size=\"xl\"\r\n keyboard=\"true\"\r\n variant=\"backdrop.in\"\r\n // show={lgShow}\r\n // onHide={() => setLgShow(false)}\r\n aria-labelledby=\"example-modal-sizes-title-lg\">\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\" style={{ fontSize: '40px' }}>\r\n {props.index + 1}. {props.search.name}\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body className=\"show-grid\">\r\n <Container style={{ fontSize: '40px' }}>\r\n {reviews.map((review, index) => {\r\n return (\r\n <Row className=\"mt-4\">\r\n <a href={review.link}>{review.title}</a>\r\n <div>{review.summary}</div>\r\n <div>{review.content}</div>\r\n </Row>\r\n )\r\n })}\r\n </Container>\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button block onClick={props.onHide}>Close</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default Place;\r\n","C:\\Users\\노트북펜\\Desktop\\2021winter\\search-page\\client\\src\\Components\\Paginations.js",[],["49","50"],{"ruleId":"51","replacedBy":"52"},{"ruleId":"53","replacedBy":"54"},{"ruleId":"55","severity":1,"message":"56","line":1,"column":17,"nodeType":"57","messageId":"58","endLine":1,"endColumn":26},{"ruleId":"55","severity":1,"message":"59","line":2,"column":10,"nodeType":"57","messageId":"58","endLine":2,"endColumn":14},{"ruleId":"55","severity":1,"message":"60","line":4,"column":64,"nodeType":"57","messageId":"58","endLine":4,"endColumn":75},{"ruleId":"55","severity":1,"message":"61","line":5,"column":83,"nodeType":"57","messageId":"58","endLine":5,"endColumn":93},{"ruleId":"55","severity":1,"message":"62","line":15,"column":12,"nodeType":"57","messageId":"58","endLine":15,"endColumn":18},{"ruleId":"55","severity":1,"message":"63","line":16,"column":12,"nodeType":"57","messageId":"58","endLine":16,"endColumn":17},{"ruleId":"55","severity":1,"message":"64","line":17,"column":12,"nodeType":"57","messageId":"58","endLine":17,"endColumn":18},{"ruleId":"65","severity":1,"message":"66","line":64,"column":8,"nodeType":"67","endLine":64,"endColumn":10,"suggestions":"68"},{"ruleId":"55","severity":1,"message":"69","line":71,"column":11,"nodeType":"57","messageId":"58","endLine":71,"endColumn":17},{"ruleId":"70","severity":1,"message":"71","line":137,"column":35,"nodeType":"72","endLine":137,"endColumn":76},{"ruleId":"55","severity":1,"message":"73","line":3,"column":33,"nodeType":"57","messageId":"58","endLine":3,"endColumn":36},{"ruleId":"55","severity":1,"message":"74","line":3,"column":46,"nodeType":"57","messageId":"58","endLine":3,"endColumn":51},{"ruleId":"55","severity":1,"message":"75","line":3,"column":53,"nodeType":"57","messageId":"58","endLine":3,"endColumn":57},{"ruleId":"55","severity":1,"message":"76","line":3,"column":59,"nodeType":"57","messageId":"58","endLine":3,"endColumn":68},{"ruleId":"55","severity":1,"message":"77","line":3,"column":70,"nodeType":"57","messageId":"58","endLine":3,"endColumn":78},{"ruleId":"65","severity":1,"message":"78","line":20,"column":6,"nodeType":"67","endLine":20,"endColumn":8,"suggestions":"79"},{"ruleId":"51","replacedBy":"80"},{"ruleId":"53","replacedBy":"81"},"no-native-reassign",["82"],"no-negated-in-lhs",["83"],"no-unused-vars","'useEffect' is defined but never used.","Identifier","unusedVar","'Link' is defined but never used.","'FormControl' is defined but never used.","'Pagination' is defined but never used.","'mobile' is assigned a value but never used.","'place' is assigned a value but never used.","'imgUrl' is assigned a value but never used.","react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'getAssociation', 'getImg', and 'getPlace'. Either include them or remove the dependency array.","ArrayExpression",["84"],"'places' is assigned a value but never used.","react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","'Col' is defined but never used.","'Badge' is defined but never used.","'Card' is defined but never used.","'Accordion' is defined but never used.","'Carousel' is defined but never used.","React Hook useEffect has a missing dependency: 'getReview'. Either include it or remove the dependency array.",["85"],["82"],["83"],"no-global-assign","no-unsafe-negation",{"desc":"86","fix":"87"},{"desc":"88","fix":"89"},"Update the dependencies array to be: [getAssociation, getImg, getPlace]",{"range":"90","text":"91"},"Update the dependencies array to be: [getReview]",{"range":"92","text":"93"},[2097,2099],"[getAssociation, getImg, getPlace]",[560,562],"[getReview]"]