From 9841a6d957412f95307ada12b8e9f4548282dfe1 Mon Sep 17 00:00:00 2001 From: markusfluer Date: Tue, 28 Mar 2017 12:40:27 +0200 Subject: [PATCH] Fixed issue #12076: Array of texts set to "numbers only" doesn't allow negative values --- scripts/array-totalsum.js | 56 +++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/scripts/array-totalsum.js b/scripts/array-totalsum.js index f7c6502d643..6d5fc1e294b 100644 --- a/scripts/array-totalsum.js +++ b/scripts/array-totalsum.js @@ -4,21 +4,20 @@ * */ -$( document ).ready(function() { +$(document).ready(function () { $('div.array-multi-flexi-text table.show-totals input:enabled').keyup(updatetotals); $('div.array-multi-flexi-text table.show-totals input:enabled').each(updatetotals); }); -function updatetotals() -{ +function updatetotals() { var inputValue = $(this).val(); - var sRadix=LSvar.sLEMradix; - var sTableID=$(this).closest('table').attr('id'); - var sTable=$(this).closest('table'); - var iGrandTotal=new Decimal(0); + var sRadix = LSvar.sLEMradix; + var sTableID = $(this).closest('table').attr('id'); + var sTable = $(this).closest('table'); + var iGrandTotal = new Decimal(0); - if(!normalizeValue(inputValue)){ - $(this).val(inputValue.substring(0,(inputValue.length-1))); + if (!normalizeValue(inputValue)) { + $(this).val(inputValue.substring(0, (inputValue.length - 1))); return; } @@ -38,49 +37,46 @@ function updatetotals() }); // Sum all columns // First get number of columns (only visible and enabled inputs) - var iColumnNum=$('#'+sTableID+' tbody tr:first-child input:enabled:visible').length; + var iColumnNum = $('#' + sTableID + ' tbody tr:first-child input:enabled:visible').length; //Get An array of jQuery Objects var $iRow = sTable.find('tr'); //Iterate through the columns - for (var i = 1; i <= iColumnNum; i++) - { + for (var i = 1; i <= iColumnNum; i++) { var sum = new Decimal(0); - $iRow.each(function(){ - var item = $($(this).find('td').get((i-1))).find('input:enabled:visible'), - val = normalizeValue($(item).val()); + $iRow.each(function () { + var item = $($(this).find('td').get((i - 1))).find('input:enabled:visible'), + val = normalizeValue($(item).val()); //sum the values - sum = sum.plus(val); + sum = sum.plus(val); }); - $($iRow.last().find('td').get((i-1))).find('input:disabled').val(formatValue(sum)).trigger('change').trigger('keyup').trigger('keydown'); + $($iRow.last().find('td').get((i - 1))).find('input:disabled').val(formatValue(sum)).trigger('change').trigger('keyup').trigger('keydown'); } //$('#'+sTableID+' tr:last-child td.total:nth-of-type('+iColumns+') input:disabled').val(formatValue(iGrandTotal)); $iRow.last().find('td.grand.total').find('input:disabled').val(formatValue(iGrandTotal)).trigger('change').trigger('keyup').trigger('keydown'); // Grand total } -function formatValue(sValue) -{ - sValue=Number(sValue).toString(); - var sRadix=LSvar.sLEMradix; - sValue=sValue.replace('.',sRadix); +function formatValue(sValue) { + + sValue = Number(sValue).toString(); + var sRadix = LSvar.sLEMradix; + sValue = sValue.replace('.', sRadix); return sValue; } -function normalizeValue(aValue) -{ - var regexCheck = new RegExp(/^([0-9]*)((,|\.){1}([0-9]*)){0,1}$/); - if(!regexCheck.test(aValue) && bFixNumAuto){ +function normalizeValue(aValue) { + var regexCheck = new RegExp(/^-?([0-9]*)((,|\.){1}([0-9]*)){0,1}$/); + if (!regexCheck.test(aValue) && bFixNumAuto) { return 0; } aValue = aValue || 0; var outNumber = false; try { outNumber = new Decimal(aValue); - } catch(e){} + } catch (e) {} - if(outNumber == false) - { + if (outNumber == false) { var numReplaced = aValue.toString().replace(/,/g, "."); outNumber = new Decimal(numReplaced); @@ -89,5 +85,3 @@ function normalizeValue(aValue) return outNumber; } } - -