Преглед на файлове

HUE-903 [beeswax] Save results in an HDFS directory is broken

Save to HDFS now redirects correctly to fb
Added fileChooser button
Fixed popup styles
Enrico Berti преди 13 години
родител
ревизия
d77516c
променени са 3 файла, в които са добавени 162 реда и са изтрити 122 реда
  1. 65 36
      apps/beeswax/src/beeswax/templates/save_results.mako
  2. 96 85
      apps/beeswax/src/beeswax/templates/watch_results.mako
  3. 1 1
      apps/beeswax/src/beeswax/views.py

+ 65 - 36
apps/beeswax/src/beeswax/templates/save_results.mako

@@ -38,7 +38,12 @@ ${layout.menubar(section='history')}
 		<input id="id_save_target_1" type="radio" name="save_target" value="to HDFS directory">
 		&nbsp;${_('In an HDFS directory')}
 	</label>
-	${comps.field(form['target_dir'], notitle=True, hidden=True, placeholder=_('Results location'))}
+	${comps.field(form['target_dir'], notitle=True, hidden=True, placeholder=_('Results location'), klass="pathChooser")}
+  <br/>
+  <br/>
+  <div id="fileChooserModal" class="smallModal well hide">
+    <a href="#" class="close" data-dismiss="modal">&times;</a>
+  </div>
   <br/><br/>
   <input type="submit" name="save" value="${_('Save')}" class="btn primary"/>
   <input type="submit" name="cancel" value="${_('Cancel')}" class="btn"/>
@@ -47,41 +52,65 @@ ${layout.menubar(section='history')}
 
 
 <script type="text/javascript" charset="utf-8">
-	$(document).ready(function(){
-		$("input[name='save_target']").change(function(){
-			$("#fieldRequired").addClass("hide");
-			$("input[name='target_dir']").removeClass("fieldError");
-			$("input[name='target_table']").removeClass("fieldError");
-			if ($(this).val().indexOf("HDFS")>-1){
-				$("input[name='target_table']").addClass("hide");
-				$("input[name='target_dir']").removeClass("hide");
-			}
-			else {
-				$("input[name='target_table']").removeClass("hide");
-				$("input[name='target_dir']").addClass("hide");
-			}
-		});
+  $(document).ready(function () {
+    $("input[name='save_target']").change(function () {
+      $("#fieldRequired").addClass("hide");
+      $("input[name='target_dir']").removeClass("fieldError");
+      $("input[name='target_table']").removeClass("fieldError");
+      if ($(this).val().indexOf("HDFS") > -1) {
+        $("input[name='target_table']").addClass("hide");
+        $("input[name='target_dir']").removeClass("hide");
+        $(".fileChooserBtn").removeClass("hide");
+      }
+      else {
+        $("input[name='target_table']").removeClass("hide");
+        $("input[name='target_dir']").addClass("hide");
+        $(".fileChooserBtn").addClass("hide");
+      }
+    });
 
-		$("#saveForm").submit(function(e){
-			if ($(e.originalEvent.explicitOriginalTarget).attr("name") == "cancel"){
-				return true;
-			}
-			if ($("input[name='save_target']:checked").val().indexOf("HDFS")>-1){
-				if ($.trim($("input[name='target_dir']").val()) == ""){
-					$("#fieldRequired").removeClass("hide");
-					$("input[name='target_dir']").addClass("fieldError");
-					return false;
-				}
-			}
-			else {
-				if ($.trim($("input[name='target_table']").val()) == ""){
-					$("#fieldRequired").removeClass("hide");
-					$("input[name='target_table']").addClass("fieldError");
-					return false;
-				}
-			}
-			return true;
-		});
-	});
+    $("#saveForm").submit(function (e) {
+      if ($(e.originalEvent.explicitOriginalTarget).attr("name") == "cancel") {
+        return true;
+      }
+      if ($("input[name='save_target']:checked").val().indexOf("HDFS") > -1) {
+        if ($.trim($("input[name='target_dir']").val()) == "") {
+          $("#fieldRequired").removeClass("hide");
+          $("input[name='target_dir']").addClass("fieldError");
+          return false;
+        }
+      }
+      else {
+        if ($.trim($("input[name='target_table']").val()) == "") {
+          $("#fieldRequired").removeClass("hide");
+          $("input[name='target_table']").addClass("fieldError");
+          return false;
+        }
+      }
+      return true;
+    });
+
+    $("input[name='target_dir']").after(getFileBrowseButton($("input[name='target_dir']")));
+
+    function getFileBrowseButton(inputElement) {
+      return $("<a>").addClass("btn").addClass("fileChooserBtn").addClass("hide").text("..").click(function (e) {
+        e.preventDefault();
+        $("#fileChooserModal").jHueFileChooser({
+          onFolderChange:function (filePath) {
+            inputElement.val(filePath);
+          },
+          onFolderChoose:function (filePath) {
+            inputElement.val(filePath);
+            $("#fileChooserModal").slideUp();
+          },
+          createFolder:false,
+          uploadFile:false,
+          selectFolder:true,
+          initialPath:$.trim(inputElement.val())
+        });
+        $("#fileChooserModal").slideDown();
+      });
+    }
+  });
 </script>
 ${commonfooter(messages)}

