Explorar o código

HUE-5506 [fb] Frontend to submit file compression as batch job

krish %!s(int64=9) %!d(string=hai) anos
pai
achega
cd6cbdb

+ 4 - 0
apps/filebrowser/src/filebrowser/templates/listdir.mako

@@ -125,6 +125,10 @@ ${ fb_components.menubar() }
                 <i class="fa fa-play"></i> ${_('Extract')}
               </button>
             % endif
+             <button class="btn compressFilesBtn" title="${_('Compress')}"
+               data-bind="visible: selectedFiles().length > 0, click: confirmCompressFiles">
+               <i class="fa fa-play"></i> ${_('Compress')}
+             </button>
           % endif
         </div>
       </%def>

+ 55 - 0
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -118,6 +118,28 @@ from django.utils.translation import ugettext as _
     <!-- /ko -->
   </div>
 
+  <!-- compress modal -->
+  <div id="confirmCompressModal" class="modal hide fade">
+    <div class="modal-header">
+      <a href="#" class="close" data-dismiss="modal">&times;</a>
+      <h3>${_('Compress Files')}</h3>
+    </div>
+    <!-- ko if: selectedFiles -->
+    <div class="modal-body">
+      <p>${_('Start a task to compress the selected file(s).')}</p>
+      <ul data-bind="foreach: selectedFiles()">
+        <li>
+          <span data-bind="text: $data.name"> </span>
+        </li>
+      </ul>
+    </div>
+    <div class="modal-footer">
+      <a class="btn" data-dismiss="modal">${_('No')}</a>
+      <input type="submit" value="${_('Yes')}" class="btn btn-danger" data-bind="click: compressSelectedFiles"/>
+    </div>
+    <!-- /ko -->
+  </div>
+
   <!-- delete modal -->
   <div id="deleteModal" class="modal hide fade">
     <div class="modal-header">
@@ -1608,6 +1630,13 @@ from django.utils.translation import ugettext as _
         });
       };
 
+      self.confirmCompressFiles = function() {
+        $("#confirmCompressModal").modal({
+          keyboard:true,
+          show:true
+        });
+      };
+
       self.extractSelectedArchive = function() {
         $("#confirmExtractModal").modal("hide");
         $.post("/filebrowser/extract_archive", {
@@ -1625,6 +1654,32 @@ from django.utils.translation import ugettext as _
         });
       };
 
+      self.compressSelectedFiles = function() {
+        $("#confirmCompressModal").modal("hide");
+
+        var fileNames = [];
+        $(self.selectedFiles()).each(function (index, file) {
+          fileNames.push(file.name);
+        });
+
+        $.post("/filebrowser/compress_files", {
+          "files": fileNames,
+          "upload_path": self.currentPath(),
+        }, function (data) {
+          if (data.status == 0) {
+            var jobId = '';
+            if (data.handle) {
+              jobId = data.handle.id;
+            }
+            $.jHueNotify.info("${ _('Oozie job ') }" + jobId + "${_(' submitted for archive extraction.') }");
+          } else {
+            $(document).trigger("error", data.message);
+          }
+        }).fail(function (xhr, textStatus, errorThrown) {
+          $(document).trigger("error", xhr.responseText);
+        });
+      };
+
       self.createDirectory = function (formElement) {
         $(formElement).attr("action", "/filebrowser/mkdir?next=${url('filebrowser.views.view', path='')}" + self.currentPath());
         if ($.trim($("#newDirectoryNameInput").val()) == "") {