Procházet zdrojové kódy

HUE-2762 [notebook] Export all code of a Notebook

This adds an alternative to the action menu in the edit mode that once clicked will show a modal containing all the statements from all the snippets combined.
Johan Åhlén před 10 roky
rodič
revize
b86e0985ee

+ 19 - 0
apps/spark/src/spark/static/spark/js/spark.ko.js

@@ -651,6 +651,25 @@ function EditorViewModel(notebooks, options) {
 
   self.notebooks = ko.observableArray();
   self.selectedNotebook = ko.observable();
+  self.combinedContent = ko.observable();
+
+  self.displayCombinedContent = function () {
+    if (!self.selectedNotebook()) {
+      self.combinedContent('');
+    } else {
+      var statements = '';
+      $.each(self.selectedNotebook().snippets(), function (index, snippet) {
+        if (snippet.statement()) {
+          if (statements) {
+            statements += '\n\n';
+          }
+          statements += snippet.statement();
+        }
+      });
+      self.combinedContent(statements);
+    }
+    $("#combinedContentModal").modal("show");
+  };
 
   self.isEditing = ko.observable(false);
   self.isEditing.subscribe(function (newVal) {

+ 22 - 3
apps/spark/src/spark/templates/editor.mako

@@ -100,6 +100,7 @@ ${ commonheader(_('Query'), app_name, user, "68px") | n,unicode }
 <script src="${ static('desktop/js/nv.d3.scatterChart.js') }" type="text/javascript" charset="utf-8"></script>
 
 <script src="${ static('desktop/js/ko.charts.js') }" type="text/javascript" charset="utf-8"></script>
+<script src="${ static('desktop/js/ko.hue-bindings.js') }"> type="text/javascript" charset="utf-8"</script>
 
 <script src="${ static('desktop/ext/select2/select2.min.js') }" type="text/javascript" charset="utf-8"></script>
 
@@ -138,9 +139,14 @@ ${ commonheader(_('Query'), app_name, user, "68px") | n,unicode }
            <a href="javascript:void(0)" data-bind="click: function() { $root.selectedNotebook().clearResults() }">
              <i class="fa fa-eraser fa-fw"></i> ${ _('Clear all results') }
            </a>
-        </li>
-      </ul>
-    </div>
+         </li>
+         <li>
+           <a href="javascript:void(0)" data-bind="click: displayCombinedContent">
+             <i class="fa fa-file-text-o fa-fw"></i> ${ _('Display all Notebook content') }
+           </a>
+         </li>
+       </ul>
+     </div>
 
    &nbsp;&nbsp;&nbsp;
 
@@ -191,6 +197,19 @@ ${ commonheader(_('Query'), app_name, user, "68px") | n,unicode }
 
 </div>
 
+<div id="combinedContentModal" class="modal hide" data-backdrop="true" style="width:780px;margin-left:-410px!important">
+  <div class="modal-header">
+    <a href="javascript: void(0)" data-dismiss="modal" class="pull-right"><i class="fa fa-times"></i></a>
+    <h3>${_('All Notebook content')}</h3>
+  </div>
+  <div class="modal-body">
+    <pre data-bind="oneClickSelect, text: combinedContent"></pre>
+  </div>
+  <div class="modal-footer">
+    <a href="#" class="btn" data-dismiss="modal">${_('Close')}</a>
+  </div>
+</div>
+
 
 <a title="${_('Toggle Assist')}" class="pointer show-assist" data-bind="visible: !$root.isAssistVisible() && $root.isAssistAvailable(), click: $root.toggleAssist">
   <i class="fa fa-chevron-right"></i>