{"id":5393,"date":"2025-09-05T20:45:36","date_gmt":"2025-09-05T20:45:36","guid":{"rendered":"http:\/\/sanotyde.com\/?page_id=5393"},"modified":"2025-09-09T10:06:40","modified_gmt":"2025-09-09T10:06:40","slug":"kalkulator","status":"publish","type":"page","link":"https:\/\/sanotyde.com\/?page_id=5393","title":{"rendered":"Kalkulator Peptydowy"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5393\" class=\"elementor elementor-5393\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fd94c2f e-flex e-con-boxed e-con e-parent\" data-id=\"fd94c2f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-64ecb43 e-con-full e-flex e-con e-child\" data-id=\"64ecb43\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-adf1d45 elementor-widget elementor-widget-html\" data-id=\"adf1d45\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"peptide-calculator\" style=\"max-width:860px;margin:20px auto;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.4\">\n  <style>\n    #peptide-calculator .pc-card{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 20px rgba(2,6,23,.06);padding:22px}\n    #peptide-calculator .pc-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}\n    #peptide-calculator .pc-col-6{grid-column:span 6}\n    #peptide-calculator .pc-col-4{grid-column:span 4}\n    #peptide-calculator .pc-col-8{grid-column:span 8}\n    #peptide-calculator .pc-col-12{grid-column:span 12}\n    #peptide-calculator h2{margin:0 0 12px;font-size:20px}\n    #peptide-calculator label{display:block;font-weight:600;margin-bottom:6px;font-size:13px;color:#111827}\n    #peptide-calculator input, #peptide-calculator select{width:100%;border:1px solid #d1d5db;border-radius:12px;padding:10px 12px;font-size:14px;outline:none;background:#fff}\n    #peptide-calculator input:focus, #peptide-calculator select:focus{border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.12)}\n    #peptide-calculator .pc-muted{color:#6b7280;font-size:12px}\n    #peptide-calculator .pc-row{display:flex;gap:10px;align-items:center}\n    #peptide-calculator .pc-badge{display:inline-block;font-size:12px;background:#eef2ff;color:#3730a3;padding:4px 8px;border-radius:999px}\n    #peptide-calculator .pc-hr{height:1px;background:#eee;margin:10px 0 6px}\n    #peptide-calculator .pc-output{background:#f9fafb;border:1px dashed #e5e7eb;border-radius:14px;padding:14px}\n    #peptide-calculator .pc-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:8px}\n    #peptide-calculator .pc-kpi .k{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:12px;text-align:center}\n    #peptide-calculator .pc-kpi .k .v{font-size:18px;font-weight:800;margin-top:4px}\n    #peptide-calculator .pc-help{font-size:12px;color:#6b7280;margin-top:8px}\n    #peptide-calculator .pc-small{font-size:12px}\n    #peptide-calculator .pc-flex{display:flex;gap:8px}\n    #peptide-calculator .pc-btn{cursor:pointer;border:1px solid #e5e7eb;background:#fff;border-radius:12px;padding:8px 10px;font-weight:600}\n    #peptide-calculator .pc-btn.active{background:#111827;color:#fff;border-color:#111827}\n    @media (max-width:760px){\n      #peptide-calculator .pc-grid{grid-template-columns:repeat(6,1fr)}\n      #peptide-calculator .pc-kpi{grid-template-columns:repeat(2,1fr)}\n      #peptide-calculator .pc-col-6{grid-column:span 6}\n      #peptide-calculator .pc-col-8{grid-column:span 6}\n      #peptide-calculator .pc-col-4{grid-column:span 6}\n      #peptide-calculator .pc-col-12{grid-column:span 6}\n    }\n  <\/style>\n\n  <div class=\"pc-card\">\n    <div class=\"pc-grid\">\n      <div class=\"pc-col-12\">\n        <h2>Kalkulator peptydowy <span class=\"pc-badge\">HTML + JS<\/span><\/h2>\n        <div class=\"pc-help\">Podaj ilo\u015b\u0107 substancji w fiolce oraz ilo\u015b\u0107 rozpuszczalnika. Nast\u0119pnie wybierz typ dawki (sta\u0142a mg\/\u00b5g lub na kg masy cia\u0142a). Kalkulator przeliczy obj\u0119to\u015b\u0107 dawki w mL i IU (1 mL = 100 IU).<\/div>\n      <\/div>\n\n      <div class=\"pc-col-6\">\n        <label>Ilo\u015b\u0107 peptydu w fiolce<\/label>\n        <div class=\"pc-row\">\n          <input id=\"vialAmount\" type=\"text\" inputmode=\"decimal\" placeholder=\"np. 5\">\n          <select id=\"vialAmountUnit\" aria-label=\"jednostka fiolki\">\n            <option value=\"mg\">mg<\/option>\n            <option value=\"mcg\">\u00b5g<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"pc-help\">Najcz\u0119\u015bciej: 2 mg, 5 mg, 10 mg\u2026<\/div>\n      <\/div>\n\n      <div class=\"pc-col-6\">\n        <label>Obj\u0119to\u015b\u0107 rozpuszczalnika (po rekonstytucji)<\/label>\n        <div class=\"pc-row\">\n          <input id=\"diluentMl\" type=\"text\" inputmode=\"decimal\" placeholder=\"np. 2\">\n          <span class=\"pc-muted\">mL<\/span>\n        <\/div>\n        <div class=\"pc-help\">Bacteriostatic\/NaCl \u2014 1\u20135 mL w zale\u017cno\u015bci od preferencji obj\u0119to\u015bci dawki.<\/div>\n      <\/div>\n\n      <div class=\"pc-col-12\"><div class=\"pc-hr\"><\/div><\/div>\n\n      <div class=\"pc-col-12\">\n        <label>Typ dawki<\/label>\n        <div class=\"pc-flex\">\n          <button class=\"pc-btn active\" data-mode=\"absolute\" id=\"btnAbs\">Sta\u0142a (mg \/ \u00b5g)<\/button>\n          <button class=\"pc-btn\" data-mode=\"perkg\" id=\"btnPerKg\">Na kg masy cia\u0142a<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"pc-col-8\" id=\"absDoseBox\">\n        <label>Docelowa dawka<\/label>\n        <div class=\"pc-row\">\n          <input id=\"doseValue\" type=\"text\" inputmode=\"decimal\" placeholder=\"np. 0,25\">\n          <select id=\"doseUnit\">\n            <option value=\"mg\">mg<\/option>\n            <option value=\"mcg\">\u00b5g<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"pc-help\">Np. 0,25 mg (czyli 250 \u00b5g).<\/div>\n      <\/div>\n\n      <div class=\"pc-col-4\" id=\"absHelperBox\">\n        <label>Opcjonalnie: oczekiwana obj\u0119to\u015b\u0107 dawki<\/label>\n        <div class=\"pc-row\">\n          <input id=\"targetVol\" type=\"text\" inputmode=\"decimal\" placeholder=\"np. 0,1\">\n          <span class=\"pc-muted\">mL<\/span>\n        <\/div>\n        <div class=\"pc-help\">Poka\u017ce, jakiej dawce (mg\/\u00b5g) odpowiada taka obj\u0119to\u015b\u0107 przy Twoim st\u0119\u017ceniu.<\/div>\n      <\/div>\n\n      <div class=\"pc-col-6\" id=\"perKgDoseBox\" style=\"display:none\">\n        <label>Dawka na mas\u0119 cia\u0142a<\/label>\n        <div class=\"pc-row\">\n          <input id=\"dosePerKg\" type=\"text\" inputmode=\"decimal\" placeholder=\"np. 1\">\n          <select id=\"dosePerKgUnit\">\n            <option value=\"mgkg\">mg\/kg<\/option>\n            <option value=\"mcgkg\">\u00b5g\/kg<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n\n      <div class=\"pc-col-6\" id=\"weightBox\" style=\"display:none\">\n        <label>Masa cia\u0142a<\/label>\n        <div class=\"pc-row\">\n          <input id=\"bodyWeight\" type=\"text\" inputmode=\"decimal\" placeholder=\"np. 80\">\n          <span class=\"pc-muted\">kg<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"pc-col-12\"><div class=\"pc-hr\"><\/div><\/div>\n\n      <div class=\"pc-col-12\">\n        <div class=\"pc-output\">\n          <div class=\"pc-grid\">\n            <div class=\"pc-col-12\">\n              <strong>Wyniki<\/strong>\n              <div class=\"pc-help\">Warto\u015bci aktualizuj\u0105 si\u0119 na bie\u017c\u0105co.<\/div>\n            <\/div>\n\n            <div class=\"pc-col-12 pc-kpi\">\n              <div class=\"k\">\n                <div class=\"t pc-small\">St\u0119\u017cenie<\/div>\n                <div class=\"v\" id=\"kpiConc\">\u2013<\/div>\n                <div class=\"pc-small\" id=\"kpiConc2\"> <\/div>\n              <\/div>\n              <div class=\"k\">\n                <div class=\"t pc-small\">Obj\u0119to\u015b\u0107 dawki<\/div>\n                <div class=\"v\" id=\"kpiDoseMl\">\u2013<\/div>\n                <div class=\"pc-small\" id=\"kpiDoseIU\"> <\/div>\n              <\/div>\n              <div class=\"k\">\n                <div class=\"t pc-small\">Dawki z fiolki<\/div>\n                <div class=\"v\" id=\"kpiDoses\">\u2013<\/div>\n                <div class=\"pc-small\" id=\"kpiLeft\"> <\/div>\n              <\/div>\n              <div class=\"k\">\n                <div class=\"t pc-small\">Przelicznik obj\u0119to\u015bci \u2192 dawka<\/div>\n                <div class=\"v\" id=\"kpiVolToDose\">\u2013<\/div>\n                <div class=\"pc-small\">dla podanej obj\u0119to\u015bci (opcjonalnie)<\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"pc-col-12 pc-help\">\n              Uwaga: 1 mL = 100 IU (na strzykawce insulinowej). Wyniki maj\u0105 charakter informacyjny i nie zast\u0119puj\u0105 porady medycznej.\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n  <script>\n    (function(){\n      const $ = (id)=>document.getElementById(id);\n\n      \/\/ Inputs\n      const vialAmount = $('vialAmount');\n      const vialAmountUnit = $('vialAmountUnit');\n      const diluentMl = $('diluentMl');\n      const doseValue = $('doseValue');\n      const doseUnit = $('doseUnit');\n      const targetVol = $('targetVol');\n      const dosePerKg = $('dosePerKg');\n      const dosePerKgUnit = $('dosePerKgUnit');\n      const bodyWeight = $('bodyWeight');\n\n      \/\/ Mode buttons\n      const btnAbs = $('btnAbs');\n      const btnPerKg = $('btnPerKg');\n      const absDoseBox = $('absDoseBox');\n      const absHelperBox = $('absHelperBox');\n      const perKgDoseBox = $('perKgDoseBox');\n      const weightBox = $('weightBox');\n\n      \/\/ KPIs\n      const kpiConc = $('kpiConc');\n      const kpiConc2 = $('kpiConc2');\n      const kpiDoseMl = $('kpiDoseMl');\n      const kpiDoseIU = $('kpiDoseIU');\n      const kpiDoses = $('kpiDoses');\n      const kpiLeft = $('kpiLeft');\n      const kpiVolToDose = $('kpiVolToDose');\n\n      let mode = 'absolute';\n\n      const parseNum = (v)=>{\n        if(typeof v!=='string') return NaN;\n        \/\/ akceptuj przecinek\n        v = v.replace(',', '.').replace(\/[^\\d.+-eE]\/g,'');\n        if(v.trim()==='') return NaN;\n        return parseFloat(v);\n      };\n\n      const fmt = (n, digits=3)=> isFinite(n) ? n.toLocaleString('pl-PL',{maximumFractionDigits:digits}) : '\u2013';\n\n      const mgFrom = (value, unit)=>{\n        if(!isFinite(value)) return NaN;\n        return unit==='mg' ? value : (value\/1000); \/\/ \u00b5g \u2192 mg\n      };\n      const mgToDisplay = (mg)=>{\n        if(!isFinite(mg)) return {main:'\u2013', sub:''};\n        const mcg = mg*1000;\n        const main = mg>=1 ? fmt(mg,4)+' mg' : fmt(mcg,3)+' \u00b5g';\n        const sub  = mg>=1 ? fmt(mcg,0)+' \u00b5g' : fmt(mg,6)+' mg';\n        return {main, sub};\n      };\n\n      const recalc = ()=>{\n        \/\/ read inputs\n        const vialVal = mgFrom(parseNum(vialAmount.value), vialAmountUnit.value);\n        const diluent = parseNum(diluentMl.value);\n\n        \/\/ concentration mg\/mL\n        const conc = (isFinite(vialVal) && diluent>0) ? (vialVal \/ diluent) : NaN; \/\/ mg per mL\n\n        \/\/ Dose mg (absolute or per kg)\n        let doseMg = NaN;\n        if(mode==='absolute'){\n          const dVal = mgFrom(parseNum(doseValue.value), doseUnit.value);\n          doseMg = dVal;\n        } else {\n          const perKgVal = parseNum(dosePerKg.value);\n          const w = parseNum(bodyWeight.value);\n          if(isFinite(perKgVal) && isFinite(w) && perKgVal>=0 && w>0){\n            doseMg = (dosePerKgUnit.value==='mgkg') ? (perKgVal*w) : ((perKgVal*w)\/1000); \/\/ \u00b5g\/kg \u2192 mg\n          }\n        }\n\n        \/\/ Volume per dose (mL) and IU\n        const doseMl = (isFinite(conc) && isFinite(doseMg) && conc>0 && doseMg>=0) ? (doseMg \/ conc) : NaN;\n        const doseIU = isFinite(doseMl) ? doseMl*100 : NaN;\n\n        \/\/ Doses per vial\n        const totalMl = isFinite(diluent) ? diluent : NaN;\n        const dosesCount = (isFinite(doseMl) && doseMl>0 && isFinite(totalMl)) ? Math.floor(totalMl \/ doseMl) : NaN;\n        const leftoverMl = (isFinite(doseMl) && doseMl>0 && isFinite(totalMl)) ? (totalMl - dosesCount*doseMl) : NaN;\n\n        \/\/ Volume \u2192 dose helper\n        const tVol = parseNum(targetVol.value);\n        const volDoseMg = (isFinite(tVol) && tVol>=0 && isFinite(conc)) ? (tVol * conc) : NaN;\n\n        \/\/ Update UI\n        if(isFinite(conc)){\n          const concStr1 = fmt(conc,4) + ' mg\/mL';\n          const concStr2 = fmt(conc*1000,0) + ' \u00b5g\/mL';\n          kpiConc.textContent = concStr1;\n          kpiConc2.textContent = concStr2;\n        } else {\n          kpiConc.textContent='\u2013'; kpiConc2.textContent=' ';\n        }\n\n        if(isFinite(doseMl)){\n          kpiDoseMl.textContent = fmt(doseMl,4) + ' mL';\n          kpiDoseIU.textContent = fmt(doseIU,1) + ' IU';\n        } else {\n          kpiDoseMl.textContent='\u2013'; kpiDoseIU.textContent=' ';\n        }\n\n        if(isFinite(dosesCount)){\n          kpiDoses.textContent = fmt(dosesCount,0);\n          kpiLeft.textContent = 'Pozosta\u0142o ~ ' + fmt(Math.max(leftoverMl,0),3) + ' mL';\n        } else {\n          kpiDoses.textContent='\u2013'; kpiLeft.textContent=' ';\n        }\n\n        if(isFinite(volDoseMg)){\n          const dd = mgToDisplay(volDoseMg);\n          kpiVolToDose.textContent = dd.main;\n        } else {\n          kpiVolToDose.textContent='\u2013';\n        }\n      };\n\n      \/\/ Mode switching\n      const setMode = (m)=>{\n        mode = m;\n        if(m==='absolute'){\n          btnAbs.classList.add('active'); btnPerKg.classList.remove('active');\n          absDoseBox.style.display='block'; absHelperBox.style.display='block';\n          perKgDoseBox.style.display='none'; weightBox.style.display='none';\n        } else {\n          btnPerKg.classList.add('active'); btnAbs.classList.remove('active');\n          absDoseBox.style.display='none'; absHelperBox.style.display='none';\n          perKgDoseBox.style.display='block'; weightBox.style.display='block';\n        }\n        recalc();\n      };\n\n      \/\/ Events\n      [vialAmount, vialAmountUnit, diluentMl, doseValue, doseUnit, targetVol, dosePerKg, dosePerKgUnit, bodyWeight]\n        .forEach(el=> el.addEventListener('input', recalc));\n\n      btnAbs.addEventListener('click', ()=>setMode('absolute'));\n      btnPerKg.addEventListener('click', ()=>setMode('perkg'));\n\n      \/\/ Prefill sensible defaults\n      vialAmount.value='5';\n      vialAmountUnit.value='mg';\n      diluentMl.value='2';\n      doseValue.value='0,25';\n      doseUnit.value='mg';\n      targetVol.value='0,1';\n\n      recalc();\n    })();\n  <\/script>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Kalkulator peptydowy HTML + JS Podaj ilo\u015b\u0107 substancji w fiolce oraz ilo\u015b\u0107 rozpuszczalnika. Nast\u0119pnie wybierz typ dawki (sta\u0142a mg\/\u00b5g lub na kg masy cia\u0142a). Kalkulator przeliczy obj\u0119to\u015b\u0107 dawki w mL i IU (1 mL = 100 IU). Ilo\u015b\u0107 peptydu w fiolce mg\u00b5g Najcz\u0119\u015bciej: 2 mg, 5 mg, 10 mg\u2026 Obj\u0119to\u015b\u0107 rozpuszczalnika (po rekonstytucji) mL Bacteriostatic\/NaCl [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5393","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sanotyde.com\/index.php?rest_route=\/wp\/v2\/pages\/5393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sanotyde.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sanotyde.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sanotyde.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sanotyde.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5393"}],"version-history":[{"count":4,"href":"https:\/\/sanotyde.com\/index.php?rest_route=\/wp\/v2\/pages\/5393\/revisions"}],"predecessor-version":[{"id":5398,"href":"https:\/\/sanotyde.com\/index.php?rest_route=\/wp\/v2\/pages\/5393\/revisions\/5398"}],"wp:attachment":[{"href":"https:\/\/sanotyde.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}