X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=manifold%2Fjs%2Fmanifold.js;h=826ea32394e20b1d177dc41103068d2429ab0acc;hb=f1910e576b71036ea87679aea144aae8520c54d9;hp=b99b648d67f51f250a134534bc6254283b881352;hpb=f2948f635d1a9c8d92df1e5ae5820c5848ef8104;p=myslice.git diff --git a/manifold/js/manifold.js b/manifold/js/manifold.js index b99b648d..826ea323 100644 --- a/manifold/js/manifold.js +++ b/manifold/js/manifold.js @@ -51,7 +51,8 @@ var SET_REMOVED = 202; var FIELD_REQUEST_CHANGE = 301; var FIELD_REQUEST_ADD = 302; var FIELD_REQUEST_REMOVE = 303; -var FIELD_REQUEST_RESET = 304; +var FIELD_REQUEST_ADD_RESET = 304; +var FIELD_REQUEST_REMOVE_RESET = 305; // status var FIELD_REQUEST_PENDING = 401; var FIELD_REQUEST_SUCCESS = 402; @@ -465,7 +466,7 @@ var manifold = { { // We don't prepare an update query if the result has more than 1 entry if (records.length != 1) - continue; + return; var query_ext = manifold.query_store.find_query_ext(query.query_uuid); var record = records[0]; @@ -795,19 +796,20 @@ var manifold = { break; case FIELD_REQUEST_ADD: if ($.inArray(value.value, update_query_orig.params[value.key]) != -1) - value.request = FIELD_REQUEST_RESET; + value.request = FIELD_REQUEST_ADD_RESET; update_query.params[value.key].push(value.value); break; case FIELD_REQUEST_REMOVE: if ($.inArray(value.value, update_query_orig.params[value.key]) == -1) - value.request = FIELD_REQUEST_RESET; + value.request = FIELD_REQUEST_REMOVE_RESET; var arr = update_query.params[value.key]; arr = $.grep(arr, function(x) { return x != value.value; }); update_query.params[value.key] = arr; break; - case FIELD_REQUEST_RESET: + case FIELD_REQUEST_ADD_RESET: + case FIELD_REQUEST_REMOVE_RESET: // XXX We would need to keep track of the original query throw "Not implemented"; break; @@ -818,6 +820,21 @@ var manifold = { manifold.raise_record_event(query_uuid, event_type, value); // b) subqueries eventually (dot in the key) + // Let's unfold + var path_array = value.key.split('.'); + var value_key = value.key.split('.'); + + var cur_query = query; + if (cur_query.analyzed_query) + cur_query = cur_query.analyzed_query; + $.each(path_array, function(i, method) { + cur_query = cur_query.subqueries[method]; + value_key.shift(); // XXX check that method is indeed shifted + }); + value.key = value_key; + + manifold.raise_record_event(cur_query.query_uuid, event_type, value); + // XXX make this DOT a global variable... could be '/' break;