유영빈

오류 및 렌더링 수정 후 병합. 필요없는 파일 제거 요망

1 +const express = require("express");
2 +var app = express();
3 +http = require('http').createServer(app);
4 +port = 23023;
5 +
6 +app.use(express.static(__dirname + "/views"));
7 +const routes = require("./routes/");
8 +const errorController = require("./routes/errorController")
9 +app.use(routes)
10 +
11 +app.use(errorController.pageNotFoundError);
12 +
13 +
14 +var server = http.listen(port, function(){
15 + console.log(`http://localhost:${port}`);
16 +})
17 +
1 +key=RwxSWXH88b2bKOAT6Ot3FHorPZQW9omma0xYIjtJe0JIKe4DC7TjX7Uj6E1ArzYi2AvVETmPrAIYyY8FlL%2BfAA%3D%3D
...\ No newline at end of file ...\ No newline at end of file
1 +let request = require('request');
2 +let cheerio = require('cheerio');
3 +const bus_url = 'http://apis.data.go.kr/6410000/busarrivalservice/getBusArrivalList';
4 +//const stationID = '228000708'; // 사색의광장 들어오는 방향
5 +const gateStationID = '203000125'
6 +require('dotenv').config();
7 +//const BusArrivalUrl = bus_url + '?servicekey=' + process.env.key + '&stationId=' + stationID;// 사색의광장 정류장 버스 도착 정보 조회용
8 +//console.log(BusArrivalUrl);
9 +var routeID = ['200000112', '200000115', '234000016', '200000103'];
10 +var Bus = [];
11 +// request(BusArrivalUrl, (err, res, body) => {
12 +// var $ = cheerio.load(body, {decodeEntities: false});
13 +// $('busArrivalList').each(function(idx){
14 +// let route = $(this).find('routeId').text();
15 +// routeID.push(route);
16 +// })
17 +// //console.log(routeID);
18 +// })
19 +const route_url = 'http://apis.data.go.kr/6410000/busrouteservice/getBusRouteInfoItem';
20 +var index = 0;
21 +function getBusNum(){
22 + var BusRouteUrl = route_url + '?servicekey=' + process.env.key + '&routeId='; // 각 버스 정보 조회용
23 + BusRouteUrl += routeID[index++];
24 + //console.log(BusRouteUrl);
25 + request(BusRouteUrl, (err, res, body) => {
26 + var $ = cheerio.load(body, {decodeEntities: false});
27 + $('busRouteInfoItem').each(function(idx){
28 + var id = $(this).find('routeId').text(); //버스 노선 id
29 + var num = $(this).find('routeName').text(); //버스 번호
30 + var firsttime = $(this).find('upFirstTime').text(); //평일 기점 첫차시간
31 + var lasttime = $(this).find('upLastTime').text(); //평일 기점 막차 시간
32 + var mintime = $(this).find('peekAlloc').text(); //평일 최소 배차시간
33 + var maxtime = $(this).find('nPeekAlloc').text(); //평일 최대 배차시간
34 + //var idx = Bus.findIndex((item, idx) => { return item.routeId = id})
35 + var newBus = new Object();
36 + newBus.routeId = id;
37 + newBus.BusNum = num;
38 + newBus.FirstTime = firsttime;
39 + newBus.LastTime = lasttime;
40 + newBus.MinTime = mintime;
41 + newBus.MaxTime = maxtime;
42 + console.log(newBus);
43 + Bus.push(newBus);
44 + console.log(Bus);
45 + })
46 + })
47 +}
48 +for(var i=0; i<routeID.length; i++){
49 + getBusNum();
50 +}
51 +const GateBusUrl = bus_url + '?servicekey=' + process.env.key + '&stationId=' + gateStationID; //국제캠 정문 정류장
52 +let date = new Date();
53 +let predictTime = ['-1', '-1', '-1', '-1'];
54 +let body = new Object();
55 +function predict(){
56 + console.log(GateBusUrl);
57 + request(GateBusUrl, (err, res, body) => {
58 + var $ = cheerio.load(body, {decodeEntities: false});
59 + $('busArrivalList').each(function(idx){
60 + let route = $(this).find('routeId').text();
61 + var index = Bus.findIndex(function(e, idx){ return e.routeId == route;});
62 + if(index > -1){
63 + //var num = $(this).find('plateNo1').text(); // 버스 차량번호 ex) 70사 1290
64 + var time = $(this).find('predictTime1').text(); // 버스 예상 도착시간
65 + var predictHour1 = date.getHours();
66 + var predictMinute1 = date.getMinutes() + Bus[index].mintime - (3 - (time*1)); // 사색의 광장 -> 경희대학교 3분정도 소요
67 + var predictHour2 = date.getHours();
68 + var predictMinute2 = date.getMinutes() + Bus[index].maxtime - (3 - (time*1)); // time*1 : string to integer 형변환
69 + if(predictMinute1 >= 60){
70 + predictHour1 += 1;
71 + predictMinute1 -= 60;
72 + }
73 + if(predictMinute2 >= 60){
74 + predictHour2 += 1;
75 + predictMinute2 -= 60;
76 + }
77 + Bus[index]["MinPredictTime"] = predictHour1 + ":" + predictMinute1;
78 + Bus[index]["MaxPredictTime"] = predictHour2 + ":" + predictMinute2;
79 + predictTime = [predictHour1 + "", predictMinute1 + "", predictHour2 + "", predictMinute2 + ""]
80 + const dateBusDeparture = new Date(date.getFullYear(), date.getMonth(), date.getDate(), predictTime[0]*1, predictTime[1]*1, 0);
81 + var gapSec = (dateBusDeparture.getTime() - date.getTime())/1000;
82 + var gapHour = Math.floor(gapSec / 60 / 60);
83 + var gapMin = Math.floor((gapSec - gapHour * 3600) / 60);
84 + // var ans = gapHour + "시간" + gapMin + "분 이상";
85 + // var ETD_min_H = predictTime[0];
86 + // var ETD_min_M = predictTime[1];
87 + // var ETD_max_H = predictTime[2];
88 + // var ETD_max_M = predictTime[3];
89 +
90 +
91 + //controller에 데이터 전송
92 + module.exports.data = {};
93 + module.exports.data.remainTime = gapHour + "시간" + gapMin + "분 이상";
94 + module.exports.data.ETD_min_H = predictTime[0];
95 + module.exports.data.ETD_min_M = predictTime[1];
96 + module.exports.data.ETD_max_H = predictTime[2];
97 + module.exports.data.ETD_max_M = predictTime[3];
98 +
99 +
100 + }
101 + })
102 + })
103 +}
104 +
105 +
106 +
107 +function start(){
108 + setInterval(predict, 60000);
109 +}
110 +setTimeout(start, 20000);
1 { 1 {
2 - "name": "bustime", 2 + "name": "busterm",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
7 - "amdefine": { 7 + "accepts": {
8 - "version": "1.0.1", 8 + "version": "1.3.7",
9 - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 9 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
10 - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" 10 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
11 + "requires": {
12 + "mime-types": "~2.1.24",
13 + "negotiator": "0.6.2"
14 + }
15 + },
16 + "ansi-styles": {
17 + "version": "3.2.1",
18 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
19 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
20 + "requires": {
21 + "color-convert": "^1.9.0"
22 + }
23 + },
24 + "array-flatten": {
25 + "version": "1.1.1",
26 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
27 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
11 }, 28 },
12 "async": { 29 "async": {
13 - "version": "0.2.10", 30 + "version": "0.9.2",
14 - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 31 + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
15 - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" 32 + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
16 }, 33 },
17 - "boolbase": { 34 + "balanced-match": {
18 - "version": "1.0.0", 35 + "version": "1.0.2",
19 - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 36 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
20 - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 37 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
21 }, 38 },
22 - "cheerio": { 39 + "body-parser": {
23 - "version": "1.0.0-rc.9", 40 + "version": "1.19.0",
24 - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.9.tgz", 41 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
25 - "integrity": "sha512-QF6XVdrLONO6DXRF5iaolY+odmhj2CLj+xzNod7INPWMi/x9X4SOylH0S/vaPpX+AUU6t04s34SQNh7DbkuCng==", 42 + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
26 "requires": { 43 "requires": {
27 - "cheerio-select": "^1.4.0", 44 + "bytes": "3.1.0",
28 - "dom-serializer": "^1.3.1", 45 + "content-type": "~1.0.4",
29 - "domhandler": "^4.2.0", 46 + "debug": "2.6.9",
30 - "htmlparser2": "^6.1.0", 47 + "depd": "~1.1.2",
31 - "parse5": "^6.0.1", 48 + "http-errors": "1.7.2",
32 - "parse5-htmlparser2-tree-adapter": "^6.0.1", 49 + "iconv-lite": "0.4.24",
33 - "tslib": "^2.2.0" 50 + "on-finished": "~2.3.0",
51 + "qs": "6.7.0",
52 + "raw-body": "2.4.0",
53 + "type-is": "~1.6.17"
34 } 54 }
35 }, 55 },
36 - "cheerio-select": { 56 + "brace-expansion": {
37 - "version": "1.4.0", 57 + "version": "1.1.11",
38 - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.4.0.tgz", 58 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
39 - "integrity": "sha512-sobR3Yqz27L553Qa7cK6rtJlMDbiKPdNywtR95Sj/YgfpLfy0u6CGJuaBKe5YE/vTc23SCRKxWSdlon/w6I/Ew==", 59 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
40 "requires": { 60 "requires": {
41 - "css-select": "^4.1.2", 61 + "balanced-match": "^1.0.0",
42 - "css-what": "^5.0.0", 62 + "concat-map": "0.0.1"
43 - "domelementtype": "^2.2.0",
44 - "domhandler": "^4.2.0",
45 - "domutils": "^2.6.0"
46 } 63 }
47 }, 64 },
48 - "css-select": { 65 + "bytes": {
49 - "version": "4.1.2", 66 + "version": "3.1.0",
50 - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.2.tgz", 67 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
51 - "integrity": "sha512-nu5ye2Hg/4ISq4XqdLY2bEatAcLIdt3OYGFc9Tm9n7VSlFBcfRv0gBNksHRgSdUDQGtN3XrZ94ztW+NfzkFSUw==", 68 + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
69 + },
70 + "chalk": {
71 + "version": "2.4.2",
72 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
73 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
52 "requires": { 74 "requires": {
53 - "boolbase": "^1.0.0", 75 + "ansi-styles": "^3.2.1",
54 - "css-what": "^5.0.0", 76 + "escape-string-regexp": "^1.0.5",
55 - "domhandler": "^4.2.0", 77 + "supports-color": "^5.3.0"
56 - "domutils": "^2.6.0",
57 - "nth-check": "^2.0.0"
58 } 78 }
59 }, 79 },
60 - "css-what": { 80 + "color-convert": {
61 - "version": "5.0.0", 81 + "version": "1.9.3",
62 - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.0.tgz", 82 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
63 - "integrity": "sha512-qxyKHQvgKwzwDWC/rGbT821eJalfupxYW2qbSJSAtdSTimsr/MlaGONoNLllaUPZWf8QnbcKM/kPVYUQuEKAFA==" 83 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
84 + "requires": {
85 + "color-name": "1.1.3"
86 + }
87 + },
88 + "color-name": {
89 + "version": "1.1.3",
90 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
91 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
92 + },
93 + "concat-map": {
94 + "version": "0.0.1",
95 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
96 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
64 }, 97 },
65 - "dom-serializer": { 98 + "content-disposition": {
66 - "version": "1.3.2", 99 + "version": "0.5.3",
67 - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", 100 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
68 - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", 101 + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
69 "requires": { 102 "requires": {
70 - "domelementtype": "^2.0.1", 103 + "safe-buffer": "5.1.2"
71 - "domhandler": "^4.2.0",
72 - "entities": "^2.0.0"
73 } 104 }
74 }, 105 },
75 - "domelementtype": { 106 + "content-type": {
76 - "version": "2.2.0", 107 + "version": "1.0.4",
77 - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", 108 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
78 - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" 109 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
110 + },
111 + "cookie": {
112 + "version": "0.4.0",
113 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
114 + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
115 + },
116 + "cookie-signature": {
117 + "version": "1.0.6",
118 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
119 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
79 }, 120 },
80 - "domhandler": { 121 + "debug": {
81 - "version": "4.2.0", 122 + "version": "2.6.9",
82 - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", 123 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
83 - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", 124 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
84 "requires": { 125 "requires": {
85 - "domelementtype": "^2.2.0" 126 + "ms": "2.0.0"
86 } 127 }
87 }, 128 },
88 - "domutils": { 129 + "depd": {
89 - "version": "2.6.0", 130 + "version": "1.1.2",
90 - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", 131 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
91 - "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", 132 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
133 + },
134 + "destroy": {
135 + "version": "1.0.4",
136 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
137 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
138 + },
139 + "dotenv": {
140 + "version": "10.0.0",
141 + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
142 + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q=="
143 + },
144 + "ee-first": {
145 + "version": "1.1.1",
146 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
147 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
148 + },
149 + "ejs": {
150 + "version": "3.1.6",
151 + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
152 + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
92 "requires": { 153 "requires": {
93 - "dom-serializer": "^1.0.1", 154 + "jake": "^10.6.1"
94 - "domelementtype": "^2.2.0",
95 - "domhandler": "^4.2.0"
96 } 155 }
97 }, 156 },
98 - "entities": { 157 + "encodeurl": {
99 - "version": "2.2.0", 158 + "version": "1.0.2",
100 - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 159 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
101 - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" 160 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
102 }, 161 },
103 - "htmlparser2": { 162 + "escape-html": {
104 - "version": "6.1.0", 163 + "version": "1.0.3",
105 - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", 164 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
106 - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", 165 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
166 + },
167 + "escape-string-regexp": {
168 + "version": "1.0.5",
169 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
170 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
171 + },
172 + "etag": {
173 + "version": "1.8.1",
174 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
175 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
176 + },
177 + "express": {
178 + "version": "4.17.1",
179 + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
180 + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
107 "requires": { 181 "requires": {
108 - "domelementtype": "^2.0.1", 182 + "accepts": "~1.3.7",
109 - "domhandler": "^4.0.0", 183 + "array-flatten": "1.1.1",
110 - "domutils": "^2.5.2", 184 + "body-parser": "1.19.0",
111 - "entities": "^2.0.0" 185 + "content-disposition": "0.5.3",
186 + "content-type": "~1.0.4",
187 + "cookie": "0.4.0",
188 + "cookie-signature": "1.0.6",
189 + "debug": "2.6.9",
190 + "depd": "~1.1.2",
191 + "encodeurl": "~1.0.2",
192 + "escape-html": "~1.0.3",
193 + "etag": "~1.8.1",
194 + "finalhandler": "~1.1.2",
195 + "fresh": "0.5.2",
196 + "merge-descriptors": "1.0.1",
197 + "methods": "~1.1.2",
198 + "on-finished": "~2.3.0",
199 + "parseurl": "~1.3.3",
200 + "path-to-regexp": "0.1.7",
201 + "proxy-addr": "~2.0.5",
202 + "qs": "6.7.0",
203 + "range-parser": "~1.2.1",
204 + "safe-buffer": "5.1.2",
205 + "send": "0.17.1",
206 + "serve-static": "1.14.1",
207 + "setprototypeof": "1.1.1",
208 + "statuses": "~1.5.0",
209 + "type-is": "~1.6.18",
210 + "utils-merge": "1.0.1",
211 + "vary": "~1.1.2"
112 } 212 }
113 }, 213 },
114 - "nth-check": { 214 + "filelist": {
115 - "version": "2.0.0", 215 + "version": "1.0.2",
116 - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", 216 + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
117 - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", 217 + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
118 "requires": { 218 "requires": {
119 - "boolbase": "^1.0.0" 219 + "minimatch": "^3.0.4"
120 } 220 }
121 }, 221 },
122 - "optimist": { 222 + "finalhandler": {
123 - "version": "0.3.7", 223 + "version": "1.1.2",
124 - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", 224 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
125 - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", 225 + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
126 "requires": { 226 "requires": {
127 - "wordwrap": "~0.0.2" 227 + "debug": "2.6.9",
228 + "encodeurl": "~1.0.2",
229 + "escape-html": "~1.0.3",
230 + "on-finished": "~2.3.0",
231 + "parseurl": "~1.3.3",
232 + "statuses": "~1.5.0",
233 + "unpipe": "~1.0.0"
128 } 234 }
129 }, 235 },
130 - "parse5": { 236 + "forwarded": {
131 - "version": "6.0.1", 237 + "version": "0.2.0",
132 - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 238 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
133 - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" 239 + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
240 + },
241 + "fresh": {
242 + "version": "0.5.2",
243 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
244 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
134 }, 245 },
135 - "parse5-htmlparser2-tree-adapter": { 246 + "has-flag": {
136 - "version": "6.0.1", 247 + "version": "3.0.0",
137 - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", 248 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
138 - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", 249 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
250 + },
251 + "http-errors": {
252 + "version": "1.7.2",
253 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
254 + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
139 "requires": { 255 "requires": {
140 - "parse5": "^6.0.1" 256 + "depd": "~1.1.2",
257 + "inherits": "2.0.3",
258 + "setprototypeof": "1.1.1",
259 + "statuses": ">= 1.5.0 < 2",
260 + "toidentifier": "1.0.0"
141 } 261 }
142 }, 262 },
143 - "require": { 263 + "http-status-codes": {
144 - "version": "2.4.20", 264 + "version": "2.1.4",
145 - "resolved": "https://registry.npmjs.org/require/-/require-2.4.20.tgz", 265 + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz",
146 - "integrity": "sha1-Zstrqqu2XeinHXk/XGX9GE83mLY=", 266 + "integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg=="
267 + },
268 + "iconv-lite": {
269 + "version": "0.4.24",
270 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
271 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
147 "requires": { 272 "requires": {
148 - "std": "0.1.40", 273 + "safer-buffer": ">= 2.1.2 < 3"
149 - "uglify-js": "2.3.0"
150 } 274 }
151 }, 275 },
152 - "source-map": { 276 + "inherits": {
153 - "version": "0.1.43", 277 + "version": "2.0.3",
154 - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 278 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
155 - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", 279 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
280 + },
281 + "ipaddr.js": {
282 + "version": "1.9.1",
283 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
284 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
285 + },
286 + "jake": {
287 + "version": "10.8.2",
288 + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
289 + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
156 "requires": { 290 "requires": {
157 - "amdefine": ">=0.0.4" 291 + "async": "0.9.x",
292 + "chalk": "^2.4.2",
293 + "filelist": "^1.0.1",
294 + "minimatch": "^3.0.4"
158 } 295 }
159 }, 296 },
160 - "std": { 297 + "media-typer": {
161 - "version": "0.1.40", 298 + "version": "0.3.0",
162 - "resolved": "https://registry.npmjs.org/std/-/std-0.1.40.tgz", 299 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
163 - "integrity": "sha1-Nnil9lCU2eG2teJu2/wCErg0K3E=" 300 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
164 }, 301 },
165 - "tslib": { 302 + "merge-descriptors": {
166 - "version": "2.2.0", 303 + "version": "1.0.1",
167 - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", 304 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
168 - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" 305 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
306 + },
307 + "methods": {
308 + "version": "1.1.2",
309 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
310 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
311 + },
312 + "mime": {
313 + "version": "1.6.0",
314 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
315 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
169 }, 316 },
170 - "uglify-js": { 317 + "mime-db": {
318 + "version": "1.48.0",
319 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
320 + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
321 + },
322 + "mime-types": {
323 + "version": "2.1.31",
324 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
325 + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
326 + "requires": {
327 + "mime-db": "1.48.0"
328 + }
329 + },
330 + "minimatch": {
331 + "version": "3.0.4",
332 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
333 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
334 + "requires": {
335 + "brace-expansion": "^1.1.7"
336 + }
337 + },
338 + "ms": {
339 + "version": "2.0.0",
340 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
341 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
342 + },
343 + "negotiator": {
344 + "version": "0.6.2",
345 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
346 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
347 + },
348 + "on-finished": {
171 "version": "2.3.0", 349 "version": "2.3.0",
172 - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.0.tgz", 350 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
173 - "integrity": "sha1-LN7BbTeKiituz7aYl4TPi3rlSR8=", 351 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
352 + "requires": {
353 + "ee-first": "1.1.1"
354 + }
355 + },
356 + "parseurl": {
357 + "version": "1.3.3",
358 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
359 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
360 + },
361 + "path-to-regexp": {
362 + "version": "0.1.7",
363 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
364 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
365 + },
366 + "proxy-addr": {
367 + "version": "2.0.7",
368 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
369 + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
370 + "requires": {
371 + "forwarded": "0.2.0",
372 + "ipaddr.js": "1.9.1"
373 + }
374 + },
375 + "qs": {
376 + "version": "6.7.0",
377 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
378 + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
379 + },
380 + "range-parser": {
381 + "version": "1.2.1",
382 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
383 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
384 + },
385 + "raw-body": {
386 + "version": "2.4.0",
387 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
388 + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
389 + "requires": {
390 + "bytes": "3.1.0",
391 + "http-errors": "1.7.2",
392 + "iconv-lite": "0.4.24",
393 + "unpipe": "1.0.0"
394 + }
395 + },
396 + "safe-buffer": {
397 + "version": "5.1.2",
398 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
399 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
400 + },
401 + "safer-buffer": {
402 + "version": "2.1.2",
403 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
404 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
405 + },
406 + "send": {
407 + "version": "0.17.1",
408 + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
409 + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
410 + "requires": {
411 + "debug": "2.6.9",
412 + "depd": "~1.1.2",
413 + "destroy": "~1.0.4",
414 + "encodeurl": "~1.0.2",
415 + "escape-html": "~1.0.3",
416 + "etag": "~1.8.1",
417 + "fresh": "0.5.2",
418 + "http-errors": "~1.7.2",
419 + "mime": "1.6.0",
420 + "ms": "2.1.1",
421 + "on-finished": "~2.3.0",
422 + "range-parser": "~1.2.1",
423 + "statuses": "~1.5.0"
424 + },
425 + "dependencies": {
426 + "ms": {
427 + "version": "2.1.1",
428 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
429 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
430 + }
431 + }
432 + },
433 + "serve-static": {
434 + "version": "1.14.1",
435 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
436 + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
437 + "requires": {
438 + "encodeurl": "~1.0.2",
439 + "escape-html": "~1.0.3",
440 + "parseurl": "~1.3.3",
441 + "send": "0.17.1"
442 + }
443 + },
444 + "setprototypeof": {
445 + "version": "1.1.1",
446 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
447 + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
448 + },
449 + "statuses": {
450 + "version": "1.5.0",
451 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
452 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
453 + },
454 + "supports-color": {
455 + "version": "5.5.0",
456 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
457 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
174 "requires": { 458 "requires": {
175 - "async": "~0.2.6", 459 + "has-flag": "^3.0.0"
176 - "optimist": "~0.3.5",
177 - "source-map": "~0.1.7"
178 } 460 }
179 }, 461 },
180 - "wordwrap": { 462 + "toidentifier": {
181 - "version": "0.0.3", 463 + "version": "1.0.0",
182 - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 464 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
183 - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" 465 + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
466 + },
467 + "type-is": {
468 + "version": "1.6.18",
469 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
470 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
471 + "requires": {
472 + "media-typer": "0.3.0",
473 + "mime-types": "~2.1.24"
474 + }
475 + },
476 + "unpipe": {
477 + "version": "1.0.0",
478 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
479 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
480 + },
481 + "utils-merge": {
482 + "version": "1.0.1",
483 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
484 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
485 + },
486 + "vary": {
487 + "version": "1.1.2",
488 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
489 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
184 } 490 }
185 } 491 }
186 } 492 }
......
1 { 1 {
2 - "name": "bustime", 2 + "name": "busterm",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 "description": "", 4 "description": "",
5 - "main": "BusInfo.js", 5 + "main": "app.js",
6 "scripts": { 6 "scripts": {
7 "test": "echo \"Error: no test specified\" && exit 1" 7 "test": "echo \"Error: no test specified\" && exit 1"
8 }, 8 },
9 - "repository": {
10 - "type": "git",
11 - "url": "http://khuhub.khu.ac.kr/2020105677/BusTime.git"
12 - },
13 "author": "", 9 "author": "",
14 "license": "ISC", 10 "license": "ISC",
15 "dependencies": { 11 "dependencies": {
16 - "cheerio": "^1.0.0-rc.9", 12 + "dotenv": "^10.0.0",
17 - "require": "^2.4.20" 13 + "ejs": "^3.1.6",
14 + "express": "^4.17.1",
15 + "http-status-codes": "^2.1.4"
18 } 16 }
19 } 17 }
......
1 +var express = require('express');
2 +var app = express();
3 +var fs = require('fs')
4 +var Businfo = require("../models/BusInfo");
5 +
6 +app.set('views',__dirname+'/views');
7 +app.set('view engine', 'ejs');
8 +//app.engine('html',require('ejs').renderFile);
9 +app.engine('ejs', require('ejs').renderFile);
10 +
11 +exports.mainView = function(req, res) {
12 + res.render("index.ejs")
13 +}//main 화면
14 +
15 +exports.timeTable = function(req, res) {
16 + res.render("ejstest.ejs",{busNum:req.query.busNum, remainTime: Businfo.data.remainTime, ETD_min_H: Businfo.data.ETD_min_H,
17 + ETD_min_m: Businfo.data.ETD_max_m, ETD_max_H: Businfo.data.ETD_max_H, ETD_max_m: Businfo.data.ETD_max_m });
18 +} //timeTable 화면 ejs 변수 렌더링
19 +
20 +
1 +const httpStatus = require('http-status-codes');
2 +
3 +exports.pageNotFoundError = (req, res) => {
4 + let errorCode = httpStatus.NOT_FOUND;
5 + res.status(errorCode);
6 + res.send(`<h1>${errorCode}</h1> \n 찾는 페이지가 존재하지 않습니다. `);
7 +}
8 +
1 +const router = require("express").Router();
2 +const controller = require("./controller");
3 +
4 +router.get("/", controller.mainView); //main 페이지
5 +router.get("/timetable", controller.timeTable); //timetable 페이지
6 +
7 +module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
1 +<!doctype html>
2 +<html>
3 +<head>
4 + <title>Time Table</title>
5 + <meta charset="utf-8">
6 + <style type="text/css">
7 + a { text-decoration:none }
8 + </style>
9 +</head>
10 +<body>
11 + <h1><a href="/"><p style="text-align:center;">BTT</p></a></h1>
12 + <br> <div style="padding:0 0 0 20px;">
13 + <h2> <%= busNum %> BUS Time Table</h2>
14 + </div>
15 + <div style="padding:0 0 0 20px;">
16 + <table border="3" width="400">
17 + <th> Index</th>
18 + <th> 출발 예정시간</th>
19 + <th> 남은 시간</th>
20 + <tr align="center">
21 + <td> text입력하기 </td>
22 + <td> <%= ETD_min_H %>:<%= ETD_min_m %> ~ <%= ETD_max_H %>:<%= ETD_max_m %> </td>
23 + <td> <%= remainTime %> </td>
24 + </tr>
25 + </table>
26 + </div>
27 + <br>
28 + <br>
29 + <p> <div style="padding:0 0 0 20px;">
30 + 버스의 평균 배차시간을 기준으로 최소 출발시간과 최대 출발시간을 제공합니다.
31 + </div> </p>
32 + <div style="padding:0 0 0 20px;">
33 + <% var date = new Date(); %>
34 + <% var yyyy = date.getFullYear(); %>
35 + <% var mm1 = date.getMonth() + 1; %>
36 + <% var dd = date.getDate(); %>
37 + <% var hh = date.getHours(); %>
38 + <% var mm2 = date.getMinutes(); %>
39 + <% var printDateNotion = yyyy+"년 "+mm1+"월 "+dd+"일 "; %>
40 + <% var printDateNotion2 = hh+"시 "+mm2+"분 기준"; %>
41 +
42 + <%= printDateNotion %>
43 + <%= printDateNotion2 %>
44 + </div>
45 +</body>
46 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!doctype html>
2 +<html>
3 +<head>
4 + <title>BUS TT</title>
5 + <meta charset="utf-8">
6 + <style type="text/css">
7 + a { text-decoration:none }
8 + </style>
9 +</head>
10 +<body>
11 + <h1><p style="text-align:center;">BTT</p></h1>
12 + <br>
13 + <link rel='stylesheet' type='text/css' href='/css/style.css' />
14 + <h2 style="padding:0 0 0 20px;"> 사색의 광장 Bus Time Table 조회 서비스에 오신 것을 환영합니다.</h2>
15 + <p style="padding:0 0 0 20px;"> 이곳에는 사색의 광장에서 출발하는 모든 버스의 정보가 있습니다.</p>
16 + <br><br>
17 + <h2 style="padding:0 0 0 20px;"> 버스별 시간표 조회 (click the bus number!)</h2>
18 +
19 + <div style="padding:0 0 0 20px;">
20 + <% var date = new Date(); %>
21 + <% var yyyy = date.getFullYear(); %>
22 + <% var mm1 = date.getMonth() + 1; %>
23 + <% var dd = date.getDate(); %>
24 + <% var hh = date.getHours(); %>
25 + <% var mm2 = date.getMinutes(); %>
26 + <% var printDateNotion = yyyy+"년 "+mm1+"월 "+dd+"일 오늘 운행하는 버스들 "; %>
27 + <% var printDateNotion2 = "( "+hh+"시 "+mm2+"분 기준 )"; %>
28 +
29 + <%= printDateNotion %>
30 + <%= printDateNotion2 %>
31 + </div>
32 + <ul>
33 + <li><a href="http://localhost:23023/timetable?busNum=9">9</a></li>
34 + <li><a href="http://localhost:23023/timetable?busNum=1112">1112</a></li>
35 + <li><a href="http://localhost:23023/timetable?busNum=5100">5100</a></li>
36 + <li><a href="http://localhost:23023/timetable?busNum=7000">7000</a></li>
37 + </ul>
38 + <p> ejs파일임</p>
39 +</body>
40 +</html
...\ No newline at end of file ...\ No newline at end of file