<!DOCTYPE html>
<html>

<head>
    <title>WebSocket Test</title>

    <style>
        footer {
            background-color: #333;
            color: #fff;
            text-align: center;
            padding: 10px 0;
            position: fixed;
            bottom: 0;
            width: 100%;
            display: flex;
            justify-content: space-around;
        }

        .service-box {
            width: 150px;
            padding: 10px;
            border-radius: 5px;
        }

        .service-up {
            background-color: green;
        }

        .service-down {
            background-color: red;
        }
    </style>


    <script>

        // class Service {
        //     constructor(name, status) {
        //         this.name = name
        //         this.status = status
        //     }
        // }

        var updatedTime = new Date();
        // Initial status of services
        // var serviceA = new Service("234234", 'down');
        // var serviceBStatus = 'down';
        // var serviceCStatus = 'down';

        document.addEventListener("DOMContentLoaded", function () {
            // Create WebSocket connection.
            const socket = new WebSocket('ws://localhost:9000');

            // Connection opened
            socket.addEventListener('open', function (event) {
                console.log("Connected to WebSocket server");
                updatedTime = new Date();
            });

            // Listen for messages
            socket.addEventListener('message', function (event) {
                console.log('Message from server', event.data);
                let messages = document.getElementById('messages');
                let message = document.createElement('li');
                message.textContent = "Received: " + event.data;
                messages.appendChild(message);
                updatedTime = new Date();
            });

            // Send a message to the server
            function sendMessage() {
                let message = document.getElementById('messageInput').value;
                socket.send(message);
                console.log('Message sent', message);
            }

            // This function just sends a ping to make sure the server is there and it is able to responds
            function ping() {
                let message = `{ "call": "send", "type": "log", "data": "This is a ping!!" }`;
                socket.send(message);
                console.log('Message sent', message);
            }
            //setInterval(ping, 1500);

            // setInterval(() => {
            //     updateServiceStatus('serviceA', 'down');
            // }, 2000);


            // Bind send message function to button click
            document.getElementById('sendMessage').addEventListener('click', sendMessage);
        });
    </script>
</head>

<body>
    <h2>WebSocket Test</h2>
    <textarea rows="4" cols="50" id="messageInput" placeholder="Type a message..."> </textarea>
    <button id="sendMessage">Send Message</button>
    <p>Example JSON</p>
    <p>{ "type": "cable_map", "call": "request", "data": { } }</p>
    <p>{ "type": "log", "call": "send", "data": "123123" }</p>

    <p>Messages/Logs</p>
    <ul id="messages"></ul>

    <footer>
        <!-- <div id="serviceA" class="service-box"></div>
        <div id="serviceB" class="service-box"></div>
        <div id="serviceC" class="service-box"></div> -->
        <div id="clock"></div>

    </footer>

    <script>
        // // Function to update service status
        // function updateServiceStatus(service) {
        //     // serviceId, status
        //     var serviceElement = document.getElementById(service.serviceId);
        //     // updateClock();

        //     if (service.status === 'up') {
        //         serviceElement.innerHTML = '<h3>' + service.serviceId + '</h3><p>Running</p>';
        //         serviceElement.classList.remove('service-down');
        //         serviceElement.classList.add('service-up');
        //     } else {
        //         serviceElement.innerHTML = '<h3>' + service.serviceId + '</h3><p>Down</p>';
        //         serviceElement.classList.remove('service-up');
        //         serviceElement.classList.add('service-down');
        //     }
        // }



        // // Update service statuses
        // updateServiceStatus('node.js (for this page)', serviceAStatus);
        // updateServiceStatus('Python WebSocket', serviceBStatus);
        // updateServiceStatus('serviceC', serviceCStatus);

        // Function to update clock
        function updateClock() {
            var now = new Date();
            now = now.getTime() - updatedTime.getTime();
            // console.log(now)
            document.getElementById('clock').textContent = 'Milliseconds Since Update: ' + now.toString().padStart(6, '0');
        }

        // Update clock every second
        setInterval(updateClock, 100);

    </script>

</body>

</html>