diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/integration/SparkParagraphIT.java b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/SparkParagraphIT.java index 1eadd0ecef9..81c7190b186 100644 --- a/zeppelin-server/src/test/java/org/apache/zeppelin/integration/SparkParagraphIT.java +++ b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/SparkParagraphIT.java @@ -165,10 +165,10 @@ public void testSqlSpark() throws Exception { } WebElement paragraph1Result = driver.findElement(By.xpath( - getParagraphXPath(1) + "//div[@class=\"tableDisplay\"]")); + getParagraphXPath(1) + "//div[@class=\"tableDisplay\"]//table")); collector.checkThat("Paragraph from SparkParagraphIT of testSqlSpark result: ", - paragraph1Result.getText().toString(), CoreMatchers.equalTo("age\njob\nmarital\neducation\nbalance\n30" + - " unemployed married primary 1,787\nage\njob\nmarital\neducation\nbalance")); + paragraph1Result.getText().toString(), CoreMatchers.equalTo("age\njob\nmarital\neducation\nbalance\n" + + "30 unemployed married primary 1,787")); } catch (Exception e) { handleException("Exception in SparkParagraphIT while testSqlSpark", e); } diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph-chart-selector.html b/zeppelin-web/src/app/notebook/paragraph/paragraph-chart-selector.html index 26ffe5ccb09..76135b1d5c3 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph-chart-selector.html +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph-chart-selector.html @@ -41,11 +41,22 @@ ng-click="setGraphMode('scatterChart', true)"> - - + + diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js index 3a1e822881a..095c7cbc9ab 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js @@ -2145,21 +2145,27 @@ angular.module('zeppelinWebApp') $scope.keepScrollDown = false; }; - $scope.exportToTSV = function () { + $scope.exportToDSV = function (delimiter) { var data = $scope.paragraph.result; - var tsv = ''; + var dsv = ''; for (var titleIndex in $scope.paragraph.result.columnNames) { - tsv += $scope.paragraph.result.columnNames[titleIndex].name + '\t'; + dsv += $scope.paragraph.result.columnNames[titleIndex].name + delimiter; } - tsv = tsv.substring(0, tsv.length - 1) + '\n'; + dsv = dsv.substring(0, dsv.length - 1) + '\n'; for (var r in $scope.paragraph.result.msgTable) { var row = $scope.paragraph.result.msgTable[r]; - var tsvRow = ''; + var dsvRow = ''; for (var index in row) { - tsvRow += row[index].value + '\t'; + dsvRow += row[index].value + delimiter; } - tsv += tsvRow.substring(0, tsvRow.length - 1) + '\n'; + dsv += dsvRow.substring(0, dsvRow.length - 1) + '\n'; } - SaveAsService.SaveAs(tsv, 'data', 'tsv'); + var extension = ''; + if (delimiter === '\t') { + extension = 'tsv'; + } else if (delimiter === ',') { + extension = 'csv'; + } + SaveAsService.SaveAs(dsv, 'data', extension); }; }); diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph.css b/zeppelin-web/src/app/notebook/paragraph/paragraph.css index 59cc28f7014..3e620b5738f 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph.css +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph.css @@ -449,10 +449,6 @@ table.dataTable.table-condensed .sorting_desc:after { font-weight: 500; } -.dropdown-menu > li:first-child > a:hover { - background-color: transparent; -} - table.table-striped { border-top: 1px solid #ddd; margin-top: 20px; @@ -464,10 +460,16 @@ table.table-striped { cursor: pointer; } - .scroll-paragraph-up { bottom: 5px; cursor: pointer; position: absolute; right: 15px; } + +/* DSV download toggle button */ +.caretBtn { + padding-right: 4px !important; + padding-left: 4px !important; + width: 20px; +}