+ 96 - 85
apps/beeswax/src/beeswax/templates/watch_results.mako

@@ -123,98 +123,109 @@ ${layout.menubar(section='query')}
 </div>
 
 %if can_save:
-<div id="saveAs" class="modal hide fade">
-	<form id="saveForm" action="${url('beeswax.views.save_results', query.id) }" method="POST" class="form form-inline form-padding-fix">
-	    <div class="modal-header">
-	        <a href="#" class="close" data-dismiss="modal">&times;</a>
-	        <h3>${_('Save Query Results')}</h3>
-	    </div>
-	    <div class="modal-body">
-			<label class="radio">
-				<input id="id_save_target_0" type="radio" name="save_target" value="to a new table" checked="checked"/>
-				&nbsp;${_('In a new table')}
-			</label>
-			${comps.field(save_form['target_table'], notitle=True, placeholder=_('Table Name'))}
-			<br/>
-			<label class="radio">
-				<input id="id_save_target_1" type="radio" name="save_target" value="to HDFS directory">
-				&nbsp;${_('In an HDFS directory')}
-			</label>
-			${comps.field(save_form['target_dir'], notitle=True, hidden=True, placeholder=_('Results location'), klass="pathChooser")}
-			<br/>
-			<br/>
-			<div id="fileChooserModal" class="smallModal well hide">
-				<a href="#" class="close" data-dismiss="modal">&times;</a>
-			</div>
-	    </div>
-	    <div class="modal-footer">
-			<div id="fieldRequired" class="hide" style="position: absolute; left: 10;">
-				<span class="label label-important">${_('Sorry, name is required.')}</span>
-	        </div>
-	        <input type="submit" class="btn primary" value="${_('Save')}" name="save" />
-			<button class="btn" data-dismiss="modal">${_('Cancel')}</button>
-	    </div>
-    </form>
-</div>
+  <div id="saveAs" class="modal hide fade">
+  <form id="saveForm" action="${url('beeswax.views.save_results', query.id) }" method="POST"
+        class="form form-inline form-padding-fix">
+    <div class="modal-header">
+      <a href="#" class="close" data-dismiss="modal">&times;</a>
+      <h3>${_('Save Query Results')}</h3>
+    </div>
+    <div class="modal-body">
+      <label class="radio">
+        <input id="id_save_target_0" type="radio" name="save_target" value="to a new table" checked="checked"/>
+        &nbsp;${_('In a new table')}
+      </label>
+    ${comps.field(save_form['target_table'], notitle=True, placeholder=_('Table Name'))}
+      <br/>
+      <label class="radio">
+        <input id="id_save_target_1" type="radio" name="save_target" value="to HDFS directory">
+        &nbsp;${_('In an HDFS directory')}
+      </label>
+    ${comps.field(save_form['target_dir'], notitle=True, hidden=True, placeholder=_('Results location'), klass="pathChooser")}
+      <br/>
+      <br/>
+      <div id="fileChooserModal" class="smallModal well hide">
+        <a href="#" class="close" data-dismiss="modal">&times;</a>
+      </div>
+    </div>
+    <div class="modal-footer">
+      <div id="fieldRequired" class="hide" style="position: absolute; left: 10;">
+        <span class="label label-important">${_('Sorry, name is required.')}</span>
+      </div>
+      <a id="saveBtn" class="btn primary">${_('Save')}</a>
+      <input type="hidden" name="save" value="save"/>
+      <a class="btn" data-dismiss="modal">${_('Cancel')}</a>
+    </div>
+  </form>
+  </div>
 %endif
 
 
 <script type="text/javascript" charset="utf-8">
