فهرست منبع

HUE-1007 [oozie] Add loading spinner to edit workflow page

Add an observable to workflow module. Spinner subscribes to its state.
abec 13 سال پیش
والد
کامیت
11b77e8
2فایلهای تغییر یافته به همراه18 افزوده شده و 2 حذف شده
  1. 17 2
      apps/oozie/src/oozie/templates/editor/edit_workflow.mako
  2. 1 0
      apps/oozie/static/js/workflow.js

+ 17 - 2
apps/oozie/src/oozie/templates/editor/edit_workflow.mako

@@ -247,7 +247,7 @@ ${ layout.menubar(section='workflows') }
 
   <div class="form-actions center">
   % if user_can_edit_job:
-    <button data-bind="disable: workflow.read_only, visible: !workflow.read_only(), click: function() { save({ success: workflow_save_success, error: workflow_save_error }) }" class="btn btn-primary">${ _('Save') }</button>
+    <button data-bind="disable: workflow.read_only, visible: !workflow.read_only(), click: function() { workflow.loading(true); workflow.save({ success: workflow_save_success, error: workflow_save_error }) }" class="btn btn-primary">${ _('Save') }</button>
   % endif
     <a href="${ url('oozie:list_workflows') }" class="btn">${ _('Back') }</a>
   </div>
@@ -423,10 +423,12 @@ function workflow_save_success(data) {
   $.jHueNotify.info("${ _('Workflow saved') }");
   workflow.reload(data.data);
   workflow.is_dirty( false );
+  workflow.loading(false);
 }
 
 function workflow_save_error(data) {
   $.jHueNotify.error("${ _('Could not save workflow') }");
+  workflow.loading(false);
 }
 
 function workflow_load_success(data) {
@@ -435,10 +437,12 @@ function workflow_load_success(data) {
   } else {
     $.jHueNotify.error("${ _('Received invalid response from server: ') }" + JSON.stringify(data));
   }
+  workflow.loading(false);
 }
 
 function workflow_read_only_handler() {
   $.jHueNotify.error("${ _('Workflow is in read only mode.') }");
+  workflow.loading(false);
 }
 
 // Fetch all nodes from server.
@@ -465,7 +469,18 @@ var import_node = new ImportNode({workflow: workflow});
 var modal = new Modal($('#node-modal'));
 
 // Load data.
-workflow.load({ success: workflow_load_success });
+{
+  var spinner = $('<img src="/static/art/spinner.gif" />');
+  workflow.loading.subscribe(function(value) {
+    if (value) {
+      $('#graph').append(spinner);
+    } else {
+      spinner.remove();
+    }
+  });
+  workflow.loading(true);
+  workflow.load({ success: workflow_load_success });
+}
 import_node.loadAvailableNodes({ success: import_load_available_nodes_success });
 
 /**

+ 1 - 0
apps/oozie/static/js/workflow.js

@@ -1786,6 +1786,7 @@ var WorkflowModule = function($, NodeModelChooser, Node, ForkNode, DecisionNode,
     self.nodes = ko.observableArray([]);
     self.kill = null;
     self.is_dirty = ko.observable( false );
+    self.loading = ko.observable( false );
     self.read_only = ko.observable( options.read_only || false );
     self.new_node = ko.observable();