Skip to content

Commit fb7c250

Browse files
committed
Update to Bootstrap 4.2.1, Add Libman support
1 parent df63080 commit fb7c250

File tree

272 files changed

+863
-53099
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

272 files changed

+863
-53099
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
/src/Hops/bin
88
/src/Hops/obj
99
/src/Hops/project.lock.json
10+
/src/Hops/wwwroot/lib

Dockerfile

+3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
# First Stage
22
FROM microsoft/dotnet:2.2-sdk
33

4+
RUN dotnet tool install -g Microsoft.Web.LibraryManager.Cli
5+
46
RUN mkdir /build
57
WORKDIR /build
68

79
COPY src/Hops/ .
10+
RUN libman restore
811
RUN dotnet restore
912

1013
RUN dotnet publish -c Release -o out

azure-pipelines.yml

+11
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
resources:
22
- repo: self
33

4+
variables:
5+
- group: Hops
6+
7+
48
queue:
59
name: Hosted Ubuntu 1604
610

711
steps:
12+
- powershell: |
13+
((Get-Content -path src\Hops\Views\Shared\_Layout.cshtml -Raw) -replace '{firebaseApiKey}',$env:firebaseApiKey) | Set-Content -Path src\Hops\Views\Shared\_Layout.cshtml
14+
15+
displayName: 'Insert FirebaseApiKey'
16+
env:
17+
firebaseApiKey: $(firebaseApiKey)
18+
819
- task: Docker@1
920
displayName: 'Build an image'
1021
inputs:

src/Hops/Views/Calc/Alcohol.cshtml

+42-42
Original file line numberDiff line numberDiff line change
@@ -9,57 +9,57 @@
99
ViewBag.Title = "Alcohol Calculator - Hops";
1010
}
1111

12-
<div class="panel panel-default">
13-
<div class="panel-heading">Alcohol Calculator</div>
14-
15-
<div class="panel-body">
16-
<div class="form-group">
17-
<label for="og">Original Gravity:</label>
18-
<input type="number" class="form-control" id="og" placeholder="1.000">
19-
</div>
20-
<div class="form-group">
21-
<label for="fg">Final Gravity:</label>
22-
<input type="number" class="form-control" id="fg" placeholder="1.000">
23-
</div>
24-
<div class="form-group">
25-
<label for="oBrix">Original Brix:</label>
26-
<input type="number" class="form-control" id="oBrix">
27-
</div>
28-
<div class="form-group">
29-
<label for="mBrix">Measured Final Brix:</label>
30-
<input type="number" class="form-control" id="mBrix">
31-
<h5><small>Alcohol affects the measured index of refraction, so we need to correct for that post-fermentation using the original brix measurement.</small></h5>
32-
</div>
33-
<div class="form-group">
34-
<label for="fBrix">Final Brix:</label>
35-
<input type="number" class="form-control" id="fBrix">
36-
</div>
37-
<div class="form-group">
38-
<label for="abv">Alcohol By Volume:</label>
39-
<input type="text" class="form-control" id="abv">
40-
</div>
41-
<div class="form-group">
42-
<label for="abw">Alcohol By Weight:</label>
43-
<input type="text" class="form-control" id="abw">
44-
</div>
45-
</div>
12+
<div class="card">
13+
<div class="card-header">Alcohol Calculator</div>
14+
<div class="card-body">
15+
<div class="form-group">
16+
<label for="og">Original Gravity:</label>
17+
<input type="number" class="form-control" id="og" placeholder="1.000">
4618
</div>
19+
<div class="form-group">
20+
<label for="fg">Final Gravity:</label>
21+
<input type="number" class="form-control" id="fg" placeholder="1.000">
22+
</div>
23+
<div class="form-group">
24+
<label for="oBrix">Original Brix:</label>
25+
<input type="number" class="form-control" id="oBrix">
26+
</div>
27+
<div class="form-group">
28+
<label for="mBrix">Measured Final Brix:</label>
29+
<input type="number" class="form-control" id="mBrix">
30+
<h5><small>Alcohol affects the measured index of refraction, so we need to correct for that post-fermentation using the original brix measurement.</small></h5>
31+
</div>
32+
<div class="form-group">
33+
<label for="fBrix">Final Brix:</label>
34+
<input type="number" class="form-control" id="fBrix">
35+
</div>
36+
<div class="form-group">
37+
<label for="abv">Alcohol By Volume:</label>
38+
<input type="text" class="form-control" id="abv">
39+
</div>
40+
<div class="form-group">
41+
<label for="abw">Alcohol By Weight:</label>
42+
<input type="text" class="form-control" id="abw">
43+
</div>
44+
</div>
45+
</div>
4746

