From 6e286d340b35106b65a543ecd1a3c8086953f50e Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Fri, 15 Nov 2013 11:57:42 +0100 Subject: [PATCH] clean up js query initialization --- manifold/static/js/manifold.js | 56 +++++++++++++------------------- unfold/page.py | 2 +- unfold/templates/page-queries.js | 7 ++-- 3 files changed, 27 insertions(+), 38 deletions(-) diff --git a/manifold/static/js/manifold.js b/manifold/static/js/manifold.js index c6e9d41c..8c23cf6f 100644 --- a/manifold/static/js/manifold.js +++ b/manifold/static/js/manifold.js @@ -323,9 +323,9 @@ var manifold = { * \brief We use js function closure to be able to pass the query (array) * to the callback function used when data is received */ - success_closure: function(query, publish_uuid, callback /*domid*/) { + success_closure: function(query, publish_uuid, callback) { return function(data, textStatus) { - manifold.asynchroneous_success(data, query, publish_uuid, callback /*domid*/); + manifold.asynchroneous_success(data, query, publish_uuid, callback); } }, @@ -341,12 +341,12 @@ var manifold = { // manifold.raise_record_event(sq.query_uuid, IN_PROGRESS); //}); - $.post(manifold.proxy_url, {'json': query_json} , manifold.success_closure(query, null, callback /*domid*/)); + $.post(manifold.proxy_url, {'json': query_json} , manifold.success_closure(query, null, callback)); }, - // Executes all async. queries - // input queries are specified as a list of {'query_uuid': , 'id': } - asynchroneous_exec : function (query_publish_dom_tuples) { + // Executes all async. queries - intended for the javascript header to initialize queries + // input queries are specified as a list of {'query_uuid': } + asynchroneous_exec : function (query_exec_tuples) { // start spinners - be robust if the spin stuff was not loaded for any reason // turned off because each plugin is responsible for doing that through on_query_in_progress // try { @@ -359,7 +359,7 @@ var manifold = { // } catch (err) { messages.debug("Cannot turn on spins " + err); } // Loop through input array, and use publish_uuid to publish back results - $.each(query_publish_dom_tuples, function(index, tuple) { + $.each(query_exec_tuples, function(index, tuple) { var query=manifold.find_query(tuple.query_uuid); var query_json=JSON.stringify (query); var publish_uuid=tuple.publish_uuid; @@ -376,7 +376,7 @@ var manifold = { // not quite sure what happens if we send a string directly, as POST data is named.. // this gets reconstructed on the proxy side with ManifoldQuery.fill_from_POST $.post(manifold.proxy_url, {'json':query_json}, - manifold.success_closure(query, publish_uuid, tuple.callback /*domid*/)); + manifold.success_closure(query, publish_uuid, tuple.callback)); }) }, @@ -384,13 +384,11 @@ var manifold = { * \brief Forward a query to the manifold backend * \param query (dict) the query to be executed asynchronously * \param callback (function) the function to be called when the query terminates - * Deprecated: - * \param domid (string) the domid to be notified about the results (null for using the pub/sub system */ - forward: function(query, callback /*domid*/) { + forward: function(query, callback) { var query_json = JSON.stringify(query); $.post(manifold.proxy_url, {'json': query_json} , - manifold.success_closure(query, query.query_uuid, callback/*domid*/)); + manifold.success_closure(query, query.query_uuid, callback)); }, /*! @@ -695,27 +693,17 @@ var manifold = { } }, - // if set domid allows the result to be directed to just one plugin + // if set callback is provided it is called // most of the time publish_uuid will be query.query_uuid // however in some cases we wish to publish the result under a different uuid // e.g. an updater wants to publish its result as if from the original (get) query - asynchroneous_success : function (data, query, publish_uuid, callback /*domid*/) { + asynchroneous_success : function (data, query, publish_uuid, callback) { // xxx should have a nicer declaration of that enum in sync with the python code somehow var start = new Date(); if (manifold.asynchroneous_debug) messages.debug(">>>>>>>>>> asynchroneous_success query.object=" + query.object); - /* If a callback has been specified, we redirect results to it */ - if (!!callback) { - callback(data); - if (manifold.asynchroneous_debug) { - duration=new Date()-start; - messages.debug ("<<<<<<<<<< asynchroneous_success " + query.object + " -- callback ended " + duration + " ms"); - } - return; - } - if (data.code == 2) { // ERROR // We need to make sense of error codes here alert("Your session has expired, please log in again"); @@ -732,16 +720,18 @@ var manifold = { if (publish_uuid) $.publish("/results/" + publish_uuid + "/failed", [data.code, data.description] ); -/* DEMO - Debug Messages desactivated - $("#notifications").notify("create", "sticky", { - title: 'Warning', - text: data.description - },{ - expires: false, - speed: 1000 - }); -*/ } + + // If a callback has been specified, we redirect results to it + if (!!callback) { + callback(data); + if (manifold.asynchroneous_debug) { + duration=new Date()-start; + messages.debug ("<<<<<<<<<< asynchroneous_success " + query.object + " -- callback ended " + duration + " ms"); + } + return; + } + if (manifold.asynchroneous_debug) messages.debug ("========== asynchroneous_success " + query.object + " -- before process_query_records"); diff --git a/unfold/page.py b/unfold/page.py index 02fb9b7a..40446e6b 100644 --- a/unfold/page.py +++ b/unfold/page.py @@ -80,7 +80,7 @@ class Page: result={'query_uuid':a} if b: result['domid']=b return result - env['query_publish_dom_tuples'] = [ query_publish_dom_tuple (a,b) for (a,b) in self._queue ] + env['query_exec_tuples'] = [ query_publish_dom_tuple (a,b) for (a,b) in self._queue ] javascript = render_to_string ("page-queries.js",env) self.add_js_chunks (javascript) # self.reset_queue() diff --git a/unfold/templates/page-queries.js b/unfold/templates/page-queries.js index a6ab97f4..a7c3e223 100644 --- a/unfold/templates/page-queries.js +++ b/unfold/templates/page-queries.js @@ -1,9 +1,8 @@ {% for json in queries_json %}manifold.insert_query({{ json|safe }}); {% endfor %} $(document).ready(function () { -var query_publish_dom_tuples = new Array(); -{% for d in query_publish_dom_tuples %}try {query_publish_dom_tuples.push({'query_uuid':"{{ d.query_uuid }}"{%if d.domid %},'domid':"{{ d.domid }}"{% endif %}}) } -catch(err){messages.debug ("Could not expose query {{ d.query_uuid }}")} +var query_exec_tuples = []; +{% for tuple in query_exec_tuples %} query_exec_tuples.push({'query_uuid':"{{ tuple.query_uuid }}"}); {% endfor %} -manifold.asynchroneous_exec(query_publish_dom_tuples); +manifold.asynchroneous_exec(query_exec_tuples); }) -- 2.43.0