Browse Source

HUE-7213 [editor] Mark the correct statement when executing selection after the first line

Johan Ahlen 8 years ago
parent
commit
2e1a8a6

+ 9 - 7
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -4875,13 +4875,15 @@
             }
             }
           }
           }
           if (!conflictingWithErrorMarkers) {
           if (!conflictingWithErrorMarkers) {
-            editor.session.addMarker(new AceRange(range.start.row, range.start.column, range.end.row, range.end.column), 'highlighted', 'line');
-            ace.require('ace/lib/dom').importCssString('.highlighted {\
-                background-color: #E3F7FF;\
-                position: absolute;\
-            }');
-            var selectionRange = editor.getSelectionRange();
-            editor.scrollToLine(Math.min(selectionRange.start.row, selectionRange.end.row) + range.start.row, true, true, function () {});
+            var lineOffset = snippet.lastAceSelectionRowOffset();
+            window.setTimeout(function () {
+              editor.session.addMarker(new AceRange(range.start.row + lineOffset, range.start.column, range.end.row + lineOffset, range.end.column), 'highlighted', 'line');
+              ace.require('ace/lib/dom').importCssString('.highlighted {\
+                  background-color: #E3F7FF;\
+                  position: absolute;\
+              }');
+              editor.scrollToLine(range.start.row + lineOffset, true, true, function () {});
+            }, 0);
           }
           }
         }
         }
         try {
         try {

+ 9 - 2
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -1141,6 +1141,7 @@ var EditorViewModel = (function() {
         (self.statementType() == 'document' && self.associatedDocumentUuid() && self.associatedDocumentUuid().length > 0);
         (self.statementType() == 'document' && self.associatedDocumentUuid() && self.associatedDocumentUuid().length > 0);
     });
     });
     self.lastExecuted = ko.observable(typeof snippet.lastExecuted != "undefined" && snippet.lastExecuted != null ? snippet.lastExecuted : 0);
     self.lastExecuted = ko.observable(typeof snippet.lastExecuted != "undefined" && snippet.lastExecuted != null ? snippet.lastExecuted : 0);
+    self.lastAceSelectionRowOffset = ko.observable(snippet.lastAceSelectionRowOffset || 0);
 
 
     self.executingBlockingOperation = null; // A ExecuteStatement()
     self.executingBlockingOperation = null; // A ExecuteStatement()
     self.showLongOperationWarning = ko.observable(false);
     self.showLongOperationWarning = ko.observable(false);
@@ -1167,6 +1168,11 @@ var EditorViewModel = (function() {
         huePubSub.publish('editor.refresh.statement.locations', self);
         huePubSub.publish('editor.refresh.statement.locations', self);
       }
       }
 
 
+      if (self.ace()) {
+        var selectionRange = self.ace().getSelectionRange();
+        self.lastAceSelectionRowOffset(Math.min(selectionRange.start.row, selectionRange.end.row));
+      }
+
       self.previousChartOptions = vm._getPreviousChartOptions(self);
       self.previousChartOptions = vm._getPreviousChartOptions(self);
       $(document).trigger("executeStarted", {vm: vm, snippet: self});
       $(document).trigger("executeStarted", {vm: vm, snippet: self});
       self.lastExecuted(now);
       self.lastExecuted(now);
@@ -2964,9 +2970,10 @@ var EditorViewModel = (function() {
         notebook.snippets().forEach(function (snippet) {
         notebook.snippets().forEach(function (snippet) {
           snippet.statement_raw.valueHasMutated();
           snippet.statement_raw.valueHasMutated();
           if (snippet.result.handle().statements_count > 1 && snippet.result.handle().start != null && snippet.result.handle().end != null) {
           if (snippet.result.handle().statements_count > 1 && snippet.result.handle().start != null && snippet.result.handle().end != null) {
+            var aceLineOffset = snippet.result.handle().aceLineOffset || 0;
             snippet.result.statement_range({
             snippet.result.statement_range({
-              start: snippet.result.handle().start,
-              end: snippet.result.handle().end
+              start: { row: snippet.result.handle().start.row + aceLineOffset, column: snippet.result.handle().start.column },
+              end: { row: snippet.result.handle().end.row + aceLineOffset, column: snippet.result.handle().end.column }
             });
             });
             snippet.result.statement_range.valueHasMutated();
             snippet.result.statement_range.valueHasMutated();
           }
           }