www/js/inv_waters.js

branch
stable
changeset 665
4d01937ae7af
parent 662
4bb005694ce7
child 701
3ce3df681be0
equal deleted inserted replaced
521:9d1aa6f3a4da 665:4d01937ae7af
1 /***************************************************************************** 1 /*****************************************************************************
2 * Copyright (C) 2014-2019 2 * Copyright (C) 2014-2020
3 * 3 *
4 * Michiel Broek <mbroek at mbse dot eu> 4 * Michiel Broek <mbroek at mbse dot eu>
5 * 5 *
6 * This file is part of BrewCloud 6 * This file is part of BrewCloud
7 * 7 *
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
21 *****************************************************************************/ 21 *****************************************************************************/
22 22
23 23
24 function createDelElements() { 24 function createDelElements() {
25 $('#eventWindow').jqxWindow({ 25 $('#eventWindow').jqxWindow({
26 theme: theme, 26 theme: theme,
27 position: { x: 490, y: 210 }, 27 position: { x: 490, y: 210 },
28 width: 300, 28 width: 300,
29 height: 175, 29 height: 175,
30 resizable: false, 30 resizable: false,
31 isModal: true, 31 isModal: true,
32 modalOpacity: 0.4, 32 modalOpacity: 0.4,
33 okButton: $('#delOk'), 33 okButton: $('#delOk'),
34 cancelButton: $('#delCancel'), 34 cancelButton: $('#delCancel'),
35 initContent: function () { 35 initContent: function() {
36 $('#delOk').jqxButton({ template: "danger", width: '65px', theme: theme }); 36 $('#delOk').jqxButton({ template: 'danger', width: '65px', theme: theme });
37 $('#delCancel').jqxButton({ template: "success", width: '65px', theme: theme }); 37 $('#delCancel').jqxButton({ template: 'success', width: '65px', theme: theme });
38 $('#delCancel').focus(); 38 $('#delCancel').focus();
39 } 39 }
40 }); 40 });
41 $('#eventWindow').jqxWindow('hide'); 41 $('#eventWindow').jqxWindow('hide');
42 } 42 }
43 43
44 44
45 $(document).ready(function () { 45 $(document).ready(function() {
46 46
47 // tooltips 47 // tooltips
48 $("#name").jqxTooltip({ content: 'De unieke naam van dit brouwwater.' }); 48 $('#name').jqxTooltip({ content: 'De unieke naam van dit brouwwater.' });
49 $("#notes").jqxTooltip({ content: 'Extra opmerkingen over dit water.' }); 49 $('#notes').jqxTooltip({ content: 'Extra opmerkingen over dit water.' });
50 $("#unlimited_stock").jqxTooltip({ content: 'Onbeperkte voorraad zoals kraanwater en bronnen.' }); 50 $('#unlimited_stock').jqxTooltip({ content: 'Onbeperkte voorraad zoals kraanwater en bronnen.' });
51 $("#calcium").jqxTooltip({ content: 'Calcium (Ca).' }); 51 $('#calcium').jqxTooltip({ content: 'Calcium (Ca).' });
52 $("#bicarbonate").jqxTooltip({ content: 'Bicarbonaat (HCO3). Berekend meteen de Totale alkaliteit.' }); 52 $('#bicarbonate').jqxTooltip({ content: 'Bicarbonaat (HCO3). Berekend meteen de Totale alkaliteit.' });
53 $("#sulfate").jqxTooltip({ content: 'Calcium Sulfaat (CaSO4).' }); 53 $('#sulfate').jqxTooltip({ content: 'Calcium Sulfaat (CaSO4).' });
54 $("#chloride").jqxTooltip({ content: 'Chloride (Cl).' }); 54 $('#chloride').jqxTooltip({ content: 'Chloride (Cl).' });
55 $("#sodium").jqxTooltip({ content: 'Natrium, oftewel keukenzout (Na). In berekeningen ook vaak als Sodium.' }); 55 $('#sodium').jqxTooltip({ content: 'Natrium, oftewel keukenzout (Na). In berekeningen ook vaak als Sodium.' });
56 $("#magnesium").jqxTooltip({ content: 'Magnesium (Mg).' }); 56 $('#magnesium').jqxTooltip({ content: 'Magnesium (Mg).' });
57 $("#ph").jqxTooltip({ content: 'De zuurgraad (pH).' }); 57 $('#ph').jqxTooltip({ content: 'De zuurgraad (pH).' });
58 $("#total_alkalinity").jqxTooltip({ content: 'Totale alkaliniteit. Berekend meteen de Bicarbonaat.' }); 58 $('#total_alkalinity').jqxTooltip({ content: 'Totale alkaliniteit. Berekend meteen de Bicarbonaat.' });
59 $("#inventory").jqxTooltip({ content: 'Voorraad in liters.' }); 59 $('#balance').jqxTooltip({ content: 'De ionen balans van het water. Ideaal minder dan 0.1 verschil tussen kationen en anionen. Meer dan 0.5 is een fout in het waterraport.' });
60 $("#cost").jqxTooltip({ content: 'Kostprijs per liter. 5 cijfers achter de comma zodat het kraanwater er ook in kan.' }); 60 $('#inventory').jqxTooltip({ content: 'Voorraad in liters.' });
61 61 $('#cost').jqxTooltip({ content: 'Kostprijs per liter. 5 cijfers achter de comma zodat het kraanwater er ook in kan.' });
62 var dataRecord = {}, 62
63 url = 'includes/db_inventory_water.php', 63 var dataRecord = {},
64 // prepare the data 64 url = 'includes/db_inventory_water.php',
65 source = { 65 // prepare the data
66 datatype: "json", 66 source = {
67 cache: false, 67 datatype: 'json',
68 datafields: [ 68 cache: false,
69 { name: 'record', type: 'number' }, 69 datafields: [
70 { name: 'name', type: 'string' }, 70 { name: 'record', type: 'number' },
71 { name: 'unlimited_stock', type: 'int' }, 71 { name: 'name', type: 'string' },
72 { name: 'calcium', type: 'float' }, 72 { name: 'unlimited_stock', type: 'int' },
73 { name: 'bicarbonate', type: 'float' }, 73 { name: 'calcium', type: 'float' },
74 { name: 'sulfate', type: 'float' }, 74 { name: 'bicarbonate', type: 'float' },
75 { name: 'chloride', type: 'float' }, 75 { name: 'sulfate', type: 'float' },
76 { name: 'sodium', type: 'float' }, 76 { name: 'chloride', type: 'float' },
77 { name: 'magnesium', type: 'float' }, 77 { name: 'sodium', type: 'float' },
78 { name: 'ph', type: 'float' }, 78 { name: 'magnesium', type: 'float' },
79 { name: 'notes', type: 'string' }, 79 { name: 'ph', type: 'float' },
80 { name: 'total_alkalinity', type: 'float' }, 80 { name: 'notes', type: 'string' },
81 { name: 'inventory', type: 'float' }, 81 { name: 'total_alkalinity', type: 'float' },
82 { name: 'cost', type: 'float' } 82 { name: 'inventory', type: 'float' },
83 ], 83 { name: 'cost', type: 'float' }
84 id: 'record', 84 ],
85 url: url, 85 id: 'record',
86 deleterow: function (rowid, commit) { 86 url: url,
87 // synchronize with the server - send delete command 87 deleterow: function(rowid, commit) {
88 var data = "delete=true&" + $.param({ record: rowid }); 88 // synchronize with the server - send delete command
89 $.ajax({ 89 var data = 'delete=true&' + $.param({ record: rowid });
90 dataType: 'json', 90 $.ajax({
91 url: url, 91 dataType: 'json',
92 cache: false, 92 url: url,
93 data: data, 93 cache: false,
94 type: "POST", 94 data: data,
95 success: function (data, status, xhr) { 95 type: 'POST',
96 commit(true); 96 success: function(data, status, xhr) {
97 location.reload( true ); 97 commit(true);
98 }, 98 location.reload(true);
99 error: function (jqXHR, textStatus, errorThrown) { 99 },
100 commit(false); 100 error: function(jqXHR, textStatus, errorThrown) {
101 } 101 commit(false);
102 }); 102 }
103 }, 103 });
104 addrow: function (rowid, rowdata, position, commit) { 104 },
105 var data = "insert=true&" + $.param(rowdata); 105 addrow: function(rowid, rowdata, position, commit) {
106 $.ajax({ 106 var data = 'insert=true&' + $.param(rowdata);
107 dataType: 'json', 107 $.ajax({
108 url: url, 108 dataType: 'json',
109 cache: false, 109 url: url,
110 data: data, 110 cache: false,
111 type: "POST", 111 data: data,
112 success: function (data, status, xhr) { 112 type: 'POST',
113 commit(true); 113 success: function(data, status, xhr) {
114 location.reload( true ); 114 commit(true);
115 }, 115 location.reload(true);
116 error: function(jqXHR, textStatus, errorThrown) { 116 },
117 commit(false); 117 error: function(jqXHR, textStatus, errorThrown) {
118 } 118 commit(false);
119 }); 119 }
120 }, 120 });
121 updaterow: function (rowid, rowdata, commit) { 121 },
122 var data = "update=true&" + $.param(rowdata); 122 updaterow: function(rowid, rowdata, commit) {
123 $.ajax({ 123 var data = 'update=true&' + $.param(rowdata);
124 dataType: 'json', 124 $.ajax({
125 url: url, 125 dataType: 'json',
126 cache: false, 126 url: url,
127 data: data, 127 cache: false,
128 type: "POST", 128 data: data,
129 success: function (data, status, xhr) { 129 type: 'POST',
130 commit(true); 130 success: function(data, status, xhr) {
131 location.reload( true ); 131 commit(true);
132 }, 132 location.reload(true);
133 error: function(jqXHR, textStatus, errorThrown) { 133 },
134 commit(false); 134 error: function(jqXHR, textStatus, errorThrown) {
135 } 135 commit(false);
136 }); 136 }
137 } 137 });
138 }, 138 }
139 dataAdapter = new $.jqx.dataAdapter(source), 139 },
140 editrow = -1; 140 dataAdapter = new $.jqx.dataAdapter(source),
141 141 editrow = -1;
142 // initialize the input fields. 142
143 $("#name").jqxInput({ theme: theme, width: 640, height: 23 }); 143 // initialize the input fields.
144 $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); 144 $('#name').jqxInput({ theme: theme, width: 640, height: 23 });
145 $("#unlimited_stock").jqxCheckBox({ theme: theme, width: 120, height: 23 }); 145 $('#notes').jqxInput({ theme: theme, width: 640, height: 100 });
146 $("#calcium").jqxNumberInput( Spin1dec ); 146 $('#unlimited_stock').jqxCheckBox({ theme: theme, width: 120, height: 23 });
147 $("#bicarbonate").jqxNumberInput( Spin1dec ); 147 $('#calcium').jqxNumberInput(Spin1dec);
148 $("#sulfate").jqxNumberInput( Spin1dec ); 148 $('#bicarbonate').jqxNumberInput(Spin1dec);
149 $("#chloride").jqxNumberInput( Spin1dec ); 149 $('#sulfate').jqxNumberInput(Spin1dec);
150 $("#sodium").jqxNumberInput( Spin1dec ); 150 $('#chloride').jqxNumberInput(Spin1dec);
151 $("#magnesium").jqxNumberInput( Spin1dec ); 151 $('#sodium').jqxNumberInput(Spin1dec);
152 $("#ph").jqxNumberInput( Spin2pH ); 152 $('#magnesium').jqxNumberInput(Spin1dec);
153 $("#total_alkalinity").jqxNumberInput( Spin1dec ); 153 $('#ph').jqxNumberInput(Spin2pH);
154 $("#inventory").jqxNumberInput( Spin1dec ); 154 $('#total_alkalinity').jqxNumberInput(Spin1dec);
155 $("#cost").jqxNumberInput({inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, decimalDigits: 5, spinButtons: true }); 155 $('#balance').jqxNumberInput(Show2dec);
156 156 $('#inventory').jqxNumberInput(Spin1dec);
157 // initialize jqxGrid 157 $('#cost').jqxNumberInput({inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, decimalDigits: 5, spinButtons: true });
158 $("#jqxgrid").jqxGrid({ 158
159 width: 1280, 159 // initialize jqxGrid
160 height: 630, 160 $('#jqxgrid').jqxGrid({
161 source: dataAdapter, 161 width: 1280,
162 theme: theme, 162 height: 630,
163 showstatusbar: true, 163 source: dataAdapter,
164 renderstatusbar: function (statusbar) { 164 theme: theme,
165 var addButton, container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); 165 showstatusbar: true,
166 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>"); 166 renderstatusbar: function(statusbar) {
167 container.append(addButton); 167 var addButton, container = $('<div style="overflow: hidden; position: relative; margin: 5px;"></div>');
168 statusbar.append(container); 168 addButton = $('<div style="float: right; margin-right: 15px;"><img style="position: relative; margin-top: 2px;" ' +
169 addButton.jqxButton({ theme: theme, width: 90, height: 20 }); 169 'src="images/add.png"/><span style="margin-left: 4px; position: relative; top: -3px;">Nieuw</span></div>');
170 // add new row. 170 expButton = $('<div style="float: right; margin-right: 50px;"><img style="position: relative; margin-top: 2px;" ' +
171 addButton.click(function (event) { 171 'src="images/database.png"/><span style="margin-left: 4px; position: relative; top: -3px;">Export</span></div>');
172 editrow = -1; 172 container.append(addButton);
173 $("#popupWindow").jqxWindow({ position: { x: 110, y: 30 } }); 173 container.append(expButton);
174 $("#name").val('Nieuw brouwwater'); 174 statusbar.append(container);
175 $("#unlimited_stock").val(0); 175 addButton.jqxButton({ theme: theme, width: 90, height: 20 });
176 $("#calcium").val(0); 176 expButton.jqxButton({ theme: theme, width: 90, height: 20 });
177 $("#bicarbonate").val(0); 177 // add new row.
178 $("#sulfate").val(0); 178 addButton.click(function(event) {
179 $("#chloride").val(0); 179 editrow = -1;
180 $("#sodium").val(0); 180 $('#popupWindow').jqxWindow({ position: { x: 110, y: 30 } });
181 $("#magnesium").val(0); 181 $('#name').val('Nieuw brouwwater');
182 $("#ph").val(7); 182 $('#unlimited_stock').val(0);
183 $("#notes").val(''); 183 $('#calcium').val(0);
184 $("#total_alkalinity").val(0); 184 $('#bicarbonate').val(0);
185 $("#inventory").val(0); 185 $('#sulfate').val(0);
186 $("#cost").val(0); 186 $('#chloride').val(0);
187 $("#popupWindow").jqxWindow('open'); 187 $('#sodium').val(0);
188 }); 188 $('#magnesium').val(0);
189 }, 189 $('#ph').val(7);
190 filterable: false, 190 $('#notes').val('');
191 columns: [ 191 $('#total_alkalinity').val(0);
192 { text: 'Water leverancier', datafield: 'name', width: 225 }, 192 $('#inventory').val(0);
193 { text: 'Opmerkingen', datafield: 'notes' }, 193 $('#cost').val(0);
194 { text: 'Onbeperkt', datafield: 'unlimited_stock', columntype: 'checkbox', width: 80 }, 194 $('#popupWindow').jqxWindow('open');
195 { text: 'Voorraad', datafield: 'inventory', width: 100, align: 'right', cellsalign: 'right', cellsformat: 'f1', 195 });
196 cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { 196 expButton.click(function(event) {
197 var amount = ""; 197 window.open('export_waters.php');
198 if (value > 0 && rowdata.unlimited_stock == 0) 198 });
199 amount = dataAdapter.formatNumber(value,"f1")+" L"; 199 },
200 return "<span style='margin: 3px; margin-top: 6px; float: right;'>" + amount + "</span>"; 200 filterable: false,
201 } 201 columns: [
202 }, 202 { text: 'Water leverancier', datafield: 'name', width: 225 },
203 { text: '', datafield: 'Edit', width: 100, align: 'center', columntype: 'button', 203 { text: 'Opmerkingen', datafield: 'notes' },
204 cellsrenderer: function () { 204 { text: 'Onbeperkt', datafield: 'unlimited_stock', columntype: 'checkbox', width: 80 },
205 return "Wijzig"; 205 { text: 'Voorraad', datafield: 'inventory', width: 100, align: 'right', cellsalign: 'right', cellsformat: 'f1',
206 }, buttonclick: function (row) { 206 cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) {
207 // open the popup window when the user clicks a button. 207 var amount = '';
208 editrow = row; 208 if (value > 0 && rowdata.unlimited_stock == 0)
209 $("#popupWindow").jqxWindow({ position: { x: 110, y: 30 } }); 209 amount = dataAdapter.formatNumber(value, 'f1') + ' L';
210 // get the clicked row's data and initialize the input fields. 210 return '<span style="margin: 3px; margin-top: 6px; float: right;">' + amount + '</span>';
211 dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); 211 }
212 $("#name").val(dataRecord.name); 212 },
213 $("#unlimited_stock").val(dataRecord.unlimited_stock); 213 { text: '', datafield: 'Edit', width: 100, align: 'center', columntype: 'button',
214 $("#calcium").val(dataRecord.calcium); 214 cellsrenderer: function() {
215 $("#bicarbonate").val(dataRecord.bicarbonate); 215 return 'Wijzig';
216 $("#sulfate").val(dataRecord.sulfate); 216 }, buttonclick: function(row) {
217 $("#chloride").val(dataRecord.chloride); 217 // open the popup window when the user clicks a button.
218 $("#sodium").val(dataRecord.sodium); 218 editrow = row;
219 $("#magnesium").val(dataRecord.magnesium); 219 $('#popupWindow').jqxWindow({ position: { x: 110, y: 30 } });
220 $("#ph").val(dataRecord.ph); 220 // get the clicked row's data and initialize the input fields.
221 $("#notes").val(dataRecord.notes); 221 dataRecord = $('#jqxgrid').jqxGrid('getrowdata', editrow);
222 $("#total_alkalinity").val(dataRecord.total_alkalinity); 222 $('#name').val(dataRecord.name);
223 $("#inventory").val(dataRecord.inventory); 223 $('#unlimited_stock').val(dataRecord.unlimited_stock);
224 $("#cost").val(dataRecord.cost); 224 $('#calcium').val(dataRecord.calcium);
225 // show the popup window. 225 $('#bicarbonate').val(dataRecord.bicarbonate);
226 $("#popupWindow").jqxWindow('open'); 226 $('#sulfate').val(dataRecord.sulfate);
227 } 227 $('#chloride').val(dataRecord.chloride);
228 } 228 $('#sodium').val(dataRecord.sodium);
229 ] 229 $('#magnesium').val(dataRecord.magnesium);
230 }); 230 $('#ph').val(dataRecord.ph);
231 231 $('#notes').val(dataRecord.notes);
232 $("#total_alkalinity").on('change', function (event) { 232 $('#total_alkalinity').val(dataRecord.total_alkalinity);
233 dataRecord.bicarbonate = parseFloat(event.args.value) * 1.22; 233 $('#inventory').val(dataRecord.inventory);
234 $("#bicarbonate").val(dataRecord.bicarbonate); 234 $('#cost').val(dataRecord.cost);
235 }); 235 // show the popup window.
236 $("#bicarbonate").on('change', function (event) { 236 calcBalance();
237 dataRecord.total_alkalinity = parseFloat(event.args.value) * 50 / 61; 237 $('#popupWindow').jqxWindow('open');
238 $("#total_alkalinity").val(dataRecord.total_alkalinity); 238 }
239 }); 239 }
240 240 ]
241 // initialize the popup window and buttons. 241 });
242 $("#popupWindow").jqxWindow({ 242
243 width: 1050, 243 function calcBalance() {
244 height: 550, 244 var cations = (dataRecord.calcium / 20.039) + (dataRecord.magnesium / 12.1525) + (dataRecord.sodium / 22.989);
245 resizable: false, 245 var anions = (dataRecord.bicarbonate / 61.016) + (dataRecord.sulfate / 48.031) + (dataRecord.chloride / 35.4527);
246 theme: theme, 246 var balance = Round(cations - anions, 2);
247 isModal: true, 247 $('#balance').val(balance);
248 autoOpen: false, 248 if (balance <= 0.1 && balance >= -0.1)
249 cancelButton: $("#Cancel"), 249 $('#wr_balance').html("<img src='images/dialog-ok-apply.png'>");
250 modalOpacity: 0.40 250 else if (balance <= 0.5 && balance >= -0.5)
251 }); 251 $('#wr_balance').html("<img src='images/dialog-ok.png'>");
252 $("#popupWindow").on('open', function () { 252 else
253 $("#name").jqxInput('selectAll'); 253 $('#wr_balance').html("<img src='images/dialog-error.png'>");
254 }); 254 }
255 $("#Delete").jqxButton({ template: "danger", width: '90px', theme: theme }); 255
256 $("#Delete").click(function () { 256 $('#calcium').on('change', function(event) {
257 if (editrow >= 0) { 257 dataRecord.calcium = parseFloat(event.args.value);
258 // Open a popup to confirm this action. 258 calcBalance();
259 $('#eventWindow').jqxWindow('open'); 259 });
260 $("#delOk").click(function () { 260 $('#magnesium').on('change', function(event) {
261 var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); 261 dataRecord.magnesium = parseFloat(event.args.value);
262 $("#jqxgrid").jqxGrid('deleterow', rowID); 262 calcBalance();
263 }); 263 });
264 } 264 $('#sodium').on('change', function(event) {
265 $("#popupWindow").jqxWindow('hide'); 265 dataRecord.sodium = parseFloat(event.args.value);
266 }); 266 calcBalance();
267 $("#Cancel").jqxButton({ template: "primary", width: '90px', theme: theme }); 267 });
268 $("#Save").jqxButton({ template: "success", width: '90px', theme: theme }); 268 $('#total_alkalinity').on('change', function(event) {
269 // update the edited row when the user clicks the 'Save' button. 269 dataRecord.total_alkalinity = parseFloat(event.args.value);
270 $("#Save").click(function () { 270 dataRecord.bicarbonate = parseFloat(event.args.value) * 1.22;
271 var row, rowID = -1; 271 $('#bicarbonate').val(dataRecord.bicarbonate);
272 if (editrow >= 0) { 272 calcBalance();
273 rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); 273 });
274 } 274 $('#bicarbonate').on('change', function(event) {
275 row = { 275 dataRecord.bicarbonate = parseFloat(event.args.value);
276 record: rowID, 276 dataRecord.total_alkalinity = parseFloat(event.args.value) * 50 / 61;
277 name: $("#name").val(), 277 $('#total_alkalinity').val(dataRecord.total_alkalinity);
278 unlimited_stock: $("#unlimited_stock").val(), 278 calcBalance();
279 calcium: parseFloat($("#calcium").jqxNumberInput('decimal')), 279 });
280 bicarbonate: parseFloat($("#bicarbonate").jqxNumberInput('decimal')), 280 $('#sulfate').on('change', function(event) {
281 sulfate: parseFloat($("#sulfate").jqxNumberInput('decimal')), 281 dataRecord.sulfate = parseFloat(event.args.value);
282 chloride: parseFloat($("#chloride").jqxNumberInput('decimal')), 282 calcBalance();
283 sodium: parseFloat($("#sodium").jqxNumberInput('decimal')), 283 });
284 magnesium: parseFloat($("#magnesium").jqxNumberInput('decimal')), 284 $('#chloride').on('change', function(event) {
285 ph: parseFloat($("#ph").jqxNumberInput('decimal')), 285 dataRecord.chloride = parseFloat(event.args.value);
286 notes: $("#notes").val(), 286 calcBalance();
287 total_alkalinity: parseFloat($("#total_alkalinity").jqxNumberInput('decimal')), 287 });
288 inventory: parseFloat($("#inventory").jqxNumberInput('decimal')), 288
289 cost: parseFloat($("#cost").jqxNumberInput('decimal')) 289 // initialize the popup window and buttons.
290 }; 290 $('#popupWindow').jqxWindow({
291 if (editrow >= 0) { 291 width: 1050,
292 $('#jqxgrid').jqxGrid('updaterow', rowID, row); 292 height: 550,
293 } else { 293 resizable: false,
294 $('#jqxgrid').jqxGrid('addrow', null, row); 294 theme: theme,
295 } 295 isModal: true,
296 $("#popupWindow").jqxWindow('hide'); 296 autoOpen: false,
297 }); 297 cancelButton: $('#Cancel'),
298 createDelElements(); 298 modalOpacity: 0.40
299 });
300 $('#popupWindow').on('open', function() {
301 $('#name').jqxInput('selectAll');
302 });
303 $('#Delete').jqxButton({ template: 'danger', width: '90px', theme: theme });
304 $('#Delete').click(function() {
305 if (editrow >= 0) {
306 // Open a popup to confirm this action.
307 $('#eventWindow').jqxWindow('open');
308 $('#delOk').click(function() {
309 var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow);
310 $('#jqxgrid').jqxGrid('deleterow', rowID);
311 });
312 }
313 $('#popupWindow').jqxWindow('hide');
314 });
315 $('#Cancel').jqxButton({ template: 'primary', width: '90px', theme: theme });
316 $('#Save').jqxButton({ template: 'success', width: '90px', theme: theme });
317 // update the edited row when the user clicks the 'Save' button.
318 $('#Save').click(function() {
319 var row, rowID = -1;
320 if (editrow >= 0) {
321 rowID = $('#jqxgrid').jqxGrid('getrowid', editrow);
322 }
323 row = {
324 record: rowID,
325 name: $('#name').val(),
326 unlimited_stock: $('#unlimited_stock').val(),
327 calcium: parseFloat($('#calcium').jqxNumberInput('decimal')),
328 bicarbonate: parseFloat($('#bicarbonate').jqxNumberInput('decimal')),
329 sulfate: parseFloat($('#sulfate').jqxNumberInput('decimal')),
330 chloride: parseFloat($('#chloride').jqxNumberInput('decimal')),
331 sodium: parseFloat($('#sodium').jqxNumberInput('decimal')),
332 magnesium: parseFloat($('#magnesium').jqxNumberInput('decimal')),
333 ph: parseFloat($('#ph').jqxNumberInput('decimal')),
334 notes: $('#notes').val(),
335 total_alkalinity: parseFloat($('#total_alkalinity').jqxNumberInput('decimal')),
336 inventory: parseFloat($('#inventory').jqxNumberInput('decimal')),
337 cost: parseFloat($('#cost').jqxNumberInput('decimal'))
338 };
339 if (editrow >= 0) {
340 $('#jqxgrid').jqxGrid('updaterow', rowID, row);
341 } else {
342 $('#jqxgrid').jqxGrid('addrow', null, row);
343 }
344 $('#popupWindow').jqxWindow('hide');
345 });
346 createDelElements();
299 }); 347 });
300 348

mercurial