test_main.js
4.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
var url = require('url');
var request = require('request');
var qs = require('querystring');
var fs = require('fs');
const { METHODS } = require('http');
function calculateRemainTime(resFromServer){ // 남은 시간 계산하는 함수
const dateNow = new Date();
const dateBusdeparture =
new Date(dateNow.getFullYear(), dateNow.getMonth(), dateNow.getDate(),
resFromServer[0]*1, resFromServer[1]*1, 0);
var gapSec = (dateBusdeparture.getTime() - dateNow.getTime())/1000;
var gapHour = Math.floor(gapSec / 60 / 60);
var gapMin = Math.floor((gapSec - gapHour*3600) / 60);
var ans = gapHour+"시간 "+gapMin+"분 이상";
return ans;
}
function makeTimetable(resFromServer){ // Timetable 표를 만드는 함수
var remainTime = calculateRemainTime(resFromServer);
var ETD_min_H = resFromServer[0];
var ETD_min_m = resFromServer[1];
var ETD_max_H = resFromServer[2];
var ETD_max_m = resFromServer[3];
var ETD =
`<table border="3" width="400">
<th> Index</th>
<th> 출발 예정시간</th>
<th> 남은 시간</th>
<tr align="center">
<td> text입력하기 </td>
<td> ${ETD_min_H}:${ETD_min_m} ~ ${ETD_max_H}:${ETD_max_m} </td>
<td> ${remainTime} </td>
</tr>
</table>`;
return ETD;
};
function makeTTWebpage(busNum, ETD){ // Timetable 표를 바탕으로 TT 페이지를 만드는 함수
var templateTimeTable =
`
<!doctype html>
<html>
<head>
<title>Time Table</title>
<meta charset="utf-8">
<style type="text/css">
a { text-decoration:none }
</style>
</head>
<body>
<h1><a href="/"><p style="text-align:center;">BTT</p></a></h1>
<br> <div style="padding:0 0 0 20px;">
<h2>${busNum} BUS Time Table</h2>
</div>
<div style="padding:0 0 0 20px;">
${ETD}
</div>
<br>
<br>
<p> <div style="padding:0 0 0 20px;">
버스의 평균 배차시간을 기준으로 최소 출발시간과 최대 출발시간을 제공합니다.
</div> </p>
<div style="padding:0 0 0 20px;">
<script>
var date = new Date();
var yyyy = date.getFullYear();
var mm1 = date.getMonth() + 1;
var dd = date.getDate();
var hh = date.getHours();
var mm2 = date.getMinutes();
document.write(yyyy+"년 "+mm1+"월 "+dd+"일 ");
document.write(hh+"시 "+mm2+"분 기준");
</script>
</div>
</body>
</html>
`;
return templateTimeTable;
};
module.exports = function(app)
{
app.get('/', function (req, res) {
res.render('Index.html');
});
app.get('/timetable', function (req, res){ // bus list의 특정 버스를 클릭하면, server에 요청
var _url = req.url;
var queryData = url.parse(_url, true).query;
var busNum = queryData.busNum;
// 서버로부터 응답받는 배열의 길이는 항상 짝수여야 한다. (버스 1대당 출발예정 최소 + 최대시간 1개씩)
var resFromServer = ['1', '30', '1', '45'];
var ETD = makeTimetable(resFromServer); // Estimated time of Depature
// server 완성되면 해당 IP로 request
// request.post(
// {
// url: 'http://34.206.171.225:23023/reqBusInfo',
// body: {
// 'busNum': busNum,
// 'testVariable': 'test'
// },
// json: true
// }, function (error, response, body){
// response.json(body); // 이 부분을 resFromServer.push(body) 이런식으로 하면?
// }
// );
var templateTimeTable = makeTTWebpage(busNum, ETD);
res.send(templateTimeTable);
});
}
// 목록 출력 기능 구현
// var busArrivalTime = `<ul style="list-style-type:circle">`;
// for (index = 0; index < lenRes; index++){
// let t = resFromServer[index];
// busArrivalTime += `
// <li>${t}</li>`;
// }
// busArrivalTime += `
// </ul>`;
// console.log(busArrivalTime);