516 return { result: false, message: "Percentage moet 0-100 zijn" }; |
516 return { result: false, message: "Percentage moet 0-100 zijn" }; |
517 } |
517 } |
518 return true; |
518 return true; |
519 }, |
519 }, |
520 initeditor: function (row, cellvalue, editor) { |
520 initeditor: function (row, cellvalue, editor) { |
521 editor.jqxNumberInput({ decimalDigits: 1 }); |
521 editor.jqxNumberInput({ decimalDigits: 1, min: 0, max: 100, spinButtons: false }); |
|
522 }, |
|
523 cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) { |
|
524 oldvalue = Math.round(oldvalue * 10) / 10.0; |
|
525 // console.log("row:"+row+" col:"+column+" type:"+columntype+" old:"+oldvalue+" new:"+newvalue); |
|
526 var rowscount = $("#fermentableGrid").jqxGrid('getdatainformation').rowscount; |
|
527 if ((oldvalue != newvalue) && (rowscount > 1)) { |
|
528 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row); |
|
529 if (rowdata.f_adjust_to_total_100) { |
|
530 return oldvalue; |
|
531 } |
|
532 var diff = newvalue - oldvalue; |
|
533 var to_100 = false; |
|
534 var tw = 0; // total weight |
|
535 for (i = 0; i < rowscount; i++) { |
|
536 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); |
|
537 tw += rowdata.f_amount; |
|
538 if (rowdata.f_adjust_to_total_100) |
|
539 to_100 = true; |
|
540 } |
|
541 if (to_100) { |
|
542 // Adjust this row and the 100% row. |
|
543 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row); |
|
544 rowdata.f_amount += tw * diff / 100; |
|
545 for (i = 0; i < rowscount; i++) { |
|
546 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); |
|
547 if (rowdata.f_adjust_to_total_100) { |
|
548 rowdata.f_percentage -= diff; |
|
549 rowdata.f_amount -= tw * diff / 100; |
|
550 } |
|
551 } |
|
552 } else { |
|
553 // Adjust all the rows. |
|
554 var nw = tw * diff / 100; |
|
555 // console.log("weight:"+nw); |
|
556 for (i = 0; i < rowscount; i++) { |
|
557 var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); |
|
558 if (i == row) { |
|
559 rowdata.f_amount += nw; |
|
560 } else { |
|
561 rowdata.f_amount -= nw / (rowscount - 1); |
|
562 rowdata.f_percentage = Math.round((rowdata.f_amount / tw) * 1000) / 10.0; |
|
563 } |
|
564 } |
|
565 } |
|
566 // console.log("diff:"+diff+" len:"+rowscount+" to100:"+to_100+" tw:"+tw); |
|
567 } |
|
568 // return newvalue; |
522 } |
569 } |
523 }, |
570 }, |
524 { text: '100%', datafield: 'f_adjust_to_total_100', columntype: 'checkbox', width: 80 } |
571 { text: '100%', datafield: 'f_adjust_to_total_100', columntype: 'checkbox', width: 80 } |
525 ] |
572 ] |
526 }); |
573 }); |
527 $("#fermentableGrid").on('cellendedit', function (event) { |
574 $("#fermentableGrid").on('cellendedit', function (event) { |
|
575 var args = event.args; |
|
576 console.log("Event Type: cellendedit, Column: " + args.datafield + ", Row: " + (args.rowindex) + ", Value: " + args.value); |
|
577 // $('#fermentableGrid').jqxGrid('updatebounddata'); |
|
578 $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); |
528 calcFermentables(); |
579 calcFermentables(); |
529 $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); |
|
530 }); |
580 }); |
531 }; |
581 }; |
532 |
582 |
533 // Inline hops editor |
583 // Inline hops editor |
534 var editHop = function (data) { |
584 var editHop = function (data) { |
673 return { result: false, message: "Volume moet 0-~ zijn" }; |
723 return { result: false, message: "Volume moet 0-~ zijn" }; |
674 } |
724 } |
675 return true; |
725 return true; |
676 } |
726 } |
677 }, |
727 }, |
678 { text: 'Gebruik', width: 110, align: 'center', cellsalign: 'center', datafield: 'h_useat' }, |
728 { text: 'Gebruik', width: 110, align: 'center', cellsalign: 'center', datafield: 'h_useat', columntype: 'dropdownlist', |
|
729 createeditor: function (row, column, editor) { |
|
730 var srcUse = [ "Boil", "Dry Hop", "Mash", "First Wort", "Aroma" ]; |
|
731 editor.jqxDropDownList({ autoDropDownHeight: true, source: srcUse }); |
|
732 } |
|
733 // cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) { |
|
734 // do iets met de h_time. |
|
735 }, |
679 { text: 'Tijd', datafield: 'h_time', width: 70, align: 'right', cellsalign: 'right', cellsformat: 'f0', |
736 { text: 'Tijd', datafield: 'h_time', width: 70, align: 'right', cellsalign: 'right', cellsformat: 'f0', |
680 columntype: 'numberinput', |
737 columntype: 'numberinput', |
681 initeditor: function (row, cellvalue, editor, celltext, pressedChar) { |
738 initeditor: function (row, cellvalue, editor, celltext, pressedChar) { |
682 editor.jqxNumberInput({ decimalDigits: 0, digits: 3, min: 0 }); |
739 editor.jqxNumberInput({ decimalDigits: 0, digits: 3, min: 0 }); |
683 }, |
740 }, |
686 if (value < 0 || value > high ) { |
743 if (value < 0 || value > high ) { |
687 return { result: false, message: "De tijd moet 0-"+high+" zijn" }; |
744 return { result: false, message: "De tijd moet 0-"+high+" zijn" }; |
688 } |
745 } |
689 return true; |
746 return true; |
690 } // TODO: Only enable editing if Boil, else use fixed values. |
747 } // TODO: Only enable editing if Boil, else use fixed values. |
|
748 // $("#grid").jqxGrid('setcolumnproperty', datafield, 'editable', event.args.checked); maar dan per cell |
691 }, |
749 }, |
692 { text: 'IBU', editable: false, datafield: 'ibu', width: 80, align: 'right', |
750 { text: 'IBU', editable: false, datafield: 'ibu', width: 80, align: 'right', |
693 cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { |
751 cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { |
694 var ibu = toIBU(rowdata.h_useat, |
752 var ibu = toIBU(rowdata.h_useat, |
695 rowdata.h_form, |
753 rowdata.h_form, |