From 3bab6d0db9849aa8bb13ea9a4d970642647865b2 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Mon, 20 Oct 2014 11:44:26 +0200 Subject: [PATCH] SONAR-5760 Component Viewer fails to show a big files --- .../src/main/coffee/component-viewer/main.coffee | 9 ++++++++- .../src/main/coffee/component-viewer/source.coffee | 13 +++++++++---- .../src/main/hbs/component-viewer/cw-source.hbs | 8 ++++++-- .../main/resources/org/sonar/l10n/core.properties | 1 + 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/server/sonar-web/src/main/coffee/component-viewer/main.coffee b/server/sonar-web/src/main/coffee/component-viewer/main.coffee index e6da45caa2f..5ba64c236a0 100644 --- a/server/sonar-web/src/main/coffee/component-viewer/main.coffee +++ b/server/sonar-web/src/main/coffee/component-viewer/main.coffee @@ -65,6 +65,8 @@ define [ SCROLL_OFFSET = 10 + LINES_LIMIT = 3000 + class ComponentViewer extends utils.mixOf Marionette.Layout, IssuesMixin, CoverageMixin, DuplicationsMixin, SCMMixin @@ -201,10 +203,15 @@ define [ $.get API_MEASURES, data, (data) => measuresList = data[0].msr || [] measures = @component.get 'measures' + lines = null measuresList.forEach (m) -> measures[m.key] = m.frmt_val || m.data + lines = m.val if m.key == 'ncloc' @component.set 'measures', measures - @augmentWithNclocData() + if lines < LINES_LIMIT + @augmentWithNclocData() + else + delete measures['ncloc_data'] requestTrends: (key, period) -> diff --git a/server/sonar-web/src/main/coffee/component-viewer/source.coffee b/server/sonar-web/src/main/coffee/component-viewer/source.coffee index bad93f7bc93..423a555c3a3 100644 --- a/server/sonar-web/src/main/coffee/component-viewer/source.coffee +++ b/server/sonar-web/src/main/coffee/component-viewer/source.coffee @@ -22,6 +22,7 @@ define [ $ = jQuery API_COVERAGE_TESTS = "#{baseUrl}/api/tests/test_cases" + LINES_LIMIT = 3000 ISSUES_LIMIT = 100 @@ -91,6 +92,7 @@ define [ $(expand).insertBefore rows.first() lines = _.size @model.get 'source' + lines = Math.min lines, LINES_LIMIT lastShown = rows.last().data('line-number') if lastShown < lines expand = @expandTemplate from: lastShown, to: lines, settings: @options.main.settings.toJSON() @@ -274,16 +276,17 @@ define [ source.forEach (sourceLine) => show = false line = sourceLine.lineNumber - @showBlocks.forEach (block) -> - show = true if block.from <= line && block.to >= line - _.extend sourceLine, show: show + if line <= LINES_LIMIT + @showBlocks.forEach (block) -> + show = true if block.from <= line && block.to >= line + _.extend sourceLine, show: show source prepareSource: -> source = @model.get 'formattedSource' if source? - @augmentWithShow source + _.first @augmentWithShow(source), LINES_LIMIT getStatColumnsCount: -> @@ -313,3 +316,5 @@ define [ showZeroLine: @showZeroLine() issuesLimit: ISSUES_LIMIT issuesLimitReached: @model.get('activeIssues')?.length > ISSUES_LIMIT + linesLimit: LINES_LIMIT + linesLimitReached: _.size(@model.get 'source') > LINES_LIMIT diff --git a/server/sonar-web/src/main/hbs/component-viewer/cw-source.hbs b/server/sonar-web/src/main/hbs/component-viewer/cw-source.hbs index 96f27fd2125..33c9134e6e4 100644 --- a/server/sonar-web/src/main/hbs/component-viewer/cw-source.hbs +++ b/server/sonar-web/src/main/hbs/component-viewer/cw-source.hbs @@ -4,14 +4,18 @@ {{else}} - {{#if state.duplicationsInDeletedFiles}} -

{{t 'duplications.dups_found_on_deleted_resource'}}

+ {{#if linesLimitReached}} +

{{tp 'component_viewer.lines_limit_reached' linesLimit}}

{{/if}} {{#if issuesLimitReached}}

{{tp 'component_viewer.issues_limit_reached' issuesLimit}}

{{/if}} + {{#if state.duplicationsInDeletedFiles}} +

{{t 'duplications.dups_found_on_deleted_resource'}}

+ {{/if}} + {{#if showZeroLine}} diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index bd72fe78a44..71963578715 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -2726,6 +2726,7 @@ component_viewer.more_actions=More Actions component_viewer.new_window=Open in New Window component_viewer.get_permalink=Get Permalink component_viewer.covered_lines=Covered Lines +component_viewer.lines_limit_reached=For performance reasons, only the {0} first lines will be displayed. component_viewer.issues_limit_reached=For usability reasons, only the {0} first issues will be fully displayed. Remaining issues will simply be underlined. component_viewer.issues_limit_reached_tooltip={0}\n\nRefine your filter to be able to see the details of this issue. component_viewer.cannot_show=We're sorry, but something went wrong. Please try back in a few minutes and contact support if the problem persists. -- 2.39.5