Showing
4 changed files
with
70 additions
and
25 deletions
1 | -## Topic | 1 | +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
2 | -> 코로나 19 예방접종 의료기관 조회 웹서비스를 제공하는 프로젝트입니다. | 2 | + |
3 | +## 🔍 About the Project | ||
4 | +> 현재 코로나19로 인해 얼마전부터 위탁의료기관을 통한 신종 코로나바이러스 감염증(코로나19) 접종이 본격 시작되었습니다. | ||
5 | +이에 따라, 원하는 지역의 예방접종 위탁의료기관을 간편하게 조회할 수 있는 서비스를 개발하였습니다. | ||
6 | +이 프로젝트는 매 정각 1번씩 갱신되고 있는 위탁의료기관의 정보 데이터를 기반으로 제공합니다. | ||
7 | + | ||
8 | +## 💻 User Interface | ||
9 | +<img src="/uploads/c003a2a8d20b368d3c0fb07c49007251/UI예시.png" width="800" height="400"> | ||
10 | + | ||
11 | + | ||
12 | +## 📋 기술 스택 | ||
13 | +- Nodejs | ||
14 | +- Html | ||
15 | +- Css | ||
16 | +- JavaScript | ||
17 | +- Express | ||
18 | +- AWS EC2 | ||
3 | 19 | ||
4 | -## Member | 20 | + |
21 | +## ✏️ 프로젝트 사용 방법 | ||
22 | +1. cloning | ||
23 | +``` | ||
24 | +http://khuhub.khu.ac.kr/2018103585/Corona_Vaccination_Medical_Institution.git | ||
25 | +``` | ||
26 | + | ||
27 | +2. install npm packages | ||
28 | +``` | ||
29 | +npm install | ||
30 | +``` | ||
31 | +3. add API key | ||
32 | +> Fill {} with API Key | ||
33 | +``` | ||
34 | +const $key = '{Corona Vaccination Medical Institution API key}' (app.js) | ||
35 | +``` | ||
36 | +``` | ||
37 | +<script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey={Kakao map API Key}&libraries=services"></script> (index.ejs) | ||
38 | +``` | ||
39 | +4. Execute | ||
40 | +``` | ||
41 | +node app.js | ||
42 | +``` | ||
43 | + | ||
44 | +## 💻 Project Architecture | ||
45 | +<img src="/uploads/abc7fb1cd4ee2ab997956e529c24670e/프로젝트아키텍쳐.png" width="800" height="400"> | ||
46 | + | ||
47 | + | ||
48 | + | ||
49 | +## ✨ Contributors | ||
50 | + | ||
5 | | 김서연 | 허재경 | | 51 | | 김서연 | 허재경 | |
6 | | :----: | :----: | | 52 | | :----: | :----: | |
7 | | [@ksy991018](https://github.com/ksy991018) | [@JaeKyungHeo](https://github.com/JaeKyungHeo) | | 53 | | [@ksy991018](https://github.com/ksy991018) | [@JaeKyungHeo](https://github.com/JaeKyungHeo) | | ... | ... |
... | @@ -2,11 +2,15 @@ var express = require('express'); | ... | @@ -2,11 +2,15 @@ var express = require('express'); |
2 | var bodyParser = require('body-parser'); | 2 | var bodyParser = require('body-parser'); |
3 | var request = require('request'); | 3 | var request = require('request'); |
4 | var cheerio = require('cheerio'); | 4 | var cheerio = require('cheerio'); |
5 | + | ||
5 | var app =express(); | 6 | var app =express(); |
7 | +const HTTPS = require('https'); | ||
8 | +const domain = "www.stagefive.tk" | ||
9 | +const sslport = 80; | ||
10 | + | ||
6 | app.set('view engine','ejs'); | 11 | app.set('view engine','ejs'); |
7 | app.set('views','./views') | 12 | app.set('views','./views') |
8 | app.use(express.urlencoded( {extended : false } )); | 13 | app.use(express.urlencoded( {extended : false } )); |
9 | -app.use(express.static(__dirname + '/public')); | ||
10 | app.locals.pretty=true; | 14 | app.locals.pretty=true; |
11 | 15 | ||
12 | // app.set('view engine','pug'); | 16 | // app.set('view engine','pug'); | ... | ... |
public/css/master.css
deleted
100644 → 0
1 | -/* #placeList li{list-style: none;} | ||
2 | -#placesList .item {position:relative;border-bottom:1px solid #888;overflow: hidden;cursor: pointer;min-height: 65px;} | ||
3 | -#placesList .item span {display: block;margin-top:4px;} | ||
4 | -#placesList .item h5, #placesList .item .info {text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} | ||
5 | -#placesList .info .gray {color:#8a8a8a;} | ||
6 | -#placesList .info .jibun {padding-left:26px;background:url(https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/places_jibun.png) no-repeat;} | ||
7 | -#placesList .info .tel {color:#009900;} */ | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -3,7 +3,7 @@ | ... | @@ -3,7 +3,7 @@ |
3 | <head> | 3 | <head> |
4 | <meta charset="utf-8"> | 4 | <meta charset="utf-8"> |
5 | <title>코로나 백신 의료기관 조회</title> | 5 | <title>코로나 백신 의료기관 조회</title> |
6 | - <!-- <link rel="stylesheet" href="/css/master.css"> --> | 6 | + |
7 | <%if(typeof(info)!="undefined"){%> | 7 | <%if(typeof(info)!="undefined"){%> |
8 | <script> | 8 | <script> |
9 | try { | 9 | try { |
... | @@ -14,18 +14,20 @@ | ... | @@ -14,18 +14,20 @@ |
14 | } | 14 | } |
15 | </script> | 15 | </script> |
16 | <% }%> | 16 | <% }%> |
17 | + | ||
17 | </head> | 18 | </head> |
18 | <body> | 19 | <body> |
19 | <center> | 20 | <center> |
20 | - <h1>COVID-19 예방접종 위탁 의료기관 조회</h1> <br><hr> | 21 | + |
22 | + <!-- <div style="background: #e8ecff; border-left: 0.5em solid #688FF4;border-right: 0.5em solid #688FF4; padding: 0.5em;"> --> | ||
23 | + <h2>COVID-19 예방접종 위탁 의료기관 조회</h2> <hr> | ||
24 | + <!-- </div> --> | ||
21 | <form action="/" method="post"> | 25 | <form action="/" method="post"> |
22 | <p> | 26 | <p> |
23 | - <br> | 27 | + <div style="float:right; width:40%; margin-bottom:10px; margin-right: 5px;"> |
24 | - <div style="float:right; margin-right:250px;margin-right:70px; margin-bottom:7px;"> | 28 | + <input type="text" style="height:25px;font-size:15px;" name="region" placeholder="지역을 입력하세요" size="20"/> |
25 | - <input type="text" style="width:450px;height:30px;font-size:20px;" name="region" placeholder="지역을 입력하세요" size="20"/> | 29 | + <button type="submit" style="height:30px;font-size:15px;" class="btn btn-info" >검색</button> |
26 | - <button type="submit" style="height:35px;font-size:20px;">검색</button> | 30 | + </div> |
27 | - </div> | ||
28 | - | ||
29 | </p> | 31 | </p> |
30 | </form> | 32 | </form> |
31 | </center> | 33 | </center> |
... | @@ -34,11 +36,11 @@ | ... | @@ -34,11 +36,11 @@ |
34 | <script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=35fccf4b4e2a3179187346f26ed3f988&libraries=services"></script> | 36 | <script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=35fccf4b4e2a3179187346f26ed3f988&libraries=services"></script> |
35 | 37 | ||
36 | <% if(typeof(info) != "undefined"){ %> | 38 | <% if(typeof(info) != "undefined"){ %> |
37 | - | 39 | + <div id="map" style="width:65%;height:550px;float:left; margin-left: 2%; border-radius: 2%; border:1px solid black" ></div> |
38 | - <div style="overflow:scroll; width:500px; height:675px; padding:10px;float:right; margin-right:70px; border:1px solid black;"> | 40 | + <div style="overflow:scroll; width:25%; height:550px;float:left; margin-left:2%; border:1px solid black;"> |
39 | <ol id="placelist"> | 41 | <ol id="placelist"> |
40 | <% for(i=0; i<info.length; i++){%> | 42 | <% for(i=0; i<info.length; i++){%> |
41 | - <li class="item"> | 43 | + <li class="item" style="font-size: 13px; "> |
42 | <div class="info" onmouseover="displayinfowindow('<%=info[i].orgZipaddr%>', '<%=info[i].orgnm%>', true)" onmouseout="displayinfowindow('<%=info[i].orgZipaddr%>', '<%=info[i].orgnm%>', false)"> | 44 | <div class="info" onmouseover="displayinfowindow('<%=info[i].orgZipaddr%>', '<%=info[i].orgnm%>', true)" onmouseout="displayinfowindow('<%=info[i].orgZipaddr%>', '<%=info[i].orgnm%>', false)"> |
43 | <span><strong><%= info[i].orgnm%></strong></span> | 45 | <span><strong><%= info[i].orgnm%></strong></span> |
44 | <%if(info[i].hldyYn=='N') {%> | 46 | <%if(info[i].hldyYn=='N') {%> |
... | @@ -54,7 +56,7 @@ | ... | @@ -54,7 +56,7 @@ |
54 | <% if(timeList[i][4]!="" && timeList[i][5]!="" && timeList[i][6]!="" && timeList[i][7]!=""){%> | 56 | <% if(timeList[i][4]!="" && timeList[i][5]!="" && timeList[i][6]!="" && timeList[i][7]!=""){%> |
55 | <span>진료시간 : <%=timeList[i][4]%>:<%=timeList[i][5]%>~<%=timeList[i][6]%>:<%=timeList[i][7] %></span><br> | 57 | <span>진료시간 : <%=timeList[i][4]%>:<%=timeList[i][5]%>~<%=timeList[i][6]%>:<%=timeList[i][7] %></span><br> |
56 | <%}%> | 58 | <%}%> |
57 | - <span style="color:gray" class="jibun gray"><%=info[i].orgZipaddr%></span><br> | 59 | + <span style="color:gray" class="jibun gray; font-style: oblique;" ><%=info[i].orgZipaddr%></span><br> |
58 | <span style="color:blue" class="tel"><%=info[i].orgTlno%></span><br> | 60 | <span style="color:blue" class="tel"><%=info[i].orgTlno%></span><br> |
59 | </div> | 61 | </div> |
60 | <hr> | 62 | <hr> |
... | @@ -103,7 +105,7 @@ | ... | @@ -103,7 +105,7 @@ |
103 | var num=1; | 105 | var num=1; |
104 | // 인포윈도우를 생성합니다 | 106 | // 인포윈도우를 생성합니다 |
105 | var infowindow = new kakao.maps.InfoWindow({ | 107 | var infowindow = new kakao.maps.InfoWindow({ |
106 | - content: '<div style="width:250px;text-align:center;padding:5px 0;">' + addr.orgnm + '</div>', | 108 | + content: '<div style="border-radius:3%; width:200px;text-align:center;padding:3px 0; font-size:12px">' + addr.orgnm + '</div>', |
107 | }); | 109 | }); |
108 | // 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다 | 110 | // 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다 |
109 | // 이벤트 리스너로는 클로저를 만들어 등록합니다 | 111 | // 이벤트 리스너로는 클로저를 만들어 등록합니다 |
... | @@ -144,7 +146,7 @@ | ... | @@ -144,7 +146,7 @@ |
144 | clickable: true | 146 | clickable: true |
145 | }); | 147 | }); |
146 | infowindow = new kakao.maps.InfoWindow({ | 148 | infowindow = new kakao.maps.InfoWindow({ |
147 | - content: '<div style="width:250px;text-align:center;padding:5px 0;">' + name + '</div>', | 149 | + content: '<div style="border-radius:3%; width:200px;text-align:center;padding:3px 0; font-size:12px">' + name + '</div>', |
148 | }); | 150 | }); |
149 | infowindows.push(infowindow); | 151 | infowindows.push(infowindow); |
150 | infowindow.open(map, marker); | 152 | infowindow.open(map, marker); | ... | ... |
-
Please register or login to post a comment