diff -r dad62ec9af18 -r 7b2f11652d67 www/js/inv_miscs.js --- a/www/js/inv_miscs.js Wed Jan 23 22:53:24 2019 +0100 +++ b/www/js/inv_miscs.js Thu Jan 24 20:54:45 2019 +0100 @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (C) 2014-2018 + * Copyright (C) 2014-2019 * * Michiel Broek * @@ -31,8 +31,8 @@ okButton: $('#delOk'), cancelButton: $('#delCancel'), initContent: function () { - $('#delOk').jqxButton({ width: '65px', theme: theme }); - $('#delCancel').jqxButton({ width: '65px', theme: theme }); + $('#delOk').jqxButton({ template: "danger", width: '65px', theme: theme }); + $('#delCancel').jqxButton({ template: "success", width: '65px', theme: theme }); $('#delCancel').focus(); } }); @@ -41,6 +41,25 @@ $(document).ready(function () { + + var dataRecord = {}; + + function calcTotal(cost, inventory) { + + $('#totval').val(cost * (inventory / 1000)); + } + + function prompts(isweight) { + + if (isweight) { + $("#pmpt_cost").html('Prijs per kg:'); + $("#pmpt_inventory").html('Voorraad gram:'); + } else { + $("#pmpt_cost").html('Prijs per liter:'); + $("#pmpt_inventory").html('Voorraad ml:'); + } + } + var url = "includes/db_inventory_miscs.php"; // prepare the data var source = { @@ -49,14 +68,14 @@ datafields: [ { name: 'record', type: 'number' }, { name: 'name', type: 'string' }, - { name: 'type', type: 'string' }, - { name: 'use_use', type: 'string' }, - { name: 'time', type: 'float' }, + { name: 'type', type: 'int' }, + { name: 'use_use', type: 'int' }, + { name: 'time', type: 'int' }, { name: 'amount', type: 'float' }, - { name: 'amount_is_weight', type: 'bool' }, + { name: 'amount_is_weight', type: 'int' }, { name: 'use_for', type: 'string' }, { name: 'notes', type: 'string' }, - { name: 'always_on_stock', type: 'bool' }, + { name: 'always_on_stock', type: 'int' }, { name: 'inventory', type: 'float' }, { name: 'cost', type: 'float' }, { name: 'production_date', type: 'string' }, @@ -72,6 +91,7 @@ url: url, cache: false, data: data, + type: "POST", success: function (data, status, xhr) { // delete command is executed. commit(true); @@ -88,6 +108,7 @@ url: url, cache: false, data: data, + type: "POST", success: function (data, status, xhr) { commit(true); }, @@ -103,6 +124,7 @@ url: url, cache: false, data: data, + type: "POST", success: function (data, status, xhr) { // update command is executed. commit(true); @@ -113,21 +135,37 @@ }); } }; - var srcType = [ "Spice", "Fining", "Water Agent", "Herb", "Flavor", "Yeast nutrient", "Other" ]; - var srcUse = [ "Boil", "Mash", "Primary", "Secondary", "Bottling" ]; // initialize the input fields. - $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); - $("#type").jqxDropDownList({ theme: theme, source: srcType, width: 130, height: 23, dropDownHeight: 220 }); - $("#use_use").jqxDropDownList({ theme: theme, source: srcUse, width: 90, height: 23, dropDownHeight: 156 }); - $("#time").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 2, spinButtons: true }); + $("#name").jqxInput({ theme: theme, width: 640, height: 23 }); + $("#notes").jqxInput({ theme: theme, width: 800, height: 100 }); + + $("#type").jqxDropDownList({theme: theme, + source: MiscTypeAdapter, + valueMember: 'id', + displayMember: 'nl', + width: 180, + height: 23, + autoDropDownHeight: true + }); + $("#use_use").jqxDropDownList({ + theme: theme, + source: MiscUseAdapter, + valueMember: 'id', + displayMember: 'nl', + width: 180, + height: 23, + autoDropDownHeight: true + }); + $("#time").jqxNumberInput( PosInt ); $("#amount_is_weight").jqxCheckBox({ theme: theme, width: 120, height: 23 }); $("#use_for").jqxInput({ theme: theme, width: 640, height: 48 }); - $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); $("#always_on_stock").jqxCheckBox({ theme: theme, width: 120, height: 23 }); - $("#inventory").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - $("#production_date").jqxDateTimeInput({ theme: theme, width: 100, height: 23, formatString: 'yyyy-MM-dd' }); - $("#cost").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 2, spinButtons: true }); - $("#tht_date").jqxDateTimeInput({ theme: theme, width: 100, height: 23, formatString: 'yyyy-MM-dd' }); + $("#inventory").jqxNumberInput( Spin1dec1 ); + $("#production_date").jqxDateTimeInput( Dateopts ); + $("#cost").jqxNumberInput( Spin2dec1 ); + $("#tht_date").jqxDateTimeInput( Dateopts ); + $("#totval").jqxNumberInput( Spin2dec1 ); + $("#totval").jqxNumberInput({ width: 90, readOnly: true, spinButtons: false }); var dataAdapter = new $.jqx.dataAdapter(source); var editrow = -1; @@ -144,21 +182,21 @@ var addButton = $("
Nieuw
"); container.append(addButton); statusbar.append(container); - addButton.jqxButton({ theme: theme, width: 120, height: 20 }); + addButton.jqxButton({ theme: theme, width: 90, height: 20 }); // add new row. addButton.click(function (event) { editrow = -1; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + $("#popupWindow").jqxWindow({ position: { x: 110, y: 30 } }); $("#name").val(''); - $("#type").val(''); - $("#use_use").val(''); - $("#time").val(''); - $("#amount_is_weight").val(''); + $("#type").val(0); + $("#use_use").val(0); + $("#time").val(0); + $("#amount_is_weight").val(1); $("#use_for").val(''); $("#notes").val(''); - $("#always_on_stock").val(''); - $("#inventory").val(''); - $("#cost").val(''); + $("#always_on_stock").val(0); + $("#inventory").val(0); + $("#cost").val(0); $("#production_date").val(''); $("#tht_date").val(''); $("#popupWindow").jqxWindow('open'); @@ -167,21 +205,45 @@ filterable: true, filtermode: 'excel', columns: [ - { text: 'Ingredient naam', datafield: 'name', width: 525 }, - { text: 'Soort', datafield: 'type', align: 'center', cellsalign: 'center', width: 110 }, - { text: 'Gebruik', datafield: 'use_use', align: 'center', cellsalign: 'center', width: 100 }, - { text: 'Tijd', datafield: 'time', width: 90, align: 'right', cellsalign: 'right', cellsformat: 'f2' }, + { text: 'Ingredient naam', datafield: 'name' }, + { text: 'Type', datafield: 'type', align: 'center', cellsalign: 'center', width: 120, + cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { + return "
" + MiscTypeData[value].nl + "
"; + } + }, + { text: 'Gebruik', datafield: 'use_use', align: 'center', cellsalign: 'center', width: 120, + cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { + return "
" + MiscUseData[value].nl + "
"; + } + }, + { text: 'Tijd', datafield: 'time', width: 90, align: 'right', cellsalign: 'right', cellsformat: 'f0', + cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { + if (value == 0) + return "
"; + if (value == 1) + return "
1 minuut
"; + if (value < 60) + return "
"+dataAdapter.formatNumber(value, "f0")+" minuten
"; + if (value == 60) + return "
1 uur
"; + if (value < 1440) + return "
"+dataAdapter.formatNumber(value / 60, "f0")+" uren
"; + if (value == 1440) + return "
1 dag
"; + return "
"+dataAdapter.formatNumber(value / 1440, "f0")+" dagen
"; + } + }, { text: 'Voor. gr/ml.', datafield: 'inventory', width: 110, align: 'right', cellsalign: 'right' }, { text: 'Prijs kg/l', datafield: 'cost', width: 90, align: 'right', cellsalign: 'right', cellsformat: 'c2' }, { text: 'THT datum', datafield: 'tht_date', width: 100, align: 'center', cellsalign: 'center' }, - { text: 'Wijzig', datafield: 'Edit', columntype: 'button', align: 'center', cellsrenderer: function () { + { text: 'Wijzig', datafield: 'Edit', columntype: 'button', width: 100, align: 'center', cellsrenderer: function () { return "Wijzig"; }, buttonclick: function (row) { // open the popup window when the user clicks a button. editrow = row; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + $("#popupWindow").jqxWindow({ position: { x: 110, y: 30 } }); // get the clicked row's data and initialize the input fields. - var dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); + dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); $("#name").val(dataRecord.name); $("#type").val(dataRecord.type); $("#use_use").val(dataRecord.use_use); @@ -194,20 +256,47 @@ $("#cost").val(dataRecord.cost); $("#production_date").val(dataRecord.production_date); $("#tht_date").val(dataRecord.tht_date); + calcTotal(dataRecord.cost, dataRecord.inventory); + prompts(dataRecord.amount_is_weight); // 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); + }); + $("#amount_is_weight").on('checked', function (event) { + dataRecord.amount_is_weight = true; + prompts(true); + }); + $("#amount_is_weight").on('unchecked', function (event) { + dataRecord.amount_is_weight = false; + prompts(false); + }); + // initialize the popup window and buttons. $("#popupWindow").jqxWindow({ - width: 860, resizable: false, theme: theme, isModal: true, autoOpen: false, cancelButton: $("#Cancel"), modalOpacity: 0.40 + 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({ theme: theme }); + $("#Delete").jqxButton({ template: "danger", width: '90px', theme: theme }); $("#Delete").click(function () { if (editrow >= 0) { // Open a popup to confirm this action. @@ -219,49 +308,36 @@ } $("#popupWindow").jqxWindow('hide'); }); - $("#Cancel").jqxButton({ theme: theme }); - $("#Save").jqxButton({ theme: theme }); + $("#Cancel").jqxButton({ template: "primary", width: '90px', theme: theme }); + $("#Save").jqxButton({ template: "success", width: '90px', theme: theme }); // update the edited row when the user clicks the 'Save' button. $("#Save").click(function () { + var rowID = -1; if (editrow >= 0) { - var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); - var row = { - record: rowID, - name: $("#name").val(), - type: $("#type").val(), - use_use: $("#use_use").val(), - time: parseFloat($("#time").jqxNumberInput('decimal')), - amount_is_weight: $("#amount_is_weight").val(), - use_for: $("#use_for").val(), - notes: $("#notes").val(), - always_on_stock: $("#always_on_stock").val(), - inventory: parseFloat($("#inventory").jqxNumberInput('decimal')), - cost: parseFloat($("#cost").jqxNumberInput('decimal')), - production_date: $("#production_date").val(), - tht_date: $("#tht_date").val() - }; + rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + } + var row = { + record: rowID, + name: $("#name").val(), + type: $("#type").val(), + use_use: $("#use_use").val(), + time: parseFloat($("#time").jqxNumberInput('decimal')), + amount_is_weight: $("#amount_is_weight").val(), + use_for: $("#use_for").val(), + notes: $("#notes").val(), + always_on_stock: $("#always_on_stock").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); - $("#popupWindow").jqxWindow('hide'); } else { - // Insert a record - var newrow = { - record: -1, - name: $("#name").val(), - type: $("#type").val(), - use_use: $("#use_use").val(), - time: parseFloat($("#time").jqxNumberInput('decimal')), - amount_is_weight: $("#amount_is_weight").val(), - use_for: $("#use_for").val(), - notes: $("#notes").val(), - always_on_stock: $("#always_on_stock").val(), - inventory: parseFloat($("#inventory").jqxNumberInput('decimal')), - cost: parseFloat($("#cost").jqxNumberInput('decimal')), - production_date: $("#production_date").val(), - tht_date: $("#tht_date").val() - }; - $('#jqxgrid').jqxGrid('addrow', null, newrow); - $("#popupWindow").jqxWindow('hide'); + $('#jqxgrid').jqxGrid('addrow', null, row); } + $("#popupWindow").jqxWindow('hide'); + location.reload( true ); // reload ourself. }); createDelElements(); });