Thu, 05 Dec 2019 13:25:54 +0100
Version 0.3.25
/***************************************************************************** * Copyright (C) 2014-2019 * * Michiel Broek <mbroek at mbse dot eu> * * This file is part of BrewCloud * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * BrewCloud is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ThermFerm; see the file COPYING. If not, write to the Free * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *****************************************************************************/ function createDelElements() { $('#eventWindow').jqxWindow({ theme: theme, position: { x: 490, y: 210 }, width: 300, height: 175, resizable: false, isModal: true, modalOpacity: 0.4, okButton: $('#delOk'), cancelButton: $('#delCancel'), initContent: function() { $('#delOk').jqxButton({ template: 'danger', width: '65px', theme: theme }); $('#delCancel').jqxButton({ template: 'success', width: '65px', theme: theme }); $('#delCancel').focus(); } }); $('#eventWindow').jqxWindow('hide'); } $(document).ready(function() { function calcTotal(cost, inventory) { $('#totval').val(cost * inventory); } var dataRecord = {}, url = 'includes/db_inventory_fermentables.php', source = { datatype: 'json', cache: false, datafields: [ { name: 'record', type: 'number' }, { name: 'name', type: 'string' }, { name: 'type', type: 'string' }, { name: 'yield', type: 'float' }, { name: 'color', type: 'float' }, { name: 'add_after_boil', type: 'int' }, { name: 'origin', type: 'string' }, { name: 'supplier', type: 'string' }, { name: 'notes', type: 'string' }, { name: 'coarse_fine_diff', type: 'float' }, { name: 'moisture', type: 'float' }, { name: 'diastatic_power', type: 'float' }, { name: 'protein', type: 'float' }, { name: 'dissolved_protein', type: 'float' }, { name: 'max_in_batch', type: 'float' }, { name: 'recommend_mash', type: 'int' }, { name: 'added', type: 'string' }, { name: 'always_on_stock', type: 'int' }, { name: 'di_ph', type: 'float' }, { name: 'acid_to_ph_57', type: 'float' }, { name: 'graintype', type: 'string' }, { name: 'inventory', type: 'float' }, { name: 'cost', type: 'float' }, { name: 'production_date', type: 'string' }, { name: 'tht_date', type: 'string' } ], id: 'record', url: url, deleterow: function(rowid, commit) { var data = 'delete=true&' + $.param({ record: rowid }); $.ajax({ dataType: 'json', url: url, cache: false, data: data, type: 'POST', success: function(data, status, xhr) { commit(true); location.reload(true); }, error: function(jqXHR, textStatus, errorThrown) { commit(false); } }); }, addrow: function(rowid, rowdata, position, commit) { var data = 'insert=true&' + $.param(rowdata); $.ajax({ dataType: 'json', url: url, cache: false, data: data, type: 'POST', success: function(data, status, xhr) { commit(true); location.reload(true); }, error: function(jqXHR, textStatus, errorThrown) { commit(false); } }); }, updaterow: function(rowid, rowdata, commit) { var data = 'update=true&' + $.param(rowdata); $.ajax({ dataType: 'json', url: url, cache: false, data: data, type: 'POST', success: function(data, status, xhr) { commit(true); location.reload(true); }, error: function(jqXHR, textStatus, errorThrown) { commit(false); } }); } }, dataAdapter = new $.jqx.dataAdapter(source), editrow = -1; // initialize the input fields. $('#name').jqxInput({ theme: theme, width: 640, height: 23 }); $('#type').jqxDropDownList({ theme: theme, source: FermentableTypeAdapter, valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, autoDropDownHeight: true }); $('#yield').jqxNumberInput(Spin1dec); $('#color').jqxNumberInput(Spin1dec); $('#add_after_boil').jqxCheckBox({ theme: theme, width: 120, height: 23 }); $('#origin').jqxInput({ theme: theme, width: 250, height: 23 }); $('#supplier').jqxInput({ theme: theme, width: 250, height: 23 }); $('#notes').jqxInput({ theme: theme, width: 640, height: 100 }); $('#coarse_fine_diff').jqxNumberInput(Spin1dec); $('#moisture').jqxNumberInput(Spin1dec); $('#diastatic_power').jqxNumberInput(PosInt); $('#protein').jqxNumberInput(Spin1dec); $('#dissolved_protein').jqxNumberInput(Spin1dec); $('#max_in_batch').jqxNumberInput(Perc1dec); $('#recommend_mash').jqxCheckBox({ theme: theme, width: 120, height: 23 }); $('#added').jqxDropDownList({ theme: theme, source: AddedAdapter, valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, autoDropDownHeight: true }); $('#always_on_stock').jqxCheckBox({ theme: theme, width: 120, height: 23 }); $('#di_ph').jqxNumberInput(Spin2pH); $('#acid_to_ph_57').jqxNumberInput({ inputMode: 'simple', theme: theme, width: 110, height: 23, min: -1000, max: 1000, decimalDigits: 4, spinButtons: true }); $('#graintype').jqxDropDownList({ theme: theme, source: GrainTypeAdapter, valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, autoDropDownHeight: true }); $('#inventory').jqxNumberInput(Spin3dec); $('#production_date').jqxDateTimeInput(Dateopts); $('#cost').jqxNumberInput(Spin2dec); $('#tht_date').jqxDateTimeInput(Dateopts); $('#totval').jqxNumberInput(Show2dec); // initialize jqxGrid $('#jqxgrid').jqxGrid({ width: 1280, height: 630, source: dataAdapter, theme: theme, showstatusbar: true, renderstatusbar: function(statusbar) { var container, addButton, impButton; container = $('<div style="overflow: hidden; position: relative; margin: 5px;"></div>'); addButton = $('<div style="float: right; margin-right: 15px;"><img style="position: relative; margin-top: 2px;" ' + 'src="images/add.png"/><span style="margin-left: 4px; position: relative; top: -3px;">Nieuw</span></div>'); impButton = $('<div style="float: right; margin-right: 50px;"><img style="position: relative; margin-top: 2px;" ' + 'src="images/add.png"/><span style="margin-left: 4px; position: relative; top: -3px;">Import</span></div>'); container.append(addButton); container.append(impButton); statusbar.append(container); addButton.jqxButton({ theme: theme, width: 90, height: 20 }); impButton.jqxButton({ theme: theme, width: 90, height: 20 }); // add new row. addButton.click(function(event) { editrow = -1; $('#popupWindow').jqxWindow({ position: { x: 110, y: 30 } }); $('#name').val('Nieuw product'); $('#type').val('Mout'); $('#origin').val(''); $('#supplier').val(''); $('#notes').val(''); $('#yield').val(80); $('#color').val(3); $('#coarse_fine_diff').val(3); $('#moisture').val(4); $('#diastatic_power').val(0); $('#protein').val(0); $('#dissolved_protein').val(0); $('#max_in_batch').val(100); $('#recommend_mash').val(1); $('#always_on_stock').val(0); $('#di_ph').val(0); $('#acid_to_ph_57').val(0); $('#graintype').val('Basismout'); $('#add_after_boil').val(0); $('#added').val('Maischen'); $('#inventory').val(0); $('#cost').val(0); $('#production_date').val(''); $('#tht_date').val(''); $('#popupWindow').jqxWindow('open'); }); impButton.click(function(event) { window.location.href = 'import_ingredients.php?select=fermentables'; }); }, filterable: true, filtermode: 'excel', columns: [ { text: 'Herkomst', datafield: 'origin', width: 150 }, { text: 'Producent', datafield: 'supplier', width: 140 }, { text: 'Vergistbaar product', datafield: 'name', menu: false }, { text: 'Soort', width: 135, filtertype: 'list', datafield: 'type' }, { text: 'Graan type', datafield: 'graintype', align: 'center', cellsalign: 'center', width: 125 }, { text: 'EBC', datafield: 'color', width: 60, align: 'right', menu: false, cellsalign: 'right' }, { text: 'Opbrengst', datafield: 'yield', width: 70, align: 'right', menu: false, cellsalign: 'right', cellsformat: 'p1' }, { text: 'Voorraad', datafield: 'inventory', width: 100, align: 'right', menu: false, cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { var amount = ''; if (value > 0) { if (value < 1.000) amount = dataAdapter.formatNumber(value * 1000, 'f0') + ' gr'; else amount = dataAdapter.formatNumber(value, 'f1') + ' kg'; } return '<span style="margin: 3px; margin-top: 6px; float: right;">' + amount + '</span>'; } }, { text: '', datafield: 'Edit', width: 100, align: 'center', menu: false, columntype: 'button', cellsrenderer: function() { return 'Wijzig'; }, buttonclick: function(row) { // open the popup window when the user clicks a button. editrow = row; $('#popupWindow').jqxWindow({ position: { x: 110, y: 30 } }); // get the clicked row's data and initialize the input fields. dataRecord = $('#jqxgrid').jqxGrid('getrowdata', editrow); $('#name').val(dataRecord.name); $('#type').val(dataRecord.type); $('#yield').val(dataRecord.yield); $('#color').val(dataRecord.color); $('#add_after_boil').val(dataRecord.add_after_boil); $('#origin').val(dataRecord.origin); $('#supplier').val(dataRecord.supplier); $('#notes').val(dataRecord.notes); $('#coarse_fine_diff').val(dataRecord.coarse_fine_diff); $('#moisture').val(dataRecord.moisture); $('#diastatic_power').val(lintner_to_kolbach(dataRecord.diastatic_power)); $('#protein').val(dataRecord.protein); $('#dissolved_protein').val(dataRecord.dissolved_protein); $('#max_in_batch').val(dataRecord.max_in_batch); $('#recommend_mash').val(dataRecord.recommend_mash); $('#added').val(dataRecord.added); $('#always_on_stock').val(dataRecord.always_on_stock); $('#di_ph').val(dataRecord.di_ph); $('#acid_to_ph_57').val(dataRecord.acid_to_ph_57); $('#graintype').val(dataRecord.graintype); $('#inventory').val(dataRecord.inventory); $('#cost').val(dataRecord.cost); $('#production_date').val(dataRecord.production_date); $('#tht_date').val(dataRecord.tht_date); calcTotal(dataRecord.cost, dataRecord.inventory); // show the popup window. $('#popupWindow').jqxWindow('open'); } } ] }); $('#cost').on('change', function(event) { dataRecord.cost = parseFloat(event.args.value); calcTotal(dataRecord.cost, dataRecord.inventory); }); $('#inventory').on('change', function(event) { dataRecord.inventory = parseFloat(event.args.value); calcTotal(dataRecord.cost, dataRecord.inventory); }); // initialize the popup window and buttons. $('#popupWindow').jqxWindow({ width: 1050, height: 550, resizable: false, theme: theme, isModal: true, autoOpen: false, cancelButton: $('#Cancel'), modalOpacity: 0.40 }); $('#popupWindow').on('open', function() { $('#name').jqxInput('selectAll'); }); $('#Delete').jqxButton({ template: 'danger', width: '90px', theme: theme }); $('#Delete').click(function() { if (editrow >= 0) { // Open a popup to confirm this action. $('#eventWindow').jqxWindow('open'); $('#delOk').click(function() { var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); $('#jqxgrid').jqxGrid('deleterow', rowID); }); } $('#popupWindow').jqxWindow('hide'); }); $('#Cancel').jqxButton({ template: 'primary', width: '90px', theme: theme }); $('#Clone').jqxButton({ template: 'warning', width: '90px', theme: theme }); $('#Clone').click(function() { var row = { record: -1, name: $('#name').val() + ' kopie', type: $('#type').val(), yield: parseFloat($('#yield').jqxNumberInput('decimal')), color: parseFloat($('#color').jqxNumberInput('decimal')), add_after_boil: $('#add_after_boil').val(), origin: $('#origin').val(), supplier: $('#supplier').val(), notes: $('#notes').val(), coarse_fine_diff: parseFloat($('#coarse_fine_diff').jqxNumberInput('decimal')), moisture: parseFloat($('#moisture').jqxNumberInput('decimal')), diastatic_power: kolbach_to_lintner(parseFloat($('#diastatic_power').jqxNumberInput('decimal'))), protein: parseFloat($('#protein').jqxNumberInput('decimal')), dissolved_protein: parseFloat($('#dissolved_protein').jqxNumberInput('decimal')), max_in_batch: parseFloat($('#max_in_batch').jqxNumberInput('decimal')), recommend_mash: $('#recommend_mash').val(), added: $('#added').val(), always_on_stock: $('#always_on_stock').val(), di_ph: parseFloat($('#di_ph').jqxNumberInput('decimal')), acid_to_ph_57: parseFloat($('#acid_to_ph_57').jqxNumberInput('decimal')), graintype: $('#graintype').val(), inventory: 0, cost: parseFloat($('#cost').jqxNumberInput('decimal')), production_date: '', tht_date: '' }; $('#jqxgrid').jqxGrid('addrow', null, row); $('#popupWindow').jqxWindow('hide'); }); $('#Save').jqxButton({ template: 'success', width: '90px', theme: theme }); // update the edited row when the user clicks the 'Save' button. $('#Save').click(function() { var row, rowID = -1; if (editrow >= 0) { rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); } row = { record: rowID, name: $('#name').val(), type: $('#type').val(), yield: parseFloat($('#yield').jqxNumberInput('decimal')), color: parseFloat($('#color').jqxNumberInput('decimal')), add_after_boil: $('#add_after_boil').val(), origin: $('#origin').val(), supplier: $('#supplier').val(), notes: $('#notes').val(), coarse_fine_diff: parseFloat($('#coarse_fine_diff').jqxNumberInput('decimal')), moisture: parseFloat($('#moisture').jqxNumberInput('decimal')), diastatic_power: kolbach_to_lintner(parseFloat($('#diastatic_power').jqxNumberInput('decimal'))), protein: parseFloat($('#protein').jqxNumberInput('decimal')), dissolved_protein: parseFloat($('#dissolved_protein').jqxNumberInput('decimal')), max_in_batch: parseFloat($('#max_in_batch').jqxNumberInput('decimal')), recommend_mash: $('#recommend_mash').val(), added: $('#added').val(), always_on_stock: $('#always_on_stock').val(), di_ph: parseFloat($('#di_ph').jqxNumberInput('decimal')), acid_to_ph_57: parseFloat($('#acid_to_ph_57').jqxNumberInput('decimal')), graintype: $('#graintype').val(), inventory: parseFloat($('#inventory').jqxNumberInput('decimal')), cost: parseFloat($('#cost').jqxNumberInput('decimal')), production_date: $('#production_date').val(), tht_date: $('#tht_date').val(), }; if (editrow >= 0) { $('#jqxgrid').jqxGrid('updaterow', rowID, row); } else { $('#jqxgrid').jqxGrid('addrow', null, row); } $('#popupWindow').jqxWindow('hide'); }); createDelElements(); });