www/js/inv_yeasts.js

Sun, 08 Mar 2020 19:52:39 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 08 Mar 2020 19:52:39 +0100
changeset 630
ffe0416614b3
parent 583
5d152961762b
child 701
3ce3df681be0
permissions
-rw-r--r--

Added short_desc to the yeast inventory database for short remarks in the yeastlab pdf list

/*****************************************************************************
 * Copyright (C) 2014-2020
 *
 * 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() {

  $('#totval').val(dataRecord.cost * dataRecord.inventory);
  if (dataRecord.form == 'Vloeibaar') { // Liquid
   $('#pmpt_cost').html('Prijs per pak:');
   $('#pmpt_inventory').html('Voorraad pak(ken):');
   $('#pmpt_cells').html('Miljard cellen per pak:');
   $('#inventory').jqxNumberInput({ decimalDigits: 0 });
  } else if (dataRecord.form == 'Droog' || dataRecord.form == 'Gedroogd') { // Dry
   $('#pmpt_cost').html('Prijs per kg:');
   $('#pmpt_inventory').html('Voorraad gram:');
   $('#pmpt_cells').html('Miljard cellen per gram:');
   $('#inventory').jqxNumberInput({ decimalDigits: 1 });
  } else {
   $('#pmpt_cost').html('Prijs per liter:');
   $('#pmpt_inventory').html('Voorraad ml:');
   $('#pmpt_cells').html('Miljard cellen per ml:');
   $('#inventory').jqxNumberInput({ decimalDigits: 1 });
  }
 }

 var dataRecord = {},
 url = 'includes/db_inventory_yeasts.php',
 source = {
  datatype: 'json',
  cache: false,
  datafields: [
   { name: 'record', type: 'number' },
   { name: 'name', type: 'string' },
   { name: 'type', type: 'string' },
   { name: 'form', type: 'string' },
   { name: 'laboratory', type: 'string' },
   { name: 'product_id', type: 'string' },
   { name: 'min_temperature', type: 'float' },
   { name: 'max_temperature', type: 'float' },
   { name: 'flocculation', type: 'int' },
   { name: 'attenuation', type: 'float' },
   { name: 'notes', type: 'string' },
   { name: 'best_for', type: 'string' },
   { name: 'max_reuse', type: 'int' },
   { name: 'inventory', type: 'float' },
   { name: 'cost', type: 'float' },
   { name: 'production_date', type: 'string' },
   { name: 'tht_date', type: 'string' },
   { name: 'cells', type: 'float' },
   { name: 'tolerance', type: 'float' },
   { name: 'sta1', type: 'int' },
   { name: 'bacteria', type: 'int' },
   { name: 'harvest_top', type: 'int' },
   { name: 'harvest_time', type: 'int' },
   { name: 'pitch_temperature', type: 'float' },
   { name: 'pofpos', type: 'int' },
   { name: 'zymocide', type: 'int' },
   { name: 'short_desc', type: 'string' }
  ],
  id: 'record',
  url: url,
  deleterow: function(rowid, commit) {
   // synchronize with the server - send delete command
   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 });
 $('#laboratory').jqxInput({ theme: theme, width: 320, height: 23 });
 $('#short_desc').jqxInput({ theme: theme, width: 320, height: 23 });
 $('#product_id').jqxInput({ theme: theme, width: 320, height: 23 });
 $('#type').jqxDropDownList({
  theme: theme,
  source: YeastTypeAdapter,
  valueMember: 'nl',
  displayMember: 'nl',
  width: 180,
  height: 23,
  autoDropDownHeight: true
 });
 $('#form').jqxDropDownList({
  theme: theme,
  source: YeastFormAdapter,
  valueMember: 'nl',
  displayMember: 'nl',
  width: 180,
  height: 23,
  autoDropDownHeight: true
 });
 $('#notes').jqxInput({ theme: theme, width: 800, height: 120 });
 $('#best_for').jqxInput({ theme: theme, width: 320, height: 100 });
 $('#inventory').jqxNumberInput(Spin1dec);
 $('#production_date').jqxDateTimeInput(Dateopts);
 $('#min_temperature').jqxNumberInput(YeastT);
 $('#max_temperature').jqxNumberInput(YeastT);
 $('#flocculation').jqxDropDownList({
  theme: theme,
  source: FlocculationAdapter,
  valueMember: 'id',
  displayMember: 'nl',
  width: 180,
  height: 23,
  autoDropDownHeight: true
 });
 $('#attenuation').jqxNumberInput(Perc1dec);
 $('#max_reuse').jqxNumberInput(PosInt);
 $('#max_reuse').jqxNumberInput({ max: 10 });
 $('#cost').jqxNumberInput(Spin2dec);
 $('#tht_date').jqxDateTimeInput(Dateopts);
 $('#totval').jqxNumberInput(Show2dec);
 $('#cells').jqxNumberInput(Spin1dec);
 $('#tolerance').jqxNumberInput(Perc1dec);
 $('#tolerance').jqxNumberInput({ max: 25 });
 $('#sta1').jqxCheckBox({ theme: theme, width: 120, height: 23 });
 $('#sta1').on('checked', function(event) { dataRecord.sta1 = 1; });
 $('#sta1').on('unchecked', function(event) { dataRecord.sta1 = 0; });
 $('#bacteria').jqxCheckBox({ theme: theme, width: 120, height: 23 });
 $('#bacteria').on('checked', function(event) { dataRecord.bacteria = 1; });
 $('#bacteria').on('unchecked', function(event) { dataRecord.bacteria = 0; });
 $('#harvest_top').jqxCheckBox({ theme: theme, width: 120, height: 23 });
 $('#harvest_top').on('checked', function(event) { dataRecord.harvest_top = 1; });
 $('#harvest_top').on('unchecked', function(event) { dataRecord.harvest_top = 0; });
 $('#harvest_time').jqxNumberInput(PosInt);
 $('#pitch_temperature').jqxNumberInput(YeastT);
 $('#pofpos').jqxCheckBox({ theme: theme, width: 120, height: 23 });
 $('#pofpos').on('checked', function(event) { dataRecord.pofpos = 1; });
 $('#pofpos').on('unchecked', function(event) { dataRecord.pofpos = 0; });
 $('#zymocide').jqxDropDownList({
  theme: theme,
  source: ZymocideAdapter,
  valueMember: 'id',
  displayMember: 'nl',
  width: 80,
  height: 23,
  autoDropDownHeight: true
 });

 // 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>');
   expButton = $('<div style="float: right; margin-right: 50px;"><img style="position: relative; margin-top: 2px;" ' +
     'src="images/database.png"/><span style="margin-left: 4px; position: relative; top: -3px;">Export</span></div>');
   container.append(addButton);
   container.append(impButton);
   container.append(expButton);
   statusbar.append(container);
   addButton.jqxButton({ theme: theme, width: 90, height: 20 });
   impButton.jqxButton({ theme: theme, width: 90, height: 20 });
   expButton.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('');
    $('#laboratory').val('');
    $('#short_desc').val('');
    $('#product_id').val('');
    $('#type').val('Bovengist');
    $('#form').val('Vloeibaar');
    $('#min_temperature').val(18);
    $('#max_temperature').val(22);
    $('#flocculation').val(0);
    $('#attenuation').val(77);
    $('#notes').val('');
    $('#best_for').val('');
    $('#max_reuse').val(10);
    $('#inventory').val(0);
    $('#cost').val(0);
    $('#production_date').val('');
    $('#tht_date').val('');
    $('#cells').val(1);
    $('#tolerance').val(0);
    $('#sta1').val(0);
    $('#bacteria').val(0);
    $('#harvest_top').val(0);
    $('#harvest_time').val(0);
    $('#pitch_temperature').val(0);
    $('#pofpos').val(0);
    $('#zymocide').val(0);
    $('#popupWindow').jqxWindow('open');
   });
   impButton.click(function(event) {
    window.location.href = 'import_ingredients.php?select=yeasts';
   });
   expButton.click(function(event) {
    window.open('export_yeasts.php');
   });
  },
  filterable: true,
  filtermode: 'excel',
  columns: [
   { text: 'Laboratorium', datafield: 'laboratory', width: 150 },
   { text: 'Product ID', datafield: 'product_id', width: 120, menu: false },
   { text: 'Gist naam', datafield: 'name', menu: false },
   { text: 'Type', datafield: 'type', align: 'center', cellsalign: 'center', width: 110 },
   { text: 'Vorm', datafield: 'form', align: 'center', cellsalign: 'center', width: 110 },
   { text: 'SVG', datafield: 'attenuation', width: 70, align: 'right', cellsalign: 'right', menu: false, cellsformat: 'p1' },
   { text: 'Tol%', datafield: 'tolerance', width: 60, align: 'right', cellsalign: 'right', menu: false,
    cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) {
     var amount = '';
     if (value > 0)
      amount = dataAdapter.formatNumber(value, 'p1');
     return '<span style="margin: 4px; margin-top: 6px; float: right;">' + amount + '</span>';
    }
   },
   { text: 'Voorraad', datafield: 'inventory', width: 100, align: 'right', menu: false,
    cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) {
     var amount = '';
     if (value > 0) {
      if ((rowdata.form == 'Vloeibaar') && (value > 1))
       amount = dataAdapter.formatNumber(value, 'f0') + ' pakken';
      else if (rowdata.form == 'Vloeibaar')
       amount = dataAdapter.formatNumber(value, 'f0') + ' pak';
      else if (rowdata.form == 'Droog' || rowdata.form == 'Gedroogd')
       amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gram';
      else
       amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' ml';
     }
     return '<span style="margin: 3px; margin-top: 6px; float: right;">' + amount + '</span>';
    }
   },
   { text: '', datafield: 'Edit', columntype: 'button', width: 100, align: 'center', menu: false, 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: 15 } });
     // get the clicked row's data and initialize the input fields.
     dataRecord = $('#jqxgrid').jqxGrid('getrowdata', editrow);
     $('#name').val(dataRecord.name);
     $('#laboratory').val(dataRecord.laboratory);
     $('#product_id').val(dataRecord.product_id);
     $('#type').val(dataRecord.type);
     $('#form').val(dataRecord.form);
     $('#min_temperature').val(parseFloat(dataRecord.min_temperature));
     $('#max_temperature').val(parseFloat(dataRecord.max_temperature));
     $('#flocculation').val(dataRecord.flocculation);
     $('#attenuation').val(dataRecord.attenuation);
     $('#notes').val(dataRecord.notes);
     $('#best_for').val(dataRecord.best_for);
     $('#max_reuse').val(dataRecord.max_reuse);
     if (dataRecord.form == 'Vloeibaar')
      $('#inventory').val(dataRecord.inventory);
     else
      $('#inventory').val(dataRecord.inventory * 1000);
     $('#cost').val(dataRecord.cost);
     $('#production_date').val(dataRecord.production_date);
     $('#tht_date').val(dataRecord.tht_date);
     $('#cells').val(dataRecord.cells);
     $('#tolerance').val(dataRecord.tolerance);
     $('#sta1').val(dataRecord.sta1);
     $('#bacteria').val(dataRecord.bacteria);
     $('#harvest_top').val(dataRecord.harvest_top);
     $('#harvest_time').val(dataRecord.harvest_time);
     $('#pitch_temperature').val(parseFloat(dataRecord.pitch_temperature));
     $('#pofpos').val(dataRecord.pofpos);
     $('#zymocide').val(dataRecord.zymocide);
     $('#short_desc').val(dataRecord.short_desc);
     calcTotal();
     // show the popup window.
     $('#popupWindow').jqxWindow('open');
    }
   }
  ]
 });

 $('#popupWindow').on('open', function(event) { calcTotal(); });
 $('#cost').on('change', function(event) {
  dataRecord.cost = parseFloat(event.args.value);
  calcTotal();
 });
 $('#inventory').on('change', function(event) {
  if (dataRecord.form == 'Vloeibaar')
   dataRecord.inventory = parseFloat(event.args.value);
  else
   dataRecord.inventory = parseFloat(event.args.value) / 1000.0;
  calcTotal();
 });
 $('#form').on('select', function(event) {
  dataRecord.form = $('#form').val();
  calcTotal();
 });

 // initialize the popup window and buttons.
 $('#popupWindow').jqxWindow({
  width: 1050,
  height: 625,
  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(),
   form: $('#form').val(),
   laboratory: $('#laboratory').val(),
   product_id: $('#product_id').val(),
   min_temperature: parseFloat($('#min_temperature').jqxNumberInput('decimal')),
   max_temperature: parseFloat($('#max_temperature').jqxNumberInput('decimal')),
   flocculation: $('#flocculation').val(),
   attenuation: parseFloat($('#attenuation').jqxNumberInput('decimal')),
   notes: $('#notes').val(),
   best_for: $('#best_for').val(),
   max_reuse: parseInt($('#max_reuse').jqxNumberInput('decimal')),
   inventory: 0,
   cost: parseFloat($('#cost').jqxNumberInput('decimal')),
   production_date: '',
   tht_date: '',
   cells: parseFloat($('#cells').jqxNumberInput('decimal')),
   tolerance: parseFloat($('#tolerance').jqxNumberInput('decimal')),
   sta1: $('#sta1').val(),
   bacteria: $('#bacteria').val(),
   harvest_top: $('#harvest_top').val(),
   harvest_time: $('#harvest_time').val(),
   pitch_temperature: parseFloat($('#pitch_temperature').jqxNumberInput('decimal')),
   pofpos: $('#pofpos').val(),
   zymocide: $('#zymocide').val()
  };
  $('#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 n_inventory, row, rowID = -1;
  if (editrow >= 0) {
   rowID = $('#jqxgrid').jqxGrid('getrowid', editrow);
  }
  if (dataRecord.form == 'Vloeibaar')
   n_inventory = parseFloat($('#inventory').jqxNumberInput('decimal'));
  else
   n_inventory = parseFloat($('#inventory').jqxNumberInput('decimal')) / 1000.0;
  row = {
   record: rowID,
   name: $('#name').val(),
   type: $('#type').val(),
   form: $('#form').val(),
   laboratory: $('#laboratory').val(),
   product_id: $('#product_id').val(),
   min_temperature: parseFloat($('#min_temperature').jqxNumberInput('decimal')),
   max_temperature: parseFloat($('#max_temperature').jqxNumberInput('decimal')),
   flocculation: $('#flocculation').val(),
   attenuation: parseFloat($('#attenuation').jqxNumberInput('decimal')),
   notes: $('#notes').val(),
   best_for: $('#best_for').val(),
   max_reuse: parseInt($('#max_reuse').jqxNumberInput('decimal')),
   inventory: n_inventory,
   cost: parseFloat($('#cost').jqxNumberInput('decimal')),
   production_date: $('#production_date').val(),
   tht_date: $('#tht_date').val(),
   cells: parseFloat($('#cells').jqxNumberInput('decimal')),
   tolerance: parseFloat($('#tolerance').jqxNumberInput('decimal')),
   sta1: $('#sta1').val(),
   bacteria: $('#bacteria').val(),
   harvest_top: $('#harvest_top').val(),
   harvest_time: $('#harvest_time').val(),
   pitch_temperature: parseFloat($('#pitch_temperature').jqxNumberInput('decimal')),
   pofpos: $('#pofpos').val(),
   zymocide: $('#zymocide').val(),
   short_desc: $('#short_desc').val()
  };
  if (editrow >= 0) {
   $('#jqxgrid').jqxGrid('updaterow', rowID, row);
  } else {
   $('#jqxgrid').jqxGrid('addrow', null, row);
  }
  $('#popupWindow').jqxWindow('hide');
 });
 createDelElements();
});

mercurial