-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintcache
1 lines (1 loc) · 92.3 KB
/
.eslintcache
1
[{"A:\\javascript workspace\\covid19-contact-tracing-web\\src\\index.js":"1","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\reportWebVitals.js":"2","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\container\\LookupMain.js":"3","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\createReducer.js":"4","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\store.js":"5","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\LookupInput.js":"6","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\component\\Footer.js":"7","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\component\\Header.js":"8","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\login\\container\\LoginMain.js":"9","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\axios.js":"10","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\FacilityState.js":"11","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\ConfirmedState.js":"12","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\FacilityList.js":"13","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\VisitorList.js":"14","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\VisitorState.js":"15","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\middleware.js":"16","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\ListPending.js":"17","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\UserState.js":"18","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\main\\container\\SiteMain.js":"19","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\login\\container\\SignupMain.js":"20"},{"size":1736,"mtime":1608271474583,"results":"21","hashOfConfig":"22"},{"size":362,"mtime":499162500000,"results":"23","hashOfConfig":"22"},{"size":14768,"mtime":1608317298424,"results":"24","hashOfConfig":"22"},{"size":808,"mtime":1608024941842,"results":"25","hashOfConfig":"22"},{"size":945,"mtime":1608281774874,"results":"26","hashOfConfig":"22"},{"size":1788,"mtime":1607258759081,"results":"27","hashOfConfig":"22"},{"size":807,"mtime":1607953245468,"results":"28","hashOfConfig":"22"},{"size":2841,"mtime":1608281987868,"results":"29","hashOfConfig":"22"},{"size":6739,"mtime":1608532968490,"results":"30","hashOfConfig":"22"},{"size":277,"mtime":1608117419254,"results":"31","hashOfConfig":"22"},{"size":7461,"mtime":1608312931305,"results":"32","hashOfConfig":"22"},{"size":3248,"mtime":1608314617813,"results":"33","hashOfConfig":"22"},{"size":4447,"mtime":1608313739790,"results":"34","hashOfConfig":"22"},{"size":3737,"mtime":1608314171383,"results":"35","hashOfConfig":"22"},{"size":13939,"mtime":1608313610028,"results":"36","hashOfConfig":"22"},{"size":716,"mtime":1607849663454,"results":"37","hashOfConfig":"22"},{"size":964,"mtime":1607951177813,"results":"38","hashOfConfig":"22"},{"size":3700,"mtime":1608310474880,"results":"39","hashOfConfig":"22"},{"size":3205,"mtime":1608194303423,"results":"40","hashOfConfig":"22"},{"size":5408,"mtime":1608316899046,"results":"41","hashOfConfig":"22"},{"filePath":"42","messages":"43","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"44","usedDeprecatedRules":"45"},"14ogimi",{"filePath":"46","messages":"47","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"45"},{"filePath":"48","messages":"49","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"50","usedDeprecatedRules":"45"},{"filePath":"51","messages":"52","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"45"},{"filePath":"53","messages":"54","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"55","usedDeprecatedRules":"45"},{"filePath":"56","messages":"57","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"58","usedDeprecatedRules":"45"},{"filePath":"59","messages":"60","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"61","usedDeprecatedRules":"45"},{"filePath":"62","messages":"63","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"64","usedDeprecatedRules":"45"},{"filePath":"65","messages":"66","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"67","messages":"68","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"45"},{"filePath":"69","messages":"70","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"71","usedDeprecatedRules":"45"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"74","usedDeprecatedRules":"45"},{"filePath":"75","messages":"76","errorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":"77","usedDeprecatedRules":"45"},{"filePath":"78","messages":"79","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"80","usedDeprecatedRules":"45"},{"filePath":"81","messages":"82","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"83","usedDeprecatedRules":"45"},{"filePath":"84","messages":"85","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"86","usedDeprecatedRules":"45"},{"filePath":"87","messages":"88","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"89","usedDeprecatedRules":"45"},{"filePath":"90","messages":"91","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"92","usedDeprecatedRules":"45"},{"filePath":"93","messages":"94","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"95","usedDeprecatedRules":"45"},{"filePath":"96","messages":"97","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"98","usedDeprecatedRules":"45"},"A:\\javascript workspace\\covid19-contact-tracing-web\\src\\index.js",["99","100","101","102","103"],"import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter, Route, Link, Switch } from 'react-router-dom';\nimport { createStore, combineReducers } from 'redux';\nimport { Provider } from \"react-redux\";\nimport { CookiesProvider } from 'react-cookie';\n\nimport reportWebVitals from './reportWebVitals';\nimport store from \"./common/store\";\nimport SiteMain from './main/container/SiteMain';\nimport LoginMain from './login/container/LoginMain';\nimport SignupMain from './login/container/SignupMain';\nimport LookupMain from './lookup/container/LookupMain';\n\nimport 'bootstrap/dist/css/bootstrap.min.css'; \nimport './css/index.css';\n\nimport $ from 'jquery';\nimport Popper from 'popper.js';\nimport 'bootstrap/dist/js/bootstrap.bundle.min';\nimport 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css'; // react-bootstrap-table-next\n\nReactDOM.render(\n <React.StrictMode>\n <Provider store={store}>\n <CookiesProvider>\n <BrowserRouter>\n <Switch>\n <Route exact path=\"/\" component={SiteMain} />\n <Route path=\"/login\" component={LoginMain} />\n <Route path=\"/signup\" component={SignupMain} />\n <Route path=\"/lookup\" component={LookupMain} />\n {/* <Route path=\"/lookup\" component={FriendMain} /> */}\n {/* <LoginMain />\n <LookupMain /> */}\n </Switch>\n </BrowserRouter>\n </CookiesProvider>\n </Provider>\n </React.StrictMode>,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n",["104","105"],"A:\\javascript workspace\\covid19-contact-tracing-web\\src\\reportWebVitals.js",[],"A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\container\\LookupMain.js",["106","107","108","109","110","111","112"],"// localhost:8080/lookup\r\nimport React from 'react';\r\nimport { setConfirmed, getConfirmedAsync } from \"../../common/ConfirmedState\";\r\nimport { getFacilityList } from \"../../common/FacilityState\";\r\nimport { getVisitorList } from \"../../common/VisitorState\";\r\nimport { connect } from 'react-redux';\r\nimport store from \"../../common/store\";\r\n\r\nimport LookupInput from \"../component/LookupInput\";\r\nimport FacilityList from \"../component/FacilityList\";\r\nimport ListPending from \"../component/ListPending\";\r\nimport VisitorList from \"../component/VisitorList\";\r\nimport Header from '../../common/component/Header';\r\nimport Footer from '../../common/component/Footer';\r\n//import { makeGetFriendsWithAgeLimit } from '../state/selector';\r\n\r\nimport warningImg from \"../../img/triangular-warning.png\";\r\nimport globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport classNames from 'classnames/bind';\r\nimport styles from \"../../css/lookup/LookupMain.module.css\";\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nconst facilities = [ \r\n {'Name': '경주농협 성건지점', 'Location': '서울특별시 송파구 송파동 499-101', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '경주충효지구 이안아파트', 'Location': '서울특별시 강남구 대치동 788-13', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '경북70자2527', 'Location': '서울특별시 강남구 일원동 155-57', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '88분식', 'Location': '서울특별시 송파구 송파동 529-55', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '부산식육점', 'Location': '서울특별시 강남구 대치동 225-33', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '안강찜질사우나 여탕', 'Location': '서울특별시 강남구 일원동 777-44', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '고향맛', 'Location': '서울특별시 종로구 혜화동 399-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '서경주역(승차) 동대구역(하차)\t', 'Location': '서울특별시 광진구 광진동 456-88', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '경주시니어 클럽 국시사랑', 'Location': '서울특별시 종로구 혜화동 399-21', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '우리골프연습장', 'Location': '서울특별시 서초구 서초동 399-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': 'CU편의점', 'Location': '서울특별시 서초구 방배동 456-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '이디야커피 경주안강점', 'Location': '서울특별시 관악구 봉천동 963-85', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'},\r\n {'Name': '경주본가뒷고기', 'Location': '서울특별시 관악구 봉천동 963-85', 'visit_time': '2020-12-10 13:03:30', 'Phone': '054-444-3323'}\r\n];\r\n\r\nconst visitors = [ \r\n {'Name': '손우정', 'Location': '서울특별시 송파구 송파동 499-101', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '손우정', 'Location': '서울특별시 강남구 대치동 788-13', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '이은표', 'Location': '서울특별시 강남구 일원동 155-57', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '박승민', 'Location': '서울특별시 송파구 송파동 529-55', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '신명수', 'Location': '서울특별시 강남구 대치동 225-33', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '오선식', 'Location': '서울특별시 강남구 일원동 777-44', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '이승준', 'Location': '서울특별시 종로구 혜화동 399-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '손우정', 'Location': '서울특별시 광진구 광진동 456-88', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '박승민', 'Location': '서울특별시 종로구 혜화동 399-21', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '박승민', 'Location': '서울특별시 서초구 서초동 399-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '오선식', 'Location': '서울특별시 서초구 방배동 456-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '손우정', 'Location': '서울특별시 관악구 봉천동 963-85', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'}\r\n];\r\n\r\nclass LookupMain extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n name: \"\",\r\n phone: \"\"\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.unsubscribe = store.subscribe(() => this.forceUpdate());\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unsubscribe();\r\n }\r\n\r\n componentDidUpdate() {\r\n\r\n }\r\n\r\n nameChange = (e) => {\r\n this.setState({\r\n name: e.target.value\r\n });\r\n }\r\n\r\n phoneChange = (e) => {\r\n this.setState({\r\n phone: e.target.value\r\n });\r\n }\r\n\r\n enterKey = (e) => {\r\n e.preventDefault();\r\n console.log(\"LookupMain.js - enterKey() - e : \", e);\r\n if (e.keyCode == 13) {\r\n this.search(e);\r\n }\r\n }\r\n\r\n search = (e) => {\r\n var {name, phone} = this.state;\r\n console.log(\"name : \", name);\r\n console.log(\"phone : \", phone);\r\n\r\n this.props.getConfirmedAsync(name, phone);\r\n // lookupForm.lookup();\r\n\r\n // setConfirmed(name, phone);\r\n //console.log(\"LookupMain.js - confirmed : \", store.getState().confirmed['confirmed']);\r\n // console.log(\"this.props.facilities : \", this.props.facilities);\r\n // redux의 store에 state로 등록 -> 서버에 FacilityList 요청 -> 서버에서 응답 -> state.facilities에 저장 -> this.props.getFacilityList 호출\r\n //this.props.getFacilityList(facilities);\r\n //console.log(\"LookupMain.js - facilities : \", store.getState().facilities['facilities']);\r\n // promise, then\r\n //this.props.getVisitorList(visitors);\r\n }\r\n \r\n sendNotice = (e) => {\r\n // alert(\"밀접접촉자에게 알림이 전송되었습니다.\");\r\n window.swal({\r\n title: \"안내\",\r\n text: \"밀접접촉자에게 알림이 전송되었습니다.\",\r\n icon: \"info\" //\"info,success,warning,error\" 중 택1\r\n })\r\n }\r\n\r\n isEmptyObject(param) {\r\n return Object.keys(param).length === 0 && param.constructor === Object;\r\n }\r\n\r\n render() {\r\n //console.log('LookupMain.js render()');\r\n var {confirmed, confirmedPending, confirmedError} = this.props;\r\n var {facilities, facilitiesPending, facilitiesError, selectedFacility} = this.props;\r\n var {visitors, visitorsPending, visitorsError} = this.props;\r\n // var facilities = store.getState().facilities.facilities;\r\n\r\n if(this.isEmptyObject(visitors) || selectedFacility == \"\"){\r\n var visitorProps = [];\r\n } else {\r\n var visitorProps = visitors[selectedFacility];\r\n }\r\n console.log(\"LookupMain.js render - selectedFacility : \", selectedFacility)\r\n console.log(\"LookupMain.js render - visitors : \", visitors, \"visitorProps : \", visitorProps);\r\n // console.log(\"confirmed : \", this.props.confirmed);\r\n return (\r\n <>\r\n <Header match={this.props.match} history={this.props.history}/>\r\n <div className={cx(\"container\")}>\r\n \r\n <div className={cx(\"row\")}>\r\n <div className={cx(globalStyles['col-md-6'], styles['middle-line'])}>\r\n <section className={cx(\"lookup-input\")}>\r\n <h1 className={cx(\"lookup-title\")}>확진자조회</h1>\r\n <form name=\"lookupForm\" onSubmit={this.enterKey}>\r\n <div className={cx(\"lookup-input-wrapper\")}>\r\n <span>이름 : </span>\r\n <input type=\"text\" placeholder=\"Enter the name\"\r\n // onkeyup={this.enterKey}\r\n onChange={this.nameChange}\r\n // onkeypress={this.enterKey(this.form)}\r\n className={cx(\"lookup-input\")} \r\n />\r\n </div>\r\n <div className={cx(\"lookup-input-wrapper\")}>\r\n <span>전번 : </span>\r\n <input type=\"text\" placeholder=\"Enter the phone number\"\r\n // onkeyup={this.enterKey}\r\n onChange={this.phoneChange}\r\n // onkeypress={this.enterKey(this.form)}\r\n className={cx(\"lookup-input\")} \r\n />\r\n </div>\r\n <div className={cx(\"lookup-button-wrapper\")}>\r\n <button onClick={this.search}\r\n className={cx(\"lookup-button\")} \r\n title=\"lookup\"\r\n type=\"submit\">찾기</button>\r\n </div>\r\n </form>\r\n \r\n </section>\r\n <section className={cx(\"lookup-alert\")}>\r\n <div className={cx(\"alert-logo-wrapper\")}>\r\n <img src={warningImg} alt=\"warning\" />\r\n </div>\r\n <div className={cx(\"alert-msg-wrapper\")}>\r\n <div>역학조사 이외에 함부로 개인정보를 열람할 경우, 법적 처벌을 받을 수 있음에 동의하였습니다. \r\n 오류가 발생한 경우 문의주시기 바랍니다.</div>\r\n </div>\r\n </section>\r\n </div>\r\n {/* <LookupMain setName={this.setName} setPhone={this.setPhone} /> */}\r\n <div className={cx(globalStyles['col-md-6'], 'test')}>\r\n <section className={cx(\"store-list\", \"list-section\")}>\r\n <h1 className={cx(\"list-title\")}>방문한 시설 목록</h1>\r\n <div className={cx(\"facility-list-wrapper\")}>\r\n {(confirmedPending || facilitiesPending) && <ListPending />}\r\n {(!confirmedError) && (!facilitiesError) && \r\n (!confirmedPending) && (!facilitiesPending) && \r\n <FacilityList facilities={facilities}/>\r\n }\r\n </div>\r\n </section>\r\n <section className={cx(\"visitor-list\", \"list-section\")}>\r\n <h1 className={cx(\"list-title\")}>시설출입자 목록</h1>\r\n <div className={cx(\"visitor-list-wrapper\")}>\r\n {(confirmedPending || visitorsPending || facilitiesPending) && <ListPending />}\r\n {(!confirmedError) && (!visitorsError && !facilitiesError) && \r\n (!confirmedPending) && (!visitorsPending) && (!facilitiesPending) && \r\n <VisitorList visitors={visitorProps} \r\n selectedFacility={selectedFacility}\r\n confirmed={confirmed}/>}\r\n </div>\r\n </section>\r\n <div className={cx(\"lookup-button-wrapper\", \"notice-button-wrapper\")}>\r\n <button onClick={this.sendNotice}\r\n className={cx(\"lookup-button\")} \r\n title=\"lookup\"\r\n type=\"button\">알림 전송</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <Footer />\r\n </>\r\n );\r\n }\r\n}\r\n \r\nconst mapStateToProps = state => {\r\n return { \r\n confirmed: state.confirmed.confirmed,\r\n confirmedPending: state.confirmed.pending,\r\n confirmedError: state.confirmed.error,\r\n facilities: state.facilities.facilities,\r\n facilitiesPending: state.facilities.pending,\r\n facilitiesError: state.facilities.error,\r\n selectedFacility: state.facilities.selectedFacility,\r\n visitors: state.visitors.visitors,\r\n visitorsPending: state.visitors.pending,\r\n visitorsError: state.visitors.error,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getConfirmedAsync: (name, phone) => {\r\n dispatch(getConfirmedAsync(name, phone))\r\n },\r\n getFacilityList: (facilities) => {\r\n dispatch(getFacilityList(facilities))\r\n },\r\n getVisitorList: (visitors) => {\r\n dispatch(getVisitorList(visitors))\r\n }\r\n }\r\n}\r\n\r\n// actions 객체로 액션 전달하기\r\n// 컴포넌트가 리덕스 상탯값 변경에 반응하기 위해서 사용하는게 connect 함수이다. \r\n// (뇌피셜) mapStateToProps를 통해 리덕스의 state를 컴포넌트의 props로 만들어주어서 컴포넌트가 리덕스의 state에 반응하는듯?\r\nexport default connect( \r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(LookupMain);\r\n","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\createReducer.js",[],"A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\store.js",["113"],"import { createStore, combineReducers, applyMiddleware } from \"redux\";\r\nimport confirmedReducer from \"./ConfirmedState\";\r\nimport facilitiesReducer from \"./FacilityState\";\r\nimport visitorsReducer from \"./VisitorState\";\r\nimport loginReducer from \"./UserState\";\r\nimport middleware from \"./middleware\";\r\nimport ReduxThunk from 'redux-thunk';\r\n// import reducer from \"../friend/state\";\r\n\r\nconst reducer = combineReducers({\r\n confirmed: confirmedReducer,\r\n facilities: facilitiesReducer,\r\n visitors: visitorsReducer,\r\n user: loginReducer\r\n});\r\nconst store = createStore(reducer, applyMiddleware(ReduxThunk));\r\n\r\nlet prevState;\r\nstore.subscribe(() => {\r\n const state = store.getState();\r\n if (state === prevState) {\r\n console.log(\"상탯값 같음\");\r\n } else {\r\n console.log(\"상탯값 변경됨\", \"이전 상탯값\", prevState, \"현재 상탯값\", state);\r\n }\r\n prevState = state;\r\n})\r\n\r\nexport default store;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\LookupInput.js",["114"],"import React from 'react';\r\n\r\nclass LookupInput extends React.PureComponent {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n nameChange = (e) => {\r\n console.log(\"setName called in LookupInput\");\r\n this.props.setName(e.target.value);\r\n }\r\n\r\n phoneChange = (e) => {\r\n console.log(\"setPhone called in LookupInput\");\r\n this.props.setPhone(e.target.value);\r\n }\r\n\r\n render() {\r\n console.log(\"LookupInput render\");\r\n return (\r\n <div className=\"col-md-6\">\r\n <section className=\"lookup-input\">\r\n <h1>확진자조회</h1>\r\n <div className=\"name\">\r\n 이름 : \r\n <input type=\"text\" placeholder=\"Enter the name\"\r\n onChange={this.nameChange}/>\r\n </div>\r\n <div className=\"phone-num\">\r\n 전화번호 : \r\n <input type=\"text\" placeholder=\"Enter the phone number\"\r\n onChange={this.phoneChange}/>\r\n </div>\r\n <button onClick={this.search}>찾기</button>\r\n </section>\r\n <section className=\"alert\">\r\n <div className=\"alert-logo-wrapper\">\r\n\r\n </div>\r\n <div className=\"alert-msg-wrapper\">\r\n <span>역학조사 이외에 함부로 개인정보를 열람할 경우, 법적 처벌을 받을 수 있음에 동의하였습니다. \r\n 오류가 발생한 경우 문의주시기 바랍니다.</span>\r\n </div>\r\n </section>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default LookupInput;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\component\\Footer.js",["115"],"import React from 'react';\r\n\r\nimport bobLogo from \"../../img/bob-logo.png\";\r\nimport globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport classNames from 'classnames/bind';\r\nimport styles from \"../../css/common/footer.module.css\";\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nclass Footer extends React.Component {\r\n \r\n render() {\r\n return (\r\n <footer className={cx(\"copyright-section\")}>\r\n <div className={cx(\"copyright\")}>\r\n <div className={cx(\"bob-logo-wrapper\")}>\r\n <img src={bobLogo} alt=\"bob-logo\" />\r\n </div>\r\n <span>by Best of the Best 9th 가명라이더</span>\r\n </div>\r\n </footer>\r\n )\r\n }\r\n}\r\n\r\nexport default Footer;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\component\\Header.js",["116","117","118","119"],"import React from 'react';\r\nimport { loginAsync, logoutAsync } from \"../../common/UserState\";\r\nimport { connect } from 'react-redux';\r\nimport store from \"../../common/store\";\r\n\r\nimport userIcon from \"../../img/user-icon.png\";\r\nimport globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport classNames from 'classnames/bind';\r\nimport styles from \"../../css/common/header.module.css\";\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nclass Header extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n this.unsubscribe = store.subscribe(() => this.forceUpdate());\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unsubscribe();\r\n }\r\n\r\n toLoginPage = (e) => {\r\n this.props.history.push(\"/login\");\r\n }\r\n \r\n logout = (e) => {\r\n this.props.logoutAsync();\r\n console.log(\"Header.js - logout()\");\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n \r\n render() {\r\n var {user, isLogin} = this.props;\r\n var {history, match} = this.props;\r\n var isLookupPage = match.path === \"/lookup\" ? true : false;\r\n var isLoginPage = match.path === \"/login\" ? true : false;\r\n var isSignupPage = match.path === \"/signup\" ? true : false;\r\n // console.log(\"Header.js - isLookupPage : \", isLookupPage);\r\n // console.log(\"Header.js - isLoginPage : \", isLoginPage);\r\n return (\r\n <header className={cx(\"header\")}>\r\n {!isLoginPage && !isSignupPage &&\r\n <div className={cx(\"user-info-zone\")}>\r\n {isLogin &&\r\n <div className={cx(\"user-info-wrapper\")}>\r\n <div className={cx(\"user-icon-wrapper\")}>\r\n <img src={userIcon} alt=\"user-icon\" />\r\n </div>\r\n <span className={cx(\"username\")}>{user.id}</span> 님 반갑습니다.\r\n </div>}\r\n <div className={cx(\"login-tab-wrapper\")}>\r\n {!isLogin && <span onClick={this.toLoginPage}>로그인</span>}\r\n {isLogin && <span onClick={this.logout}>로그아웃</span>}\r\n </div>\r\n </div>}\r\n </header>\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return { \r\n user: state.user.user,\r\n pending: state.user.pending,\r\n error: state.user.error,\r\n isLogin: state.user.isLogin,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n loginAsync: (payload) => {\r\n dispatch(loginAsync(payload))\r\n },\r\n logoutAsync: () => {\r\n dispatch(logoutAsync())\r\n }\r\n }\r\n}\r\n\r\nexport default connect( \r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(Header);","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\login\\container\\LoginMain.js",["120","121","122","123","124","125"],"A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\axios.js",[],"A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\FacilityState.js",["126","127","128","129"],"import createReducer from './createReducer';\r\nimport { request } from \"./axios\";\r\n\r\nimport { getVisitorListAsync, GET_VISITORLIST_PENDING } from './VisitorState';\r\n\r\nconst GET_FACILITYLIST = \"lookup/GET_FACILITYLIST\";\r\nconst GET_FACILITYLIST_PENDING = \"lookup/GET_FACILITYLIST_PENDING\";\r\n\r\nconst SET_SELECTED_FACILITY = \"lookup/SET_SELECTED_FACILITY\";\r\n\r\nconst facilities = [\r\n {'Name': '경주농협 성건지점', 'Location': '서울특별시 송파구 송파동 499-101', 'visit_time': '2020-12-10 13:03:30'},\r\n {'Name': '경주충효지구 이안아파트', 'Location': '서울특별시 강남구 대치동 788-13', 'visit_time': '2020-12-10 13:03:30'},\r\n {'Name': '경북70자2527', 'Location': '서울특별시 강남구 일원동 155-57', 'visit_time': '2020-12-10 13:03:30'},\r\n {'Name': '88분식', 'Location': '서울특별시 송파구 송파동 529-55', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '부산식육점', 'Location': '서울특별시 강남구 대치동 225-33', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '안강찜질사우나 여탕', 'Location': '서울특별시 강남구 일원동 777-44', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '고향맛', 'Location': '서울특별시 종로구 혜화동 399-78', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '서경주역(승차) 동대구역(하차)\t', 'Location': '서울특별시 광진구 광진동 456-88', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '경주시니어 클럽 국시사랑', 'Location': '서울특별시 종로구 혜화동 399-21', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '우리골프연습장', 'Location': '서울특별시 서초구 서초동 399-78', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': 'CU편의점', 'Location': '서울특별시 서초구 방배동 456-78', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '이디야커피 경주안강점', 'Location': '서울특별시 관악구 봉천동 963-85', 'visit_time': '2020-12-10 13:03:30'},\r\n // {'Name': '경주본가뒷고기', 'Location': '서울특별시 관악구 봉천동 963-85', 'visit_time': '2020-12-10 13:03:30'}\r\n];\r\n\r\nfunction convertTimeFormat(utcTime){\r\n var timeObj = new Date(utcTime);\r\n var year = timeObj.getFullYear();\r\n var month = timeObj.getMonth() + 1;\r\n var date = timeObj.getDate();\r\n var hour = timeObj.getHours();\r\n var minute = timeObj.getMinutes();\r\n var second = timeObj.getSeconds();\r\n\r\n return `${year}-${month}-${date} ${hour}-${minute}-${second}`;\r\n}\r\n\r\nexport const getFacilityInfoAPI = (user_id) => {\r\n // console.log(\"FacilityState.js - getFacilityInfoAPI - user_id : \", user_id);\r\n return new Promise((resolve) => {\r\n setTimeout(() => { \r\n resolve({'data': \r\n {\r\n \"store_id\": user_id,\r\n 'Location': '서울특별시 송파구 송파동 499-101',\r\n \"Name\": \"짜부치킨\",\r\n }\r\n }); // promise 가 끝났음을 알림\r\n }, 3000)\r\n })\r\n}\r\n\r\nexport const getFacilityIdAPI = (facilityIdArr) => {\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => { \r\n resolve({'data': [\r\n {\r\n \"store_id\": \"봉추찜닭\",\r\n 'Location': '서울특별시 송파구 송파동 499-101',\r\n \"time\": \"2020년 12월 18일 12:23\"\r\n },\r\n {\r\n \"store_id\": \"세븐일레븐홍대스타점\",\r\n 'Location': '서울특별시 강남구 대치동 788-13',\r\n \"time\": \"2020년 12월 18일 13:22\"\r\n },\r\n {\r\n \"store_id\": \"키이스케이프홍대점\",\r\n 'Location': '서울특별시 강남구 일원동 155-57',\r\n \"time\": \"2020년 12월 18일 13:33\"\r\n },\r\n {\r\n \"store_id\": \"르꼬끄\",\r\n 'Location': '서울특별시 송파구 송파동 529-55',\r\n \"time\": \"2020년 12월 18일 15:57\"\r\n },\r\n {\r\n \"store_id\": \"토끼정홍대\",\r\n 'Location': '서울특별시 강남구 대치동 225-33',\r\n \"time\": \"2020년 12월 18일 18:21\"\r\n },\r\n {\r\n \"store_id\": \"에뛰드하우스\",\r\n 'Location': '서울특별시 강남구 일원동 777-44',\r\n \"time\": \"2020년 12월 18일 18:08\"\r\n },\r\n {\r\n \"store_id\": \"코쿤\",\r\n 'Location': '서울특별시 종로구 혜화동 399-78',\r\n \"time\": \"2020년 12월 18일 21:48\"\r\n }\r\n ]}); // promise 가 끝났음을 알림\r\n }, 3000)\r\n })\r\n}\r\n\r\nexport const getFacilityListAsync = (confirmedId) => async (dispatch, getState) => {\r\n\r\n console.log(\"FacilityState.js - getFacilityListAsync()\");\r\n dispatch({type: GET_FACILITYLIST_PENDING});\r\n\r\n const facilityIdArr = (await getFacilityIdAPI(confirmedId)).data;\r\n // const facilityIdArr = (await request(\"POST\", \"https://key.prider.xyz/get-store\", confirmedId)).data;\r\n \r\n // const facilityInfoArr = (await request(\"POST\", \"https://key.prider.xyz/get-info\", facilityIdArr)).data;\r\n // var facilityArr = await Promise.all(facilityIdArr.map(async (element, idx, arr) => {\r\n // // const facilityInfo = (await request(\"POST\", \"https://key.prider.xyz/get-info\", element.store_id)).data;\r\n // const facilityInfo = (await getFacilityInfoAPI(element.store_id)).data;\r\n // var facilityInfoWithId = Object.assign(facilityInfo, {'time': convertTimeFormat(element.time)});\r\n // return facilityInfoWithId;\r\n // }))\r\n const facilityArr = (await getFacilityIdAPI(confirmedId)).data;\r\n console.log(\"FacilityState.js - facilityArr : \", facilityArr);\r\n \r\n dispatch(getFacilityList(facilityArr));\r\n\r\n console.log(\"FacilityState.js - getState() : \", getState());\r\n\r\n dispatch(getVisitorListAsync(facilityIdArr));\r\n}\r\n\r\nexport const getFacilityList = (payload) => {\r\n // const data = payload.map((facility, idx, arr) => {\r\n // return {...facility, 'id': idx}\r\n // })\r\n console.log(\"FacilityState.js - getFacilityList()\");\r\n\r\n return {\r\n type: GET_FACILITYLIST,\r\n payload: payload\r\n }\r\n}\r\n\r\nexport const setSelectedFacilityAsync = (facilityId) => async (dispatch) => {\r\n console.log(\"FacilityState.js - setSelectedFacilityAsync\");\r\n dispatch(setSelectedFacility(facilityId));\r\n}\r\n\r\nexport const setSelectedFacility = (facilityId) => {\r\n return {type: SET_SELECTED_FACILITY, data: facilityId}\r\n}\r\n\r\nconst INITIAL_STATE = { pending: false, error: false, facilities: [], selectedFacility: \"\"};\r\nconst reducer = createReducer(INITIAL_STATE, {\r\n [GET_FACILITYLIST]: (state, action) => {\r\n console.log(\"FacilityState.js - reducer - GET_FACILITYLIST\");\r\n state.facilities = action.payload;\r\n state.pending = false;\r\n state.error = false;\r\n },\r\n [GET_FACILITYLIST_PENDING]: (state, action) => {\r\n state.pending = true;\r\n state.error = false;\r\n },\r\n [SET_SELECTED_FACILITY]: (state, action) => {\r\n state.selectedFacility = action.data;\r\n }\r\n}) \r\n\r\nexport default reducer;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\ConfirmedState.js",["130","131","132","133","134","135"],"import axios from \"axios\";\r\nimport produce from 'immer';\r\n\r\nimport createReducer from './createReducer';\r\nimport { getFacilityListAsync } from './FacilityState';\r\nimport { dispatch } from './store';\r\nimport { request } from \"./axios\";\r\n\r\nconst SET_CONFIRMED = \"lookup/SET_CONFIRMED\";\r\nconst SET_CONFIRMED_PENDING = \"lookup/SET_CONFIRMED_PENDING\";\r\nconst SET_CONFIRMED_ERROR = \"lookup/SET_CONFIRMED_ERROR\";\r\nconst REGISTER = \"login/REGISTER\";\r\nconst GET_FACILITYLIST = \"lookup/GET_FACILITYLIST\";\r\n//const REMOVE = `lookup/REMOVE`;\r\n//const EDIT = `lookup/EDIT`;\r\n\r\nfunction getConfirmedAPI(name, phone) { // return user_id by (name, phone)\r\n return axios.get(\"\");\r\n}\r\n\r\nfunction asynchronousAPI(name, phone) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n \r\n resolve({'user_id': name}); // promise 가 끝났음을 알림\r\n }, 3000)\r\n }\r\n )\r\n}\r\n\r\nexport const getConfirmedAsync = (name, phone) => async (dispatch, getState) => {\r\n\r\n dispatch({type: SET_CONFIRMED_PENDING});\r\n const data = await asynchronousAPI(name, phone);\r\n // const data = (await request(\"POST\", \"https://key.prider.xyz/get-info\", {'name': name, 'phone': phone})).data;\r\n\r\n dispatch(getConfirmed({...data, 'name': name, 'phone': phone}));\r\n\r\n const confirmedId = getState().confirmed.user_id;\r\n if (confirmedId !== null){\r\n \r\n dispatch(getFacilityListAsync(confirmedId));\r\n } else {\r\n const errorMsg = \"Cannot get user_id\";\r\n dispatch({\r\n type: SET_CONFIRMED_ERROR,\r\n data: errorMsg\r\n })\r\n }\r\n\r\n console.log(\"ConfirmedState.js - getState() : \", getState());\r\n};\r\n\r\nexport const getConfirmed = (data) => {\r\n console.log(\"ConfirmedState.js - getConfirmed()\");\r\n\r\n // const payload = {'name': data.name, 'phone': data.phone};\r\n \r\n return {\r\n type: SET_CONFIRMED,\r\n data: data\r\n }\r\n}\r\n\r\nconst INITIAL_STATE = { pending: false, error: false, confirmed: {} }\r\nconst reducer = createReducer(INITIAL_STATE, {\r\n [SET_CONFIRMED]: (state, action) => {\r\n // console.log(\"ConfirmedState.js - in SET_CONFIRMED case - state : \", state);\r\n // console.log(\"ConfirmedState.js - in SET_CONFIRMED case - action : \", action);\r\n state.confirmed = action.data; \r\n state.pending = false;\r\n },\r\n [SET_CONFIRMED_ERROR]: (state, action) => {\r\n console.log(action.data);\r\n state.error = true;\r\n },\r\n [SET_CONFIRMED_PENDING]: (state, action) => {\r\n state.pending = true;\r\n }\r\n}) \r\n\r\nexport default reducer;\r\n\r\n// const reducer = function(state = INITIAL_STATE, action){\r\n// return produce(state, draft => {\r\n// switch (action.type) {\r\n// case SET_CONFIRMED :\r\n// console.log(\"ConfirmedState.js - in SET_CONFIRMED case - state : \", state);\r\n// console.log(\"ConfirmedState.js - in SET_CONFIRMED case - action : \", action);\r\n// state.confirmed = action.data; \r\n// break;\r\n// case SET_CONFIRMED_ERROR :\r\n// console.log(\"in SET_CONFIRMED_ERROR case : \");\r\n \r\n// break;\r\n// }\r\n// });\r\n// }","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\FacilityList.js",["136","137","138","139","140","141","142","143","144","145"],"// localhost:8080/lookup\r\nimport React from 'react';\r\n// import * as actions from \"../../common/state\"\r\nimport { connect } from 'react-redux';\r\nimport { setSelectedFacilityAsync } from \"../../common/FacilityState\";\r\nimport store from \"../../common/store\";\r\n\r\nimport globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport classNames from 'classnames/bind';\r\nimport styles from \"../../css/lookup/FacilityList.module.css\";\r\nimport \"bootstrap/js/src/collapse.js\";\r\n// import Button from 'react-bootstrap/Button';\r\nimport Collapse from 'react-bootstrap/Collapse';\r\nimport Table from 'react-bootstrap/Table';\r\nimport Accordion from 'react-bootstrap/Accordion';\r\nimport Card from 'react-bootstrap/Card';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nconst columns = [{\r\n dataField: 'store_id',\r\n text: 'ID'\r\n }, {\r\n dataField: 'Location',\r\n text: 'Location'\r\n }, {\r\n dataField: 'time',\r\n text: 'Visit time'\r\n}];\r\n \r\nclass FacilityList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n \r\n };\r\n }\r\n \r\n componentDidUpdate() {\r\n // console.log(\"FacilityList.js componentDidUpdate\");\r\n }\r\n\r\n // onClick = (e) => {\r\n // var {open} = this.state;\r\n // this.setState({ open: !open })\r\n // }\r\n\r\n render() {\r\n var {open} = this.state;\r\n var {facilities} = this.props;\r\n // console.log(\"FacilityList.js - render() - facilities : \", facilities);\r\n if (facilities == []){\r\n // console.log(\"FacilityList.js - render() - facilities == []\");\r\n var tableData = [];\r\n } else {\r\n // console.log(\"FacilityList.js - render() - else\");\r\n var tableData = facilities.map((facility, idx, arr) => {\r\n return {'store_id': facility.store_id, 'Location': facility.Location, 'time': facility.time};\r\n })\r\n }\r\n \r\n // var {facilities} = store.getState().facilities;\r\n console.log('FacilityList.js - render() - tableData : ', tableData);\r\n\r\n const expandRow = {\r\n parentClassName: styles['expanding-parent-tr'],\r\n className: styles['expanding-tr'],\r\n onlyOneExpanding: true,\r\n onExpand: (row, isExpand, rowIndex, e) => {\r\n console.log(\"FacilityList.js - onExpand - e : \", e, \"e.target : \", e.target, \"rowIndex : \", rowIndex, \"row : \", row, \"sExpand : \", isExpand);\r\n this.props.setSelectedFacilityAsync(row.store_id);\r\n\r\n },\r\n renderer: (row, rowIndex) => (\r\n <div>\r\n <p><span className=\"detail-info-title\">시설명 : </span><span>{row.store_id}</span></p>\r\n <p><span className=\"detail-info-title\">위치 : </span><span>{row.Location}</span></p>\r\n <p><span className=\"detail-info-title\">방문시각 : </span><span>{row.time}</span></p>\r\n </div>\r\n )\r\n };\r\n \r\n return (\r\n \r\n <BootstrapTable\r\n keyField='store_id'\r\n data={ tableData }\r\n columns={ columns }\r\n expandRow={ expandRow }\r\n /> \r\n \r\n );\r\n }\r\n}\r\n\r\n// function FacilityList({ facilities }) {\r\n// const expandRow = {\r\n// renderer: (row, rowIndex) => (\r\n// <div>\r\n// <p>{ `This Expand row is belong to rowKey ${row.id}` }</p>\r\n// <p>You can render anything here, also you can add additional data on every row object</p>\r\n// <p>expandRow.renderer callback will pass the origin row object to you</p>\r\n// </div>\r\n// )\r\n// };\r\n \r\n// return (\r\n// <BootstrapTable\r\n// keyField='id'\r\n// data={ facilities }\r\n// columns={ columns }\r\n// expandRow={ expandRow }\r\n// />\r\n// );\r\n// }\r\n \r\nconst mapStateToProps = state => {\r\n return {\r\n selectedFacility: state.facilities.selectedFacility\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n setSelectedFacilityAsync: (facility) => {\r\n dispatch(setSelectedFacilityAsync(facility))\r\n }\r\n }\r\n}\r\n\r\nexport default connect( \r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(FacilityList);\r\n","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\VisitorList.js",["146","147","148","149","150","151","152"],"// localhost:8080/lookup\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport classNames from 'classnames/bind';\r\nimport styles from \"../../css/lookup/FacilityList.module.css\";\r\nimport \"bootstrap/js/src/collapse.js\";\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nconst columns = [{\r\n dataField: 'user_id',\r\n text: 'ID'\r\n }, {\r\n dataField: 'Name',\r\n text: 'Name'\r\n }, {\r\n dataField: 'time',\r\n text: 'Visit time'\r\n}];\r\n \r\nclass VisitorList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n \r\n };\r\n }\r\n \r\n componentDidUpdate() {\r\n // console.log(\"VisitorList.js componentDidUpdate\");\r\n }\r\n\r\n render() {\r\n var {visitors, selectedFacility, confirmed} = this.props;\r\n console.log('VisitorList.js render() - visitors : ', visitors);\r\n \r\n\r\n if (visitors == {}){\r\n // console.log(\"FacilityList.js - render() - facilities == []\");\r\n var tableData = [];\r\n } else {\r\n // console.log(\"FacilityList.js - render() - else\");\r\n var tableData = visitors.map((visitor, idx, arr) => {\r\n return {'user_id': visitor.user_id, 'Name': visitor.name, 'time': visitor.time};\r\n })\r\n }\r\n\r\n const expandRow = {\r\n parentClassName: styles['expanding-parent-tr'],\r\n className: styles['expanding-tr'],\r\n onlyOneExpanding: true,\r\n renderer: (row, rowIndex) => (\r\n <div>\r\n <p><span className=\"detail-info-title\">접촉 확진자명 : </span><span>{confirmed.user_id}</span></p>\r\n <p><span className=\"detail-info-title\">방문 시설명 : </span><span>{selectedFacility}</span></p>\r\n <p><span className=\"detail-info-title\">방문자명 : </span><span>{row.Name}</span></p>\r\n <p><span className=\"detail-info-title\">방문자ID : </span><span>{row.user_id}</span></p>\r\n <p><span className=\"detail-info-title\">방문시각 : </span><span>{row.time}</span></p>\r\n </div>\r\n )\r\n };\r\n \r\n return (\r\n <BootstrapTable\r\n keyField='user_id'\r\n data={ tableData }\r\n columns={ columns }\r\n expandRow={ expandRow }\r\n /> \r\n );\r\n }\r\n}\r\n\r\n// function FacilityList({ facilities }) {\r\n// const expandRow = {\r\n// renderer: (row, rowIndex) => (\r\n// <div>\r\n// <p>{ `This Expand row is belong to rowKey ${row.id}` }</p>\r\n// <p>You can render anything here, also you can add additional data on every row object</p>\r\n// <p>expandRow.renderer callback will pass the origin row object to you</p>\r\n// </div>\r\n// )\r\n// };\r\n \r\n// return (\r\n// <BootstrapTable\r\n// keyField='id'\r\n// data={ facilities }\r\n// columns={ columns }\r\n// expandRow={ expandRow }\r\n// />\r\n// );\r\n// }\r\n \r\nconst mapStateToProps = state => {\r\n return { \r\n // confirmed: state.confirmed.confirmed,\r\n // stores: state.confirmed.stores\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n // setConfirmed: (name, phone) => {\r\n // dispatch(actions.setConfirmed(name, phone))\r\n // }\r\n }\r\n}\r\n\r\n// export default connect( \r\n// mapStateToProps,\r\n// mapDispatchToProps,\r\n// )(FacilityList);\r\nexport default VisitorList;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\VisitorState.js",["153","154","155","156"],"import createReducer from './createReducer';\r\nimport { request } from \"./axios\";\r\n\r\nconst GET_VISITORLIST = \"lookup/GET_VISITORLIST\";\r\nexport const GET_VISITORLIST_PENDING = \"lookup/GET_VISITORLIST_PENDING\";\r\nconst GET_VISITORLIST_ERROR = \"lookup/GET_VISITORLIST_ERROR\";\r\n\r\nconst visitors = [ \r\n {'Name': '손우정', 'Location': '서울특별시 송파구 송파동 499-101', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '손우정', 'Location': '서울특별시 강남구 대치동 788-13', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '이은표', 'Location': '서울특별시 강남구 일원동 155-57', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '박승민', 'Location': '서울특별시 송파구 송파동 529-55', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '신명수', 'Location': '서울특별시 강남구 대치동 225-33', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '오선식', 'Location': '서울특별시 강남구 일원동 777-44', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '이승준', 'Location': '서울특별시 종로구 혜화동 399-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '손우정', 'Location': '서울특별시 광진구 광진동 456-88', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '박승민', 'Location': '서울특별시 종로구 혜화동 399-21', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '박승민', 'Location': '서울특별시 서초구 서초동 399-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '오선식', 'Location': '서울특별시 서초구 방배동 456-78', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'},\r\n {'Name': '손우정', 'Location': '서울특별시 관악구 봉천동 963-85', 'visit_time': '2020-12-10 13:03:30', 'Phone': '010-4566-3323'}\r\n];\r\n\r\nfunction convertTimeFormat(utcTime){\r\n var timeObj = new Date(utcTime);\r\n var year = timeObj.getFullYear();\r\n var month = timeObj.getMonth() + 1;\r\n var date = timeObj.getDate();\r\n var hour = timeObj.getHours();\r\n var minute = timeObj.getMinutes();\r\n var second = timeObj.getSeconds();\r\n\r\n return `${year}-${month}-${date} ${hour}-${minute}-${second}`;\r\n}\r\n\r\n// export const getVisitorIdArr = (facilityIdArr) => {\r\n// var idArr = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"ZZ\"];\r\n// return new Promise((resolve) => {\r\n// setTimeout(() => { \r\n// resolve({'data': [\r\n// {\r\n// \"user_id\": idArr[Math.floor(Math.random() * idArr.length)],\r\n// \"time\": 1608277380\r\n// },\r\n// {\r\n// \"user_id\": idArr[Math.floor(Math.random() * idArr.length)],\r\n// \"time\": 1608277572\r\n// },\r\n// {\r\n// \"user_id\": idArr[Math.floor(Math.random() * idArr.length)],\r\n// \"time\": 1608277666\r\n// },\r\n// {\r\n// \"user_id\": idArr[Math.floor(Math.random() * idArr.length)],\r\n// \"time\": 1608277681\r\n// }\r\n// ]}); // promise 가 끝났음을 알림\r\n// }, 300)\r\n// })\r\n// }\r\n\r\nexport const getVisitorIdArr = (facilityIdArr) => {\r\n \r\n return new Promise((resolve) => {\r\n setTimeout(() => { \r\n resolve({'data': {\r\n \"에뛰드하우스\": [\r\n {\r\n \"user_id\": \"wjstkdgus123\",\r\n \"name\": \"전상현\",\r\n \"time\": \"2020년 12월 18일 18:18\"\r\n },\r\n {\r\n \"user_id\": \"dldmsvy1010\",\r\n \"name\": \"이은표\",\r\n \"time\": \"2020년 12월 18일 18:38\"\r\n },\r\n {\r\n \"user_id\": \"qorthdtjs123\",\r\n \"name\": \"백송선\",\r\n \"time\": \"2020년 12월 18일 19:01\"\r\n },\r\n {\r\n \"user_id\": \"qkrtmdals123\",\r\n \"name\": \"백예린\",\r\n \"time\": \"2020년 12월 18일 19:07\"\r\n },\r\n {\r\n \"user_id\": \"asdfawerdals125\",\r\n \"name\": \"박승민\",\r\n \"time\": \"2020년 12월 18일 18:34\"\r\n }, \r\n ],\r\n \"봉추찜닭\": [\r\n {\r\n \"user_id\": \"dldmsvy1010\",\r\n \"name\": \"이은표\",\r\n \"time\": \"2020년 12월 18일 12:32\"\r\n },\r\n {\r\n \"user_id\": \"dltmdwns123\",\r\n \"name\": \"이승민\",\r\n \"time\": \"2020년 12월 18일 12:45\"\r\n },\r\n {\r\n \"user_id\": \"chlqudcks123\",\r\n \"name\": \"최병찬\",\r\n \"time\": \"2020년 12월 18일 12:68\"\r\n },\r\n {\r\n \"user_id\": \"ghkdwnstjr123\",\r\n \"name\": \"황준석\",\r\n \"time\": \"2020년 12월 18일 12:59\"\r\n },\r\n ],\r\n \"세븐일레븐홍대스타점\": [\r\n {\r\n \"user_id\": \"chlqudcks123\",\r\n \"name\": \"최병찬\",\r\n \"time\": \"2020년 12월 18일 13:25\"\r\n },\r\n {\r\n \"user_id\": \"ghkdwnstjr123\",\r\n \"name\": \"황준석\",\r\n \"time\": \"2020년 12월 18일 13:22\"\r\n },\r\n {\r\n \"user_id\": \"dldmsvy123\",\r\n \"name\": \"이은표\",\r\n \"time\": \"2020년 12월 18일 14:10\"\r\n },\r\n ],\r\n \"키이스케이프홍대점\": [\r\n {\r\n \"user_id\": \"dldmsvy1010\",\r\n \"name\": \"이은표\",\r\n \"time\": \"2020년 12월 18일 13:12\"\r\n },\r\n {\r\n \"user_id\": \"gkswhdgh123\",\r\n \"name\": \"한종호\",\r\n \"time\": \"2020년 12월 18일 13:00\"\r\n },\r\n {\r\n \"user_id\": \"tjdPwls123\",\r\n \"name\": \"서예진\",\r\n \"time\": \"2020년 12월 18일 13:05\"\r\n },\r\n {\r\n \"user_id\": \"whgusdn123\",\r\n \"name\": \"조현우\",\r\n \"time\": \"2020년 12월 18일 13:59\"\r\n },\r\n {\r\n \"user_id\": \"rladjwls123\",\r\n \"name\": \"김어진\",\r\n \"time\": \"2020년 12월 18일 14:25\"\r\n },\r\n {\r\n \"user_id\": \"wjdthdus123\",\r\n \"name\": \"정소연\",\r\n \"time\": \"2020년 12월 18일 14:01\"\r\n },\r\n ],\r\n \"르꼬끄\": [\r\n {\r\n \"user_id\": \"dldmsvy1010\",\r\n \"name\": \"이은표\",\r\n \"time\": \"2020년 12월 18일 15:59\"\r\n },\r\n {\r\n \"user_id\": \"qkrtmdals123\",\r\n \"name\": \"박승민\",\r\n \"time\": \"2020년 12월 18일 16:14\"\r\n },\r\n {\r\n \"user_id\": \"qordPfls123\",\r\n \"name\": \"백예린\",\r\n \"time\": \"2020년 12월 18일 16:22\"\r\n },\r\n {\r\n \"user_id\": \"qorthdtjs123\",\r\n \"name\": \"백송선\",\r\n \"time\": \"2020년 12월 18일 16:58\"\r\n },\r\n ],\r\n \"토끼정홍대\": [\r\n {\r\n \"user_id\": \"dldmsvy1010\",\r\n \"name\": \"이은표\",\r\n \"time\": \"2020년 12월 18일 18:22\"\r\n },\r\n {\r\n \"user_id\": \"thsdnwjd123\",\r\n \"name\": \"손우정\",\r\n \"time\": \"2020년 12월 18일 18:00\"\r\n },\r\n {\r\n \"user_id\": \"tjdPwls123\",\r\n \"name\": \"서예진\",\r\n \"time\": \"2020년 12월 18일 18:59\"\r\n },\r\n {\r\n \"user_id\": \"whgusdn123\",\r\n \"name\": \"조현우\",\r\n \"time\": \"2020년 12월 18일 18:33\"\r\n },\r\n {\r\n \"user_id\": \"rladjwls123\",\r\n \"name\": \"김어진\",\r\n \"time\": \"2020년 12월 18일 18:21\"\r\n },\r\n {\r\n \"user_id\": \"wjdthdus123\",\r\n \"name\": \"정소연\",\r\n \"time\": \"2020년 12월 18일 18:27\"\r\n },\r\n ],\r\n \"코쿤\": [\r\n {\r\n \"user_id\": \"dldmsvy1010\",\r\n \"name\": \"이은표\",\r\n \"time\": \"2020년 12월 18일 22:00\"\r\n },\r\n {\r\n \"user_id\": \"tlsaudtn123\",\r\n \"name\": \"신명수\",\r\n \"time\": \"2020년 12월 18일 22:01\"\r\n },\r\n {\r\n \"user_id\": \"rladjwls123\",\r\n \"name\": \"김어진\",\r\n \"time\": \"2020년 12월 18일 21:44\"\r\n },\r\n {\r\n \"user_id\": \"wjdthdus123\",\r\n \"name\": \"정소연\",\r\n \"time\": \"2020년 12월 18일 21:00\"\r\n },\r\n ],\r\n }}); // promise 가 끝났음을 알림\r\n }, 300)\r\n })\r\n}\r\n\r\nexport const getVisitorInfoAPI = (user_id) => {\r\n return new Promise((resolve) => {\r\n setTimeout(() => { \r\n resolve({'data': \r\n {\r\n \"user_id\": user_id,\r\n 'Location': '서울특별시 송파구 송파동 499-101',\r\n \"Name\": \"짜부치킨\",\r\n }\r\n }); // promise 가 끝났음을 알림\r\n }, 300)\r\n })\r\n}\r\n\r\nexport const getVisitorListAsync = (facilityIdArr) => async (dispatch, getState) => {\r\n\r\n console.log(\"VisitorState.js - getVisitorListtAsync() - facilityIdArr\", facilityIdArr);\r\n\r\n dispatch({type: GET_VISITORLIST_PENDING});\r\n \r\n \r\n /*\r\n await Promise.all(facilityIdArr.map(async (facilityId, idx, arr) => {\r\n //var visitorIdTimeArr = (await request(\"POST\", \"https://key.prider.xyz/get-person\", facilityId.store_id)).data;\r\n var visitorIdTimeArr = (await getVisitorIdArr(facilityId.store_id)).data;\r\n // [\r\n // {\r\n // \"user_id\": \"ghdrlfehd123\",\r\n // \"time\": \"1608277380\"\r\n // },\r\n // {\r\n // \"user_id\": \"ghdrlfehd123\",\r\n // \"time\": \"1608277572\"\r\n // }\r\n // ]\r\n var visitorInfoWithIdTime = await Promise.all(visitorIdTimeArr.map(async (visitorIdTime, idx, arr) => {\r\n // var visitorInfo = (await request(\"POST\", \"https://key.prider.xyz/get-info\", visitorIdTime.user_id)).data;\r\n var visitorInfo = (await getVisitorInfoAPI(visitorIdTime.user_id)).data;\r\n return Object.assign(visitorInfo, {'time': convertTimeFormat(visitorIdTime.time)});\r\n }))\r\n // [\r\n // {\r\n // \"user_id\": \"ghdrlfehd123\",\r\n // \"time\": \"1608277380\",\r\n // \"name\": \"손우정\"\r\n // },\r\n // {\r\n // \"user_id\": \"ghdrlfehd123\",\r\n // \"time\": \"1608277572\",\r\n // \"name\": \"이은표\"\r\n // }\r\n // ]\r\n visitorObj[facilityId.store_id] = visitorInfoWithIdTime;\r\n return\r\n }))\r\n */\r\n var visitorObj = (await getVisitorIdArr(facilityIdArr)).data;\r\n\r\n dispatch(getVisitorList(visitorObj))\r\n // const VisitorIdArr = (await getVisitorListAPI(facilityIdArr)).data;\r\n // const facilityIdArr = await request(\"POST\", \"key.prider.xyz/get-store\", facilityIdArr).data;\r\n console.log(\"VisitorState.js - getState() : \", getState());\r\n\r\n}\r\n\r\n\r\nexport const getVisitorList = (payload) => {\r\n console.log(\"payload in getVisitorList : \", payload);\r\n \r\n // const data = payload.map((visitor, idx, arr) => {\r\n // return {...visitor, 'id': idx}\r\n // })\r\n\r\n return {\r\n type: GET_VISITORLIST,\r\n data: payload\r\n }\r\n}\r\n\r\nconst INITIAL_STATE = { pending: false, error: false, visitors: {} };\r\nconst reducer = createReducer(INITIAL_STATE, {\r\n [GET_VISITORLIST]: (state, action) => {\r\n state.visitors = action.data;\r\n state.pending = false;\r\n },\r\n [GET_VISITORLIST_PENDING]: (state, action) => {\r\n state.pending = true;\r\n state.error = false;\r\n }\r\n}) \r\n\r\nexport default reducer;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\middleware.js",["157"],"import axios from \"axios\";\r\n// const middleware = store => next => action => {\r\n// console.log(\"middleware start\");\r\n// const result = next(action);\r\n// console.log(\"middleware end\");\r\n// return result;\r\n// }\r\nconst middleware = function(store){\r\n return function(next) {\r\n return function(action) {\r\n console.log('middleware.js - store.getState() : ', store.getState());\r\n console.log('middleware.js - action : ', action);\r\n const result = next(action);\r\n console.log('middleware.js - store (after next(action)): ', store.getState());\r\n console.log('\\n');\r\n return result;\r\n }\r\n }\r\n}\r\n\r\nexport default middleware;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\lookup\\component\\ListPending.js",["158"],"import globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport classNames from 'classnames/bind';\r\nimport styles from \"../../css/lookup/ListPending.module.css\";\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nfunction ListPending() {\r\n return (\r\n <div className={cx(\"loading-container\")}>\r\n <div className={cx(\"loading-wrapper\")}>\r\n <div className={cx(\"loading-stick-wrapper\")}>\r\n <div className={cx(\"stick\")}></div>\r\n <div className={cx(\"stick\")}></div>\r\n <div className={cx(\"stick\")}></div>\r\n <div className={cx(\"stick\")}></div>\r\n <div className={cx(\"stick\")}></div>\r\n <div className={cx(\"stick\")}></div>\r\n </div>\r\n <h1 className={cx(\"loading-title\")}>Loading...</h1>\r\n \r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ListPending;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\common\\UserState.js",["159","160","161"],"// import { Cookies } from 'react-cookie';\r\nimport axios from \"axios\";\r\nimport Cookies from 'js-cookie';\r\n\r\nimport createReducer from './createReducer';\r\nimport { dispatch } from './store';\r\nimport { request } from \"./axios\";\r\n\r\nconst LOGIN = \"login/LOGIN\";\r\nconst LOGIN_PENDING = \"login/LOGIN_PENDING\";\r\nconst LOGIN_ERROR = \"login/LOGIN_ERROR\";\r\n\r\nconst LOGOUT = \"login/LOGOUT\";\r\nconst LOGOUT_PENDING = \"login/LOGOUT_PENDING\";\r\nconst LOGOUT_ERROR = \"login/LOGOUT_ERROR\";\r\n\r\nconst SETTING_JWT = \"login/SETTING_JWT\";\r\n\r\nfunction asynchronousAPI(id, password) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n console.log(\"ConfirmedState.js - asynchronousAPI : \", id, password);\r\n \r\n // resolve({'success': true, 'token': \"JWT eTOKENTOKENTOKENTOKENTOKEN\"}); \r\n resolve({'id': '방역당국'}); \r\n }, 3000)\r\n })\r\n}\r\n\r\nfunction loginAPI(id, password){\r\n return request(\"POST\", \"/~~~\", {'id': id, 'password': password});\r\n}\r\n\r\nexport const loginAsync = (payload, cookies) => async (dispatch, getState) => {\r\n\r\n dispatch({type: LOGIN_PENDING});\r\n const data = await asynchronousAPI(payload.id, payload.password);\r\n // dispatch({type: SETTING_JWT, data: data});\r\n // Cookies.set('loginInfo', data.token.split(' ')[1]);\r\n // axios.defaults.headers.common['Authorization'] = `Bearer ${data.token}`;\r\n // axios.defaults.headers.common['Content-type'] = `application/json`;\r\n console.log(\"UserState.js - Cookies : \", Cookies.get('loginInfo'));\r\n\r\n console.log(\"ConfirmedState.js - data : \", data);\r\n dispatch(login(data))\r\n\r\n // return new Promise((resolve) => {\r\n \r\n // resolve(data); // promise 가 끝났음을 알림\r\n // })\r\n};\r\n\r\nconst login = (data) => {\r\n console.log(\"ConfirmedState.js - setConfirmed()\");\r\n\r\n const payload = {'id': data.id};\r\n \r\n return {\r\n type: LOGIN,\r\n data: payload\r\n }\r\n}\r\n\r\n\r\n\r\nexport const logoutAsync = () => async (dispatch, getState) => {\r\n\r\n dispatch({type: LOGOUT_PENDING});\r\n console.log(\"UserState.js - after dispatching LOGOUT_PENDING\");\r\n // const data = await asynchronousAPI(payload.id, payload.password);\r\n \r\n dispatch({type: LOGOUT})\r\n console.log(\"UserState.js - after dispatching LOGOUT\");\r\n};\r\n\r\nconst INITIAL_STATE = { pending: false, error: false, isLogin: false, user: {}, \r\n logoutPending: false,\r\n logoutError: false,\r\n jwt: {}\r\n}\r\nconst reducer = createReducer(INITIAL_STATE, {\r\n [LOGIN]: (state, action) => {\r\n console.log(\"UserState.js - in LOGIN case - state : \", state);\r\n console.log(\"UserState.js - in LOGIN case - action : \", action);\r\n state.user = action.data; \r\n state.pending = false;\r\n state.error = false;\r\n state.isLogin = true;\r\n },\r\n [LOGIN_PENDING]: (state, action) => {\r\n state.pending = true;\r\n state.error = false;\r\n state.isLogin = false;\r\n },\r\n [LOGIN_ERROR]: (state, action) => {\r\n state.pending = false;\r\n state.error = true;\r\n state.isLogin = false;\r\n },\r\n [LOGOUT]: (state, action) => {\r\n console.log(\"UserState.js - in LOGOUT case\");\r\n state.user = {}; \r\n state.logoutPending = false;\r\n state.logoutError = false;\r\n state.isLogin = false;\r\n },\r\n [LOGOUT_PENDING]: (state, action) => {\r\n state.logoutPending = true;\r\n state.error = false;\r\n },\r\n [LOGOUT_ERROR]: (state, action) => {\r\n state.logoutPending = false;\r\n state.logoutError = true;\r\n },\r\n [SETTING_JWT]: (state, action) => {\r\n state.jwt = action.data;\r\n }\r\n}) \r\n\r\nexport default reducer;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\main\\container\\SiteMain.js",["162","163","164","165","166","167","168"],"// localhost:8080/lookup\r\nimport React from 'react';\r\nimport store from \"../../common/store\";\r\n\r\nimport Header from '../../common/component/Header';\r\nimport Footer from '../../common/component/Footer';\r\n\r\nimport siteLogo from \"../../img/site-logo.png\";\r\nimport classNames from 'classnames/bind';\r\nimport globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport styles from \"../../css/main/SiteMain.module.css\";\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nclass SiteMain extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n };\r\n \r\n enterKey = (e) => {\r\n e.preventDefault();\r\n if (e.keyCode == 13) {\r\n this.login(e);\r\n }\r\n }\r\n\r\n login = async (e) => {\r\n var { history } = this.props;\r\n var {id, password} = this.state;\r\n var payload = { id, password };\r\n this.props.loginAsync({'id': id, 'password': password});\r\n // var response = await this.props.login(payload);\r\n // if (response) { // maybe other conditions\r\n // this.props.history.push(\"/lookup\");\r\n // }\r\n // this.props.setConfirmed(name, phone);\r\n }\r\n\r\n toRegisterPage = (e) => {\r\n this.props.history.push(\"/register\");\r\n }\r\n\r\n render() {\r\n console.log('SiteMain.js render');\r\n var {user} = this.props;\r\n console.log(\"SiteMain.js - user : \", user);\r\n return (\r\n <>\r\n <Header match={this.props.match} history={this.props.history}/>\r\n <div className={cx(\"container\")}>\r\n <div className={cx(\"row\")}>\r\n <div className={cx(globalStyles[\"col-md-12\"])}>\r\n <div className={cx(\"site-logo-wrapper\")}>\r\n <img src={siteLogo} alt=\"page-logo\" />\r\n </div>\r\n <h1 className={cx(\"site-slogan\")}>\r\n virus<br/>\r\n keeper\r\n </h1>\r\n <h1 className={cx(\"title\")}>감염병 역학조사 페이지</h1>\r\n <div className={cx(\"site-intro\")}>확진자의 정보를 입력하시면 확진자의 동선과 함께 \r\n BoB Corona Slayer 어플로, QR 체크인한 개인 중 밀접접촉자가 있는지 확인할 수 \r\n 있도록 역학조사 진행에 도움을 주기 위한 웹페이지 입니다.</div>\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </>\r\n );\r\n }\r\n}\r\n \r\nconst mapStateToProps = state => {\r\n return { \r\n // user: state.user.user,\r\n // pending: state.user.pending,\r\n // error: state.user.error,\r\n // isLogin: state.user.isLogin,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n\r\n // loginAsync: (payload) => {\r\n // dispatch(loginAsync(payload))\r\n // },\r\n\r\n }\r\n}\r\n\r\n// export default connect( \r\n// mapStateToProps,\r\n// mapDispatchToProps,\r\n// )(SiteMain);\r\nexport default SiteMain;","A:\\javascript workspace\\covid19-contact-tracing-web\\src\\login\\container\\SignupMain.js",["169","170","171","172","173"],"// localhost:8080/lookup\r\nimport React from 'react';\r\n// import * as actions from \"../../common/ConfirmedState\";\r\nimport { connect, Provider } from 'react-redux';\r\n\r\nimport Header from '../../common/component/Header';\r\nimport Footer from '../../common/component/Footer';\r\n//import { makeGetFriendsWithAgeLimit } from '../state/selector';\r\n\r\nimport siteLogo from \"../../img/site-logo.png\";\r\nimport classNames from 'classnames/bind';\r\nimport globalStyles from \"../../Assets/global-styles/bootstrap.min.module.css\";\r\nimport styles from \"../../css/login/SignupMain.module.css\";\r\n//import \"../../css/login/SignupMain.css\";\r\n\r\nconst cx = classNames.bind(styles);\r\n\r\nclass SignupMain extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n id: \"\",\r\n password: \"\"\r\n };\r\n }\r\n \r\n componentDidMount() {\r\n //console.log(\"LoginMain componentDidMount props : \", this.props);\r\n console.log(styles);\r\n // swal({\r\n // title: \"타이틀\",\r\n // text: \"내용\",\r\n // icon: \"info\" //\"info,success,warning,error\" 중 택1\r\n // });\r\n console.log(\"SignupMain.js - window : \", window);\r\n }\r\n\r\n idChange = (e) => {\r\n this.setState({\r\n id: e.target.value\r\n });\r\n }\r\n\r\n passwordChange = (e) => {\r\n this.setState({\r\n password: e.target.value\r\n });\r\n }\r\n\r\n register = (e) => {\r\n var {id, password} = this.state;\r\n var payload = {\r\n id: id,\r\n password: password\r\n }\r\n // this.props.register(payload);\r\n // alert(\"입력하신 이메일 주소로 본인확인 이메일을 보냈습니다. 확인해주세요.\");\r\n // alert(\"[email protected]로 증빙서류를 보내주시면 검토 후 회원가입이 완료됩니다.\");\r\n window.swal({\r\n title: \"안내\",\r\n text: \"[email protected]로 증빙서류를 \\n보내주시면 검토 후 회원가입이 완료됩니다.\",\r\n icon: \"info\" //\"info,success,warning,error\" 중 택1\r\n })\r\n }\r\n\r\n toLoginPage = (e) => {\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n render() {\r\n console.log('LoginMain render');\r\n //console.log(\"confirmed : \", this.props.confirmed);\r\n return (\r\n <>\r\n <Header match={this.props.match} history={this.props.history}/>\r\n <div className={cx('container')}>\r\n <div className={cx(globalStyles.row)}>\r\n <div className={cx(globalStyles['col-md-12'])}>\r\n <div className={cx(\"site-logo-wrapper\")}>\r\n <img src={siteLogo} alt=\"site-logo\" />\r\n </div>\r\n <h1 className={cx(\"register-title\")}>\r\n Create your account\r\n </h1>\r\n <div className={cx(\"lookup-input-wrapper\")}>\r\n <span>ID </span>\r\n <input type=\"text\" placeholder=\"Enter your ID\"\r\n onChange={this.idChange}\r\n className={cx(\"lookup-input\")}\r\n />\r\n </div>\r\n <div className={cx(\"lookup-input-wrapper\")}>\r\n <span>PW </span>\r\n <input type=\"password\" placeholder=\"Enter your password\"\r\n onChange={this.passwordChange}\r\n className={cx(\"lookup-input\")} \r\n />\r\n </div>\r\n <div className={cx(\"lookup-input-wrapper\")}>\r\n <span>Email </span>\r\n <input type=\"text\" placeholder=\"Enter your email\"\r\n onChange={this.passwordChange}\r\n className={cx(\"lookup-input\")} \r\n />\r\n </div>\r\n <div className={cx(\"register-wrapper\")}>\r\n 계정이 있으신가요? <span onClick={this.toLoginPage}>로그인</span>\r\n </div>\r\n \r\n <div className={cx(\"lookup-button-wrapper\")}>\r\n <button onClick={this.register}\r\n className={cx('lookup-button')}>회원가입</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </>\r\n );\r\n }\r\n}\r\n \r\nconst mapStateToProps = state => {\r\n return { \r\n // confirmed: state.confirmed.confirmed,\r\n // stores: state.confirmed.stores\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n // setConfirmed: (name, phone) => {\r\n // dispatch(actions.setConfirmed(name, phone))\r\n // }\r\n }\r\n}\r\n\r\n// export default connect( \r\n// mapStateToProps,\r\n// mapDispatchToProps,\r\n// )(RegisterMain);\r\nexport default SignupMain;\r\n",{"ruleId":"174","severity":1,"message":"175","line":3,"column":32,"nodeType":"176","messageId":"177","endLine":3,"endColumn":36},{"ruleId":"174","severity":1,"message":"178","line":4,"column":10,"nodeType":"176","messageId":"177","endLine":4,"endColumn":21},{"ruleId":"174","severity":1,"message":"179","line":4,"column":23,"nodeType":"176","messageId":"177","endLine":4,"endColumn":38},{"ruleId":"174","severity":1,"message":"180","line":18,"column":8,"nodeType":"176","messageId":"177","endLine":18,"endColumn":9},{"ruleId":"174","severity":1,"message":"181","line":19,"column":8,"nodeType":"176","messageId":"177","endLine":19,"endColumn":14},{"ruleId":"182","replacedBy":"183"},{"ruleId":"184","replacedBy":"185"},{"ruleId":"174","severity":1,"message":"186","line":3,"column":10,"nodeType":"176","messageId":"177","endLine":3,"endColumn":22},{"ruleId":"174","severity":1,"message":"187","line":9,"column":8,"nodeType":"176","messageId":"177","endLine":9,"endColumn":19},{"ruleId":"174","severity":1,"message":"188","line":24,"column":7,"nodeType":"176","messageId":"177","endLine":24,"endColumn":17},{"ruleId":"174","severity":1,"message":"189","line":40,"column":7,"nodeType":"176","messageId":"177","endLine":40,"endColumn":15},{"ruleId":"190","severity":1,"message":"191","line":91,"column":23,"nodeType":"192","messageId":"193","endLine":91,"endColumn":25},{"ruleId":"190","severity":1,"message":"191","line":134,"column":61,"nodeType":"192","messageId":"193","endLine":134,"endColumn":63},{"ruleId":"194","severity":1,"message":"195","line":137,"column":17,"nodeType":"176","messageId":"196","endLine":137,"endColumn":29},{"ruleId":"174","severity":1,"message":"197","line":6,"column":8,"nodeType":"176","messageId":"177","endLine":6,"endColumn":18},{"ruleId":"198","severity":1,"message":"199","line":5,"column":5,"nodeType":"200","messageId":"201","endLine":7,"endColumn":6},{"ruleId":"174","severity":1,"message":"202","line":4,"column":8,"nodeType":"176","messageId":"177","endLine":4,"endColumn":20},{"ruleId":"174","severity":1,"message":"202","line":7,"column":8,"nodeType":"176","messageId":"177","endLine":7,"endColumn":20},{"ruleId":"198","severity":1,"message":"199","line":14,"column":5,"nodeType":"200","messageId":"201","endLine":16,"endColumn":6},{"ruleId":"174","severity":1,"message":"203","line":39,"column":14,"nodeType":"176","messageId":"177","endLine":39,"endColumn":21},{"ruleId":"174","severity":1,"message":"204","line":40,"column":13,"nodeType":"176","messageId":"177","endLine":40,"endColumn":25},{"ruleId":"174","severity":1,"message":"205","line":5,"column":10,"nodeType":"176","messageId":"177","endLine":5,"endColumn":20},{"ruleId":"190","severity":1,"message":"191","line":42,"column":32,"nodeType":"192","messageId":"193","endLine":42,"endColumn":34},{"ruleId":"190","severity":1,"message":"191","line":71,"column":23,"nodeType":"192","messageId":"193","endLine":71,"endColumn":25},{"ruleId":"174","severity":1,"message":"203","line":79,"column":15,"nodeType":"176","messageId":"177","endLine":79,"endColumn":22},{"ruleId":"174","severity":1,"message":"206","line":81,"column":13,"nodeType":"176","messageId":"177","endLine":81,"endColumn":20},{"ruleId":"174","severity":1,"message":"207","line":110,"column":14,"nodeType":"176","messageId":"177","endLine":110,"endColumn":21},{"ruleId":"174","severity":1,"message":"208","line":2,"column":10,"nodeType":"176","messageId":"177","endLine":2,"endColumn":17},{"ruleId":"174","severity":1,"message":"209","line":4,"column":31,"nodeType":"176","messageId":"177","endLine":4,"endColumn":54},{"ruleId":"174","severity":1,"message":"188","line":11,"column":7,"nodeType":"176","messageId":"177","endLine":11,"endColumn":17},{"ruleId":"174","severity":1,"message":"210","line":27,"column":10,"nodeType":"176","messageId":"177","endLine":27,"endColumn":27},{"ruleId":"174","severity":1,"message":"211","line":2,"column":8,"nodeType":"176","messageId":"177","endLine":2,"endColumn":15},{"ruleId":"174","severity":1,"message":"212","line":6,"column":10,"nodeType":"176","messageId":"177","endLine":6,"endColumn":18},{"ruleId":"174","severity":1,"message":"208","line":7,"column":10,"nodeType":"176","messageId":"177","endLine":7,"endColumn":17},{"ruleId":"174","severity":1,"message":"213","line":12,"column":7,"nodeType":"176","messageId":"177","endLine":12,"endColumn":15},{"ruleId":"174","severity":1,"message":"214","line":13,"column":7,"nodeType":"176","messageId":"177","endLine":13,"endColumn":23},{"ruleId":"174","severity":1,"message":"215","line":17,"column":10,"nodeType":"176","messageId":"177","endLine":17,"endColumn":25},{"ruleId":"174","severity":1,"message":"216","line":6,"column":8,"nodeType":"176","messageId":"177","endLine":6,"endColumn":13},{"ruleId":"174","severity":1,"message":"202","line":8,"column":8,"nodeType":"176","messageId":"177","endLine":8,"endColumn":20},{"ruleId":"174","severity":1,"message":"217","line":13,"column":8,"nodeType":"176","messageId":"177","endLine":13,"endColumn":16},{"ruleId":"174","severity":1,"message":"218","line":14,"column":8,"nodeType":"176","messageId":"177","endLine":14,"endColumn":13},{"ruleId":"174","severity":1,"message":"219","line":15,"column":8,"nodeType":"176","messageId":"177","endLine":15,"endColumn":17},{"ruleId":"174","severity":1,"message":"220","line":16,"column":8,"nodeType":"176","messageId":"177","endLine":16,"endColumn":12},{"ruleId":"174","severity":1,"message":"221","line":19,"column":7,"nodeType":"176","messageId":"177","endLine":19,"endColumn":9},{"ruleId":"174","severity":1,"message":"222","line":50,"column":14,"nodeType":"176","messageId":"177","endLine":50,"endColumn":18},{"ruleId":"190","severity":1,"message":"191","line":53,"column":24,"nodeType":"192","messageId":"193","endLine":53,"endColumn":26},{"ruleId":"194","severity":1,"message":"223","line":58,"column":17,"nodeType":"176","messageId":"196","endLine":58,"endColumn":26},{"ruleId":"174","severity":1,"message":"224","line":3,"column":10,"nodeType":"176","messageId":"177","endLine":3,"endColumn":17},{"ruleId":"174","severity":1,"message":"202","line":5,"column":8,"nodeType":"176","messageId":"177","endLine":5,"endColumn":20},{"ruleId":"174","severity":1,"message":"221","line":11,"column":7,"nodeType":"176","messageId":"177","endLine":11,"endColumn":9},{"ruleId":"190","severity":1,"message":"191","line":41,"column":22,"nodeType":"192","messageId":"193","endLine":41,"endColumn":24},{"ruleId":"194","severity":1,"message":"223","line":46,"column":17,"nodeType":"176","messageId":"196","endLine":46,"endColumn":26},{"ruleId":"174","severity":1,"message":"225","line":98,"column":7,"nodeType":"176","messageId":"177","endLine":98,"endColumn":22},{"ruleId":"174","severity":1,"message":"226","line":105,"column":7,"nodeType":"176","messageId":"177","endLine":105,"endColumn":25},{"ruleId":"174","severity":1,"message":"208","line":2,"column":10,"nodeType":"176","messageId":"177","endLine":2,"endColumn":17},{"ruleId":"174","severity":1,"message":"227","line":6,"column":7,"nodeType":"176","messageId":"177","endLine":6,"endColumn":28},{"ruleId":"174","severity":1,"message":"189","line":8,"column":7,"nodeType":"176","messageId":"177","endLine":8,"endColumn":15},{"ruleId":"174","severity":1,"message":"210","line":23,"column":10,"nodeType":"176","messageId":"177","endLine":23,"endColumn":27},{"ruleId":"174","severity":1,"message":"228","line":1,"column":8,"nodeType":"176","messageId":"177","endLine":1,"endColumn":13},{"ruleId":"174","severity":1,"message":"202","line":1,"column":8,"nodeType":"176","messageId":"177","endLine":1,"endColumn":20},{"ruleId":"174","severity":1,"message":"228","line":2,"column":8,"nodeType":"176","messageId":"177","endLine":2,"endColumn":13},{"ruleId":"174","severity":1,"message":"212","line":6,"column":10,"nodeType":"176","messageId":"177","endLine":6,"endColumn":18},{"ruleId":"174","severity":1,"message":"229","line":30,"column":10,"nodeType":"176","messageId":"177","endLine":30,"endColumn":18},{"ruleId":"174","severity":1,"message":"216","line":3,"column":8,"nodeType":"176","messageId":"177","endLine":3,"endColumn":13},{"ruleId":"198","severity":1,"message":"199","line":16,"column":5,"nodeType":"200","messageId":"201","endLine":19,"endColumn":6},{"ruleId":"190","severity":1,"message":"191","line":23,"column":23,"nodeType":"192","messageId":"193","endLine":23,"endColumn":25},{"ruleId":"174","severity":1,"message":"203","line":29,"column":15,"nodeType":"176","messageId":"177","endLine":29,"endColumn":22},{"ruleId":"174","severity":1,"message":"206","line":31,"column":13,"nodeType":"176","messageId":"177","endLine":31,"endColumn":20},{"ruleId":"174","severity":1,"message":"225","line":74,"column":7,"nodeType":"176","messageId":"177","endLine":74,"endColumn":22},{"ruleId":"174","severity":1,"message":"226","line":83,"column":7,"nodeType":"176","messageId":"177","endLine":83,"endColumn":25},{"ruleId":"174","severity":1,"message":"224","line":4,"column":10,"nodeType":"176","messageId":"177","endLine":4,"endColumn":17},{"ruleId":"174","severity":1,"message":"230","line":4,"column":19,"nodeType":"176","messageId":"177","endLine":4,"endColumn":27},{"ruleId":"174","severity":1,"message":"206","line":52,"column":13,"nodeType":"176","messageId":"177","endLine":52,"endColumn":20},{"ruleId":"174","severity":1,"message":"225","line":123,"column":7,"nodeType":"176","messageId":"177","endLine":123,"endColumn":22},{"ruleId":"174","severity":1,"message":"226","line":130,"column":7,"nodeType":"176","messageId":"177","endLine":130,"endColumn":25},"no-unused-vars","'Link' is defined but never used.","Identifier","unusedVar","'createStore' is defined but never used.","'combineReducers' is defined but never used.","'$' is defined but never used.","'Popper' is defined but never used.","no-native-reassign",["231"],"no-negated-in-lhs",["232"],"'setConfirmed' is defined but never used.","'LookupInput' is defined but never used.","'facilities' is assigned a value but never used.","'visitors' is assigned a value but never used.","eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","no-redeclare","'visitorProps' is already defined.","redeclared","'middleware' is defined but never used.","no-useless-constructor","Useless constructor.","MethodDefinition","noUselessConstructor","'globalStyles' is defined but never used.","'history' is assigned a value but never used.","'isLookupPage' is assigned a value but never used.","'instanceOf' is defined but never used.","'payload' is assigned a value but never used.","'cookies' is assigned a value but never used.","'request' is defined but never used.","'GET_VISITORLIST_PENDING' is defined but never used.","'convertTimeFormat' is defined but never used.","'produce' is defined but never used.","'dispatch' is defined but never used.","'REGISTER' is assigned a value but never used.","'GET_FACILITYLIST' is assigned a value but never used.","'getConfirmedAPI' is defined but never used.","'store' is defined but never used.","'Collapse' is defined but never used.","'Table' is defined but never used.","'Accordion' is defined but never used.","'Card' is defined but never used.","'cx' is assigned a value but never used.","'open' is assigned a value but never used.","'tableData' is already defined.","'connect' is defined but never used.","'mapStateToProps' is assigned a value but never used.","'mapDispatchToProps' is assigned a value but never used.","'GET_VISITORLIST_ERROR' is assigned a value but never used.","'axios' is defined but never used.","'loginAPI' is defined but never used.","'Provider' is defined but never used.","no-global-assign","no-unsafe-negation"]