48-
<div class="panel panel-default">
49-
<div class="panel-heading">Information</div>
47+
<br/>
5048

51-
<div class="panel-body">
52-
<p>This tool allows you to convert between brix and gravity and calculates alcohol by volume (ABV) as well as alcohol by weight (ABV).</p>
49+
<div class="card">
50+
<div class="card-header">Information</div>
51+
<div class="card-body">
52+
<p>This tool allows you to convert between brix and gravity and calculates alcohol by volume (ABV) as well as alcohol by weight (ABV).</p>
5353

54-
Formula:
55-
<pre>
54+
Formula:
55+
<pre>
5656
ABV = (OG - FG) × 131
5757
ABW = ABV × 0.79336
5858
GRAVITY = BRIX ÷ (258.6 - (BRIX ÷ 258.2 × 227.1))) + 1
5959
BRIX = (((182.4601 × GRAVITY - 775.6821) × GRAVITY + 1262.7794) × GRAVITY - 669.5622)
6060
</pre>
61-
</div>
62-
</div>
61+
</div>
62+
</div>
6363

6464
<script>
6565
function brixToGravity(brix) {

src/Hops/Views/Calc/BeerXml.cshtml

+16-20
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,20 @@
1010
}
1111

1212
@section Scripts {
13-
<script src="https://unpkg.com/brauhaus@1.1.1/dist/brauhaus.min.js"></script>
13+
<script src="~/lib/brauhaus/brauhaus.min.js"></script>
1414
<script src="~/brauhaus/brauhaus-beerxml-brewtoad.js"></script>
1515
}
1616

17-
<div class="panel panel-default hidden-print">
18-
<div class="panel-heading">BeerXML Viewer</div>
19-
20-
<div class="panel-body">
17+
<div class="card">
18+
<div class="card-header">BeerXML Viewer</div>
19+
<div class="card-body">
2120
<p>Please select your recipe:</p>
2221

23-
<div class="row">
24-
<div class="form-group col-xs-3">
25-
<label class="btn btn-default hidden-print" for="my-file-selector">
26-
<input id="my-file-selector" accept="text/xml" type="file" style="display: none;" onchange="readURL(this);">
27-
<span class="glyphicon glyphicon-file" aria-hidden="true"></span> Browse...
28-
</label>
29-
</div>
22+
<div class="form-group">
23+
<label class="btn btn-primary d-print-none" for="my-file-selector">
24+
<input id="my-file-selector" accept="text/xml" type="file" style="display: none;" onchange="readURL(this);">
25+
<span class="fas file-upload" aria-hidden="true"></span> Browse...
26+
</label>
3027
</div>
3128

