<?php
session_start();
ob_start();

require_once './config.php';
require_once './_pdo.php';

require_once './src/D2Functions.php';
require_once './src/D2Crud.php';

error_reporting(E_ERROR | E_PARSE);
set_time_limit(-1);
ini_set('max_input_time', '-1');
ini_set('max_execution_time', '0');

define('DB_FILE', $_SESSION['modname'] . ".db");
try {
    PDO_Connect("sqlite:" . DB_FILE);
} catch (Exception $e) {
    echo "Connection error: " . $e->getMessage();
}

$tbl = $_SESSION['tbl'];
$tableNames = [];
foreach (glob($tbl . "*.tbl") as $filename) {
    $tableInfo = pathinfo($filename);
    $tableNames[] = $tableInfo['filename'];
}
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- CSS -->
        <link rel="stylesheet" href="https://cdn.datatables.net/1.11.4/css/jquery.dataTables.min.css">

        <!-- JS -->
<!--        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>-->
        <script src="https://cdn.datatables.net/1.11.4/js/jquery.dataTables.min.js"></script>
        <!-- Bootstrap CSS (if not already included) -->
<!--        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">-->

        <!-- Bootstrap DataTables CSS -->
        <link rel="stylesheet" href="https://cdn.datatables.net/1.11.4/css/dataTables.bootstrap4.min.css">

        <!-- Bootstrap JS (if not already included) -->
