瀏覽代碼

HUE-1405 [sqoop2] Improve job title on the job list

Abraham Elmahrek 12 年之前
父節點
當前提交
d35486476c

+ 28 - 10
apps/sqoop/src/sqoop/templates/app.mako

@@ -71,22 +71,14 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
                 <span data-bind="text: ('${_('Last run: ')}' + submission().createdFormatted()), routie: 'job/status/' + id()"></span>
               </span>
             </div>
-            <div class="main">
-              <h4 style="display: inline-block">
-                <i data-bind="css:{'icon-download-alt': type() == 'IMPORT', 'icon-upload-alt': type() == 'EXPORT'}"></i> &nbsp;<span data-bind="text: type"></span> <span class="muted" data-bind="text: name"></span>
-              </h4>
-            </div>
+            <div class="main" data-bind="template: {name: 'job-list-item'}"></div>
             <div class="sqoop-progress" data-bind="style:{ width: submission().progressFormatted() }"></div>
           </li>
           <!-- /ko -->
 
           <!-- ko ifnot: submission() -->
           <li data-bind="routie: 'job/edit/' + id()" title="${ _('Click to edit') }">
-            <div class="main">
-              <h4 style="display: inline-block">
-                <i class="icon-list"></i> <span data-bind="text: name"></span>
-              </h4>
-            </div>
+            <div class="main" data-bind="template: {name: 'job-list-item'}"></div>
           </li>
           <!-- /ko -->
         </ul>
@@ -250,6 +242,32 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </div>
 
 
+<script type="text/html" id="job-list-item">
+<h4 style="display: inline-block">
+  <!-- ko if: type() == 'IMPORT' -->
+  <i class="icon-download-alt"></i>&nbsp;
+  <span data-bind="text: type"></span>
+  <span data-bind="text: name"></span>
+  <span class="muted">
+    <span>${_('From ')}</span>
+    <span data-bind="text: $root.getDatabaseByConnectionId(connection_id())"></span>
+    <span>${_('To ')}</span>
+    <span data-bind="text: storageType"></span>
+  </span>
+  <!-- /ko -->
+  <!-- ko if: type() == 'EXPORT' -->
+  <i class="icon-upload-alt"></i>&nbsp;
+  <span data-bind="text: type"></span>
+  <span class="muted">
+    <span>${_('From ')}</span>
+    <span data-bind="text: storageType"></span>
+    <span>${_('To ')}</span>
+    <span data-bind="text: $root.getDatabaseByConnectionId(connection_id())"></span>
+  </span>
+  <!-- /ko -->
+</h4>
+</script>
+
 <script type="text/html" id="job-editor-form-error">
 <!-- ko if: name() in $root.errors() -->
   <div class="alert alert-error">

+ 13 - 0
apps/sqoop/static/js/sqoop.connections.js

@@ -50,6 +50,19 @@ var connections = (function($) {
       self.persisted = ko.computed(function() {
         return self.id() > -1;
       });
+      self.connectionString = ko.computed(function() {
+        var connection_string = null;
+        $.each(self.connector(), function(index, form) {
+          if (form.name() == 'connection') {
+            $.each(form.inputs(), function(index, input) {
+              if (input.name() == 'connection.connectionString') {
+                connection_string = input.value();
+              }
+            });
+          }
+        });
+        return connection_string;
+      });
     }
   });
 

+ 13 - 0
apps/sqoop/static/js/sqoop.jobs.js

@@ -113,6 +113,19 @@ var jobs = (function($) {
         });
         return (output_directory) ? '/filebrowser/view' + output_directory : null;
       });
+      self.storageType = ko.computed(function() {
+        var storage_type = null;
+        $.each(self.framework(), function(index, form) {
+          if (form.name() == 'output') {
+            $.each(form.inputs(), function(index, input) {
+              if (input.name() == 'output.storageType') {
+                storage_type = input.value();
+              }
+            });
+          }
+        });
+        return storage_type;
+      });
 
       self.runningInterval = 0;
     },

+ 24 - 2
apps/sqoop/static/js/sqoop.js

@@ -262,12 +262,19 @@ var viewModel = new (function() {
     }
   };
 
-  self.chooseConnectionById = function(id) {
+  self.getConnectionById = function(id) {
+    var connection = null;
     $.each(self.connections(), function(index, conn) {
       if (conn.id() == id) {
-        self.editConnection(conn);
+        connection = conn;
       }
     });
+    return connection;
+  };
+
+  self.chooseConnectionById = function(id) {
+    var self = this;
+    self.editConnection(self.getConnectionById(id) || self.editConnection());
   };
 
   self.deselectAllConnections = function() {
@@ -334,6 +341,21 @@ var viewModel = new (function() {
   self.help = function(component, name) {
     var self = this;
     return self[component]().resources[name + '.help'];
+  };
+
+  self.getDatabaseByConnectionId = function(id) {
+    var self = this;
+    var connection = self.getConnectionById(id);
+    if (connection) {
+      var connection_string = connection.connectionString();
+      if (connection_string) {
+        var connection_string_parts = connection.connectionString().split(':');
+        if (connection_string_parts.length > 2) {
+          return connection_string_parts[1].toUpperCase();
+        }
+      }
+    }
+    return null;
   }
 })();