test_main.js 4.18 KB
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);