26 while (_n.length < 4) { |
26 while (_n.length < 4) { |
27 _n = '0' + _n |
27 _n = '0' + _n |
28 } |
28 } |
29 return "autoid-" + this._ID_BASE + '-' + _n; |
29 return "autoid-" + this._ID_BASE + '-' + _n; |
30 }, |
30 }, |
31 regexpFromTextOrArray : function(_textOrArray) { |
31 regexpFromTextOrArray : function(_textOrArray, _testOnly) { |
|
32 var _testOnly = _testOnly || false; |
32 function escapeText(_text) { |
33 function escapeText(_text) { |
33 return _text.replace(/([\\\*\+\?\|\{\[\}\]\(\)\^\$\.\#\/])/gm, '\\$1'); |
34 return _text.replace(/([\\\*\+\?\|\{\[\}\]\(\)\^\$\.\#\/])/gm, '\\$1'); |
34 } |
35 } |
35 return new RegExp( '(' |
36 var _source = |
36 + ( |
37 typeof _textOrArray === "string" |
37 typeof _textOrArray === "string" |
38 ? escapeText(_textOrArray) |
38 ? escapeText(_textOrArray) |
39 : IriSP._(_textOrArray).map(escapeText).join("|"); |
39 : IriSP._(_textOrArray).map(escapeText).join("|") |
40 if (_testOnly) { |
40 ) |
41 return new RegExp( _source, 'im'); |
41 + ')', |
42 } else { |
42 'gim' |
43 return new RegExp( '(' + _source + ')', 'gim'); |
43 ); |
44 } |
44 }, |
45 }, |
45 isoToDate : function(_str) { |
46 isoToDate : function(_str) { |
46 // http://delete.me.uk/2005/03/iso8601.html |
47 // http://delete.me.uk/2005/03/iso8601.html |
47 var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?"; |
48 var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?"; |
48 var d = _str.match(new RegExp(regexp)); |
49 var d = _str.match(new RegExp(regexp)); |
166 |
167 |
167 /* Title and Description are basic information for (almost) all element types, |
168 /* Title and Description are basic information for (almost) all element types, |
168 * here we can search by these criteria |
169 * here we can search by these criteria |
169 */ |
170 */ |
170 IriSP.Model.List.prototype.searchByTitle = function(_text) { |
171 IriSP.Model.List.prototype.searchByTitle = function(_text) { |
171 var _rgxp = IriSP.Model.regexpFromTextOrArray(_text); |
172 var _rgxp = IriSP.Model.regexpFromTextOrArray(_text, true); |
172 return this.filter(function(_element) { |
173 return this.filter(function(_element) { |
173 return _rgxp.test(_element.title); |
174 return _rgxp.test(_element.title); |
174 }); |
175 }); |
175 } |
176 } |
176 |
177 |
177 IriSP.Model.List.prototype.searchByDescription = function(_text) { |
178 IriSP.Model.List.prototype.searchByDescription = function(_text) { |
178 var _rgxp = IriSP.Model.regexpFromTextOrArray(_text); |
179 var _rgxp = IriSP.Model.regexpFromTextOrArray(_text, true); |
179 return this.filter(function(_element) { |
180 return this.filter(function(_element) { |
180 return _rgxp.test(_element.description); |
181 return _rgxp.test(_element.description); |
181 }); |
182 }); |
182 } |
183 } |
183 |
184 |
184 IriSP.Model.List.prototype.searchByTextFields = function(_text) { |
185 IriSP.Model.List.prototype.searchByTextFields = function(_text) { |
185 var _rgxp = IriSP.Model.regexpFromTextOrArray(_text); |
186 var _rgxp = IriSP.Model.regexpFromTextOrArray(_text, true); |
186 return this.filter(function(_element) { |
187 return this.filter(function(_element) { |
187 return _rgxp.test(_element.description) || _rgxp.test(_element.title); |
188 return _rgxp.test(_element.description) || _rgxp.test(_element.title); |
188 }); |
189 }); |
189 } |
190 } |
190 |
191 |