{"id":5312,"date":"2025-12-02T14:07:55","date_gmt":"2025-12-02T13:07:55","guid":{"rendered":"https:\/\/logmanager.com\/?page_id=5312"},"modified":"2026-01-05T16:57:43","modified_gmt":"2026-01-05T15:57:43","slug":"eps-kalkulator","status":"publish","type":"page","link":"https:\/\/logmanager.com\/cs\/eps-kalkulator\/","title":{"rendered":"EPS kalkul\u00e1tor"},"content":{"rendered":"\n<section class=\"lm-estimator\">\n  <style>\n    :root {\n      --lm-accent: rgb(15, 15, 215);\n      --lm-bg-block: rgb(245, 245, 245);\n      --lm-text-main: rgba(4, 28, 53, 1);\n    }\n\n    \/* Wrapper *\/\n    .lm-estimator {\n      font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n      padding: 64px 16px 80px;\n      background: var(--lm-bg-block);\n      color: var(--lm-text-main);\n    }\n\n    .lm-estimator-inner {\n      max-width: 1120px;\n      margin: 0 auto;\n    }\n\n    .lm-estimator-header {\n      text-align: center;\n      margin-bottom: 40px;\n    }\n\n    \/* Eyebrow *\/\n    .lm-estimator-eyebrow {\n      font-size: 0.875rem;\n      line-height: 1.25rem;\n      font-weight: 700;\n      letter-spacing: 0.0em;\n      text-transform: uppercase;\n      color: var(--lm-accent);\n      margin-bottom: 8px;\n    }\n\n    @media (min-width: 1024px) {\n      .lm-estimator-eyebrow {\n        font-size: 1.125rem;\n        line-height: 1.75rem;\n      }\n    }\n\n    \/* Title *\/\n    .lm-estimator-title {\n      font-family: Sora, sans-serif;\n      font-weight: 700;\n      text-align: center;\n      padding-bottom: 1.25rem;\n      font-size: 1.5rem;\n      line-height: 2rem;\n    }\n\n    @media (min-width: 768px) {\n      .lm-estimator-title {\n        font-size: 1.875rem;\n        line-height: 2.25rem;\n      }\n    }\n\n    @media (min-width: 1024px) {\n      .lm-estimator-title {\n        font-size: 48px;\n        line-height: 54px;\n      }\n    }\n\n    .lm-estimator-subtitle {\n      font-size: 1rem;\n      line-height: 1.5rem;\n      color: var(--lm-text-main);\n      max-width: 720px;\n      margin: 0 auto;\n    }\n\n    @media (min-width: 1024px) {\n      .lm-estimator-subtitle {\n        font-size: 1.25rem;\n        line-height: 1.75rem;\n        text-align: center;\n      }\n    }\n\n    \/* Layout grid *\/\n    .lm-grid {\n      display: grid;\n      grid-template-columns: minmax(0, 2fr) minmax(0, 1.6fr);\n      gap: 32px;\n    }\n\n    @media (max-width: 980px) {\n      .lm-grid {\n        grid-template-columns: minmax(0, 1fr);\n      }\n    }\n\n    \/* Cards *\/\n    .lm-card {\n      background: #ffffff;\n      border-radius: 28px;\n      box-shadow: 0 18px 45px rgba(15, 23, 42, 0.08);\n      padding: 28px 28px 24px;\n    }\n\n    .lm-card h3 {\n      font-size: 18px;\n      font-weight: 600;\n      margin-bottom: 16px;\n    }\n\n    \/* Data sources table *\/\n    .lm-data-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 12px;\n      font-size: 13px;\n    }\n\n    .lm-data-table thead th {\n      text-align: left;\n      font-weight: 600;\n      color: #6b7280;\n      padding: 6px 4px;\n      border-bottom: 1px solid #e5e7eb;\n      font-size: 12px;\n    }\n\n    .lm-data-table tbody td {\n      padding: 6px 4px;\n      vertical-align: middle;\n    }\n\n    .lm-group-label {\n      font-size: 11px;\n      font-weight: 600;\n      text-transform: uppercase;\n      color: #9ca3af;\n      padding: 8px 4px 2px;\n    }\n\n    .lm-data-label {\n      font-weight: 500;\n      color: #111827;\n    }\n\n    .lm-eps-badge {\n      display: inline-flex;\n      padding: 2px 8px;\n      border-radius: 999px;\n      font-size: 11px;\n      background: rgba(15, 15, 215, 0.08);\n      color: var(--lm-accent);\n      font-weight: 500;\n    }\n\n    .lm-input {\n      width: 80px;\n      max-width: 100%;\n      padding: 6px 9px;\n      font-size: 13px;\n      border-radius: 999px;\n      border: 1px solid #e5e7eb;\n      text-align: right;\n      outline: none;\n      transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;\n      background: #ffffff;\n    }\n\n    .lm-input:focus {\n      border-color: var(--lm-accent);\n      box-shadow: 0 0 0 1px rgba(15, 15, 215, 0.35);\n      background: #f9fafb;\n    }\n\n    .lm-input-wide {\n      width: 100%;\n    }\n\n    .lm-input-row {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      margin-top: 12px;\n      font-size: 13px;\n      align-items: center;\n    }\n\n    .lm-input-row label {\n      color: #4b5563;\n      font-weight: 500;\n    }\n\n    .lm-input-row select {\n      padding: 6px 10px;\n      border-radius: 999px;\n      border: 1px solid #e5e7eb;\n      font-size: 13px;\n      outline: none;\n      background: #ffffff;\n    }\n\n    .lm-input-row select:focus {\n      border-color: var(--lm-accent);\n      box-shadow: 0 0 0 1px rgba(15, 15, 215, 0.35);\n    }\n\n    .lm-input-note {\n      font-size: 11px;\n      color: #9ca3af;\n      margin-top: 4px;\n    }\n\n    .lm-outputs-header {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 8px;\n      margin-bottom: 12px;\n    }\n\n    .lm-badge {\n      display: inline-flex;\n      padding: 3px 10px;\n      border-radius: 999px;\n      font-size: 11px;\n      text-transform: uppercase;\n      letter-spacing: 0.08em;\n      font-weight: 600;\n    }\n\n    .lm-badge-purple {\n      background: rgba(15, 15, 215, 0.08);\n      color: var(--lm-accent);\n    }\n\n    \/* Metrics *\/\n    .lm-metrics {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 10px;\n      margin-bottom: 4px;\n      font-size: 13px;\n    }\n\n    .lm-metric {\n      background: #f9fafb;\n      border-radius: 16px;\n      padding: 10px 12px;\n    }\n\n    .lm-metric-label {\n      color: #6b7280;\n      font-size: 12px;\n      margin-bottom: 4px;\n    }\n\n    .lm-metric-value {\n      font-weight: 600;\n      font-size: 15px;\n    }\n\n    \/* Export button *\/\n    .lm-button-export {\n      margin-top: 16px;\n      padding: 10px 18px;\n      border-radius: 999px;\n      border: none;\n      cursor: pointer;\n      font-size: 13px;\n      font-weight: 600;\n      background: var(--lm-accent);\n      color: #ffffff;\n      box-shadow: 0 10px 25px rgba(15, 15, 215, 0.25);\n      transition: transform 0.1s ease, box-shadow 0.1s ease, opacity 0.1s ease;\n    }\n\n    .lm-button-export:hover {\n      transform: translateY(-1px);\n      box-shadow: 0 14px 30px rgba(15, 15, 215, 0.3);\n      opacity: 0.95;\n    }\n\n    .lm-button-export:active {\n      transform: translateY(0);\n      box-shadow: 0 6px 15px rgba(15, 15, 215, 0.25);\n    }\n  <\/style>\n\n  <div class=\"lm-estimator-inner\">\n    <div class=\"lm-estimator-header\">\n      <div class=\"lm-estimator-eyebrow\">Kalkula\u010dka EPS<\/div>\n      <h2 class=\"lm-estimator-title\">\n        Odhad z\u00e1t\u011b\u017ee EPS a objemu log\u016f\n      <\/h2>\n      <p class=\"lm-estimator-subtitle\">\n        Zadejte sv\u00e9 zdroje log\u016f, pr\u016fm\u011brnou velikost ud\u00e1losti a dobu uchov\u00e1n\u00ed. Kalkula\u010dka spo\u010d\u00edt\u00e1\n        odhadovan\u00e9 EPS, denn\u00ed objem log\u016f a celkov\u00fd objem ulo\u017een\u00fdch dat pro pl\u00e1nov\u00e1n\u00ed kapacity.\n        V\u00fdsledek je pouze orienta\u010dn\u00ed.\n      <\/p>\n    <\/div>\n\n    <div class=\"lm-grid\">\n      <!-- LEV\u00c1 STRANA: VSTUPY -->\n      <div class=\"lm-card\">\n        <h3>1. Zdroje dat<\/h3>\n        <table class=\"lm-data-table\">\n          <thead>\n            <tr>\n              <th>Skupina \/ syst\u00e9m<\/th>\n              <th>Pr\u016fm\u011brn\u00e9 EPS<\/th>\n              <th style=\"text-align:right;\">Po\u010det zdroj\u016f<\/th>\n            <\/tr>\n          <\/thead>\n          <tbody>\n            <tr>\n              <td class=\"lm-group-label\" colspan=\"3\">Windows<\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Windows Server<\/td>\n              <td><span class=\"lm-eps-badge\">30 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"30\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Windows Active Directory<\/td>\n              <td><span class=\"lm-eps-badge\">100 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"100\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Windows Desktop<\/td>\n              <td><span class=\"lm-eps-badge\">2 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"2\">\n              <\/td>\n            <\/tr>\n\n            <tr>\n              <td class=\"lm-group-label\" colspan=\"3\">UNIX \/ Linux<\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">UNIX \/ Linux servery<\/td>\n              <td><span class=\"lm-eps-badge\">10 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"10\">\n              <\/td>\n            <\/tr>\n\n            <tr>\n              <td class=\"lm-group-label\" colspan=\"3\">Bezpe\u010dnost<\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Firewall z\u00f3ny \u2013 intern\u00ed<\/td>\n              <td><span class=\"lm-eps-badge\">200 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"200\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Firewall z\u00f3ny \u2013 extern\u00ed<\/td>\n              <td><span class=\"lm-eps-badge\">400 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"400\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">IPS<\/td>\n              <td><span class=\"lm-eps-badge\">5 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"5\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Skenery zranitelnost\u00ed<\/td>\n              <td><span class=\"lm-eps-badge\">1 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"1\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">VPN<\/td>\n              <td><span class=\"lm-eps-badge\">5 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"5\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Antivirus<\/td>\n              <td><span class=\"lm-eps-badge\">30 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"30\">\n              <\/td>\n            <\/tr>\n\n            <tr>\n              <td class=\"lm-group-label\" colspan=\"3\">Infrastruktura<\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Routery<\/td>\n              <td><span class=\"lm-eps-badge\">2 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"2\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Switch \/ SCCM<\/td>\n              <td><span class=\"lm-eps-badge\">1 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"1\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Proxy server<\/td>\n              <td><span class=\"lm-eps-badge\">300 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"300\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Wi-Fi AP<\/td>\n              <td><span class=\"lm-eps-badge\">5 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"5\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Load balancer<\/td>\n              <td><span class=\"lm-eps-badge\">5 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"5\">\n              <\/td>\n            <\/tr>\n\n            <tr>\n              <td class=\"lm-group-label\" colspan=\"3\">Servery<\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Datab\u00e1zov\u00e9 servery<\/td>\n              <td><span class=\"lm-eps-badge\">5 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"5\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Webov\u00e9 servery<\/td>\n              <td><span class=\"lm-eps-badge\">5 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"5\">\n              <\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Mail servery<\/td>\n              <td><span class=\"lm-eps-badge\">40 EPS<\/span><\/td>\n              <td style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-devices\" data-eps=\"40\">\n              <\/td>\n            <\/tr>\n\n            <tr>\n              <td class=\"lm-group-label\" colspan=\"3\">Ostatn\u00ed<\/td>\n            <\/tr>\n            <tr>\n              <td class=\"lm-data-label\">Ostatn\u00ed zdroje (celkem EPS)<\/td>\n              <td colspan=\"2\" style=\"text-align:right;\">\n                <input type=\"number\" min=\"0\" value=\"0\" class=\"lm-input lm-input-wide\" id=\"lm-other-eps\">\n              <\/td>\n            <\/tr>\n          <\/tbody>\n        <\/table>\n\n        <div class=\"lm-input-row\">\n          <label for=\"lm-event-size\">Pr\u016fm\u011brn\u00e1 velikost ud\u00e1losti<\/label>\n          <input id=\"lm-event-size\" type=\"number\" min=\"1\" value=\"700\" class=\"lm-input\">\n          <span>bajt\u016f<\/span>\n        <\/div>\n        <div class=\"lm-input-note\">\n          V\u00fdchoz\u00ed hodnota je 700 bajt\u016f. Upravte, pokud jsou va\u0161e ud\u00e1losti v\u011bt\u0161\u00ed nebo men\u0161\u00ed.\n        <\/div>\n\n        <div class=\"lm-input-row\" style=\"margin-top:16px;\">\n          <label for=\"lm-retention\">Doba uchov\u00e1n\u00ed<\/label>\n          <input id=\"lm-retention\" type=\"number\" min=\"0\" value=\"30\" class=\"lm-input\">\n          <select id=\"lm-retention-unit\">\n            <option value=\"days\">dn\u016f<\/option>\n            <option value=\"months\">m\u011bs\u00edc\u016f (30 dn\u00ed)<\/option>\n            <option value=\"years\">rok\u016f (365 dn\u00ed)<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"lm-input-note\">\n          Celkov\u00fd objem spo\u010d\u00edt\u00e1me jako denn\u00ed objem \u00d7 doba uchov\u00e1n\u00ed.\n        <\/div>\n      <\/div>\n\n      <!-- PRAV\u00c1 STRANA: V\u00ddSTUPY -->\n      <div class=\"lm-card\">\n        <div class=\"lm-outputs-header\">\n          <h3>2. Odhad z\u00e1t\u011b\u017ee<\/h3>\n          <span class=\"lm-badge lm-badge-purple\">\u017div\u00fd odhad<\/span>\n        <\/div>\n\n        <div class=\"lm-metrics\">\n          <div class=\"lm-metric\">\n            <div class=\"lm-metric-label\">Odhadovan\u00e9 EPS<\/div>\n            <div class=\"lm-metric-value\" id=\"lm-eps-display\">0<\/div>\n          <\/div>\n          <div class=\"lm-metric\">\n            <div class=\"lm-metric-label\">Objem za den<\/div>\n            <div class=\"lm-metric-value\" id=\"lm-gbday-display\">0 GB \/ den<\/div>\n          <\/div>\n          <div class=\"lm-metric\">\n            <div class=\"lm-metric-label\">Doba uchov\u00e1n\u00ed<\/div>\n            <div class=\"lm-metric-value\" id=\"lm-retention-display\">0 dn\u00ed<\/div>\n          <\/div>\n          <div class=\"lm-metric\">\n            <div class=\"lm-metric-label\">Celkov\u00fd objem dat<\/div>\n            <div class=\"lm-metric-value\" id=\"lm-totalgb-display\">0 GB<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"lm-input-note\">\n          Tento odhad slou\u017e\u00ed pouze pro orienta\u010dn\u00ed pl\u00e1nov\u00e1n\u00ed kapacity a nejedn\u00e1 se o z\u00e1vazn\u00e9 hodnoty.\n        <\/div>\n\n        <button type=\"button\" class=\"lm-button-export\" id=\"lm-export-xlsx\">\n          Exportovat do XLSX\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- XLSX knihovna -->\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.18.5\/dist\/xlsx.full.min.js\"><\/script>\n\n  <script>\n    (function () {\n      const BYTES_PER_GB = 1073741824;\n\n      const deviceInputs = Array.from(\n        document.querySelectorAll(\".lm-input-devices\")\n      );\n      const otherEpsInput = document.getElementById(\"lm-other-eps\");\n      const eventSizeInput = document.getElementById(\"lm-event-size\");\n      const retentionInput = document.getElementById(\"lm-retention\");\n      const retentionUnitSelect = document.getElementById(\"lm-retention-unit\");\n\n      const epsDisplay = document.getElementById(\"lm-eps-display\");\n      const gbDayDisplay = document.getElementById(\"lm-gbday-display\");\n      const retentionDisplay = document.getElementById(\"lm-retention-display\");\n      const totalGbDisplay = document.getElementById(\"lm-totalgb-display\");\n\n      function formatNumber(num, decimals) {\n        if (!isFinite(num) || num === 0) return \"0\";\n        const n = decimals != null ? num.toFixed(decimals) : Math.round(num);\n        return Number(n).toLocaleString(undefined, {\n          minimumFractionDigits: decimals || 0,\n          maximumFractionDigits: decimals || 0,\n        });\n      }\n\n      function formatStorageGB(gb) {\n        if (!isFinite(gb) || gb <= 0) return \"0 GB\";\n        if (gb >= 1024) {\n          const tb = gb \/ 1024;\n          return formatNumber(tb, 2) + \" TB\";\n        }\n        return formatNumber(gb, 2) + \" GB\";\n      }\n\n      function recalc() {\n        const eventSize = parseFloat(eventSizeInput.value) || 0;\n\n        let totalEps = 0;\n        deviceInputs.forEach((input) => {\n          const count = parseFloat(input.value) || 0;\n          const epsPer = parseFloat(input.dataset.eps) || 0;\n          totalEps += count * epsPer;\n        });\n\n        const otherEps = parseFloat(otherEpsInput.value) || 0;\n        totalEps += otherEps;\n\n        const gbPerDay =\n          (totalEps * eventSize * 60 * 60 * 24) \/ BYTES_PER_GB || 0;\n\n        const retentionValue = parseFloat(retentionInput.value) || 0;\n        const unit = retentionUnitSelect.value;\n\n        let retentionDays;\n        if (unit === \"months\") {\n          retentionDays = retentionValue * 30;\n        } else if (unit === \"years\") {\n          retentionDays = retentionValue * 365;\n        } else {\n          retentionDays = retentionValue; \/\/ dny\n        }\n\n        const totalGb = gbPerDay * retentionDays;\n\n        \/\/ Aktualizace zobrazen\u00ed metrik\n        epsDisplay.textContent = formatNumber(totalEps, 0);\n        gbDayDisplay.textContent = formatNumber(gbPerDay, 2) + \" GB \/ den\";\n        retentionDisplay.textContent = formatNumber(retentionDays, 0) + \" dn\u00ed\";\n        totalGbDisplay.textContent = formatStorageGB(totalGb);\n      }\n\n      function collectDataForExport() {\n        const rows = [];\n\n        \/\/ Hlavi\u010dka tabulky\n        rows.push([\"Skupina \/ syst\u00e9m\", \"EPS na zdroj\", \"Po\u010det zdroj\u016f\", \"Celkem EPS\"]);\n\n        deviceInputs.forEach((input) => {\n          const tr = input.closest(\"tr\");\n          if (!tr) return;\n\n          const labelCell = tr.querySelector(\".lm-data-label\");\n          if (!labelCell) return;\n\n          const label = labelCell.textContent.trim();\n          const epsPer = parseFloat(input.dataset.eps) || 0;\n          const count = parseFloat(input.value) || 0;\n          const total = epsPer * count;\n\n          rows.push([label, epsPer, count, total]);\n        });\n\n        \/\/ Ostatn\u00ed zdroje\n        rows.push([]);\n        const otherEps = parseFloat(otherEpsInput.value) || 0;\n        rows.push([\"Ostatn\u00ed zdroje (celkem EPS)\", \"\", \"\", otherEps]);\n\n        \/\/ Vstupn\u00ed parametry\n        rows.push([]);\n        rows.push([\"Pr\u016fm\u011brn\u00e1 velikost ud\u00e1losti (bajty)\", eventSizeInput.value]);\n        rows.push([\n          \"Doba uchov\u00e1n\u00ed (zadan\u00e1 jednotka)\",\n          retentionInput.value + \" \" + retentionUnitSelect.options[retentionUnitSelect.selectedIndex].text\n        ]);\n\n        \/\/ P\u0159epo\u010dten\u00e1 doba uchov\u00e1n\u00ed v dnech\n        const retentionValue = parseFloat(retentionInput.value) || 0;\n        const unit = retentionUnitSelect.value;\n        let retentionDays;\n        if (unit === \"months\") {\n          retentionDays = retentionValue * 30;\n        } else if (unit === \"years\") {\n          retentionDays = retentionValue * 365;\n        } else {\n          retentionDays = retentionValue;\n        }\n        rows.push([\"Doba uchov\u00e1n\u00ed (dny)\", retentionDays]);\n\n        \/\/ V\u00fdstupn\u00ed metriky\n        rows.push([]);\n        rows.push([\"Odhadovan\u00e9 EPS\", epsDisplay.textContent]);\n        rows.push([\"Objem za den\", gbDayDisplay.textContent]);\n        rows.push([\"Celkov\u00fd objem dat\", totalGbDisplay.textContent]);\n\n        return rows;\n      }\n\n      function exportToXlsx() {\n        if (typeof XLSX === \"undefined\") {\n          alert(\"Knihovna XLSX (SheetJS) nebyla na\u010dtena.\");\n          return;\n        }\n\n        const data = collectDataForExport();\n\n        const worksheet = XLSX.utils.aoa_to_sheet(data);\n        const workbook = XLSX.utils.book_new();\n        XLSX.utils.book_append_sheet(workbook, worksheet, \"Odhad\");\n\n        XLSX.writeFile(workbook, \"eps-kalkulacka.xlsx\");\n      }\n\n      \/\/ Poslucha\u010de ud\u00e1lost\u00ed\n      [\n        ...deviceInputs,\n        otherEpsInput,\n        eventSizeInput,\n        retentionInput,\n        retentionUnitSelect,\n      ].forEach((el) => {\n        el.addEventListener(\"input\", recalc);\n      });\n\n      const exportBtn = document.getElementById(\"lm-export-xlsx\");\n      if (exportBtn) {\n        exportBtn.addEventListener(\"click\", exportToXlsx);\n      }\n\n      \/\/ V\u00fdchoz\u00ed v\u00fdpo\u010det\n      recalc();\n    })();\n  <\/script>\n<\/section>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kalkula\u010dka EPS Odhad z\u00e1t\u011b\u017ee EPS a objemu log\u016f Zadejte sv\u00e9 zdroje log\u016f, pr\u016fm\u011brnou velikost ud\u00e1losti a<\/p>\n","protected":false},"author":8,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"class_list":["post-5312","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/pages\/5312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/comments?post=5312"}],"version-history":[{"count":5,"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/pages\/5312\/revisions"}],"predecessor-version":[{"id":5502,"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/pages\/5312\/revisions\/5502"}],"wp:attachment":[{"href":"https:\/\/logmanager.com\/cs\/wp-json\/wp\/v2\/media?parent=5312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}