Commit de1eecfee2bb1d4874b0e0c71995ab692f112ae2

Authored by joyfas.silva
1 parent 864dcd40
Exists in master

{Redmine tarefa-4677}

cit-portal-web/src/main/webapp/assets/js/angular/custom/directive/LabelInputDecimalDirective.js
... ... @@ -13,7 +13,7 @@ citApp.directive("labelInputDecimal", ["$translate", function($translate) {
13 13 model : "=ngModel",
14 14 form : "=form",
15 15 eventoChange : "&ngEventoChange",
16   - precisao : "=ngPrecisao",
  16 + precisao : "@ngPrecisao",
17 17 labelAlertTooltip: '@',
18 18 labelInfoTooltip: '@',
19 19 labelQuestionTooltip: '@',
... ... @@ -23,8 +23,9 @@ citApp.directive("labelInputDecimal", ["$translate", function($translate) {
23 23 restrict : 'E',
24 24 template : "<div class='form-group' ng-class=\"{'has-error': form[id].$error.required && (!form[id].$pristine || form.$submitted)}\">" +
25 25 " <label for='{{id}}' class='control-label' ng-if='labelRender'><translate>{{label}}</translate> <span class='red' ng-show='obrigatorio'>*</span> <i ng-if='obrigatorio' ng-show='form[id].$error.required && (!form[id].$pristine || form.$submitted)' class='fa fa-warning red' tooltip='{{labelAlertTooltipCopy}}' tooltip-placement='top'></i> <i ng-if='labelInfoTooltipRender' class='fa fa-info-circle blue' tooltip='{{labelInfoTooltip}}' tooltip-placement='top'></i> <i ng-if='labelQuestionTooltipRender' class='fa fa-question-circle green' tooltip='{{labelQuestionTooltip}}' tooltip-placement='top'></i></label>"+
26   - " <input type='text' class='form-control' ng-change='eventoChange()' ng-keydown='removeModel($event)' id='{{id}}' name='{{id}}' ng-model='model' ng-disabled='disabled' maxlength='{{maxlength ? maxlength : 23}}' ng-required='obrigatorio' ui-number-mask='precisao'/>" +
  26 + " <input type='text' class='form-control' ng-change='eventoChange()' ng-keydown='removeModel($event)' id='{{id}}' name='{{id}}' ng-model='model' ng-disabled='disabled' maxlength='{{maxlength ? maxlength : 23}}' ng-required='obrigatorio' ui-number-mask='{{precisao}}'/>" +
27 27 "</div>",
  28 +
28 29 controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
29 30 if($scope.id === undefined){
30 31 $scope.id = $attrs['ngModel'];
... ...
cit-portal-web/src/main/webapp/assets/js/angular/custom/directive/MasksDirective.js
... ... @@ -13,7 +13,7 @@ var StringMask = (function() {
13 13 '9': {pattern: /\d/, optional: true},
14 14 '#': {pattern: /\d/, optional: true, recursive: true},
15 15 'S': {pattern: /[a-zA-Z]/},
16   - '$': {escape: true}
  16 + '$': {escape: true}
17 17 };
18 18 var isEscaped = function(pattern, pos) {
19 19 var count = 0;
... ... @@ -24,7 +24,7 @@ var StringMask = (function() {
24 24 count += token && token.escape ? 1 : 0;
25 25 i--;
26 26 }
27   - return count > 0 && count%2 === 1;
  27 + return count > 0 && count%2 === 1;
28 28 };
29 29 var calcOptionalNumbersToUse = function(pattern, value) {
30 30 var numbersInP = pattern.replace(/[^0]/g,'').length;
... ... @@ -189,7 +189,7 @@ var objectTypes = {
189 189 };
190 190  
191 191 if (objectTypes[typeof module]) {
192   - module.exports = StringMask;
  192 + module.exports = StringMask;
193 193 }
194 194  
195 195 /**
... ... @@ -827,7 +827,7 @@ var objectTypes = {
827 827 'object': true
828 828 };
829 829 if (objectTypes[typeof module]) {
830   - module.exports = BrV;
  830 + module.exports = BrV;
831 831 } else {
832 832 root.BrV = BrV;
833 833 }
... ... @@ -1562,32 +1562,61 @@ angular.module(&#39;ui.utils.masks.number&#39;, [])
1562 1562 modelMask = NumberMasks.modelMask(decimals);
1563 1563  
1564 1564 function parse(value) {
  1565 +
1565 1566 if(!value) {
1566 1567 return value;
1567 1568 }
1568 1569  
1569   - var valueToFormat = PreFormatters.clearDelimitersAndLeadingZeros(value) || '0';
1570   - var formatedValue = viewMask.apply(valueToFormat);
1571   - var actualNumber = parseFloat(modelMask.apply(valueToFormat));
  1570 + if(attrs.uiNumberMask == 'decimal'){
  1571 +
  1572 + var pos = value.indexOf(",");
  1573 + var result;
  1574 + if (pos !== -1) {
  1575 + var part1 = value.substr(0, pos > 6 ? 6 : pos);
  1576 + var part2 = value.substr(pos > 6 ? 6 : pos + 1);
  1577 + //2 casas decimais......
  1578 + part2 = part2.substr(0,2);
  1579 + result = cleanForDecimal(part1) + "," + cleanForDecimal(part2);
  1580 + } else {
  1581 + result = cleanForDecimal(value).substr(0,6);
  1582 + }
1572 1583  
1573   - if(angular.isDefined(attrs.uiNegativeNumber)){
1574   - var isNegative = (value[0] === '-'),
1575   - needsToInvertSign = (value.slice(-1) === '-');
  1584 + result = result ==',' ? '' : result;
1576 1585  
1577   - //only apply the minus sign if it is negative or(exclusive)
1578   - //needs to be negative and the number is different from zero
1579   - if(needsToInvertSign ^ isNegative && !!actualNumber) {
1580   - actualNumber *= -1;
1581   - formatedValue = '-' + formatedValue;
  1586 + if (ctrl.$viewValue !== result) {
  1587 + ctrl.$setViewValue(result);
  1588 + ctrl.$render();
1582 1589 }
1583   - }
1584 1590  
1585   - if (ctrl.$viewValue !== formatedValue) {
1586   - ctrl.$setViewValue(formatedValue);
1587   - ctrl.$render();
  1591 + return result.length > 0 ? parseFloat(result.replace(',','.')) : 0;
  1592 + }else{
  1593 + var valueToFormat = PreFormatters.clearDelimitersAndLeadingZeros(value) || '0';
  1594 + var formatedValue = viewMask.apply(valueToFormat);
  1595 + var actualNumber = parseFloat(modelMask.apply(valueToFormat));
  1596 +
  1597 + if(angular.isDefined(attrs.uiNegativeNumber)){
  1598 + var isNegative = (value[0] === '-'),
  1599 + needsToInvertSign = (value.slice(-1) === '-');
  1600 +
  1601 + //only apply the minus sign if it is negative or(exclusive)
  1602 + //needs to be negative and the number is different from zero
  1603 + if(needsToInvertSign ^ isNegative && !!actualNumber) {
  1604 + actualNumber *= -1;
  1605 + formatedValue = '-' + formatedValue;
  1606 + }
  1607 + }
  1608 +
  1609 + if (ctrl.$viewValue !== formatedValue) {
  1610 + ctrl.$setViewValue(formatedValue);
  1611 + ctrl.$render();
  1612 + }
  1613 +
  1614 + return actualNumber;
1588 1615 }
  1616 + }
1589 1617  
1590   - return actualNumber;
  1618 + function cleanForDecimal(string) {
  1619 + return string.replace(/[^0-9]/g, "");
1591 1620 }
1592 1621  
1593 1622 ctrl.$formatters.push(function(value) {
... ...