X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=manifoldapi%2Fstatic%2Fjs%2Fmanifold.js;h=d7e568833020a424e6f701d9202f41d51999d709;hb=refs%2Fheads%2Ff4f-review;hp=b25647b72f815cb961b92482d674a480b5430676;hpb=472a1ed07124ac7df43c71024c17ec72362486d8;p=unfold.git diff --git a/manifoldapi/static/js/manifold.js b/manifoldapi/static/js/manifold.js index b25647b7..d7e56883 100644 --- a/manifoldapi/static/js/manifold.js +++ b/manifoldapi/static/js/manifold.js @@ -141,10 +141,10 @@ var QUERY_STATE_DONE = 2; * RECORD STATES (for query_store) ******************************************************************************/ -var STATE_SET = 0; -var STATE_VALUE = 1; -var STATE_WARNINGS = 2; -var STATE_VISIBLE = 3; +var STATE_SET = 20; +var STATE_VALUE = 21; +var STATE_WARNINGS = 22; +var STATE_VISIBLE = 23; // ACTIONS var STATE_SET_CHANGE = 0; @@ -737,6 +737,12 @@ var manifold = { } else { console.log('Unknown field'); } + // FIX if the record contains a string instead of a key:value + // example: select resource, slice_hrn from slice where slice_hrn=='xxx' + // Result will be {slice_hrn:'xxx', resource:'urn+zzz'} + // We don't have this resource:{urn:'urn+zzz'} + } else if(typeof(record) === 'string'){ + return record; } else { return record[fields]; } @@ -974,18 +980,44 @@ var manifold = { var query_ext = manifold.query_store.find_query_ext(query.query_uuid); query_ext.query_state = QUERY_STATE_INPROGRESS; - var query_json = JSON.stringify(query); + /* + If the Query object concerns SFA AM objects, iterate on each AM platform + Loop per platform, allows a progressive loading per AM platform + Update is run on all platforms at the same time to get a final answer, we don't manage partial answers yet... + */ + // Removed slice from the per platform query - it's quick enough... + if((query.object == 'resource' || query.object == 'lease') && query.action != "update"){ + var obj = query.object; + $.post("/rest/platform/", function( data ) { + $.each(data, function(index, p) { + query.object = p.platform+":"+obj; + var query_json = JSON.stringify(query); + + // Inform plugins about the progress + query.iter_subqueries(function (sq) { + var sq_query_ext = manifold.query_store.find_analyzed_query_ext(sq.query_uuid); + sq_query_ext.query_state = QUERY_STATE_INPROGRESS; + manifold.raise_record_event(sq.query_uuid, IN_PROGRESS); + }); - // Inform plugins about the progress - query.iter_subqueries(function (sq) { - var sq_query_ext = manifold.query_store.find_analyzed_query_ext(sq.query_uuid); - sq_query_ext.query_state = QUERY_STATE_INPROGRESS; + $.post(manifold.proxy_url, {'json': query_json} , manifold.success_closure(query, null, callback)); - manifold.raise_record_event(sq.query_uuid, IN_PROGRESS); - }); + }); + }); + + }else{ + var query_json = JSON.stringify(query); + // Inform plugins about the progress + query.iter_subqueries(function (sq) { + var sq_query_ext = manifold.query_store.find_analyzed_query_ext(sq.query_uuid); + sq_query_ext.query_state = QUERY_STATE_INPROGRESS; + manifold.raise_record_event(sq.query_uuid, IN_PROGRESS); + }); - $.post(manifold.proxy_url, {'json': query_json} , manifold.success_closure(query, null, callback)); + $.post(manifold.proxy_url, {'json': query_json} , manifold.success_closure(query, null, callback)); + + } }, // XXX DEPRECATED @@ -1676,6 +1708,17 @@ case TYPE_LIST_OF_VALUES: // XXX Need for a better function to manage warnings var warn = CONSTRAINT_RESERVABLE_LEASE_MSG; warnings[CONSTRAINT_RESERVABLE_LEASE] = warn; + + manifold.query_store.set_record_state(query.query_uuid, record_key, STATE_WARNINGS, warnings); + // Signal the change to plugins (even if the constraint does not apply, so that the plugin can display a checkmark) + data = { + state: STATE_WARNINGS, + key : record_key, + op : null, + value : warnings + } + manifold.raise_record_event(query.query_uuid, FIELD_STATE_CHANGED, data); + } else { // Lease are defined, delete the warning in case it was set previously delete warnings[CONSTRAINT_RESERVABLE_LEASE]; @@ -1684,21 +1727,11 @@ case TYPE_LIST_OF_VALUES: // Remove warnings attached to this resource delete warnings[CONSTRAINT_RESERVABLE_LEASE]; } - - manifold.query_store.set_record_state(query.query_uuid, record_key, STATE_WARNINGS, warnings); } /* This was redundant */ // manifold.query_store.recount(query.query_uuid); - // Signal the change to plugins (even if the constraint does not apply, so that the plugin can display a checkmark) - data = { - state: STATE_WARNINGS, - key : record_key, - op : null, - value : warnings - } - manifold.raise_record_event(query.query_uuid, FIELD_STATE_CHANGED, data); break; case 'lease': @@ -1706,7 +1739,7 @@ case TYPE_LIST_OF_VALUES: var resource_query = query_ext.parent_query_ext.query.subqueries['resource']; var warnings = manifold.query_store.get_record_state(resource_query.query_uuid, resource_key, STATE_WARNINGS); - if (event_type == STATE_SET_ADD) { + if (event_type == STATE_SET_ADD || event_type == STATE_SET_IN_PENDING) { // A lease is added, it removes the constraint delete warnings[CONSTRAINT_RESERVABLE_LEASE]; } else { @@ -1717,23 +1750,22 @@ case TYPE_LIST_OF_VALUES: // XXX Need for a better function to manage warnings var warn = CONSTRAINT_RESERVABLE_LEASE_MSG; warnings[CONSTRAINT_RESERVABLE_LEASE] = warn; + + // Signal the change to plugins (even if the constraint does not apply, so that the plugin can display a checkmark) + data = { + state: STATE_WARNINGS, + key : resource_key, + op : null, + value : warnings + } + manifold.raise_record_event(resource_query.query_uuid, FIELD_STATE_CHANGED, data); } else { // Lease are defined, delete the warning in case it was set previously delete warnings[CONSTRAINT_RESERVABLE_LEASE]; } - } - + /* Adding a lease can remove a warning and reduce the unconfigured resources */ manifold.query_store.recount(resource_query.query_uuid); - - // Signal the change to plugins (even if the constraint does not apply, so that the plugin can display a checkmark) - data = { - state: STATE_WARNINGS, - key : resource_key, - op : null, - value : warnings - } - manifold.raise_record_event(resource_query.query_uuid, FIELD_STATE_CHANGED, data); break; } @@ -1774,6 +1806,9 @@ case TYPE_LIST_OF_VALUES: query = query_ext.query; switch(event_type) { + case STATUS_REMOVE_WARNING: + record = manifold.query_store.get_record(query_uuid, data.value); + this._enforce_constraints(query_ext, record, data.value, STATE_SET_ADD); // XXX At some point, should be renamed to RECORD_STATE_CHANGED case FIELD_STATE_CHANGED: