Current Path : /data/web/virtuals/51568/virtual/www/www/lidi/ |
Current File : /data/web/virtuals/51568/virtual/www/www/lidi/nacti.php |
<?php if (isSet($_POST["typ"])){$typ = trim($_POST["typ"]);} else {$typ = 'xxx';} ?> <div class="row"> <div class="col-7"> <div class="card m-2 shadow rounded-0"> <div class="card-header bg-primary h5 text-white rounded-0"> <?php echo ($typ == 'u') ? "Aktualizace seznamu učitelů" : "Aktualizace seznamu žáků";?> </div> <div class="card-body rounded-0"> <form id="formSelectData" action="" method="POST" enctype="multipart/form-data" typ-souboru="<?= $typ?>"> <input type="hidden" class=" rounded-0" name="typ" value="<?= $typ?>"> <div class="form-group"> <div class="custom-file rounded-0"> <input type="file" accept=".csv" class="custom-file-input rounded-0" name="fileCSV" id="fileCSV" onchange="loadFile()"> <label id="fileCSVname" class="custom-file-label" for="fileCSV"> vyber CSV soubor s daty </label> </div> </div> <div id="rowBtnSubmit" class="row d-none"> <div class="col-8"> <button id="btnSubmit" class="btn btn-primary mt-3 mb-2 rounded-0" type="submit" >Ulož níže zobrazené do databáze </button> </div> <div class="col-4 text-right pt-4" id="idPocetCSV"> </div> </div> <div id="divRok" class="d-none"> <div class="d-flex"> <div class="mr-2 pt-2"> <label for="importRok">Platí pro školní rok: </label> </div> <div> <select class="custom-select rounded-0" name="importRok" id="importRok" style="min-width: 150px;"> </select> </div> </div> </div> <div id="file"> </div> </form> </div> </div> </div> <div class="col-5 rounded-0"> <div class="alert alert-info "> <?php if ($typ == 'u') {?> V Bakalářích v Evidence zvol <strong>Učitelé</strong> a následně <strong>Data / Export</strong>. <br> Pro export vyber následující pole (<strong>označuj je v níže uvedeném pořadí</strong>): <ul> <li>intern_kod </li> <li>prijmeni </li> <li>jmeno </li> </ul> Exportuj v kódování UTF-8 do formátu CSV.Vyexportovaný soubor použij jako zdrojový pro "Aktualizace seznamu učitelů" <?php } else { ?> V Bakalářích v Evidence zvol <strong>Žáci</strong> a následně <strong>Data / Export</strong>. <br> Pro export vyber následující pole (<strong>označuj je v níže uvedeném pořadí</strong>): <ul> <li>intern_kod </li> <li>prijmeni </li> <li>jmeno </li> <li>trida </li> </ul> Exportuj v kódování UTF-8 do formátu CSV. Vyexportovaný soubor použij jako zdrojový pro "Aktualizace seznamu žáků" <p><strong> Pro import žáků je nutné mít založeny třídy pro aktuální školní rok (Roky - v zobrazení detailu roku). </strong></p> <?php }?> </div> </div> </div> <script src="js/jquery.csv.min.js"></script> <script> async function loadFile() { let soubory = document.getElementById("fileCSV"), soubor = soubory.files[0], typ = $("#formSelectData").attr("typ-souboru"), pokracovat = false; $("#idJakSeNacte").removeClass("d-none"); if (soubory.files.length < 1) { $("#file").html(''); $("#rowBtnSubmit").addClass("d-none"); $("#rbJakNaplnit").addClass("d-none"); $("#fileCSVname").html(""); } else { // $("#btnSubmit").removeClass("d-none"); $("#rbJakNaplnit").removeClass("d-none"); $("#fileCSVname").html(soubor.name); console.log("file"); let obsah = await soubor.text(), data = $.csv.toObjects(obsah, { separator: ';' }), propertyNames = Object.getOwnPropertyNames(data[0]), zobrazData = ''; pokracovat = (typ == 'u') ? (propertyNames.length == 3) : (propertyNames.length == 4); if (pokracovat) { pokracovat = ( propertyNames[0].toLowerCase() == 'intern_kod') && (propertyNames[1].toLowerCase() == 'prijmeni') && (propertyNames[2].toLowerCase() == 'jmeno'); if (typ == 'z') { pokracovat = propertyNames[3].toLowerCase() == 'trida'; } } if (!pokracovat){ zobrazData += `<div class="alert alert-danger rounded-0"> Zdá se, že zvolený soubor nemá očekávanou strukturu.<br>`; if (typ == 'u'){ zobrazData += `<span class="form-text">První řádek by měl obsahovat názvy polí - pořadí je podstatné (<strong>intern_kod, prijmeni, jmeno</strong>)</span>`; } else { zobrazData += `<span class="form-text">První řádek by měl obsahovat názvy polí - pořadí je podstatné (<strong>intern_kod, prijmeni, jmeno, trida</strong>)</span>`; } zobrazData += `</div>`; } if (pokracovat) {$("#rowBtnSubmit").removeClass("d-none"); zobrazData += `<div class="alert alert-info form-text rounded-0 pl-0"><ul>`; zobrazData += (typ == 'u') ? `<li>Pokud se některý z učitelů v nově importované tabulce nevyskytuje, bude jeho stávající záznam označen jako neaktivní. </li>` : `<li>Pokud se některý z žáků v nově importované tabulce nevyskytuje, bude jeho stávající záznam označen jako neaktivní.</li> <li>Pokud došlo ke změně označení třídy (jiný školní rok), projeví se u žáků tato změna.</li> <li>Při prvním přenosu ve školním roce se automaticky <strong>vytvoří seznam tříd - je vhodné ke třídám přiřadit třídní</strong></li> `; zobrazData += `<li>Pokud v zobrazené tabulce jsou místo nabodeníčkových znaků jiné, není kódování CSV souboru UTF8 (kódování nastavíš v exportu v Bakalářích).</li></ul></div>`; } zobrazData += `<div class="mt-4 " style="max-height: 360px; overflow-y: auto !important; "> <table class="table table-striped table-sm">`; zobrazData += '<tr style="background-color: rgba(102, 204, 255, 0.5)"><td>#</td>'; for (let i = 0; i < propertyNames.length; i++) { zobrazData += '<td>' + propertyNames[i] + '</td>'; } zobrazData += '</tr>'; for (let i = 0; i < data.length; i++) { zobrazData += `<tr><td>${i+1}</td>`; for (let j = 0; j < propertyNames.length; j++) { zobrazData += '<td>' + data[i][propertyNames[j]] + '</td>'; } zobrazData += '</tr>'; } zobrazData += `</table> </div>`; $("#idPocetCSV").html('Záznamů: ' + data.length); $("#file").html(zobrazData); if (typ == 'z'){ let dnes = new Date(), mesic = dnes.getMonth(), rok = dnes.getFullYear(); if (mesic > 6) { aktSkRok = rok + '/' + (rok + 1); } else { aktSkRok = (rok - 1) + '/' + rok; } $.ajax({ url: "www/lidi/zaci-skolniroky.php", type: 'POST', dataType: 'HTML', data: { 'aktSkRok': aktSkRok.trim(), }, success: function (result) { $("#importRok").html(result); $("#divRok").removeClass("d-none"); } }); } } } $("#formSelectData").on('submit', function (e) { e.preventDefault(); $("#file").html(` <div class="alert alert-success row rounded-0"> <div class="col-2"> <div class="spinner-border spinner-border-sm" role="status"> <span class="sr-only"></span> </div> </div> <div class="col-8 "> Provádím aktualizaci .... </div> </div>`); let typ = $("#formSelectData").attr("typ-souboru"); if (typ == 'z') { kodSkRok = $("#importRok").val(); } else { kodSkRok = 0; } let fd = new FormData(); fd.append('kodSkRok', 135); let osoby = document.getElementById('fileCSV').files[0]; fd.append("fileCSV[]", osoby); $.ajax({ url: "www/lidi/lidi-uloz-DB.php", type: "POST", // data: new FormData(this), data: fd, contentType: false, cache: false, processData: false, success: function (result) { $("#btnSubmit").addClass("d-none"); $("#divRok").addClass("d-none"); $("#rbJakNaplnit").addClass("d-none"); $("#idJakSeNacte").addClass("d-none"); $("#fileCSV").addClass("d-none"); if (result.length < 25) { $("#fileCSVname").html(""); $("#idPocetCSV").html(""); $("#file").html(`<div class="alert alert-success rounded-0">Aktualizace dokončena.</div>`); if (typ == 'u'){ $.ajax({ url: "www/lidi/ucitele-seznam.php", type: 'POST', dataType: 'HTML', data: {}, success: function (result) { $("#tabulkaUcitele").html(result); } }); } if (typ == 'z'){ $.ajax({ url: "www/lidi/zaci-seznam.php", type: 'POST', dataType: 'HTML', data: {}, success: function (result) { $("#tabulkaZaci").html(result); } }); } } } }); }); </script>