Browse Source

HUE-1753 [beeswax] Setting and files inputs in the editor are not user friendly

Improved a bit adding a tooltip on the field
Ajax stat on files doesn't try to download certain mimetypes anymore
Fixed layout problem of the file field on Chrome
Enrico Berti 12 years ago
parent
commit
5dc2eed

+ 39 - 3
apps/beeswax/src/beeswax/templates/execute.mako

@@ -50,7 +50,7 @@ ${layout.menubar(section='query')}
 
 
             <div class="control-group">
             <div class="control-group">
               <label>${_('Value')}</label>
               <label>${_('Value')}</label>
-              <input data-bind="value: value" type="text" class="span8" placeholder="1"/>
+              <input data-bind="value: value" type="text" class="settingValuesField span8" placeholder="1"/>
             </div>
             </div>
           </div>
           </div>
           <!-- /ko -->
           <!-- /ko -->
@@ -87,7 +87,7 @@ ${layout.menubar(section='query')}
 
 
             <div class="control-group">
             <div class="control-group">
               <label>${_('Path')}</label>
               <label>${_('Path')}</label>
-              <input data-bind="value: path" type="text" class="span8 pathChooser" placeholder="/user/foo/udf.jar"/>
+              <input data-bind="value: path" type="text" class="filesField span7 pathChooser" placeholder="/user/foo/udf.jar"/>
             </div>
             </div>
           </div>
           </div>
           <!-- /ko -->
           <!-- /ko -->
@@ -120,7 +120,7 @@ ${layout.menubar(section='query')}
 
 
             <div class="control-group">
             <div class="control-group">
               <label>${_('Class name')}</label>
               <label>${_('Class name')}</label>
-              <input data-bind="value: class_name" type="text" class="span8" placeholder="com.acme.example"/>
+              <input data-bind="value: class_name" type="text" class="classNamesField span8" placeholder="com.acme.example"/>
             </div>
             </div>
           </div>
           </div>
           <!-- /ko -->
           <!-- /ko -->
@@ -1594,6 +1594,15 @@ $(document).on('cancelled.query', function (e) {
   $(document).trigger("info", "${ _('Query canceled!') }")
   $(document).trigger("info", "${ _('Query canceled!') }")
 });
 });
 
 
+function updateSidebarTooltips(selector) {
+  $(selector).each(function(){
+    $(this).tooltip({
+      placement: "right",
+      title: $(this).val()
+    }).attr('data-original-title', $(this).val()).tooltip('fixTitle');
+  });
+}
+
 $(document).ready(function () {
 $(document).ready(function () {
   $(".pathChooser:not(:has(~ button))").after(getFileBrowseButton($(".pathChooser:not(:has(~ button))")));
   $(".pathChooser:not(:has(~ button))").after(getFileBrowseButton($(".pathChooser:not(:has(~ button))")));
 
 
@@ -1621,6 +1630,33 @@ $(document).ready(function () {
     'html': true
     'html': true
   });
   });
 
 
+  $(document).on("change", ".settingsField", function(){
+    updateSidebarTooltips(".settingsField");
+  });
+
+  $(document).on("change", ".settingValuesField", function(){
+    updateSidebarTooltips(".settingValuesField");
+  });
+
+  $(document).on("change", ".filesField", function(){
+    updateSidebarTooltips(".filesField");
+  });
+
+  $(document).on("change", ".functionsField", function(){
+    updateSidebarTooltips(".functionsField");
+  });
+
+  $(document).on("change", ".classNamesField", function(){
+    updateSidebarTooltips(".classNamesField");
+  });
+
+  // loads default
+  updateSidebarTooltips(".settingsField");
+  updateSidebarTooltips(".settingValuesField");
+  updateSidebarTooltips(".filesField");
+  updateSidebarTooltips(".functionsField");
+  updateSidebarTooltips(".classNamesField");
+
   % if app_name == 'impala':
   % if app_name == 'impala':
     $("#downloadQuery").click(function () {
     $("#downloadQuery").click(function () {
       $("<input>").attr("type", "hidden").attr("name", "button-submit").attr("value", "Execute").appendTo($("#advancedSettingsForm"));
       $("<input>").attr("type", "hidden").attr("name", "button-submit").attr("value", "Execute").appendTo($("#advancedSettingsForm"));

+ 1 - 0
apps/beeswax/static/js/beeswax.vm.js

@@ -577,6 +577,7 @@ function getFileBrowseButton(inputElement) {
       initialPath: inputElement.val(),
       initialPath: inputElement.val(),
       onFileChoose: function (filePath) {
       onFileChoose: function (filePath) {
         inputElement.val(filePath);
         inputElement.val(filePath);
+        inputElement.trigger("change");
         $("#chooseFile").modal("hide");
         $("#chooseFile").modal("hide");
       },
       },
       createFolder: false
       createFolder: false

+ 6 - 4
apps/filebrowser/src/filebrowser/views.py

@@ -496,11 +496,13 @@ def display(request, path):
     if not request.fs.isfile(path):
     if not request.fs.isfile(path):
         raise PopupException(_("Not a file: '%(path)s'") % {'path': path})
         raise PopupException(_("Not a file: '%(path)s'") % {'path': path})
 
 
-    mimetype = mimetypes.guess_type(path)[0]
+    # display inline files just if it's not an ajax request
+    if not request.is_ajax():
+      mimetype = mimetypes.guess_type(path)[0]
 
 
-    if mimetype is not None and INLINE_DISPLAY_MIMETYPE.search(mimetype):
-      path_enc = urlencode(path)
-      return redirect(reverse('filebrowser.views.download', args=[path_enc]) + '?disposition=inline')
+      if mimetype is not None and INLINE_DISPLAY_MIMETYPE.search(mimetype):
+        path_enc = urlencode(path)
+        return redirect(reverse('filebrowser.views.download', args=[path_enc]) + '?disposition=inline')
 
 
     stats = request.fs.stats(path)
     stats = request.fs.stats(path)
     encoding = request.GET.get('encoding') or i18n.get_site_encoding()
     encoding = request.GET.get('encoding') or i18n.get_site_encoding()