<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/navigationBar.css" type="text/css">
    <link rel="stylesheet" href="css/update.css" type="text/css">
    <script src="https://kit.fontawesome.com/e0ade2e31e.js" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.2/dist/leaflet.css"
        integrity="sha256-sA+zWATbFveLLNqWO2gtiw3HL/lh1giY/Inf1BJ0z14=" crossorigin="" />

        <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <title>Aktualizace koeficientů BPL spojů</title>
</head>

<body>
    <ul>

        <li><a href="index.php">Mapa</a></li>
        <li><a href="configurator.php">Konfigurátor topologie</a></li>
        <li><a href="condition.php"><i class="fa-solid fa-screwdriver-wrench"></i></a></li>
        <li><a class="active" href="#"><i class="fa-solid fa-rotate"></i></a></li>
        <li><a href=backup.php><i class="fa-solid fa-cloud-arrow-up"></i></a></li>
        <li onclick="napoveda()"><a href="#"><i class="fa-solid fa-question"></i></a></li>
    </ul>

    <div class="text"></div>
    <div class="tlacitko"></div>


    <?php
    include "php/_CONSTANTS.php";
    include "php/mySQLSetup.php";
    include "php/loadAllFromSQL.php";
    ?>

<script>
    function napoveda() {
      Swal.fire({
        title: '<strong>Nápověda</strong>',
        icon: 'info',
        width: '75%',
        html:
          '<div class="swal2-html-container">' +
          '<strong><u>Ovládání: </u></strong>' +
          '<ol>' +
          '<li class="swal2-li">V případě, že program detekuje spoje, jejichž koeficient by měl být aktuliazován, objeví se na stránce tlačítko <i><b>\"Aktualizovat\"</i></b></li>' +
          '<li class="swal2-li">Kliknutím na toto tlačítko bude proveda aktualizace koeficientu příslušných spojů</li>' +
          '</div>',
        showCloseButton: true,
        focusConfirm: false,
        confirmButtonColor: '#3085d6',
        confirmButtonText: 'Díky, už to chápu!',
        customClass: {
          title: 'swal-title',
          popup: 'swal-popup',
          closeButton: 'swal-close-button',
          confirmButton: 'swal-button'
        }
      })
    }
  </script>



</body>

</html>


<script src="https://unpkg.com/leaflet@1.9.2/dist/leaflet.js"
    integrity="sha256-o9N1jGDZrf5tS+Ft4gbIK7mYMipq9lqpVJ91xHSyKhg=" crossorigin=""></script>