<!--        <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>-->

        <!-- Bootstrap DataTables JS -->
        <script src="https://cdn.datatables.net/1.11.4/js/dataTables.bootstrap4.min.js"></script>
        <title>Editable Tables</title>       
    </head>
    <body>
        <div style="padding:10px; border: 1px solid #eee;">
            <div class="container">
                <div class="row">
                    <div class="col-md-6">
                        <select name="tableName" id="tableName" class="form-control">
                            <option value="" disabled selected></option>
                            <?php foreach ($tableNames as $tableName): ?>
                                <option value="<?php echo $tableName; ?>" <?php echo ($tableName == "") ? "selected" : ""; ?>><?php echo $tableName; ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="col-md-6">
                        <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseForm" aria-expanded="false" aria-controls="collapseForm">
                            Add new String Key
                        </button>
                    </div>
                </div>

                <div class="collapse" id="collapseForm">
                    <div class="form-group">
                        <label for="inputKey">Key</label>
                        <input type="text" class="form-control" id="inputKey" placeholder="Enter Key">
                    </div>
                    <div class="form-group">
                        <label for="inputString">String</label>
                        <textarea class="form-control" id="inputString" placeholder="Enter String"></textarea>
                    </div>
                    <button type="button" class="btn btn-primary" id="addLink">Add</button>
                </div>
            </div>

            <br>
            <hr>

            <div class="tablediv">
                <table class="table">
                    <thead>
                        <tr>
                            <th style="width: 64px;">ID</th>
                            <th style='width: 20%;'>Key</th>
                            <th>String</th>
                            <th style="width: 100px;"></th>
                        </tr>
                    </thead>
                    <tbody>
                        <!-- Additional rows -->
                    </tbody>
                </table>
            </div>


        </div>

    <script>
        function resizeTextarea() {
            this.style.height = 'auto';
            this.style.height = (this.scrollHeight) + 'px';
        }
        $(document).ready(function () {
            // Function to resize textarea based on content
            function resizeTextarea() {
                this.style.height = 'auto';
                this.style.height = (this.scrollHeight) + 'px';
            }

            // Select element change event handler
            $('#tableName').change(function () {
                $('.table').DataTable().destroy();
                $('.table tbody').html('');

                var selectedTable = $(this).val();
                if (selectedTable !== '') {

                    // Send GET request to TblEditor.php?getTable with selected table name
                    var request = $.get('TblEditor.php', {cmd: 'getTable', tableName: selectedTable});

                    request.done(function (response) {
                        // Handle the response here
                        $('.tablediv tbody').html(response).promise().done(function () {
                            // Callback function after HTML content is loaded

                            // Initialize DataTables on the table
                            $('.table').DataTable();

                            // Resize textareas on page load
                            $('textarea').each(resizeTextarea);

                            // Resize textareas on input
                            $('textarea').on('input', resizeTextarea);

                            // Resize textareas on custom select change
                            $('.custom-select').change(function () {
                                $('textarea').each(resizeTextarea);
                            });
                            $('.page-link').click(function () {
                                $('textarea').each(resizeTextarea);
                            });
                        });
                    });
                }
            });




            // Delete link click event handler
            $(document).on('click', '.delete-link', function (event) {
                event.preventDefault();

                var selectedTable = $('select[name="tableName"]').val();

                // Get the rowid from the custom attribute data-rowid
                var rowid = $(this).data('rowid');

                // Remove the deleted row from the table
                $('.row-' + rowid).remove();

                // Send GET request to TblEditor.php?cmd=delete&rowid={rowid}
                $.get('TblEditor.php', {cmd: 'delete', tableName: selectedTable, rowid: rowid}, function (response) {
                    // Handle the response here

                    // Wait until the response is loaded, then remove the row
                    $(response).ready(function () {

                        // Update DataTable

                    });
                });
            });



            // Update link click event handler
            $(document).on('click', '.update-link', function (event) {
                event.preventDefault();

                var selectedTable = $('select[name="tableName"]').val();

                // Get the rowid from the custom attribute data-rowid
                var rowid = $(this).data('rowid');

                // Get the updated values from the corresponding input and textarea
                var key = $('.row-' + rowid + ' input').val();
                var string = $('.row-' + rowid + ' textarea').val();
                string = string.replace(/&#13;/g, '\\n');
                string = string.replace(/\n/g, '\\n');


                // Send POST request to TblEditor.php with the updated values
                $.post('TblEditor.php', {cmd: 'update', tableName: selectedTable, rowid: rowid, key: key, string: string}, function (response) {
                    // Handle the response here

                    // Optional: Update any UI elements if needed

                });
            });

            // Add link click event handler
            $('#addLink').click(function () {
                var selectedTable = $('#tableName').val();
                var key = $('#inputKey').val();
                var string = $('#inputString').val();

                // Send POST request to TblEditor.php with parameters
                $.post('TblEditor.php', {cmd: 'add', tableName: selectedTable, Key: key, String: string}, function (response) {
                    // Handle the response here
                    rowid = response;
                    // Create the HTML markup for the new row
                    var newRow = '<tr class="row-' + rowid + '">' +
                            '<td>' + rowid + '</td>' +
                            '<td><input type="text" value="' + key + '" class="form-control"></td>' +
                            '<td><textarea class="form-control">' + string + '</textarea></td>' +
                            '<td><div>' +
                            '<a href="#" class="update-link btn btn-primary" data-rowid="' + rowid + '">Update</a>' +
                            '<a style="float:right" href="#" class="delete-link btn btn-danger" data-rowid="' + rowid + '">Delete</a>' +
                            '</div></td>' +
                            '</tr>';
                    ;


                    // Append the new row to the table
                    $('.table').DataTable().destroy();

                    $('.table tbody').append(newRow);

                    // Initialize DataTables on the table
                    var table = $('.table').DataTable();

                    // Go to the last page after loading the table
                    table.page('last').draw('page');
                });
            });


        });


        $(document).ready(function () {
            $('textarea').each(function () {
                this.style.height = 'auto';
                this.style.height = (this.scrollHeight) + 'px';
            });
            setInterval(function () {
                $('textarea').each(resizeTextarea);
            }, 4000);
        });



    </script>
    <style>
        body {
            background: #f8f8f8;
            margin: 10px;
            border: 1px solid #eee;
            border-radius: 5px;
        }
        div.dataTables_wrapper div.dataTables_length select {
            width: 75px !important;
        }
        textarea {
            overflow: hidden;
            resize: none;
            scrollbar-width: none; /* For Firefox */
            -ms-overflow-style: none; /* For Internet Explorer and Edge */
        }
    </style>
</body>
</html>