Pārlūkot izejas kodu

HUE-1543 [core] Consolidate Filechooser plugin

Solved possible null exception
Improved style and added spinner
Enrico Berti 12 gadi atpakaļ
vecāks
revīzija
82820ca

+ 1 - 1
apps/beeswax/src/beeswax/templates/choose_file.mako

@@ -128,7 +128,7 @@ ${ commonheader(_('Create table from file'), 'metastore', user) | n,unicode }
 <style type="text/css">
     #filechooser {
         min-height: 100px;
-        overflow-y: scroll;
+        overflow-y: auto;
         margin-top: 10px;
     }
 

+ 1 - 1
apps/beeswax/src/beeswax/templates/create_database.mako

@@ -145,7 +145,7 @@ ${ commonheader(_("Create database"), 'metastore', user) | n,unicode }
 <style type="text/css">
   #filechooser {
     min-height: 100px;
-    overflow-y: scroll;
+    overflow-y: auto;
     margin-top: 10px;
     height: 250px;
   }

+ 1 - 1
apps/beeswax/src/beeswax/templates/create_table_manually.mako

@@ -409,7 +409,7 @@ ${ commonheader(_("Create table manually"), 'metastore', user) | n,unicode }
 <style type="text/css">
   #filechooser {
     min-height: 100px;
-    overflow-y: scroll;
+    overflow-y: auto;
     margin-top: 10px;
     height: 250px;
   }

+ 10 - 10
apps/beeswax/src/beeswax/templates/execute.mako

@@ -129,7 +129,7 @@ ${layout.menubar(section='query')}
                 <div class="control-group">
                     ${comps.label(f['type'])}
                     ${comps.field(f['type'], render_default=True, attrs=dict(
-                        klass="span8"
+                        klass="input-medium"
                     ))}
                 </div>
 
@@ -137,7 +137,7 @@ ${layout.menubar(section='query')}
                     ${comps.label(f['path'])}
                     ${comps.field(f['path'], attrs=dict(
                         placeholder="/user/foo/udf.jar",
-                        klass="input-small file_resourcesField span8",
+                        klass="input-medium file_resourcesField pathChooser",
                         data_filters=f['path'].html_name
                     ))}
                 </div>
@@ -396,11 +396,11 @@ ${layout.menubar(section='query')}
   }
   #filechooser {
     min-height: 100px;
-    overflow-y: scroll;
+    overflow-y: auto;
   }
 
   .control-group {
-    margin-bottom: 0!important;
+    margin-bottom: 3px!important;
   }
 
   .control-group label {
@@ -415,13 +415,9 @@ ${layout.menubar(section='query')}
   }
 
   .param {
-    background: #FDFDFD;
     padding: 8px 8px 1px 8px;
-    border-radius: 4px;
-    -webkit-border-radius: 4px;
-    -moz-border-radius: 4px;
     margin-bottom: 5px;
-    border: 1px solid #EEE;
+    border-bottom: 1px solid #EEE;
   }
 
   .remove {
@@ -430,7 +426,8 @@ ${layout.menubar(section='query')}
 
   .file_resourcesField {
     border-radius: 3px 0 0 3px;
-    border-right: 0;
+    border-right: 0!important;
+    min-height: 27px!important;
   }
 
   .fileChooserBtn {
@@ -821,6 +818,9 @@ ${layout.menubar(section='query')}
         'trigger': 'hover',
         'html': true
     });
+
+    // hack for select default rendered fields
+    $("select").addClass("input-medium");
 </script>
 
 ${ commonfooter(messages) | n,unicode }

+ 1 - 1
apps/metastore/src/metastore/templates/popups/load_data.mako

@@ -68,7 +68,7 @@ from django.utils.translation import ugettext as _
      display: none;
      min-height: 100px;
      height: 250px;
-     overflow-y: scroll;
+     overflow-y: auto;
      margin-top: 10px;
    }
 

+ 38 - 27
desktop/core/static/js/jquery.filechooser.js

