| changeset 988 | eefd336335f9 |
| parent 987 | 7b65bf78873a |
| child 998 | 9521347ede1d |
| 987:7b65bf78873a | 988:eefd336335f9 |
|---|---|
17 } |
17 } |
18 |
18 |
19 var uidbase = rand16(8) + "-" + rand16(4) + "-", uidincrement = Math.floor(Math.random()*0x10000); |
19 var uidbase = rand16(8) + "-" + rand16(4) + "-", uidincrement = Math.floor(Math.random()*0x10000); |
20 |
20 |
21 var charsub = [ |
21 var charsub = [ |
22 [ 'a', 'á', 'à', 'â', 'ä' ], |
22 '[aáàâä]', |
23 [ 'c', 'ç' ], |
23 '[cç]', |
24 [ 'e', 'é', 'è', 'ê', 'ë' ], |
24 '[eéèêë]', |
25 [ 'i', 'í', 'ì', 'î', 'ï' ], |
25 '[iíìîï]', |
26 [ 'o', 'ó', 'ò', 'ô', 'ö' ] |
26 '[oóòôö]', |
27 '[uùûü]' |
|
27 ]; |
28 ]; |
28 |
29 |
29 var removeChars = [ |
30 var removeChars = [ |
30 String.fromCharCode(768), String.fromCharCode(769), String.fromCharCode(770), String.fromCharCode(771), String.fromCharCode(807), |
31 String.fromCharCode(768), String.fromCharCode(769), String.fromCharCode(770), String.fromCharCode(771), String.fromCharCode(807), |
31 "{", "}", "(", ")", "[", "]", "【", "】", "、", "・", "‥", "。", "「", "」", "『", "』", "〜", ":", "!", "?", " ", |
32 "{", "}", "(", ")", "[", "]", "【", "】", "、", "・", "‥", "。", "「", "」", "『", "』", "〜", ":", "!", "?", " ", |
69 fullTextRegexps: function(_text) { |
70 fullTextRegexps: function(_text) { |
70 var remsrc = "[\\" + removeChars.join("\\") + "]", |
71 var remsrc = "[\\" + removeChars.join("\\") + "]", |
71 remrx = new RegExp(remsrc,"gm"), |
72 remrx = new RegExp(remsrc,"gm"), |
72 txt = _text.toLowerCase().replace(remrx,"") |
73 txt = _text.toLowerCase().replace(remrx,"") |
73 res = [], |
74 res = [], |
74 charsrc = ns._(charsub).map(function(c) { |
75 charsrx = ns._(charsub).map(function(c) { |
75 return "(" + c.join("|") + ")"; |
|
76 }), |
|
77 charsrx = ns._(charsrc).map(function(c) { |
|
78 return new RegExp(c); |
76 return new RegExp(c); |
79 }), |
77 }), |
80 src = ""; |
78 src = ""; |
81 for (var j = 0; j < txt.length; j++) { |
79 for (var j = 0; j < txt.length; j++) { |
82 if (j) { |
80 if (j) { |
83 src += remsrc + "*"; |
81 src += remsrc + "*"; |
84 } |
82 } |
85 var l = txt[j]; |
83 var l = txt[j]; |
86 ns._(charsrc).each(function(v, k) { |
84 ns._(charsub).each(function(v, k) { |
87 l = l.replace(charsrx[k], v); |
85 l = l.replace(charsrx[k], v); |
88 }); |
86 }); |
89 src += l; |
87 src += l; |
90 } |
88 } |
91 return "(" + src + ")"; |
89 return "(" + src + ")"; |
221 /* Title and Description are basic information for (almost) all element types, |
219 /* Title and Description are basic information for (almost) all element types, |
222 * here we can search by these criteria |
220 * here we can search by these criteria |
223 */ |
221 */ |
224 Model.List.prototype.searchByTitle = function(_text, _iexact) { |
222 Model.List.prototype.searchByTitle = function(_text, _iexact) { |
225 var _iexact = _iexact || false, |
223 var _iexact = _iexact || false, |
226 _rgxp = Model.regexpFromTextOrArray(_text, true); |
224 _rgxp = Model.regexpFromTextOrArray(_text, true, _iexact); |
227 return this.filter(function(_element) { |
225 return this.filter(function(_element) { |
228 return _rgxp.test(_element.title); |
226 return _rgxp.test(_element.title); |
229 }); |
227 }); |
230 } |
228 } |
231 |
229 |
232 Model.List.prototype.searchByDescription = function(_text, _iexact) { |
230 Model.List.prototype.searchByDescription = function(_text, _iexact) { |
233 var _iexact = _iexact || false, |
231 var _iexact = _iexact || false, |
234 _rgxp = Model.regexpFromTextOrArray(_text, true); |
232 _rgxp = Model.regexpFromTextOrArray(_text, true, _iexact); |
235 return this.filter(function(_element) { |
233 return this.filter(function(_element) { |
236 return _rgxp.test(_element.description); |
234 return _rgxp.test(_element.description); |
237 }); |
235 }); |
238 } |
236 } |
239 |
237 |
240 Model.List.prototype.searchByTextFields = function(_text, _iexact) { |
238 Model.List.prototype.searchByTextFields = function(_text, _iexact) { |
241 var _iexact = _iexact || false, |
239 var _iexact = _iexact || false, |
242 _rgxp = Model.regexpFromTextOrArray(_text, true); |
240 _rgxp = Model.regexpFromTextOrArray(_text, true, _iexact); |
243 return this.filter(function(_element) { |
241 return this.filter(function(_element) { |
244 var keywords = (_element.keywords || _element.getTagTexts() || []).join(", "); |
242 var keywords = (_element.keywords || _element.getTagTexts() || []).join(", "); |
245 return _rgxp.test(_element.description) || _rgxp.test(_element.title) || _rgxp.test(keywords); |
243 return _rgxp.test(_element.description) || _rgxp.test(_element.title) || _rgxp.test(keywords); |
246 }); |
244 }); |
247 } |
245 } |
817 this.on("remove", this._updateTimes); |
815 this.on("remove", this._updateTimes); |
818 } |
816 } |
819 |
817 |
820 Model.Mashup.prototype = new Model.Playable(); |
818 Model.Mashup.prototype = new Model.Playable(); |
821 |
819 |
822 Model.Mashup.prototype.checkLoaded = function() { |
|
823 var loaded = !!this.segments.length; |
|
824 this.getMedias().forEach(function(_m) { |
|
825 loaded = loaded && _m.loaded; |
|
826 }); |
|
827 this.loaded = loaded; |
|
828 if (loaded) { |
|
829 this.trigger("loadedmetadata"); |
|
830 } |
|
831 } |
|
832 |
|
833 Model.Mashup.prototype.updateTimes = function() { |
820 Model.Mashup.prototype.updateTimes = function() { |
834 var _time = 0; |
821 var _time = 0; |
835 this.segments.forEach(function(_segment) { |
822 this.segments.forEach(function(_segment) { |
836 _segment.setBegin(_time); |
823 _segment.setBegin(_time); |
837 _time = _segment.end; |
824 _time = _segment.end; |
1195 } |
1182 } |
1196 |
1183 |
1197 return Model; |
1184 return Model; |
1198 |
1185 |
1199 })(IriSP); |
1186 })(IriSP); |
1187 |
|
1188 /* END model.js */ |
|
1189 |