<script type="module">
    import * as Objekty from "./js/object.js";
    import { ajaxSpojeUpload } from './js/ajax.js';
    import {zobrazitHlasku} from './js/configurator.js';

    const Constants = <?php echo json_encode($all_vars); ?>;
    const textDiv = document.querySelector(".text");


    // Pokud je zapnut anonymní režim, stránka nebude funkční
    // Načtení dat z mySQL databáze (pokud je anonymní mód vypnut)
    if (!Constants.ANONYMOUS_MODE) {

        var vysledekSQLTopologie = <?php echo json_encode($navratovaHodnotaTopologie); ?>;
        var vysledekSQLSpoje = <?php echo json_encode($navratovaHodnotaSpoje); ?>;
        var vysledekSQLStanice = <?php echo json_encode($navratovaHodnotaStanice); ?>;

        var poleTopologii = <?php echo json_encode($poleTopologii); ?>;
        var poleSpoju = <?php echo json_encode($poleSpoju); ?>;
        var poleStanic = <?php echo json_encode($poleStanic); ?>;


        if (Constants.LOGOVANI){
            console.log("Načtená data");
            console.log(poleTopologii);
            console.log(poleSpoju);
            console.log(poleStanic);
        }
        

        if (poleSpoju.length > 0) {



            Objekty.Topologie.vytvoritTopologieSQL(poleTopologii);
            Objekty.Stanice.vytvoritStaniceSQL(poleStanic);
            Objekty.Spoj.vytvoritSpojeSQL(poleSpoju);



            Objekty.poleTopologii.forEach(topologie => {
                Objekty.poleStanic.forEach(stanice => {
                    if (stanice.nazevTopologie == topologie.nazev) topologie.poleStanic.push(stanice);
                })

                Objekty.poleSpoju.forEach(spoj => {

                    if (spoj.topologie == topologie.nazev) {
                        topologie.poleSpoju.push(spoj);
                    }
                })
            })

            if (Constants.LOGOVANI) {

                console.log(vysledekSQLTopologie);
                console.log(vysledekSQLSpoje);
                console.log(vysledekSQLStanice);
                console.log("\n");

                console.log("Načtená data z mySQL:");
                console.log("Topologie");
                console.log(poleTopologii);
                console.log("Spoje");
                console.log(poleSpoju);
                console.log("Stanice");
                console.log(poleStanic);
                console.log("\nVytvořené objekty:");
                console.log(Objekty.poleTopologii);
            }

            // Výpočet koeficientu a v případě rozdílu jeho aktualizace
            var zmeny = 0;
            var spojeUpload = [];
            Objekty.poleSpoju.forEach(spoj => {
                if (spoj.typ == "BPL") {
                    let koeficient = new Objekty.Koeficient(Constants, spoj);
                    if (koeficient.value != spoj.koeficient) {
                        zmeny++;
                        spoj.koeficient = koeficient.value;
                        spojeUpload.push(spoj);
                    }
                }

            });

            // Hláška o počtu zjištěných nesrovnalostí
            textDiv.innerHTML = "Počet spojů, u nichž byl vypočítán nový koeficient: <b>" + zmeny + "</b>";

            let tlacitkoDiv = document.querySelector(".tlacitko");

            // Pokud žádná změna nebyla nalezena, tak pouze další informační hláška
            if (zmeny == 0) tlacitkoDiv.innerHTML = "Všechny koeficienty jsou aktuální.";
            else {
                // Pokud změna byla nalezena:
                // Pokud není povolené nahrávání do mySQL, tak informace, že není povoleno nahrávání
                if (!Constants.MYSQL_UPLOAD) tlacitkoDiv.innerHTML = "<i style=\"color:darkred\">Nahrávání do mySQL není povoleno.</i>";
                else {
                    // Pokud je povoleno nahrávání dojde k vykreslení tlačíka pro nahrání
                    var tlacitko = document.createElement('button');
                    tlacitko.id = "uploadButton";
                    tlacitko.innerHTML = '<i class="fa-solid fa-rotate"></i> Aktualizovat';
                    tlacitko.style.transitionDuration = '0.4s';
                    tlacitko.onmouseover = function () {
                        tlacitko.style.backgroundColor = '#008CBA';
                    }
                    tlacitko.onmouseout = function () {
                        tlacitko.style.backgroundColor = 'green';
                    }
                    tlacitkoDiv.appendChild(tlacitko);
                }

                // Obsluha stisknutí tlačíka
                tlacitko.addEventListener("click", function (event) {
                    // Odeslání spojů ajaxem do mySQL
                    spojeUpload.forEach(spoj => {
                        ajaxSpojeUpload(Constants, spoj);
                    });

                    zobrazitHlasku(Constants, "Požadavek odeslán", "V případě problémů zkontroluj konzoli", "success", false, Constants.HLASKADURATION);

                    tlacitkoDiv.removeChild(tlacitko);
                    textDiv.innerHTML = "<b style=\"color:green\">Aktualizace úspěšně dokončena</b>";

                });

            }
        } else {
            textDiv.innerHTML = "<b>Databáze neobsahuje žádné spoje.</i>";
        }


    } else {
        textDiv.innerHTML = "<b><i style=\"color:darkred\">Přístup zamítnut: Anonymní mód.</i>";
    }



</script>