@@ -95,10 +95,16 @@
 
     Plugin.prototype.navigateTo = function (path) {
         var _parent = this;
-        $(_parent.element).empty();
+        if (navigator.userAgent.match(/msie/i)) {
+          $(_parent.element).html("<img src='/static/art/spinner.gif' />");
+        }
+        else {
+          $(_parent.element).html("<i style=\"font-size: 24px; color: #DDD\" class=\"icon-spinner icon-spin\"></i>");
+        }
         $.getJSON("/filebrowser/chooser" + path, function (data) {
+            $(_parent.element).empty();
             path = data.current_dir_path; // use real path.
-            var _flist = $("<ul>").addClass("unstyled");
+            var _flist = $("<ul>").addClass("unstyled").css("margin-left", "2px");
             if (data.title != null && data.title == "Error") {
                 var _errorMsg = $("<div>").addClass("alert").addClass("alert-error").text(data.message);
                 _errorMsg.appendTo($(_parent.element));
@@ -115,7 +121,7 @@
                 }
                 $.totalStorage(STORAGE_PREFIX + _parent.options.user, path);
                 _parent.previousPath = path;
-                var _breadcrumbs = $("<ul>").addClass("hueBreadcrumb").css("padding", "0");
+                var _breadcrumbs = $("<ul>").addClass("hueBreadcrumb").css("padding", "0").css("marginLeft", "0");
                 var _home = $("<li>");
                 var _homelink = $("<a>").addClass("nounderline").html('<i class="icon-home"></i> Home').css("cursor", "pointer").click(function () {
                     _parent.navigateTo("/?default_to_home");
@@ -123,33 +129,35 @@
                 _homelink.appendTo(_home);
                 $("<span>").addClass("divider").css("margin-right", "20px").appendTo(_home);
                 _home.appendTo(_breadcrumbs);
-                var _bLength = data.breadcrumbs.length;
-                $(data.breadcrumbs).each(function (cnt, crumb) {
-                    var _crumb = $("<li>");
-                    var _crumbLink = $("<a>");
-                    var _crumbLabel = (crumb.label != null && crumb.label != "") ? crumb.label : "/";
-                    _crumbLink.attr("href", "javascript:void(0)").text(_crumbLabel).appendTo(_crumb);
-                    if (cnt < _bLength - 1) {
-                        if (cnt > 0) {
-                            $("<span>").addClass("divider").text("/").appendTo(_crumb);
-                        }
-                        else {
-                            $("<span>").html("&nbsp;").appendTo(_crumb);
-                        }
-                    }
-                    _crumb.click(function () {
-                        var _url = (crumb.url != null && crumb.url != "") ? crumb.url : "/";
-                        _parent.options.onFolderChange(_url);
-                        _parent.navigateTo(_url);
-                    });
-                    _crumb.appendTo(_breadcrumbs);
-                });
+                if (typeof data.breadcrumbs != "undefined" && data.breadcrumbs != null){
+                  var _bLength = data.breadcrumbs.length;
+                  $(data.breadcrumbs).each(function (cnt, crumb) {
+                      var _crumb = $("<li>");
+                      var _crumbLink = $("<a>");
+                      var _crumbLabel = (crumb.label != null && crumb.label != "") ? crumb.label : "/";
+                      _crumbLink.attr("href", "javascript:void(0)").text(_crumbLabel).appendTo(_crumb);
+                      if (cnt < _bLength - 1) {
+                          if (cnt > 0) {
+                              $("<span>").addClass("divider").text("/").appendTo(_crumb);
+                          }
+                          else {
+                              $("<span>").html("&nbsp;").appendTo(_crumb);
+                          }
+                      }
+                      _crumb.click(function () {
+                          var _url = (crumb.url != null && crumb.url != "") ? crumb.url : "/";
+                          _parent.options.onFolderChange(_url);
+                          _parent.navigateTo(_url);
+                      });
+                      _crumb.appendTo(_breadcrumbs);
+                  });
+                }
                 _breadcrumbs.appendTo($(_parent.element));
 
                 $(data.files).each(function (cnt, file) {
                     var _f = $("<li>");
                     var _flink = $("<a>");
-                    _flink.attr("href", "javascript:void(0)").text(" " + file.name).appendTo(_f);
+                    _flink.attr("href", "javascript:void(0)").text(" " + (file.name != "" ? file.name : "..")).appendTo(_f);
                     if (file.type == "dir") {
                         $("<i class='icon-folder-close'></i>").prependTo(_flink);
                         _f.click(function () {
@@ -248,13 +256,16 @@
                 if (_showActions){
                     _actions.appendTo($(_parent.element));
                 }
+                window.setTimeout(function () {
+                  $(_parent.element).parent().scrollTop(0)
+                }, 100);
             }
         }).error(function(){
-            _parent.options.onError();
-            _parent.navigateTo(_parent.options.errorRedirectPath != "" ? _parent.options.errorRedirectPath : "/?default_to_home");
             if ($.jHueNotify) {
                 $.jHueNotify.info(_parent.options.labels.FILE_NOT_FOUND);
             }
+            _parent.navigateTo(_parent.options.errorRedirectPath != "" ? _parent.options.errorRedirectPath : "/?default_to_home");
+            _parent.options.onError();
         });
     };