3229
<script>
@@ -43,7 +40,7 @@
4340
$("#style").text("a " + recipe.type + " " + recipe.style.name + " by " + recipe.author);
4441
4542
$("#stats").empty();
46-
$("#stats").append("<tr><td style='width:6%;'>OG</td> <td style='width:6%;'><strong>" + recipe.og.toFixed(3) + "</strong></td><td width='88%'>" + createBar(recipe.og, 1.000, 1.150 ,recipe.style.og[0], recipe.style.og[1]) + "</td></tr>");
43+
$("#stats").append("<tr><td style='width:6%;'>OG</td> <td style='width:6%;'><strong>" + recipe.og.toFixed(3) + "</strong></td><td width='88%'>" + createBar(recipe.og, 1.000, 1.150, recipe.style.og[0], recipe.style.og[1]) + "</td></tr>");
4744
$("#stats").append("<tr><td style='width:6%;'>FG</td> <td style='width:6%;'><strong>" + recipe.fg.toFixed(3) + "</strong></td><td width='88%'>" + createBar(recipe.fg, 1.000, 1.150, recipe.style.fg[0], recipe.style.fg[1]) + "</td></tr>");
4845
$("#stats").append("<tr><td style='width:6%;'>IBU</td> <td style='width:6%;'><strong>" + recipe.ibu.toFixed(0) + "</strong></td><td width='88%'>" + createBar(recipe.ibu, 0, 120, recipe.style.ibu[0], recipe.style.ibu[1]) + "</td></tr>");
4946
$("#stats").append("<tr><td style='width:6%;'>SRM</td> <td style='width:6%;'><strong>" + recipe.color.toFixed(0) + "</strong></td><td width='88%'>" + createBar(recipe.color, 0, 40, recipe.style.color[0], recipe.style.color[1]) + "</td></tr>");
@@ -53,7 +50,7 @@
5350
recipe.calculate();
5451
5552
$("#stats").append("<tr><td style='width:6%;'>Balance</td><td style='width:6%;'><strong>" + recipe.bv.toFixed(2) + "</strong></td><td width='88%'>" + createBar(recipe.bv, 0, 1, calcBugu(recipe.style.og[0], recipe.style.ibu[0]), calcBugu(recipe.style.og[0], recipe.style.ibu[1])) + "</td></tr>");
56-
$("#stats").append("<tr><td style='width:6%;'></td><td style='width:6%;'></td><td style='width:88%;'><h5><small>" + (isConform(recipe) ? "<span class='glyphicon glyphicon-ok' aria-hidden='true'></span> " : "") + "Recipe " + (isConform(recipe) ? "conforms" : "does not conform") + " to the <strong>" + recipe.style.name + "</strong> style.</small><h5> </td></tr>");
53+
$("#stats").append("<tr><td style='width:6%;'></td><td style='width:6%;'></td><td style='width:88%;'><h5><small>" + (isConform(recipe) ? "<span class='fas fa-check' aria-hidden='true'></span> " : "") + "Recipe " + (isConform(recipe) ? "conforms" : "does not conform") + " to the <strong>" + recipe.style.name + "</strong> style.</small><h5> </td></tr>");
5754
5855
$("#fermentables").empty();
5956
$.each(recipe.fermentables, function (index, fermentable) {
@@ -155,14 +152,13 @@
155152
</div>
156153

157154
<div id="preview" style="display: none">
158-
159-
<div class="panel panel-default">
160-
<div class="panel-body">
161155

156+
<div class="card">
157+
<div class="card-body">
162158
<button type="button" class="btn btn-default pull-right hidden-print" onclick="window.print();">
163-
<span class="glyphicon glyphicon-print" aria-hidden="true"></span> Print...
159+
<span class="fas fa-print" aria-hidden="true"></span> Print...
164160
</button>
165-
161+
166162
<h2 id="name" style="margin-top: 0;">Name</h2>
167163

168164
<h6 id="style">Style</h6>
@@ -186,7 +182,7 @@
186182
<tr><th>Name</th><th>Lab/Product</th><th>Attenuation</th></tr>
187183
<tbody id="yeasts"></tbody>
188184
</table>
189-
185+
190186
<div id="extrasTable" style="display: none">
191187
<h2>Extras</h2>
192188
<table class="table">

src/Hops/Views/Calc/Color.cshtml

+25-25
Original file line numberDiff line numberDiff line change
@@ -9,40 +9,40 @@
99
ViewBag.Title = "Color Converter - Hops";
1010
}
1111

12-
<div class="panel panel-default">
13-
<div class="panel-heading">Color Converter</div>
14-
15-
<div class="panel-body">
16-
<div class="form-group">
17-
<label for="srm">SRM:</label>
18-
<input type="number" class="form-control" id="srm">
19-
</div>
20-
<div class="form-group">
21-
<label for="lovibond">&deg;L:</label>
22-
<input type="number" class="form-control" id="lovibond">
23-
</div>
24-
<div class="form-group">
25-
<label for="ebc">EBC:</label>
26-
<input type="number" class="form-control" id="ebc">
27-
</div>
28-
</div>
12+
<div class="card">
13+
<div class="card-header">Color Converter</div>
14+
<div class="card-body">
15+
<div class="form-group">
16+
<label for="srm">SRM:</label>
17+
<input type="number" class="form-control" id="srm">
18+
</div>
19+
<div class="form-group">
20+
<label for="lovibond">&deg;L:</label>
21+
<input type="number" class="form-control" id="lovibond">
2922
</div>
23+
<div class="form-group">
24+
<label for="ebc">EBC:</label>
25+
<input type="number" class="form-control" id="ebc">
26+
</div>
27+
</div>
28+
</div>
3029

31-
<div class="panel panel-default">
32-
<div class="panel-heading">Information</div>
30+
<br />
3331

34-
<div class="panel-body">
35-
<p>This converter converts between different color values.</p>
32+
<div class="card">
33+
<div class="card-header">Information</div>
34+
<div class="card-body">
35+
<p>This converter converts between different color values.</p>
3636

37-
Formula:
38-
<pre>
37+
Formula:
38+
<pre>
3939
SRM = EBC × 0.508
4040
SRM = (1.3546 × °L) - 0.76
4141
EBC = SRM × 1.97
4242
°L = (SRM + 0.76) ÷ 1.3546
4343
</pre>
44-
</div>
45-
</div>
44+
</div>
45+
</div>
4646

4747
<script>
4848
function srm_to_lovibond(srm) {

src/Hops/Views/Calc/Hydrometer.cshtml

+36-36
Original file line numberDiff line numberDiff line change
@@ -9,48 +9,48 @@
99
ViewBag.Title = "Hydrometer Temperature Correction - Hops";
1010
}
1111

12-
<div class="panel panel-default">
13-
<div class="panel-heading">Hydrometer Temperature Correction</div>
14-
15-
<div class="panel-body">
16-
<div class="form-group">
17-
<label for="measurementSystem">Measurement System:</label>
18-
<select class="form-control" id="measurementSystem">
19-
<option value="1">U.S. Customary</option>
20-
<option value="2">Metric</option>
21-
</select>
22-
</div>
23-
<div class="form-group">
24-
<label for="measuredSg">Measured specific gravity:</label>
25-
<input type="number" class="form-control" id="measuredSg" placeholder="1.000">
26-
</div>
27-
<div class="form-group">
28-
<label for="measuredTemp">Measured temperature (&deg;<span id="measuredTempLabel">F</span>):</label>
29-
<input type="number" class="form-control" id="measuredTemp" value="120">
30-
</div>
31-
<div class="input-group">
32-
<label for="calibrationTemp">Hydrometer calibration temperature (&deg;<span id="calibrationTempLabel">F</span>):</label>
33-
<input type="number" class="form-control" id="calibrationTemp" value="68">
34-
</div>
35-
<div class="form-group">
36-
<label for="correctedSg">Corrected specific gravity:</label>
37-
<input type="text" class="form-control" id="correctedSg">
38-
</div>
39-
</div>
12+
<div class="card">
13+
<div class="card-header">Hydrometer Temperature Correction</div>
14+
<div class="card-body">
15+
<div class="form-group">
16+
<label for="measurementSystem">Measurement System:</label>
17+
<select class="form-control" id="measurementSystem">
18+
<option value="1">U.S. Customary</option>
19+
<option value="2">Metric</option>
20+
</select>
4021
</div>
22+
<div class="form-group">
23+
<label for="measuredSg">Measured specific gravity:</label>
24+
<input type="number" class="form-control" id="measuredSg" placeholder="1.000">
25+
</div>
26+
<div class="form-group">
27+
<label for="measuredTemp">Measured temperature (&deg;<span id="measuredTempLabel">F</span>):</label>
28+
<input type="number" class="form-control" id="measuredTemp" value="120">
29+
</div>
30+
<div class="input-group">
31+
<label for="calibrationTemp">Hydrometer calibration temperature (&deg;<span id="calibrationTempLabel">F</span>):</label>
32+
<input type="number" class="form-control" id="calibrationTemp" value="68">
33+
</div>
34+
<div class="form-group">
35+
<label for="correctedSg">Corrected specific gravity:</label>
36+
<input type="text" class="form-control" id="correctedSg">
37+
</div>
38+
</div>
39+
</div>
4140

42-
<div class="panel panel-default">
43-
<div class="panel-heading">Information</div>
41+
<br />
4442

45-
<div class="panel-body">
46-
<p>Correct for temperature when measuring specific gravity using a hydrometer.</p>
43+
<div class="card">
44+
<div class="card-header">Information</div>
45+
<div class="card-body">
46+
<p>Correct for temperature when measuring specific gravity using a hydrometer.</p>
4747

48-
Formula:
49-
<pre>
48+
Formula:
49+
<pre>
5050
correctedSg = measuredSg * ((1.00130346 - 0.000134722124 * measuredTemp + 0.00000204052596 * Math.pow(measuredTemp, 2) - 0.00000000232820948 * Math.pow(measuredTemp, 3)) / (1.00130346 - 0.000134722124 * calibrationTemp + 0.00000204052596 * Math.pow(calibrationTemp, 2) - 0.00000000232820948 * Math.pow(calibrationTemp, 3)))
5151
</pre>
52-
</div>
53-
</div>
52+
</div>
53+
</div>
5454

5555
<script>
5656
function celsiusToFahrenheit(celsius) {

0 commit comments

Comments
 (0)