Переглянути джерело

HUE-7248 [adls] filter filesystems for copy/save

jdesjean 8 роки тому
батько
коміт
d742759eec

+ 10 - 3
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -1420,9 +1420,12 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
               $("#moveModal .modal-footer div").show();
               $("#moveFilechooser").remove();
               $("<div>").attr("id", "moveFilechooser").appendTo($("#moveModal .modal-body"));
-
+              var scheme = paths.reduce(function(scheme, path) {
+                return path.substring(0, path.indexOf(":/")) || scheme
+              }, '') || 'hdfs';
               $("#moveFilechooser").jHueFileChooser({
-                initialPath: $("#moveDestination").val(),
+                initialPath: paths[0] || '',
+                filesystemsFilter: [scheme],
                 onNavigate: function (filePath) {
                   $("#moveDestination").val(filePath);
                 },
@@ -1473,8 +1476,12 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
           $("#copyModal .modal-footer div").show();
           $("#copyFilechooser").remove();
           $("<div>").attr("id", "copyFilechooser").appendTo($("#copyModal .modal-body"));
+          var scheme = paths.reduce(function(scheme, path) {
+            return path.substring(0, path.indexOf(":/")) || scheme
+          }, '') || 'hdfs';
           $("#copyFilechooser").jHueFileChooser({
-            initialPath: $("#copyDestination").val(),
+            initialPath: paths[0] || '',
+            filesystemsFilter: [scheme],
             onNavigate: function (filePath) {
               $("#copyDestination").val(filePath);
             },

+ 16 - 4
desktop/core/src/desktop/static/desktop/js/jquery.filechooser.js

@@ -184,7 +184,7 @@
   };
 
   Plugin.prototype.setFileSystems = function (filesystems) {
-    var self = this;
+    var self = this, filters, filesystemsFiltered;
     self.options.filesystems = [];
     Object.keys(filesystems).forEach(function (k) {
       if (filesystems[k]) {
@@ -192,10 +192,22 @@
       }
     });
     self.options.filesystems.sort();
-    $(self.element).data('fs', self.options.filesystems);
-    if (self.options.filesystems.length > 1) {
+    if (self.options.filesystemsFilter) {
+      filters = self.options.filesystemsFilter.reduce(function(filters, fs) {
+      filters[fs] = true;
+      return filters;
+    }, {});
+      filesystemsFiltered = self.options.filesystems.filter(function(fs) {
+        return filters[fs];
+      });
+    } else {
+      filesystemsFiltered = self.options.filesystems;
+    }
+
+    $(self.element).data('fs', filesystemsFiltered);
+    if (filesystemsFiltered.length > 1) {
       var $ul = $('<ul>').addClass('nav nav-list').css('border', 'none');
-      self.options.filesystems.forEach(function (fs) {
+      filesystemsFiltered.forEach(function (fs) {
         var filesysteminfo = self.options.filesysteminfo;
         var $li = $('<li>').attr('data-fs', fs).addClass(self.options.fsSelected === fs ? 'active' : '').html('<a class="pointer" style="padding-left: 6px">' + (filesysteminfo[fs] ? filesysteminfo[fs].label.name : fs.toUpperCase()) + '</a>');
         $li.on('click', function () {