{"id":22027,"date":"2026-04-21T17:20:30","date_gmt":"2026-04-21T16:20:30","guid":{"rendered":"https:\/\/marinaport.hu\/app\/?page_id=22027"},"modified":"2026-04-21T17:23:52","modified_gmt":"2026-04-21T16:23:52","slug":"towels","status":"publish","type":"page","link":"https:\/\/marinaport.hu\/app\/towels\/","title":{"rendered":"Towels"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"hu\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">\n    \n    <script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-app-compat.js\"><\/script>\n    <script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-auth-compat.js\"><\/script>\n    <script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-database-compat.js\"><\/script>\n\n    <style>\n        .towel-container { font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; max-width: 800px; margin: 0 auto; padding: 15px; color: #333; }\n        .towel-card { background: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); margin-bottom: 20px; border: 1px solid #eaeaea; }\n        .towel-input { width: 100%; padding: 12px; margin-bottom: 15px; border: 1px solid #ccc; border-radius: 6px; font-size: 16px; box-sizing: border-box; }\n        .towel-btn { width: 100%; padding: 14px; font-size: 16px; font-weight: bold; border: none; border-radius: 6px; cursor: pointer; color: white; background-color: #007aff; }\n        .towel-btn-success { background-color: #34c759; }\n        .towel-table-wrapper { overflow-x: auto; margin-top: 15px; border-radius: 6px; border: 1px solid #ddd; }\n        .towel-table { width: 100%; border-collapse: collapse; min-width: 450px; background: white; }\n        .towel-table th, .towel-table td { padding: 12px 8px; border: 1px solid #eee; text-align: left; font-size: 14px; vertical-align: middle; }\n        .towel-table th { background-color: #f8f9fa; font-weight: 600; color: #555; }\n        .text-center { text-align: center !important; }\n        \n        \/* C\u00edmk\u00e9k a tranzakci\u00f3 t\u00edpus\u00e1nak *\/\n        .towel-badge { display: inline-block; font-size: 11px; padding: 4px 8px; border-radius: 12px; font-weight: bold; color: #fff; white-space: nowrap; }\n        .badge-issue { background-color: #ff9500; } \/* Narancss\u00e1rga kiad\u00e1s *\/\n        .badge-return { background-color: #34c759; } \/* Z\u00f6ld visszahozatal *\/\n        .person-type { font-size: 11px; color: #888; display: block; margin-top: 2px; }\n    <\/style>\n<\/head>\n<body>\n\n<div class=\"towel-container\">\n    \n    <script>\n        (function() {\n            var config = {\n                apiKey: \"AIzaSyDyHeexzDlwFVL3kowJ3sDBlXiPjCCVg2w\",\n                authDomain: \"wellness-ee025.firebaseapp.com\",\n                databaseURL: \"https:\/\/wellness-ee025-default-rtdb.firebaseio.com\",\n                projectId: \"wellness-ee025\",\n                storageBucket: \"wellness-ee025.appspot.com\",\n                messagingSenderId: \"196714975370\",\n                appId: \"1:196714975370:web:6548565d62a5e6252ddd73\"\n            };\n            try {\n                if (!firebase.apps.length) { firebase.initializeApp(config); }\n            } catch (e) { console.error(\"Firebase hiba:\", e); }\n        })();\n    <\/script>\n\n    <div style=\"text-align: center; margin-bottom: 15px;\">\n        <h3 style=\"color: #2c3e50; margin: 0; font-size: 18px;\">T\u00f6r\u00f6lk\u00f6z\u0151 Napl\u00f3<\/h3>\n    <\/div>\n\n    <div id=\"towel-login-box\" class=\"towel-card\">\n        <h4 style=\"margin-top: 0; font-size: 16px;\">Bejelentkez\u00e9s<\/h4>\n        <input type=\"email\" id=\"towel-email\" class=\"towel-input\" placeholder=\"E-mail c\u00edm\">\n        <input type=\"password\" id=\"towel-jelszo\" class=\"towel-input\" placeholder=\"Jelsz\u00f3\">\n        <button class=\"towel-btn\" onclick=\"towelBelepes()\">Bel\u00e9p\u00e9s<\/button>\n        <p id=\"towel-login-error\" style=\"color: #ff3b30; display: none; font-weight: bold; margin-top: 10px; font-size: 14px;\"><\/p>\n    <\/div>\n\n    <div id=\"towel-search-box\" class=\"towel-card\" style=\"display: none;\">\n        <label style=\"font-weight: bold; display: block; margin-bottom: 8px; font-size: 14px;\">V\u00e1lasszon d\u00e1tumot:<\/label>\n        <input type=\"date\" id=\"towel-datum\" class=\"towel-input\">\n        <button class=\"towel-btn towel-btn-success\" onclick=\"towelLekerdezes()\">Adatok lek\u00e9r\u00e9se<\/button>\n    <\/div>\n\n    <div id=\"towel-eredmenyek\"><\/div>\n\n<\/div>\n\n<script>\n    var auth = firebase.auth();\n    var db = firebase.database();\n    \n    var loginBox = document.getElementById('towel-login-box');\n    var searchBox = document.getElementById('towel-search-box');\n    var eredmenyekDiv = document.getElementById('towel-eredmenyek');\n    var datumInput = document.getElementById('towel-datum');\n\n    \/\/ Mai nap be\u00e1ll\u00edt\u00e1sa\n    setTimeout(function() {\n        if(datumInput) {\n            var ma = new Date();\n            var ev = ma.getFullYear();\n            var ho = String(ma.getMonth() + 1).padStart(2, '0');\n            var nap = String(ma.getDate()).padStart(2, '0');\n            datumInput.value = ev + '-' + ho + '-' + nap;\n        }\n    }, 200);\n\n    \/\/ Bejelentkez\u00e9s figyel\u00e9se\n    auth.onAuthStateChanged(function(user) {\n        if (user) {\n            loginBox.style.display = 'none';\n            searchBox.style.display = 'block';\n        } else {\n            loginBox.style.display = 'block';\n            searchBox.style.display = 'none';\n            eredmenyekDiv.innerHTML = \"\";\n        }\n    });\n\n    window.towelBelepes = function() {\n        var email = document.getElementById('towel-email').value;\n        var pass = document.getElementById('towel-jelszo').value;\n        var err = document.getElementById('towel-login-error');\n        \n        if(!email || !pass) {\n            err.style.display = 'block'; err.innerText = \"K\u00e9rem t\u00f6ltse ki az adatokat!\"; return;\n        }\n        \n        auth.signInWithEmailAndPassword(email, pass).catch(function() {\n            err.style.display = 'block'; err.innerText = \"Hib\u00e1s e-mail vagy jelsz\u00f3!\";\n        });\n    };\n\n    \/\/ --- AZ ADATB\u00c1ZIS LEK\u00c9RDEZ\u00c9SE ---\n    window.towelLekerdezes = function() {\n        var datum = datumInput.value;\n        if (!datum) return;\n\n        eredmenyekDiv.innerHTML = \"<p style='font-weight:bold; color:#007aff;'>Adatok bet\u00f6lt\u00e9se folyamatban...<\/p>\";\n\n        var refPath = 'TowelHistory\/' + datum;\n\n        db.ref(refPath).once('value').then(function(snapshot) {\n            var napiAdat = snapshot.val();\n\n            if (!napiAdat) {\n                eredmenyekDiv.innerHTML = \"<div class='towel-card' style='background:#fff3cd; color:#856404; border-color:#ffeeba;'><strong>Nincs adat!<\/strong> Ezen a napon (\" + datum + \") nem t\u00f6rt\u00e9nt t\u00f6r\u00f6lk\u00f6z\u0151 mozg\u00e1s.<\/div>\";\n                return;\n            }\n\n            \/\/ 1. \u00d6sszegy\u0171jtj\u00fck az \u00f6sszes tranzakci\u00f3t egyetlen list\u00e1ba\n            var tranzakciok = [];\n            for (var szoba in napiAdat) {\n                var szobaTranzakcioi = napiAdat[szoba];\n                for (var txnId in szobaTranzakcioi) {\n                    var t = szobaTranzakcioi[txnId];\n                    tranzakciok.push(t);\n                }\n            }\n\n            \/\/ 2. Id\u0151rendbe \u00e1ll\u00edtjuk a tranzakci\u00f3kat a 'timestamp' alapj\u00e1n\n            tranzakciok.sort(function(a, b) {\n                var timeA = a.timestamp ? a.timestamp : \"\";\n                var timeB = b.timestamp ? b.timestamp : \"\";\n                if (timeA < timeB) return -1;\n                if (timeA > timeB) return 1;\n                return 0;\n            });\n\n            var html = \"<h4 style='margin-top: 20px; color: #2c3e50; border-bottom: 1px solid #34c759; padding-bottom: 5px; font-size: 16px;'>\" + datum + \" napi forgalom<\/h4>\";\n            \n            html += \"<div class='towel-table-wrapper'><table class='towel-table'>\";\n            html += \"<thead><tr>\";\n            html += \"<th>Id\u0151<\/th>\";\n            html += \"<th>N\u00e9v \/ Szoba<\/th>\";\n            html += \"<th class='text-center'>Menny.<\/th>\";\n            html += \"<th class='text-center'>\u00c1llapot<\/th>\";\n            html += \"<\/tr><\/thead><tbody>\";\n\n            var osszesKiadva = 0;\n            var osszesVisszahozva = 0;\n\n            \/\/ 3. T\u00e1bl\u00e1zat sorainak gener\u00e1l\u00e1sa\n            for (var i = 0; i < tranzakciok.length; i++) {\n                var t = tranzakciok[i];\n                \n                \/\/ Id\u0151 form\u00e1z\u00e1sa (pl. \"2025-06-25T11:41:52.803\" -> \"11:41:52\")\n                var idopont = t.timestamp ? t.timestamp.split('T')[1].split('.')[0] : \"-\";\n                \n                var nev = t.personName || \"Ismeretlen\";\n                var tipusSzoveg = t.personType ? \"<span class='person-type'>\" + t.personType + \"<\/span>\" : \"\";\n                var mennyiseg = parseInt(t.quantity) || 0;\n                var akcioTipus = t.type || \"\";\n                \n                var allapotCimke = \"\";\n\n                if (akcioTipus === \"ISSUE\") {\n                    allapotCimke = \"<span class='towel-badge badge-issue'>\ud83d\udce4 Kiadva<\/span>\";\n                    osszesKiadva += mennyiseg;\n                } else if (akcioTipus === \"RETURN\") {\n                    allapotCimke = \"<span class='towel-badge badge-return'>\u2705 Visszahozva<\/span>\";\n                    osszesVisszahozva += mennyiseg;\n                } else {\n                    allapotCimke = \"<span>\" + akcioTipus + \"<\/span>\";\n                }\n\n                html += \"<tr>\";\n                html += \"<td><strong>\" + idopont + \"<\/strong><\/td>\";\n                html += \"<td><strong>\" + nev + \"<\/strong>\" + tipusSzoveg + \"<\/td>\";\n                html += \"<td class='text-center'>\" + mennyiseg + \" db<\/td>\";\n                html += \"<td class='text-center'>\" + allapotCimke + \"<\/td>\";\n                html += \"<\/tr>\";\n            }\n\n            html += \"<\/tbody>\";\n            \n            \/\/ \u00d6sszes\u00edt\u0151 statisztika a t\u00e1bl\u00e1zat alj\u00e1n\n            html += \"<tfoot style='background: #f8f9fa; font-size: 13px;'>\";\n            html += \"<tr><td colspan='2' style='text-align: right; font-weight: bold;'>\u00d6sszes napi kiad\u00e1s:<\/td><td colspan='2' style='color:#ff9500; font-weight:bold;'>\" + osszesKiadva + \" db<\/td><\/tr>\";\n            html += \"<tr><td colspan='2' style='text-align: right; font-weight: bold;'>\u00d6sszes napi visszahozatal:<\/td><td colspan='2' style='color:#34c759; font-weight:bold;'>\" + osszesVisszahozva + \" db<\/td><\/tr>\";\n            html += \"<\/tfoot>\";\n\n            html += \"<\/table><\/div>\";\n            eredmenyekDiv.innerHTML = html;\n\n        }).catch(function(error) {\n            console.error(\"Hiba:\", error);\n            eredmenyekDiv.innerHTML = \"<div class='towel-card' style='background:#f8d7da; color:#721c24;'><strong>Hiba az adatb\u00e1zis el\u00e9r\u00e9sekor:<\/strong> \" + error.message + \"<\/div>\";\n        });\n    };\n<\/script>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>T\u00f6r\u00f6lk\u00f6z\u0151 Napl\u00f3 Bejelentkez\u00e9s Bel\u00e9p\u00e9s V\u00e1lasszon d\u00e1tumot: Adatok lek\u00e9r\u00e9se<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"blank","meta":{"footnotes":""},"class_list":["post-22027","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages\/22027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/comments?post=22027"}],"version-history":[{"count":1,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages\/22027\/revisions"}],"predecessor-version":[{"id":22028,"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/pages\/22027\/revisions\/22028"}],"wp:attachment":[{"href":"https:\/\/marinaport.hu\/app\/wp-json\/wp\/v2\/media?parent=22027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}