JSFiddle - React, Tailwind, and code Playground

by krutilin

HTML

<script src="https://rawgit.com/brewcomputer/brewcalc/74f405141695699e8d811b915f1c4e660770aa61/lib/brewcalc.min.js"></script>
<div id="log"></div>

JavaScript

const log = (message) => {
  $('#log').append(message + '<br/>');
}

const recipe = {
  "name": "RR Summer Bitter",
  "batchSize": 40,
  "boilSize": 45.6427168,
  "boilTime": 60,
  "efficiency": 0.75,
  "type": "All Grain",
  "fermentables": [{
    "name": "Pale Malt, Maris Otter",
    "addAfterBoil": false,
    "amount": 6.9999955,
    "color": 3,
    "potential": 1.03795,
    "type": "Grain"
  }, {
    "name": "Cara 50",
    "addAfterBoil": false,
    "amount": 0.9999994,
    "color": 25.3807107,
    "potential": 1.0345,
    "type": "Grain"
  }],
  "hops": [{
    "name": "Target",
    "alpha": 0.11,
    "amount": 0.04,
    "form": "Pellet",
    "use": "Boil",
    "time": 60
  }, {
    "name": "Goldings, East Kent",
    "alpha": 0.05,
    "amount": 0.015,
    "form": "Pellet",
    "use": "Boil",
    "time": 30
  }, {
    "name": "Goldings, East Kent",
    "alpha": 0.05,
    "amount": 0.015,
    "form": "Pellet",
    "use": "Boil",
    "time": 15
  }],
  "mash": {
    "grainTemp": 22.2222222,
    "tunTemp": 22.2222222,
    "equipAdjust": false,
    "spargeTemp": 75.5555556,
    "mashSteps": [{
      "name": "Saccharification",
      "endTemp": 68.8888889,
      "infuseAmount": 20.8636349,
      "rampTime": 15,
      "stepTemp": 68.8888889,
      "stepTime": 40,
      "type": "Infusion"
    }, {
      "name": "Mash Out",
      "endTemp": 75.5555556,
      "infuseAmount": 0,
      "rampTime": 10,
      "stepTemp": 75.5555556,
      "stepTime": 10,
      "type": "Temperature"
    }]
  },
  "yeasts": [{
    "name": "Windsor Yeast",
    "amount": 0.023659,
    "attenuation": 0.75,
    "cultureDate": "13 Jun 2003",
    "form": "Dry",
    "type": "Ale"
  }]
}

const result = brewcalc.calculateRecipe(recipe)

log('Recipe Specs')
log('------------')
log(recipe.name)
log('Original Gravity ' + result.og + ' SG or ' + brewcalc.sgToPlato(result.og).toFixed(1) + ' °P')
log('Final Gravity ' + result.fg + ' SG or ' + brewcalc.sgToPlato(result.fg).toFixed(1) + ' °P')
log('IBU ' +...