Browse Source

HUE-8888 [editor] Switch clipboard copy from text to formatted html table (#987)

Enrico Berti 6 years ago
parent
commit
e15ac5c8fb

+ 2 - 0
desktop/core/src/desktop/templates/common_header_footer_components.mako

@@ -285,6 +285,8 @@ from metadata.conf import has_optimizer, OPTIMIZER
   </div>
 </div>
 
+<div class="clipboard-content"></div>
+
 <script type="text/javascript">
 
   $(document).ready(function () {

+ 11 - 8
desktop/core/src/desktop/templates/common_notebook_ko_components.mako

@@ -389,30 +389,33 @@ from notebook.conf import ENABLE_SQL_INDEXER
         });
 
         var clipboard = new Clipboard('.clipboard' + self.snippet.id().split('-')[0], {
-          text: function () {
+          target: function (trigger) {
             if (self.snippet.result && self.snippet.result.data()) {
               var data = self.snippet.result.data();
-              var result = '';
+              var result = '<table><tr>';
               for (var i = 1; i < self.snippet.result.meta().length; i++) { // Skip the row number column
-                result += hueUtils.html2text(self.snippet.result.meta()[i].name) + '\t';
+                result += '<th>' + hueUtils.html2text(self.snippet.result.meta()[i].name) + '</th>';
               }
-              result += '\n';
+              result += '</tr>';
               data.forEach(function (row) {
+                result += '<tr>';
                 for (var i = 1; i < row.length; i++) { // Skip the row number column
-                  result += hueUtils.html2text(row[i]) + '\t';
+                  result += '<td>' + hueUtils.html2text(row[i]) + '</td>';
                 }
-                result += '\n';
+                result += '</tr>';
               });
-              return result;
+              $('.clipboard-content').html(result);
             } else {
-              return window.I18n('Error while copying results.');
+              $('.clipboard-content').html(window.I18n('Error while copying results.'));
             }
+            return $('.clipboard-content')[0];
           }
         });
 
         clipboard.on('success', function (e) {
           $.jHueNotify.info(self.snippet.result.data().length + ' ' + window.I18n('result(s) copied to the clipboard'));
           e.clearSelection();
+          $('.clipboard-content').empty();
         });
 
         self.trySaveResults = function () {