]> git.wh0rd.org - tt-rss.git/blobdiff - lib/dojo/store/util/SimpleQueryEngine.js
update dojo to 1.7.3
[tt-rss.git] / lib / dojo / store / util / SimpleQueryEngine.js
index 4b29f20cb74e55f5df324574a52a9301e6c6cd99..aa398f6e73b22292380122c2a5c764901c96b427 100644 (file)
@@ -4,113 +4,5 @@
        see: http://dojotoolkit.org/license for details
 */
 
-
-if(!dojo._hasResource["dojo.store.util.SimpleQueryEngine"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.store.util.SimpleQueryEngine"] = true;
-dojo.provide("dojo.store.util.SimpleQueryEngine");
-
-dojo.getObject("store.util", true, dojo);
-
-dojo.store.util.SimpleQueryEngine = function(query, options){
-       // summary:
-       //              Simple query engine that matches using filter functions, named filter
-       //              functions or objects by name-value on a query object hash
-       //
-       // description:
-       //              The SimpleQueryEngine provides a way of getting a QueryResults through
-       //              the use of a simple object hash as a filter.  The hash will be used to
-       //              match properties on data objects with the corresponding value given. In
-       //              other words, only exact matches will be returned.
-       //
-       //              This function can be used as a template for more complex query engines;
-       //              for example, an engine can be created that accepts an object hash that
-       //              contains filtering functions, or a string that gets evaluated, etc.
-       //
-       //              When creating a new dojo.store, simply set the store's queryEngine
-       //              field as a reference to this function.
-       //
-       // query: Object
-       //              An object hash with fields that may match fields of items in the store.
-       //              Values in the hash will be compared by normal == operator, but regular expressions
-       //              or any object that provides a test() method are also supported and can be
-       //              used to match strings by more complex expressions
-       //              (and then the regex's or object's test() method will be used to match values).
-       //
-       // options: dojo.store.util.SimpleQueryEngine.__queryOptions?
-       //              An object that contains optional information such as sort, start, and count.
-       //
-       // returns: Function
-       //              A function that caches the passed query under the field "matches".  See any
-       //              of the "query" methods on dojo.stores.
-       //
-       // example:
-       //              Define a store with a reference to this engine, and set up a query method.
-       //
-       //      |       var myStore = function(options){
-       //      |               //      ...more properties here
-       //      |               this.queryEngine = dojo.store.util.SimpleQueryEngine;
-       //      |               //      define our query method
-       //      |               this.query = function(query, options){
-       //      |                       return dojo.store.util.QueryResults(this.queryEngine(query, options)(this.data));
-       //      |               };
-       //      |       };
-
-       // create our matching query function
-       switch(typeof query){
-               default:
-                       throw new Error("Can not query with a " + typeof query);
-               case "object": case "undefined":
-                       var queryObject = query;
-                       query = function(object){
-                               for(var key in queryObject){
-                                       var required = queryObject[key];
-                                       if(required && required.test){
-                                               if(!required.test(object[key])){
-                                                       return false;
-                                               }
-                                       }else if(required != object[key]){
-                                               return false;
-                                       }
-                               }
-                               return true;
-                       };
-                       break;
-               case "string":
-                       // named query
-                       if(!this[query]){
-                               throw new Error("No filter function " + query + " was found in store");
-                       }
-                       query = this[query];
-                       // fall through
-               case "function":
-                       // fall through
-       }
-       function execute(array){
-               // execute the whole query, first we filter
-               var results = dojo.filter(array, query);
-               // next we sort
-               if(options && options.sort){
-                       results.sort(function(a, b){
-                               for(var sort, i=0; sort = options.sort[i]; i++){
-                                       var aValue = a[sort.attribute];
-                                       var bValue = b[sort.attribute];
-                                       if (aValue != bValue) {
-                                               return !!sort.descending == aValue > bValue ? -1 : 1;
-                                       }
-                               }
-                               return 0;
-                       });
-               }
-               // now we paginate
-               if(options && (options.start || options.count)){
-                       var total = results.length;
-                       results = results.slice(options.start || 0, (options.start || 0) + (options.count || Infinity));
-                       results.total = total;
-               }
-               return results;
-       }
-       execute.matches = query;
-       return execute;
-};
-
-}
+//>>built
+define("dojo/store/util/SimpleQueryEngine",["../../_base/array"],function(_1){return function(_2,_3){switch(typeof _2){default:throw new Error("Can not query with a "+typeof _2);case "object":case "undefined":var _4=_2;_2=function(_5){for(var _6 in _4){var _7=_4[_6];if(_7&&_7.test){if(!_7.test(_5[_6])){return false;}}else{if(_7!=_5[_6]){return false;}}}return true;};break;case "string":if(!this[_2]){throw new Error("No filter function "+_2+" was found in store");}_2=this[_2];case "function":}function _8(_9){var _a=_1.filter(_9,_2);if(_3&&_3.sort){_a.sort(function(a,b){for(var _b,i=0;_b=_3.sort[i];i++){var _c=a[_b.attribute];var _d=b[_b.attribute];if(_c!=_d){return !!_b.descending==_c>_d?-1:1;}}return 0;});}if(_3&&(_3.start||_3.count)){var _e=_a.length;_a=_a.slice(_3.start||0,(_3.start||0)+(_3.count||Infinity));_a.total=_e;}return _a;};_8.matches=_2;return _8;};});
\ No newline at end of file