diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html b/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html index c35c4e5ade3..7c51f3ad6f3 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html @@ -82,6 +82,9 @@
  • Link this paragraph
  • +
  • + Export to TSV +
  • Clear output
  • diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js index c71e096bb48..082501bcc38 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js @@ -16,7 +16,7 @@ angular.module('zeppelinWebApp') .controller('ParagraphCtrl', function($scope,$rootScope, $route, $window, $element, $routeParams, $location, - $timeout, $compile, websocketMsgSrv, ngToast) { + $timeout, $compile, websocketMsgSrv, ngToast, SaveAsService) { var ANGULAR_FUNCTION_OBJECT_NAME_PREFIX = '_Z_ANGULAR_FUNC_'; $scope.parentNote = null; $scope.paragraph = null; @@ -2186,4 +2186,21 @@ angular.module('zeppelinWebApp') $scope.keepScrollDown = false; }; + $scope.exportToTSV = function () { + var data = $scope.paragraph.result; + var tsv = ''; + for (var titleIndex in $scope.paragraph.result.columnNames) { + tsv += $scope.paragraph.result.columnNames[titleIndex].name + '\t'; + } + tsv = tsv.substring(0, tsv.length - 1) + '\n'; + for (var r in $scope.paragraph.result.msgTable) { + var row = $scope.paragraph.result.msgTable[r]; + var tsvRow = ''; + for (var index in row) { + tsvRow += row[index].value + '\t'; + } + tsv += tsvRow.substring(0, tsvRow.length - 1) + '\n'; + } + SaveAsService.SaveAs(tsv, 'data', 'tsv'); + }; });