# HG changeset patch # User Michiel Broek # Date 1624022815 -7200 # Node ID 30abc8024afebac0e5d58c071781567c3e34d87a # Parent a59ecd6d72f48b3b5bad577063d65acf13770690 The php/ajax combo for split btaches is the first that will do a better job handling errors. Split batch leftover calculations rounded to 1 decimal. Refuse to split and leave nothing in the main batch diff -r a59ecd6d72f4 -r 30abc8024afe www/includes/db_divides.php --- a/www/includes/db_divides.php Sun Jun 13 19:36:42 2021 +0200 +++ b/www/includes/db_divides.php Fri Jun 18 15:26:55 2021 +0200 @@ -16,6 +16,11 @@ $rreplacements = array("\\'"); $disallowed = array('visibleindex','uniqueid','boundindex','uid','h_weight','m_weight'); +$response = array( + 'error' => false, + 'msg' => 'Ok', +); + /* * Server side split batch. Parameters: * record = original record. @@ -30,7 +35,6 @@ if (isset($_POST['record']) && isset($_POST['divide_type']) && isset($_POST['divide_parts']) && isset($_POST['divide_data'])) { - $rc = 0; $record = $_POST['record']; $divide_parts = $_POST['divide_parts']; $divide_type = $_POST['divide_type']; @@ -85,7 +89,7 @@ $sql .= "', divide_part='" . $index; $sql .= "', divide_size='" . floatval($split['size']); $sql .= "', divide_factor='". $factor; - syslog(LOG_NOTICE, "db_divide: index " . $index . " " . $sql); + // syslog(LOG_NOTICE, "db_divide: index " . $index . " " . $sql); } else { /* @@ -359,8 +363,9 @@ $sql .= "' WHERE record='" . $record . "';"; $result2 = mysqli_query($link, $sql); if (! $result2) { - syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link)); - $rc = 1; + syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link)); + $response['error'] = true; + $response['msg'] = "Update master result: ".mysqli_error($link); break; } else { syslog(LOG_NOTICE, "db_divide: updated record ".$record." code ".$split['code']); @@ -369,8 +374,9 @@ $sql .= "';"; $result2 = mysqli_query($link, $sql); if (! $result2) { + $response['error'] = true; + $response['msg'] = "Insert split record result: ".mysqli_error($link); syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link)); - $rc = 1; break; } else { $lastid = mysqli_insert_id($link); @@ -405,14 +411,13 @@ } } - syslog(LOG_NOTICE, "db_divide: rc=".$rc); - echo $rc; } else { syslog(LOG_NOTICE, "db_divide: missing arguments"); - echo 1; + $response['error'] = true; + $response['msg'] = "missing arguments"; } - +echo json_encode($response); ?> diff -r a59ecd6d72f4 -r 30abc8024afe www/js/prod_divide.js --- a/www/js/prod_divide.js Sun Jun 13 19:36:42 2021 +0200 +++ b/www/js/prod_divide.js Fri Jun 18 15:26:55 2021 +0200 @@ -39,7 +39,7 @@ leftover = Round(available, 1); for (i = 0; i < rows.length; i++) { row = rows[i]; - leftover -= row.split_size; + leftover = Round(leftover - row.split_size, 1); console.log('i:' + i + ' split_size:' + row.split_size); } $('#leftover').val(leftover); @@ -298,7 +298,6 @@ $('#stage').val(StageData[dataRecord.stage].nl); // Disable stages that are already done. for (i = 0; i < SplitData.length; i++) { - console.log('i:' + i + ' ok:' + SplitData[i].ok + ' stage:' + dataRecord.stage); if (SplitData[i].ok < dataRecord.stage) $('#divide_type').jqxDropDownList('disableAt', i); } @@ -363,7 +362,7 @@ id = $('#splitGrid').jqxGrid('getrowid', rowscount - 1); // First, give back this batch volume. row = $('#splitGrid').jqxGrid('getrowdata', id); - leftover += row.split_size; + leftover = Round(leftover + row.split_size, 1); if (leftover > available) leftover = available; $('#leftover').val(leftover); @@ -440,7 +439,6 @@ break; } leftover = available; -// minvolume = Round(0.1 * available, 1); /* What was the use for this ?? */ console.log('divide_type:' + index + ' available:' + available); $('#available').val(available); $('#leftover').val(leftover); @@ -459,7 +457,10 @@ $('#Save').jqxButton({ template: 'success', width: '80px', theme: theme }); $('#Save').bind('click', function() { var rows, row, i, div, data; - if (leftover != available) { + if (! leftover) { + console.log('Save and no volume left'); + alert('Fout, er is geen volume over in de hoofd batch.'); + } else if (leftover != available) { console.log('Save and there are splits'); // Send all the info to the database. The server handles the splitting. @@ -498,15 +499,19 @@ cache: false, data: data, type: 'POST', - success: function(data, status, xhr) { - console.log('insert divides: success'); + success: function(data) { + if (data.error) { + console.log('insert divides: error ' + data.msg); + alert('Fout: ' + data.msg); + } else { + console.log('insert divides: success'); + } window.location.href = my_return; }, error: function(jqXHR, textStatus, errorThrown) { console.log('insert divides: ' + textStatus); } }); - - } + } // if (leftover != available) }); });