Yang UI, Yang Utils - split services into separate files
[dlux.git] / modules / common-yangutils-resources / src / main / resources / yangutils / services / restrictions.services.js
1 define([], function () {
2     'use strict';
3
4     function RestrictionsService(){
5         var RestrictionObject = function(fnc, info) {
6             this.info = info;
7             this.check = fnc;
8         };
9
10         var convertToInteger = function(value) {
11             var strVal = typeof value === 'string' ? value : value.toString(),
12                 radix = strVal.indexOf('0x') === 0 ? 16 : strVal.indexOf('0') === 0 ? 8 : 10;
13
14             return parseInt(strVal, radix);
15         };
16
17         var restrictions = {};
18
19         restrictions.getEqualsFnc = function (target) {
20             var intTarget = parseInt(target);
21
22             return new RestrictionObject(
23                 function (value) {
24                     var intVal = convertToInteger(value);
25                     return intVal === intTarget;
26                 },
27                 'Value must be equal to '+target
28             );
29         };
30
31         restrictions.getMinMaxFnc = function (min, max) {
32             var intMin = parseInt(min),
33                 intMax = parseInt(max);
34
35             return new RestrictionObject(
36                 function (value) {
37                     var intVal = convertToInteger(value);
38                     return (intMin <= intVal) && (intVal <= intMax);
39                 },
40                 'Value must be in between '+min+' and '+max
41             );
42         };
43
44         restrictions.getReqexpValidationFnc = function (patternString) {
45             return new RestrictionObject(
46                 function (value) {
47                     var pattern = new RegExp(patternString);
48                     return pattern.test(value.toString());
49                 },
50                 'Value must match '+patternString
51             );
52         };
53
54         restrictions.getIsNumberFnc = function () {
55             return new RestrictionObject(
56                 function (value) {
57                     var pattern = new RegExp('^[+-]?((0x[0-9A-Fa-f]+)|(0[0-9]+)|([0-9]+))$');
58                     return pattern.test(value.toString());
59                 },
60                 'Value must be number (+/-, 0x and 0) prefixed are permitted'
61             );
62         };
63
64         restrictions.getIsUNumberFnc = function () {
65             return new RestrictionObject(
66                 function (value) {
67                     var pattern = new RegExp('^[+]?((0x[0-9A-Fa-f]+)|(0[0-9]+)|([0-9]+))$');
68                     return pattern.test(value.toString());
69                 },
70                 'Value must be positive number (+, 0x and 0) prefixed are permitted'
71             );
72         };
73
74         restrictions.getIsDecimalFnc = function () {
75             return new RestrictionObject(
76                 function (value) {
77                     var pattern = new RegExp("^[-]?[1-9]?[0-9]+[.|,]?[0-9]*$");
78                     return pattern.test(value.toString());
79                 },
80                 'Value must be decimal number - prefix is permitted'
81             );
82         };
83
84         restrictions.isInArray = function (array) {
85             return new RestrictionObject(
86                 function (value) {
87                     return array.some(function(arrVal) {
88                         return arrVal === value;
89                     });
90                 },
91                 'Value must be in ' + array.toString()
92             );
93         };
94
95
96         return restrictions;
97     }
98
99     RestrictionsService.$inject=[];
100
101     return RestrictionsService;
102
103 });