otsdaq_utilities  v2_05_02_indev
validate.js
1 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2 
3 /* Tabulator v4.5.3 (c) Oliver Folkerd */
4 
5 var Validate = function Validate(table) {
6  this.table = table;
7 };
8 
9 //validate
10 Validate.prototype.initializeColumn = function (column) {
11  var self = this,
12  config = [],
13  validator;
14 
15  if (column.definition.validator) {
16 
17  if (Array.isArray(column.definition.validator)) {
18  column.definition.validator.forEach(function (item) {
19  validator = self._extractValidator(item);
20 
21  if (validator) {
22  config.push(validator);
23  }
24  });
25  } else {
26  validator = this._extractValidator(column.definition.validator);
27 
28  if (validator) {
29  config.push(validator);
30  }
31  }
32 
33  column.modules.validate = config.length ? config : false;
34  }
35 };
36 
37 Validate.prototype._extractValidator = function (value) {
38  var type, params, pos;
39 
40  switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
41  case "string":
42  pos = value.indexOf(':');
43 
44  if (pos > -1) {
45  type = value.substring(0, pos);
46  params = value.substring(pos + 1);
47  } else {
48  type = value;
49  }
50 
51  return this._buildValidator(type, params);
52  break;
53 
54  case "function":
55  return this._buildValidator(value);
56  break;
57 
58  case "object":
59  return this._buildValidator(value.type, value.parameters);
60  break;
61  }
62 };
63 
64 Validate.prototype._buildValidator = function (type, params) {
65 
66  var func = typeof type == "function" ? type : this.validators[type];
67 
68  if (!func) {
69  console.warn("Validator Setup Error - No matching validator found:", type);
70  return false;
71  } else {
72  return {
73  type: typeof type == "function" ? "function" : type,
74  func: func,
75  params: params
76  };
77  }
78 };
79 
80 Validate.prototype.validate = function (validators, cell, value) {
81  var self = this,
82  valid = [];
83 
84  if (validators) {
85  validators.forEach(function (item) {
86  if (!item.func.call(self, cell, value, item.params)) {
87  valid.push({
88  type: item.type,
89  parameters: item.params
90  });
91  }
92  });
93  }
94 
95  return valid.length ? valid : true;
96 };
97 
98 Validate.prototype.validators = {
99 
100  //is integer
101  integer: function integer(cell, value, parameters) {
102  if (value === "" || value === null || typeof value === "undefined") {
103  return true;
104  }
105  value = Number(value);
106  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
107  },
108 
109  //is float
110  float: function float(cell, value, parameters) {
111  if (value === "" || value === null || typeof value === "undefined") {
112  return true;
113  }
114  value = Number(value);
115  return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
116  },
117 
118  //must be a number
119  numeric: function numeric(cell, value, parameters) {
120  if (value === "" || value === null || typeof value === "undefined") {
121  return true;
122  }
123  return !isNaN(value);
124  },
125 
126  //must be a string
127  string: function string(cell, value, parameters) {
128  if (value === "" || value === null || typeof value === "undefined") {
129  return true;
130  }
131  return isNaN(value);
132  },
133 
134  //maximum value
135  max: function max(cell, value, parameters) {
136  if (value === "" || value === null || typeof value === "undefined") {
137  return true;
138  }
139  return parseFloat(value) <= parameters;
140  },
141 
142  //minimum value
143  min: function min(cell, value, parameters) {
144  if (value === "" || value === null || typeof value === "undefined") {
145  return true;
146  }
147  return parseFloat(value) >= parameters;
148  },
149 
150  //minimum string length
151  minLength: function minLength(cell, value, parameters) {
152  if (value === "" || value === null || typeof value === "undefined") {
153  return true;
154  }
155  return String(value).length >= parameters;
156  },
157 
158  //maximum string length
159  maxLength: function maxLength(cell, value, parameters) {
160  if (value === "" || value === null || typeof value === "undefined") {
161  return true;
162  }
163  return String(value).length <= parameters;
164  },
165 
166  //in provided value list
167  in: function _in(cell, value, parameters) {
168  if (value === "" || value === null || typeof value === "undefined") {
169  return true;
170  }
171  if (typeof parameters == "string") {
172  parameters = parameters.split("|");
173  }
174 
175  return value === "" || parameters.indexOf(value) > -1;
176  },
177 
178  //must match provided regex
179  regex: function regex(cell, value, parameters) {
180  if (value === "" || value === null || typeof value === "undefined") {
181  return true;
182  }
183  var reg = new RegExp(parameters);
184 
185  return reg.test(value);
186  },
187 
188  //value must be unique in this column
189  unique: function unique(cell, value, parameters) {
190  if (value === "" || value === null || typeof value === "undefined") {
191  return true;
192  }
193  var unique = true;
194 
195  var cellData = cell.getData();
196  var column = cell.getColumn()._getSelf();
197 
198  this.table.rowManager.rows.forEach(function (row) {
199  var data = row.getData();
200 
201  if (data !== cellData) {
202  if (value == column.getFieldValue(data)) {
203  unique = false;
204  }
205  }
206  });
207 
208  return unique;
209  },
210 
211  //must have a value
212  required: function required(cell, value, parameters) {
213  return value !== "" && value !== null && typeof value !== "undefined";
214  }
215 };
216 
217 Tabulator.prototype.registerModule("validate", Validate);