]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7399 Permalink to line > 1000 doesn't work
authorStas Vilchik <vilchiks@gmail.com>
Thu, 14 Apr 2016 13:43:17 +0000 (15:43 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Thu, 14 Apr 2016 13:43:17 +0000 (15:43 +0200)
server/sonar-web/src/main/js/apps/source-viewer/app.js
server/sonar-web/src/main/js/components/source-viewer/main.js

index bc3ee1639186afffc30f314f53a314e0dad76f53..1a26c0920080ba1ee219c0868c13b4204a5f57de 100644 (file)
@@ -28,13 +28,16 @@ const init = function () {
 
   const viewer = new SourceViewer();
   this.mainRegion.show(viewer);
-  viewer.open(options.file.uuid);
+
   if (typeof options.file.line === 'number') {
+    viewer.open(options.file.uuid, { aroundLine: options.file.line });
     viewer.on('loaded', function () {
       viewer
           .highlightLine(options.file.line)
           .scrollToLine(options.file.line);
     });
+  } else {
+    viewer.open(options.file.uuid);
   }
 };
 
index 24e817c104bdb5c793608de5e2010b97730c4d89..26add5f014b224c60694d2795ac7c9c0791c1b97 100644 (file)
@@ -136,7 +136,7 @@ export default Marionette.LayoutView.extend({
         .set(_.result(this.model, 'defaults'))
         .set({ uuid: id });
     this.requestComponent().done(function () {
-      that.requestSource()
+      that.requestSource(opts.aroundLine)
           .done(finalize)
           .fail(function () {
             that.model.set({
@@ -171,11 +171,14 @@ export default Marionette.LayoutView.extend({
     });
   },
 
-  linesLimit () {
-    return {
-      from: 1,
-      to: this.LINES_LIMIT
-    };
+  linesLimit (aroundLine) {
+    if (aroundLine) {
+      return {
+        from: Math.max(1, aroundLine - this.LINES_AROUND),
+        to: aroundLine + this.LINES_LIMIT
+      };
+    }
+    return { from: 1, to: this.LINES_LIMIT };
   },
 
   getUTCoverageStatus (row) {
@@ -206,10 +209,10 @@ export default Marionette.LayoutView.extend({
     return status;
   },
 
-  requestSource () {
+  requestSource (aroundLine) {
     const that = this;
     const url = window.baseUrl + '/api/sources/lines';
-    const options = _.extend({ uuid: this.model.id }, this.linesLimit());
+    const options = _.extend({ uuid: this.model.id }, this.linesLimit(aroundLine));
     return $.get(url, options).done(function (data) {
       let source = (data.sources || []).slice(0);
       if (source.length === 0 || (source.length > 0 && _.first(source).line === 1)) {
@@ -624,7 +627,7 @@ export default Marionette.LayoutView.extend({
     const url = window.baseUrl + '/api/sources/lines';
     const options = {
       uuid: this.model.id,
-      from: firstLine - this.LINES_AROUND,
+      from: Math.max(1, firstLine - this.LINES_AROUND),
       to: firstLine - 1
     };
     return $.get(url, options).done(function (data) {