split engine/ into manifold/ (backend oriented) and unfold/ (the UI)
[unfold.git] / engine / js / manifold-query.js
diff --git a/engine/js/manifold-query.js b/engine/js/manifold-query.js
deleted file mode 100644 (file)
index 710f5d9..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-function ManifoldQuery(action, method, timestamp, filters, params, fields, unique, uuid, aq, sq)
-{  
-    // get, update, delete, create
-    var action;
-    
-    // slice, user, network... : Metadata
-    var method; 
-    
-    // timestamp, now, latest(cache) : date of the results queried    
-    var timestamp;
-    
-    // key(field),op(=<>),value
-    var filters;
-
-    // todo
-    var params;
-    
-    // hostname, ip,... : Metadata
-    var fields;
-    
-    // 0,1 : list of element of an object or single object  
-    var unique;
-    
-    // uuid : unique identifier of a query
-    var uuid;
-    
-    // Query : root query (no sub-Query)
-    var analyzed_query;
-    
-    // {} : Assoc Table of sub-queries ["resources"->subQ1, "users"->subQ2]
-    var subqueries;
-
-/*-------------------------------------------------------------
-              Query properties are SQL like : 
----------------------------------------------------------------
-SELECT fields FROM method WHERE filter;
-UPDATE method SET field=value WHERE filter; / returns SELECT 
-DELETE FROM method WHERE filter
-INSERT INTO method VALUES(field=value)
--------------------------------------------------------------*/
-    
-    this.clone = function() {
-        q = new ManifoldQuery();
-        return jQuery.extend(true, q, this);
-    }
-    this.add_filter = function(key, op, value) {
-        this.filters.push(new Array(key, op, value));
-    }
-    this.update_filter = function(key, op, value) {
-        // Need to be improved...
-        // remove all occurrences of key if operation is not defined
-        if(!op){
-            this.filters = jQuery.grep(this.filters, function(val, i) {
-                return val[0] != key; 
-            });
-        // Else remove the key+op filters
-        }else{
-            this.filters = jQuery.grep(this.filters, function(val, i) {return (val[0] != key || val[1] != op);});
-        }
-        this.filters.push(new Array(key, op, value));
-    }
-    this.remove_filter = function (key,op,value){
-        // if operator is null then remove all occurences of this key
-        if(!op){
-            this.filters = jQuery.grep(this.filters, function(val, i) { 
-                return val[0] != key; 
-            });
-        }else{
-            this.filters = jQuery.grep(this.filters, function(val, i) {return (val[0] != key || val[1] != op);});
-        }
-    }
-    // FIXME These functions computing diff's between queries are meant to be shared
-    this.diff_fields = function (otherQuery)
-    {
-        var f1 = this.fields;
-        var f2 = otherQuery.fields;
-
-        /* added elements are the ones in f2 not in f1 */
-        var added   = jQuery.grep(f2, function (x) { return jQuery.inArray(x, f1) == -1 }); 
-        /* removed elements are the ones in f1 not in f2 */
-        var removed = jQuery.grep(f1, function (x) { return jQuery.inArray(x, f2) == -1 }); 
-        
-        return {'added':added, 'removed':removed};
-    }    
-    // FIXME Modify filter to filters
-    this.diff_filter = function (otherQuery)
-    {
-        var f1 = this.filters;
-        var f2 = otherQuery.filters;
-        
-        /* added elements are the ones in f2 not in f1 */
-        var added   = jQuery.grep(f2, function (x) { return !arrayInArray(x, f1)}); 
-        /* removed elements are the ones in f1 not in f2 */
-        var removed = jQuery.grep(f1, function (x) { return !arrayInArray(x, f2)}); 
-        
-        return {'added':added, 'removed':removed};
-    } 
-    this.to_hash = function() {
-        return {'action': this.action, 'method': this.method, 'timestamp': this.timestamp,
-               'filters': this.filters, 'params': this.params, 'fields': this.fields};
-    }
-    this.analyze_subqueries = function() {
-        /* adapted from the PHP function in com_tophat/includes/query.php */
-        var q = new ManifoldQuery();
-        q.uuid = this.uuid;
-        q.action = this.action;
-        q.method = this.method;
-        q.timestamp = this.timestamp;
-
-        /* Filters */
-        jQuery.each(this.filters, function(i, filter) {
-            var k = filter[0];
-            var op = filter[1];
-            var v = filter[2];
-            var pos = k.indexOf('.');
-            if (pos != -1) {
-                var method = k.substr(0, pos);
-                var field = k.substr(pos+1);
-                if (jQuery.inArray(this.method, q.subqueries) == -1) {
-                    q.subqueries[this.method] = new ManifoldQuery();
-                    q.subqueries[this.method].action = this.action;
-                    q.subqueries[this.method].method = this.method;
-                    q.subqueries[this.method].timestamp = this.timestamp;
-                }
-                q.subqueries[this.method].filters.push(Array(field, op, v));
-            } else {
-                q.filters.push(this.filter);
-            }
-        });
-
-        /* Params */
-        jQuery.each(this.params, function(param, value) {
-            var pos = param.indexOf('.');
-            if (pos != -1) {
-                var method = param.substr(0, pos);
-                var field = param.substr(pos+1);
-                if (jQuery.inArray(this.method, q.subqueries) == -1) {
-                    q.subqueries[this.method] = new ManifoldQuery();
-                    q.subqueries[this.method].action = this.action;
-                    q.subqueries[this.method].method = this.method;
-                    q.subqueries[this.method].timestamp = this.timestamp;
-                }
-                q.subqueries[this.method].params[field] = value;
-            } else {
-                q.params[field] = value;
-            }
-        });
-
-        /* Fields */
-        jQuery.each(this.fields, function(i, v) {
-            var pos = v.indexOf('.');
-            if (pos != -1) {
-                var method = v.substr(0, pos);
-                var field = v.substr(pos+1);
-                if (jQuery.inArray(this.method, q.subqueries) == -1) {
-                    q.subqueries[this.method] = new ManifoldQuery();
-                    q.subqueries[this.method].action = this.action;
-                    q.subqueries[this.method].method = this.method;
-                    q.subqueries[this.method].timestamp = this.timestamp;
-                }
-                q.subqueries[this.method].fields.push(field);
-            } else {
-                q.fields.push(v);
-            }
-        });
-        this.analyzed_query = q;
-    }
-    /* constructor */
-    this.action = action;
-    this.method = method;
-    this.timestamp = timestamp;
-    this.filters = filters;
-    this.params = params;
-    this.fields = fields;
-    this.unique = unique;
-    this.uuid = uuid;
-    this.analyzed_query = aq;
-    this.subqueries = sq;
-}