-    $(document).ready(function(){
-        $(".resultTable").dataTable({
-            "bPaginate": false,
-            "bLengthChange": false,
-            "bInfo": false
-        });
-        $(".dataTables_wrapper").css("min-height","0");
-        $(".dataTables_filter").hide();
-        $("input[name='save_target']").change(function(){
-            $("#fieldRequired").addClass("hide");
-            $("input[name='target_dir']").removeClass("fieldError");
-            $("input[name='target_table']").removeClass("fieldError");
-            if ($(this).val().indexOf("HDFS")>-1){
-                $("input[name='target_table']").addClass("hide");
-                $("input[name='target_dir']").removeClass("hide");
-            }
-            else {
-                $("input[name='target_table']").removeClass("hide");
-                $("input[name='target_dir']").addClass("hide");
-            }
-        });
+    $(document).ready(function () {
+      $(".resultTable").dataTable({
+        "bPaginate":false,
+        "bLengthChange":false,
+        "bInfo":false
+      });
+      $(".dataTables_wrapper").css("min-height", "0");
+      $(".dataTables_filter").hide();
+      $("input[name='save_target']").change(function () {
+        $("#fieldRequired").addClass("hide");
+        $("input[name='target_dir']").removeClass("fieldError");
+        $("input[name='target_table']").removeClass("fieldError");
+        if ($(this).val().indexOf("HDFS") > -1) {
+          $("input[name='target_table']").addClass("hide");
+          $("input[name='target_dir']").removeClass("hide");
+          $(".fileChooserBtn").removeClass("hide");
+        }
+        else {
+          $("input[name='target_table']").removeClass("hide");
+          $("input[name='target_dir']").addClass("hide");
+          $(".fileChooserBtn").addClass("hide");
+        }
+      });
 
-        $("#saveForm").submit(function(){
-            if ($("input[name='save_target']:checked").val().indexOf("HDFS")>-1){
-                if ($.trim($("input[name='target_dir']").val()) == ""){
-                    $("#fieldRequired").removeClass("hide");
-                    $("input[name='target_dir']").addClass("fieldError");
-                    return false;
-                }
-            }
-            else {
-                if ($.trim($("input[name='target_table']").val()) == ""){
-                    $("#fieldRequired").removeClass("hide");
-                    $("input[name='target_table']").addClass("fieldError");
-                    return false;
-                }
-            }
-            return true;
-        });
+      $("#saveBtn").click(function () {
+        if ($("input[name='save_target']:checked").val().indexOf("HDFS") > -1) {
+          if ($.trim($("input[name='target_dir']").val()) == "") {
+            $("#fieldRequired").removeClass("hide");
+            $("input[name='target_dir']").addClass("fieldError");
+            return false;
+          }
+        }
+        else {
+          if ($.trim($("input[name='target_table']").val()) == "") {
+            $("#fieldRequired").removeClass("hide");
+            $("input[name='target_table']").addClass("fieldError");
+            return false;
+          }
+        }
+        $("#saveForm").submit();
+      });
+
+
+      $("input[name='target_dir']").after(getFileBrowseButton($("input[name='target_dir']")));
 
-        $(".pathChooser").click(function(){
-            var self = this;
-            $("#fileChooserModal").jHueFileChooser({
-                initialPath: $(self).val(),
-                onFileChoose: function(filePath) {
-                    $(self).val(filePath);
-                },
-                onFolderChange: function(folderPath){
-                    $(self).val(folderPath);
-                },
-                createFolder: false,
-                uploadFile: false
-            });
-            $("#fileChooserModal").slideDown();
+      function getFileBrowseButton(inputElement) {
+        return $("<a>").addClass("btn").addClass("fileChooserBtn").addClass("hide").text("..").click(function (e) {
+          e.preventDefault();
+          $("#fileChooserModal").jHueFileChooser({
+            onFolderChange:function (filePath) {
+              inputElement.val(filePath);
+            },
+            onFolderChoose:function (filePath) {
+              inputElement.val(filePath);
+              $("#fileChooserModal").slideUp();
+            },
+            createFolder:false,
+            uploadFile:false,
+            selectFolder:true,
+            initialPath:$.trim(inputElement.val())
+          });
+          $("#fileChooserModal").slideDown();
         });
+      }
     });
 </script>
 

+ 1 - 1
apps/beeswax/src/beeswax/views.py

@@ -1006,7 +1006,7 @@ def save_results(request, id):
           request.fs.rename_star(result_meta.table_dir, target_dir)
           LOG.debug("Moved results from %s to %s" % (result_meta.table_dir, target_dir))
           query_history.save_state(models.QueryHistory.STATE.expired)
-          return HttpResponse(urlresolvers.reverse('filebrowser.views.view', kwargs={'path': target_dir}))
+          return redirect(urlresolvers.reverse('filebrowser.views.view', kwargs={'path': target_dir}))
         elif form.cleaned_data['save_target'] == form.SAVE_TYPE_TBL:
           # To new table
           try: