--- a/www/rec_forum.php Fri Oct 18 13:20:35 2019 +0200 +++ b/www/rec_forum.php Fri May 01 16:37:31 2020 +0200 @@ -22,89 +22,51 @@ date_default_timezone_set('Europe/Amsterdam'); $prdate = date(DATE_RFC2822); -?> -<!DOCTYPE html> -<html lang=nl-NL> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - <title>BMS v<?php echo $my_version;?> - Export recipe</title> - <meta name="viewport" content="width=device-width, initial-scale=1 maximum-scale=1 minimum-scale=1" /> - </head> - <body> - <pre> -<?php - - -function itemline($item, $content) { - - echo $item . " "; - for ($i = strlen($item); $i < 40; $i++) - echo "."; - echo ": " . $content . PHP_EOL; -} - - -function formatstr($strin, $len) { - - $strout = null; - $cnt = 0; - - for ($i = 0; $i < strlen($strin); $i++) { - $ord = ord($strin[$i]); - if ($ord != 195) - $cnt++; +/* + * Generate the output in a string. + */ +$tabus = '[tabular]'; +$tabue = '[/tabular]'; +$heads = '[head]'; +$heade = '[/head]'; +$rows = '[row]'; +$rowe = '[/row]'; +$datas = '[data]'; +$datae = '[/data]'; - switch ($strin[$i]) { - case '<': - $strout .= '<'; - break; - case '>': - $strout .= '>'; - break; - case '&': - $strout .= '&'; - break; - case '"': - $strout .= '"'; - break; - default: - $strout .= $strin[$i]; - } - - if ($cnt >= $len) - break; - } - - for ($i = $cnt; $i < $len; $i++) - $strout .= " "; - return $strout; -} - - -echo "BMS v" . $my_version . " - Datum export: " . $prdate . PHP_EOL; -echo "----------------------------------------------------------" . PHP_EOL; -itemline("Bier naam", $row['name']); -itemline("Bier stijl", $row['st_name']); -itemline("Recept type", $recipetype[$row['type']]); -itemline("Batch grootte", $row['batch_size'].' liter'); -itemline("Kooktijd", $row['boil_time'].' minuten'); -itemline("Brouwzaal rendement", $row['efficiency'].' %'); -itemline("Geschatte begin densiteit", sprintf("%.3f",$row['est_og']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_og'])).'°P'); -itemline("Geschatte eind densiteit", sprintf("%.3f",$row['est_fg']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_fg'])).'°P'); -itemline("Geschat alcohol", sprintf("%.1f",$row['est_abv']).'% vol'); -itemline("Kleur (" . $colormethod[$row['color_method']] . ")", $row['est_color'] . ' EBC'); -itemline("Bitterheid (" . $ibumethod[$row['ibu_method']] . ")", $row['est_ibu'] . ' IBU'); -echo PHP_EOL . PHP_EOL; +$memo = "[u][b]BMS v".$my_version." - Datum export: ".$prdate.'[/b][/u]'.PHP_EOL; +$memo .= PHP_EOL; +$memo .= PHP_EOL; +$memo .= '[u][b]Basis[/b][/u]'.PHP_EOL; +$memo .= $tabus.PHP_EOL; +$memo .= $heads.'Omschrijving'.$heade.$heads.'Waarde'.$heade.PHP_EOL; +$memo .= $rows.$datas.'Bier naam'.$datae.$datas.$row['name'].$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Bier stijl'.$datae.$datas.$row['st_name'].$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Recept type'.$datae.$datas.$recipetype[$row['type']].$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Batch grootte'.$datae.$datas.$row['batch_size'].' liter'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Kooktijd'.$datae.$datas.$row['boil_time'].' minuten'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Brouwzaal rendement'.$datae.$datas.$row['efficiency'].' %'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Geschatte begin densiteit'.$datae.$datas.sprintf("%.3f",$row['est_og']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_og'])).'°P'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Geschatte eind densiteit'.$datae.$datas.sprintf("%.3f",$row['est_fg']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_fg'])).'°P'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Geschat alcohol'.$datae.$datas.sprintf("%.1f",$row['est_abv']).'% vol'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Kleur ('.$colormethod[$row['color_method']].')'.$datae.$datas.$row['est_color'].' EBC'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Bitterheid ('.$ibumethod[$row['ibu_method']].')'.$datae.$datas.$row['est_ibu'].' IBU'.$datae.$rowe.PHP_EOL; +if ($row['divide_parts']) + $memo .= $rows.$datas.'Split batch (' .$splitat[$row['divide_type']].')'.$datae.$datas.($row['divide_part'] + 1)." van ".($row['divide_parts'] + 1).$datae.$rowe.PHP_EOL; +$memo .= $tabue.PHP_EOL; +$memo .= PHP_EOL; $sugarsm = 0; $grainabsorbtion = 0; $mashwater = 0; +$memo .= '[u][b]Vergistbare ingrediënten[/b][/u]'.PHP_EOL; +$memo .= $tabus.PHP_EOL; +$memo .= $heads.'Mout, granen en suikers'.$heade.$heads.'EBC'. $heade.$heads.'Gewicht kg'.$heade.$heads.'%'.$heade.$heads.'Gebruik tijdens'.$heade.PHP_EOL; + $arr = json_decode($row['json_fermentables'], true); -echo "Mout, granen en suikers EBC Gewicht kg % Gebruik tijdens" . PHP_EOL; -echo "---------------------------------------- --- ---------- ----- ----------------" . PHP_EOL; foreach($arr as $item) { - $name = formatstr($item['f_name'] . " (" . $item['f_supplier'] . ")", 40); + $name = $item['f_name']." (".$item['f_supplier'].")"; $amount = floatval($item['f_amount']); $d = $amount * (floatval($item['f_yield']) / 100) * (1 - floatval($item['f_moisture']) / 100); if ($item['f_added'] == 0) { @@ -112,22 +74,30 @@ $sugarsm += $d; $grainabsorbtion += $item['f_amount']; } - echo sprintf("%s %3.0f %10.3f %5.1f ", $name, floatval($item['f_color']), $amount, floatval($item['f_percentage'])); - echo $added[$item['f_added']] . PHP_EOL; + $pct = ''; + if ($item['f_added'] < 4) + $pct = sprintf("%.1f", floatval($item['f_percentage'])); + + $memo .= $rows.$datas.$name.$datae.$datas.sprintf("%.0f", floatval($item['f_color'])).$datae.$datas; + $memo .= sprintf("%.3f", $amount).$datae.$datas.$pct.$datae.$datas; + $memo .= $added[$item['f_added']].$datae.$rowe .PHP_EOL; } $preboil_sg = estimate_sg($sugarsm, floatval($row['boil_size'])); -echo PHP_EOL . PHP_EOL; - +$memo .= $tabue.PHP_EOL; +$memo .= PHP_EOL; -echo "Hop Vorm α % IBU Gram Toevoegen moment" . PHP_EOL; -echo "---------------------------------------- -------- ----- ----- ------ --------------------" . PHP_EOL; +$memo .= '[u][b]Hop[/b][/u]'.PHP_EOL; +$memo .= $tabus.PHP_EOL; +$memo .= $heads.'Hop'.$heade.$heads.'Vorm'.$heade.$heads.'Alpha'.$heade.$heads.'IBU'.$heade.$heads.'Gram'.$heade.$heads.'Toevoegen moment'.$heade.PHP_EOL; + $arr = json_decode($row['json_hops'], true); foreach($arr as $item) { - $name = formatstr($item['h_name'] . " (" . $item['h_origin'] . ")", 40); + $name = $item['h_name']." (".$item['h_origin'].")"; $amount = floatval($item['h_amount']) * 1000; $time = floatval($item['h_time']); $alpha = floatval($item['h_alpha']); - $ibu = calc_IBU($item['h_useat'], $item['h_form'], $preboil_sg, floatval($row['batch_size']), $amount, $time, $alpha, $row['ibu_method']); + $ibu = calc_IBU($item['h_useat'], $item['h_form'], $preboil_sg, floatval($row['batch_size']), $amount, $time, $alpha, + $row['ibu_method'], $row['brew_whirlpool9'], $row['brew_whirlpool7'], $row['brew_whirlpool6']); $moment = $hopuse[$item['h_useat']]; if (($item['h_useat'] == 2) || ($item['h_useat'] == 4)) { // Boil or Whirlpool $moment = $hopuse[$item['h_useat']].' '.$time." minuten"; @@ -135,17 +105,18 @@ $moment = $hopuse[$item['h_useat']].' '.sprintf("%.0f", $time / 1440).' dagen'; } - echo sprintf("%s %-8s %5.1f %5.1f %6.1f %-20s", $name, $hopform[$item['h_form']], $alpha, $ibu, $amount, $moment); - echo PHP_EOL; + $memo .= $rows.$datas.$name.$datae.$datas.$hopform[$item['h_form']].$datae.$datas.sprintf("%.1f", $alpha).'%'.$datae.$datas; + $memo .= sprintf("%.1f", $ibu).$datae.$datas.sprintf("%.1f", $amount).$datae.$datas.$moment.$datae.$rowe.PHP_EOL; } -echo PHP_EOL . PHP_EOL; +$memo .= $tabue.PHP_EOL; +$memo .= PHP_EOL; -echo "Specerij, kruid, brouwzout etc Type grondstof Gebruik tijdens Hoeveel" . PHP_EOL; -echo "------------------------------ --------------- -------------------- -----------" . PHP_EOL; +$memo .= '[u][b]Diversen[/b][/u]'.PHP_EOL; +$memo .= $tabus.PHP_EOL; +$memo .= $heads.'Specerij, kruid, brouwzout'.$heade.$heads.'Type grondstof'.$heade.$heads.'Gebruik tijdens'.$heade.$heads.'Hoeveel'.$heade.PHP_EOL; + $arr = json_decode($row['json_miscs'], true); foreach($arr as $item) { - $amount = floatval($item['m_amount']) * 1000; - $aiw = $item['m_amount_is_weight']; $use_use = $item['m_use_use']; $time = floatval($item['m_time']); @@ -153,18 +124,21 @@ $gebruik = sprintf("%s %d min",$miscuse[$use_use],$time); else $gebruik = $miscuse[$use_use]; - $hoeveel = sprintf("%.2f %s",$amount,$aiw ? "gr":"ml"); + $hoeveel = sprintf("%.2f %s",floatval($item['m_amount']) * 1000,$item['m_amount_is_weight'] ? "gr":"ml"); - echo sprintf("%s %-15s %-20s %11s", formatstr($item['m_name'], 30), $misctype[$item['m_type']], $gebruik, $hoeveel) . PHP_EOL; + $memo .= $rows.$datas.$item['m_name'].$datae.$datas.$misctype[$item['m_type']].$datae.$datas; + $memo .= $gebruik.$datae.$datas.$hoeveel.$datae.$rowe.PHP_EOL; } -echo PHP_EOL . PHP_EOL; +$memo .= $tabue.PHP_EOL; +$memo .= PHP_EOL; -echo "Gistlab en code Omschrijving Gebruik Vorm Hoeveel" . PHP_EOL; -echo "-------------------- ------------------------------ ------------ ------------ ----------" . PHP_EOL; +$memo .= '[u][b]Gist[/b][/u]'.PHP_EOL; +$memo .= $tabus.PHP_EOL; +$memo .= $heads.'Gistlab en code'.$heade.$heads.'Omschrijving'.$heade.$heads.'Gebruik'.$heade.$heads.'Vorm'.$heade.$heads.'Hoeveel'.$heade.PHP_EOL; + $arr = json_decode($row['json_yeasts'], true); foreach($arr as $item) { - $name = formatstr($item['y_name'], 30); - $product = formatstr($item['y_laboratory']." ".$item['y_product_id'], 20); + $product = $item['y_laboratory']." ".$item['y_product_id']; if ($item['y_form'] == 0) // Liquid $amount = sprintf("%.0f",floatval($item['y_amount']))." pak"; @@ -173,8 +147,10 @@ else $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml"; - echo sprintf("%s %s %-12s %-12s %10s", $product, $name, $yeastuse[$item['y_use']], $yeastform[$item['y_form']], $amount) . PHP_EOL; + $memo .= $rows.$datas.$product.$datae.$datas.$item['y_name'].$datae.$datas.$yeastuse[$item['y_use']].$datae.$datas; + $memo .= $yeastform[$item['y_form']].$datae.$datas.$amount.$datae.$rowe.PHP_EOL; } +$memo .= $tabue.PHP_EOL; if ($row['starter_enable'] && $row['prop1_volume']) { $sv = 0; for ($i = 1; $i < 5; $i++) { @@ -183,45 +159,69 @@ $sv = floatval($row[$pv]); } } - echo PHP_EOL . "Maak een giststarter van " . sprintf("%.1f", $sv) . " liter." . PHP_EOL; + $memo .= "Maak een giststarter van ".sprintf("%.1f", $sv)." liter.".PHP_EOL; } -echo PHP_EOL . PHP_EOL; +$memo .= PHP_EOL; if ($row['w1_name']) $mashwater += floatval($row['w1_amount']); if ($row['w2_name']) $mashwater += floatval($row['w2_amount']); -echo "Maisch stap stap type stap temp rusten opwarmen" . PHP_EOL; -echo "-------------------- ---------------------- --------- --------- ---------" . PHP_EOL; +$memo .= '[u][b]Maischschema[/b][/u]'.PHP_EOL; +$memo .= $tabus.PHP_EOL; +$memo .= $heads.'Maisch stap'.$heade.$heads.'Stap type'.$heade.$heads.'Temperatuur'.$heade.$heads.'Rust tijd'.$heade.$heads.'Opwarmen tijd'.$heade.PHP_EOL; + $arr = json_decode($row['json_mashs'], true); foreach($arr as $item) { if ($item['step_type'] == 1) { - $stype = formatstr($mashtype[$item['step_type']], 22); + $stype = $mashtype[$item['step_type']]; } else { - $stype = formatstr($mashtype[$item['step_type']].' '.sprintf("%.1f", $item['step_infuse_amount']).' liter', 22); + $stype = $mashtype[$item['step_type']].' '.sprintf("%.1f", $item['step_infuse_amount']).' liter'; } - echo sprintf("%s %s %s %s %s", - formatstr($item['step_name'], 20), $stype, sprintf("%6.1f °C", $item['step_temp']), - sprintf("%4.0f min.", $item['step_time']), sprintf("%4.0f min.", $item['ramp_time'])) . PHP_EOL; + $memo .= $rows.$datas.$item['step_name'].$datae.$datas.$stype.$datae.$datas.sprintf("%.1f °C", $item['step_temp']); + $memo .= $datae.$datas.sprintf("%.0f min.", $item['step_time']).$datae.$datas.sprintf("%.0f min.", $item['ramp_time']); + $memo .= $datae.$rowe.PHP_EOL; } -echo PHP_EOL; +$memo .= $tabue.PHP_EOL; +$memo .= PHP_EOL; + +$memo .= '[u][b]Brouwwater[/b][/u]'.PHP_EOL; +$memo .= $tabus.PHP_EOL; +$memo .= $heads.'Omschrijving'.$heade.$heads.'Waarde'.$heade.PHP_EOL; + if ($row['w1_name'] && $row['w2_name']) { - itemline("Maischwater 1", sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name']); - itemline("Maischwater 2", sprintf("%.1f",floatval($row['w2_amount'])).' liter water '.$row['w2_name']); + $memo .= $rows.$datas.'Maischwater 1'.$datae.$datas.sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name'].$datae.$rowe.PHP_EOL; + $memo .= $rows.$datas.'Maischwater 2'.$datae.$datas.sprintf("%.1f",floatval($row['w2_amount'])).' liter water '.$row['w2_name'].$datae.$rowe.PHP_EOL; } else { - itemline("Maischwater", sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name']); + $memo .= $rows.$datas.'Maischwater'.$datae.$datas.sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name'].$datae.$rowe.PHP_EOL; } -itemline("Maischwater aanzuren tot pH", $row['mash_ph'].' pH'); +$memo .= $rows.$datas.'Maischwater aanzuren tot pH'.$datae.$datas.$row['mash_ph'].' pH'.$datae.$rowe.PHP_EOL; $spoelw = ($row['boil_size'] - $mashwater + $grainabsorbtion + $row['eq_lauter_deadspace']) * 1.03; // A small heat correction -itemline("Spoelwater geschat", sprintf("%.1f", $spoelw)." liter"); -itemline("Spoelwater temperatuur", $row['sparge_temp'].' °C'); -itemline("Spoelwater aanzuren tot pH", sprintf("%.1f",$row['sparge_ph']).' pH'); -echo PHP_EOL . PHP_EOL; +$memo .= $rows.$datas.'Spoelwater geschat'.$datae.$datas.sprintf("%.1f",$spoelw)." liter".$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Spoelwater temperatuur'.$datae.$datas.$row['sparge_temp'].' °C'.$datae.$rowe.PHP_EOL; +$memo .= $rows.$datas.'Spoelwater aanzuren tot pH'.$datae.$datas.sprintf("%.1f",$row['sparge_ph']).' pH'.$datae.$rowe.PHP_EOL; +$memo .= $tabue.PHP_EOL; - +page_header('Recept naar forum', 'rec_forum'); ?> - </pre> - </body> -</html> + <script> + // json_encode() seems to do the right thing. + var forumstr = <?= json_encode($memo) ?>; + </script> + <div id="MainPanel"> + <div class="section"> + <div style="overflow: hidden; margin: 25px;"><br> + <p>Het recept met alle gegevens staan gereed.</p> + <p>Zodra je de "Klembord" toets gebruikt zullen deze gegevens naar het klembord gekopieerd<br> + worden. In het scherm van het forum kun je deze gegevens vervolgens "plakken".</p> + <p>Na het drukken van de toets wordt dit scherm gesloten.</p> + <p><input type="button" value="Klembord" id="copytoClipboard" /></p> + </div> + </div> + </div> + +<?php +page_footer(); +?>