43 |
43 |
44 |
44 |
45 $(document).ready(function () { |
45 $(document).ready(function () { |
46 |
46 |
47 var dataRecord = {}; |
47 var dataRecord = {}; |
|
48 var to_100 = false; // Fermentables adjust to 100% |
48 var preboil_sg = 0; |
49 var preboil_sg = 0; |
49 var sugarsm = 0; // Sugars after mash |
50 var sugarsm = 0; // Sugars after mash |
50 var sugarsf = 0; // Sugars after boil |
51 var sugarsf = 0; // Sugars after boil |
51 var psugar = 0; // Percentage real sugars |
52 var psugar = 0; // Percentage real sugars |
52 var pcara = 0; // Percentage cara/crystal malts |
53 var pcara = 0; // Percentage cara/crystal malts |
58 sugarsf = 0; |
59 sugarsf = 0; |
59 sugarsm = 0; |
60 sugarsm = 0; |
60 psugar = 0; |
61 psugar = 0; |
61 pcara = 0; |
62 pcara = 0; |
62 var colorw = 0; // Colors working |
63 var colorw = 0; // Colors working |
|
64 var my_100 = false; |
63 |
65 |
64 var rows = $('#fermentableGrid').jqxGrid('getrows'); |
66 var rows = $('#fermentableGrid').jqxGrid('getrows'); |
65 for (var i = 0; i < rows.length; i++) { |
67 for (var i = 0; i < rows.length; i++) { |
66 var row = rows[i]; |
68 var row = rows[i]; |
|
69 if (row.f_adjust_to_total_100) |
|
70 my_100 = true; |
67 if (row.f_type == "Sugar") |
71 if (row.f_type == "Sugar") |
68 psugar += row.f_percentage; |
72 psugar += row.f_percentage; |
69 if (row.f_type == "Crystal") |
73 if (row.f_type == "Crystal") |
70 pcara += row.f_percentage; |
74 pcara += row.f_percentage; |
71 var d = row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100); |
75 var d = row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100); |
74 sugarsm += d; |
78 sugarsm += d; |
75 } |
79 } |
76 sugarsf += d; |
80 sugarsf += d; |
77 colorw += row.f_amount * ebc_to_srm(row.f_color) / parseFloat($("#batch_size").jqxNumberInput('decimal')) * 8.34436; |
81 colorw += row.f_amount * ebc_to_srm(row.f_color) / parseFloat($("#batch_size").jqxNumberInput('decimal')) * 8.34436; |
78 } |
82 } |
|
83 if (to_100 != my_100) |
|
84 console.log("change to_100 to:"+my_100); |
|
85 to_100 = my_100; |
79 $('#est_og').val(estimate_sg(sugarsf, parseFloat($("#batch_size").jqxNumberInput('decimal')))); |
86 $('#est_og').val(estimate_sg(sugarsf, parseFloat($("#batch_size").jqxNumberInput('decimal')))); |
80 preboil_sg = estimate_sg(sugarsm, parseFloat($("#boil_size").jqxNumberInput('decimal'))); |
87 preboil_sg = estimate_sg(sugarsm, parseFloat($("#boil_size").jqxNumberInput('decimal'))); |
81 $('#est_color').val(kw_to_ebc($("#color_method").val(), colorw)); |
88 $('#est_color').val(kw_to_ebc($("#color_method").val(), colorw)); |
82 }; |
89 }; |
83 |
90 |
491 var rowData = $("#fermentableGrid").jqxGrid('getrowdata', row); |
498 var rowData = $("#fermentableGrid").jqxGrid('getrowdata', row); |
492 return "<span style='margin: 3px; margin-top: 6px; float: "+columnproperties.cellsalign+"'>" +rowData.f_name + " (" + rowData.f_color + " EBC)</span>"; |
499 return "<span style='margin: 3px; margin-top: 6px; float: "+columnproperties.cellsalign+"'>" +rowData.f_name + " (" + rowData.f_color + " EBC)</span>"; |
493 } |
500 } |
494 }, |
501 }, |
495 { text: 'Type', editable: false, width: 100, datafield: 'f_type' }, |
502 { text: 'Type', editable: false, width: 100, datafield: 'f_type' }, |
496 { text: 'Moment', editable: false, width: 100, datafield: 'f_added' }, |
503 { text: 'Moment', width: 110, align: 'center', cellsalign: 'center', datafield: 'f_added', columntype: 'dropdownlist', |
|
504 createeditor: function (row, column, editor) { |
|
505 var srcAdded = [ "Mash", "Boil", "Fermentation", "Lagering", "Bottle" ]; |
|
506 editor.jqxDropDownList({ autoDropDownHeight: true, source: srcAdded }); |
|
507 } |
|
508 }, |
497 { text: 'Opbrengst', editable: false, datafield: 'f_yield', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'p1' }, |
509 { text: 'Opbrengst', editable: false, datafield: 'f_yield', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'p1' }, |
498 { text: 'Gewicht', datafield: 'f_amount', width: 110, align: 'right', cellsalign: 'right', cellsformat: 'f3', |
510 { text: 'Gewicht Kg', datafield: 'f_amount', width: 110, align: 'right', cellsalign: 'right', cellsformat: 'f3', |
499 columntype: 'numberinput', |
511 columntype: 'numberinput', |
500 validation: function (cell, value) { |
512 validation: function (cell, value) { |
501 // Maximum weight is the batch_size, just a simple check. |
513 // Maximum weight is the batch_size, just a simple check. |
502 var maxmout = parseFloat($("#batch_size").jqxNumberInput('decimal')); |
514 var maxmout = parseFloat($("#batch_size").jqxNumberInput('decimal')); |
503 if (value < 0 || value > maxmout) { |
515 if (value < 0 || value > maxmout) { |
528 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row); |
540 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row); |
529 if (rowdata.f_adjust_to_total_100) { |
541 if (rowdata.f_adjust_to_total_100) { |
530 return oldvalue; |
542 return oldvalue; |
531 } |
543 } |
532 var diff = newvalue - oldvalue; |
544 var diff = newvalue - oldvalue; |
533 var to_100 = false; |
|
534 var tw = 0; // total weight |
545 var tw = 0; // total weight |
535 for (i = 0; i < rowscount; i++) { |
546 for (i = 0; i < rowscount; i++) { |
536 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); |
547 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); |
537 tw += rowdata.f_amount; |
548 tw += rowdata.f_amount; |
538 if (rowdata.f_adjust_to_total_100) |
|
539 to_100 = true; |
|
540 } |
549 } |
541 if (to_100) { |
550 if (to_100) { |
542 // Adjust this row and the 100% row. |
551 // Adjust this row and the 100% row. |
543 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row); |
552 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row); |
544 rowdata.f_amount += tw * diff / 100; |
553 rowdata.f_amount += tw * diff / 100; |
561 rowdata.f_amount -= nw / (rowscount - 1); |
570 rowdata.f_amount -= nw / (rowscount - 1); |
562 rowdata.f_percentage = Math.round((rowdata.f_amount / tw) * 1000) / 10.0; |
571 rowdata.f_percentage = Math.round((rowdata.f_amount / tw) * 1000) / 10.0; |
563 } |
572 } |
564 } |
573 } |
565 } |
574 } |
|
575 // $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); |
|
576 //$('#fermentableGrid').jqxGrid('render'); |
566 // console.log("diff:"+diff+" len:"+rowscount+" to100:"+to_100+" tw:"+tw); |
577 // console.log("diff:"+diff+" len:"+rowscount+" to100:"+to_100+" tw:"+tw); |
567 } |
578 } |
568 // return newvalue; |
|
569 } |
579 } |
570 }, |
580 }, |
571 { text: '100%', datafield: 'f_adjust_to_total_100', columntype: 'checkbox', width: 80 } |
581 { text: '100%', align: 'center', datafield: 'f_adjust_to_total_100', columntype: 'checkbox', width: 80, |
|
582 cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) { |
|
583 if (to_100) { |
|
584 var rowscount = $("#fermentableGrid").jqxGrid('getdatainformation').rowscount; |
|
585 for (i = 0; i < rowscount; i++) { |
|
586 if (i != row) { |
|
587 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); |
|
588 rowdata.f_adjust_to_total_100 = false; |
|
589 } |
|
590 } |
|
591 } |
|
592 } |
|
593 } |
572 ] |
594 ] |
573 }); |
595 }); |
574 $("#fermentableGrid").on('cellendedit', function (event) { |
596 $("#fermentableGrid").on('cellendedit', function (event) { |
575 var args = event.args; |
597 var args = event.args; |
576 console.log("Event Type: cellendedit, Column: " + args.datafield + ", Row: " + (args.rowindex) + ", Value: " + args.value); |
598 console.log("Event Type: cellendedit, Column: " + args.datafield + ", Row: " + (args.rowindex) + ", Value: " + args.value); |
577 // $('#fermentableGrid').jqxGrid('updatebounddata'); |
599 // $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); |
578 $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); |
|
579 calcFermentables(); |
600 calcFermentables(); |
580 }); |
601 }); |
581 }; |
602 }; |
582 |
603 |
583 // Inline hops editor |
604 // Inline hops editor |