html`
<style>
.header-flex {
display: flex;
align-items: center;
margin-bottom: 0em;
}
.header-title {
font-size: 1.5em;
font-weight: bold;
}
</style>
`
Gödselvärde behandlat klosettvatten
html`
<details>
<summary><span style="font-size:24px;font-weight:bold;color:#03865a;">Instruktion</span></summary>
Med det här verktyget uppskattas utifrån angiven ureadosering och torrsubstanshalt i klosettvattnet vilken koncentration av näringsämnen det behandlade klosettvattnet kommer att hålla. När klosettvatten behandlas med urea kommer kvävet vara det näringsämne som styr givan vilket begränsar av ammoniak-kvävet i klosettvattnet. Utifrån kvävebehovet uppskattas hur stor areal som krävs för gödsling med det behandlade klosettvattnet och hur mycket av andra näringsämnen som tillförs via klosettvattnet. För flera metaller finns gränsvärden för innehåll (SFS 1998:944) och hur mycket som maximalt får tillföras odlingsmarken per hektar och år (SNFS 1994:2). Bidraget till näring och metaller from klosettvattnet är baserat på svenska designvärden för toalettavfall (Jönsson mfl. 2005) och används som en faktor relaterat till uppmätt eller antagen torrsubstanshalt. Dessa uppskattningar är tänkta att underlätta planering av ett system för kretslopp från klosettvatten. Om du saknar data behåll givna startvärden som är satta att vara rimliga för klosettvatten insamlat i Sverige med snålspolande toaletter. Inför gödsling skall halter av kväve, fosfor och metallerna nedan analyseras i det aktuella klosettvattnet enligt SNFS 1998:944.
</details>
<hr style="border-top:5px #03865a;">
`html`<div>
<h4>Klosettvatten startvärden</h4>
</div>`
viewof torbu = Inputs.range([0, 6], {value: 0.2,step: 0.1,label: "Torrsubstans (%)"})
viewof kvare = Inputs.range([0, 10], {value: 0.35,step: 0.05,label: "Kväve (g/L)"})
viewof NH3 = Inputs.range([0, 10], {value: 0.30,step: 0.05,label: "NH3/NH4+-kväve (g/L)"})
html`<div>
<h4>Behandling:</h4>
</div>`
viewof klosevatten = Inputs.range([0, 5000], {value: 1000,step: 50,label: "Klosettvatten (m3)"})
viewof urea = Inputs.range([0, 5], {value: 1,step: 0.1,label: "Urea-dos (kg/m3)"})
html`<div>
<h4>Gödsling:</h4>
</div>`
viewof totalkvave = Inputs.range([0, 160], {value: 150,step: 0.1,label: "Totalkväve (kg/ha)"})
html`<style>
th { color: #222 !important; }
</style>`
totalkvave_f = 0.17
ammonia_f = 0.14
fosfor_f = 0.019
kalium_f = 0.045
svavel_f = 0.11
totalkvave_k = NH3*1.179+urea*10*0.46
ammonia_k = NH3
fosfor_k = NH3*0.132
kalium_k = NH3*0.082
svavel_k = NH3*0.311
giva = totalkvave/totalkvave_k
Spridningsareal = klosevatten/giva
totalkvave_g = totalkvave
ammonia_g = giva*ammonia_k
fosfor_g = giva*fosfor_k
kalium_g = giva*kalium_k
svavel_g = giva*svavel_k
data1 = [
{Gödselspridning: "Giva (m3/ha)", "": giva},
{Gödselspridning: "Spridningsareal (ha)", "": Spridningsareal.toFixed(2)},
]
html`
<div class="gray-box">
<h4>Gödselspridning:</h4>
Giva: <mark>${giva.toFixed(3)}</mark>
m3/ha<br>
Spridningsareal: <mark>${Spridningsareal.toFixed(2)}</mark>
ha
</div>`
data = [
{Näringsämne: "Total Kvave", "Koncentration(kg/ton)": totalkvave_k.toFixed(3),"Giva(kg/ha)":totalkvave_g.toFixed(2)},
{Näringsämne: "Ammoniak-kväve", "Koncentration(kg/ton)": ammonia_k.toFixed(3), "Giva(kg/ha)":ammonia_g.toFixed(2)},
{Näringsämne: "Fosfor", "Koncentration(kg/ton)": fosfor_k.toFixed(3), "Giva(kg/ha)":fosfor_g.toFixed(2)},
{Näringsämne: "Kalium", "Koncentration(kg/ton)": kalium_k.toFixed(3), "Giva(kg/ha)":kalium_g.toFixed(2)},
{Näringsämne: "Svavel","Koncentration(kg/ton)": svavel_k.toFixed(3), "Giva(kg/ha)":svavel_g.toFixed(2)},
]
html`<div class="gray-box">
<h4>Resultat:</h4>
<table>
<thead >
<tr>
<th style="background-color: transparent;></th>
<th style="background-color: transparent;>Näringsämne</th>
<th style="background-color: transparent;">Koncentration(kg/ton)</th>
<th style="background-color: transparent;">Giva(kg/ha)</th>
</tr>
</thead>
<tbody>
${data.map(row => html`
<tr>
<td>${row["Näringsämne"]}</td>
<td>${row["Koncentration(kg/ton)"]}</td>
<td>${row["Giva(kg/ha)"]}</td>
</tr>
`)}
</tbody>
</table>
</div>`
koppar = 0.015*torbu*10
koppar_max = 300
zink = 0.15*torbu*10
zink_max = 600
bly = 0.0007*torbu*10
bly_max = 25
kadmium = 0.0002*torbu*10
kadmium_max = 0.75
krom = 0.0019*torbu*10
krom_max = 40
kvicksilver = 0.00013*torbu*10
kvicksilver_max = 1.5
nickel = 0.0027*torbu*10
nickel_max = 25
// Using Puppeteer (server-side) or browser APIs
async function printToPDF() {
if ('showSaveFilePicker' in window) {
// Modern browsers
const fileHandle = await window.showSaveFilePicker({
suggestedName: 'document.pdf',
types: [{
description: 'PDF files',
accept: { 'application/pdf': ['.pdf'] }
}]
});
// Implementation depends on your PDF library
} else {
// Fallback to window.print()
window.print();
}
}
// Utility function stays outside the reactive computation
ProgressBar2 = (label, value, max, color) => html`
<div class="progress-row">
<span class="progress-label">${label}:</span>
<div class="progress-bar-outer">
<div class="progress-bar-inner" style="
width: ${Math.min(100, 100 * value / max)}%;
background: ${color};
"></div>
<div class="progress-bar-text">
${value.toFixed(1)} / ${max} (${Math.round(100 * value / max)}%)
</div>
</div>
</div>
`
html`
<div class="gray-box">
<h4>Tillförsel av metaller till mark:</h4>
<p>Tillförsel av metaller till mark (g/ha) vid spridning i jämförelse med tillåten maxtillförsel (g/ ha )
<div class="progress-container">
${ProgressBar2("Bly(Pb)", bly, bly_max, "#03865a")}
${ProgressBar2("Kadmium(Cd)", kadmium, kadmium_max, "#03865a")}
${ProgressBar2("Koppar(Cu)", koppar, koppar_max, "#03865a")}
${ProgressBar2("Krom(Cr)", krom, krom_max, "#03865a")}
${ProgressBar2("Kvicksilver(Hg)", kvicksilver, kvicksilver_max, "#03865a")}
${ProgressBar2("Nickel(Ni)", nickel, nickel_max, "#03865a")}
${ProgressBar2("Zink(Zn)", zink, zink_max, "#03865a")}
</div>
</div>`
html`
<button onclick="window.print()" style="background-color: #03865a; color: white; border: none; padding: 8px 20px; border-radius: 4px;">
Print to PDF
</button>
`
Detta verktyg utvecklades inom projekt JTI-21-83-613 finansierat av JTI-Stiftelsen under tema Cirkularitet/restströmmar.