浏览代码

HUE-1402 [sqoop] Error when clicking too soon on a job on the dashboard

Abraham Elmahrek 12 年之前
父节点
当前提交
fffd5a4
共有 2 个文件被更改,包括 34 次插入45 次删除
  1. 33 42
      apps/sqoop/src/sqoop/templates/app.mako
  2. 1 3
      apps/sqoop/static/js/sqoop.js

+ 33 - 42
apps/sqoop/src/sqoop/templates/app.mako

@@ -62,13 +62,13 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
           <li data-bind="routie: 'job/edit/' + id()" title="${ _('Click to edit') }">
             <div class="pull-right">
               <span class="label label-success" data-bind="visible: submission().status() == 'SUCCEEDED'">
-                <span data-bind="text: ('${_('Last run: ')}' + submission().createdFormatted()), routie: 'job/status/' + id()"></span>
+                <span data-bind="text: ('${_('Last run: ')}' + submission().createdFormatted())"></span>
               </span>
               <span class="label label-warning" data-bind="visible: $.inArray(submission().status(), ['BOOTING', 'RUNNING', 'UNKNOWN']) > -1">
-                <span data-bind="text: submission().status, routie: 'job/status/' + id()"></span>
+                <span data-bind="text: submission().status"></span>
               </span>
               <span class="label label-error" style="display: inline-block" data-bind="visible: $.inArray(submission().status(), ['FAILURE_ON_SUBMIT', 'FAILED']) > -1">
-                <span data-bind="text: ('${_('Last run: ')}' + submission().createdFormatted()), routie: 'job/status/' + id()"></span>
+                <span data-bind="text: ('${_('Last run: ')}' + submission().createdFormatted())"></span>
               </span>
             </div>
             <div class="main" data-bind="template: {name: 'job-list-item'}"></div>
@@ -128,16 +128,22 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
                 <i class="icon-folder-open"></i> ${_('Output directory')}
               </a>
             </li>
+            <li>
+              <a rel="tooltip" title="${_('Logs')}" href="javascript:void(0);" target="_new" data-bind="attr: {href: '/jobbrowser/jobs/' + $root.job().submission().external_id()}">
+                <i class="icon-list"></i>
+                ${_('Logs')}
+              </a>
+            </li>
             <li class="nav-header" data-bind="visible: $root.job().persisted">${_('Last status')}</li>
             <li data-bind="visible: $root.job().persisted">
               <span class="label label-success" data-bind="visible: submission().status() == 'SUCCEEDED'">
-                <span data-bind="text:  submission().createdFormatted(), routie: 'job/status/' + id()"></span>
+                <span data-bind="text:  submission().createdFormatted()"></span>
               </span>
               <span class="label label-warning" data-bind="visible: $.inArray(submission().status(), ['BOOTING', 'RUNNING', 'UNKNOWN']) > -1">
-                <span data-bind="text: submission().status, routie: 'job/status/' + id()"></span>
+                <span data-bind="text: submission().status"></span>
               </span>
               <span class="label label-error" style="display: inline-block" data-bind="visible: $.inArray(submission().status(), ['FAILURE_ON_SUBMIT', 'FAILED']) > -1">
-                <span data-bind="text: submission().createdFormatted(), routie: 'job/status/' + id()"></span>
+                <span data-bind="text: submission().createdFormatted()"></span>
               </span>
             </li>
             <li data-bind="visible: $root.job().isRunning()">
@@ -216,28 +222,6 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
         </form>
       </div>
     </div>
-
-    <div id="job-status" class="row-fluid section hide" data-bind="with: job">
-      <div class="well sidebar-nav span2">
-        <form id="advanced-settings" method="POST" class="form form-horizontal noPadding">
-          <ul class="nav nav-list">
-            <li>
-              <a rel="tooltip" title="${_('Logs')}" href="javascript:void(0);" target="_new" data-bind="attr: {href: '/jobbrowser/jobs/' + $root.job().submission().external_id()}">
-                <i class="icon-list"></i>
-                ${_('Logs')}
-              </a>
-            </li>
-            <li>
-              <a rel="tooltip" title="${_('Back to editing a job')}" href="#job/edit">
-                <i class="icon-arrow-left"></i>
-                ${_('Back to job')}
-              </a>
-            </li>
-          </ul>
-        </form>
-      </div>
-
-    </div>
   </div>
 </div>
 
@@ -649,13 +633,27 @@ $("#jobs-list tbody").on('click', 'tr', function() {
 
 //// Load all the data
 var framework = new framework.Framework({modelDict: {}});
-$(document).one('loaded.jobs', function() {
-  framework.load();
-  connectors.fetchConnectors();
-  connections.fetchConnections();
-  submissions.fetchSubmissions();
-});
-jobs.fetchJobs();
+(function() {
+  var count = 0;
+  function check() {
+    if (++count == 5) {
+      viewModel.isLoading(false);
+    }
+  }
+  $(document).one('loaded.jobs', check);
+  $(document).one('loaded.framework', check);
+  $(document).one('loaded.connectors', check);
+  $(document).one('loaded.connections', check);
+  $(document).one('loaded.submissions', check);
+  $(document).one('loaded.jobs', function() {
+    framework.load();
+    connectors.fetchConnectors();
+    connections.fetchConnections();
+    submissions.fetchSubmissions();
+  });
+  viewModel.isLoading(true);
+  jobs.fetchJobs();
+})();
 
 
 //// Routes
@@ -741,13 +739,6 @@ $(document).ready(function () {
       viewModel.chooseJobById(id);
       routie('job/stop');
     },
-    "job/status": function() {
-      showSection("jobs", "job-status");
-    },
-    "job/status/:id": function(id) {
-      viewModel.chooseJobById(id);
-      routie('job/status');
-    },
     "job/copy": function() {
       if (viewModel.job()) {
         viewModel.job().clone();

+ 1 - 3
apps/sqoop/static/js/sqoop.js

@@ -94,6 +94,7 @@ var viewModel = new (function() {
   self.filter = ko.observable("");
   self.shownSection = ko.observable("");
   self.isDirty = ko.observable(false);
+  self.isLoading = ko.observable(false);
   // Must always have a value.
   self.connector = ko.computed(function() {
     // Fall back to first connector so that a connector is selected when we are creating a connection.
@@ -139,9 +140,6 @@ var viewModel = new (function() {
   self.allJobsSelected = ko.computed(function () {
     return self.selectedJobs().length > 0 && self.selectedJobs().length == self.jobs().length;
   });
-  self.isLoading = ko.computed(function() {
-    return !self.framework() && self.connectors().length == 0;
-  });
 
 
   // Update forms for connectors, jobs, and connections.