Browse Source

[spark] Potentially close snippets when leaving the page

Romain Rigaux 10 years ago
parent
commit
6f48849
2 changed files with 14 additions and 4 deletions
  1. 7 4
      apps/spark/src/spark/api.py
  2. 7 0
      apps/spark/src/spark/templates/editor.mako

+ 7 - 4
apps/spark/src/spark/api.py

@@ -165,12 +165,15 @@ def open_notebook(request):
 def close_notebook(request):
   response = {'status': -1}
 
-  notebook_id = request.GET.get('notebook')
-  notebook = Notebook(document=Document2.objects.get(id=notebook_id)) # Todo perms
+  notebook = json.loads(request.POST.get('notebook', '{}'))  # Todo perms
   
   response['status'] = 0
   for snippet in notebook['snippets']:
-    get_api(request.user, snippet).close(snippet)
+    try:
+      if snippet['result']['handle']:      
+        get_api(request.user, snippet).close(snippet)
+    except QueryExpired:
+      pass
   response['message'] = _('Notebook closed !')
 
   return HttpResponse(json.dumps(response), mimetype="application/json")
@@ -182,7 +185,7 @@ def close_statement(request):
   notebook = json.loads(request.POST.get('notebook', '{}'))  # Todo perms
   snippet = json.loads(request.POST.get('snippet', '{}'))
 
-  try:
+  try:    
     response['result'] = get_api(request.user, snippet).close(snippet)
   except QueryExpired:
     pass

+ 7 - 0
apps/spark/src/spark/templates/editor.mako

@@ -1007,6 +1007,13 @@ ${ commonheader(_('Query'), app_name, user, "68px") | n,unicode }
   ko.applyBindings(viewModel);
   viewModel.init();
 
+  $(document).ready(function () {
+    // Close the notebook snippets when leaving the page
+    window.onbeforeunload = function(e) {
+      viewModel.selectedNotebook().close();
+    };
+  });
+
   viewModel.assistSelectedMainObject.subscribe(function(newVal) {
     viewModel.assistContent().selectedMainObject(newVal);
     loadAssistFirstLevel();