'click .js-toggle-duplications': 'toggleDuplications'
'click .js-toggle-scm': 'toggleSCM'
+ 'click .js-filter-line-to-cover': 'filterByLinesToCover'
+ 'click .js-filter-uncovered-lines': 'filterByUncoveredLines'
+
initialize: (options) ->
# @listenTo options.main.settings, 'change', @changeSettings
@toggleSetting e, @options.main.showWorkspace, @options.main.hideWorkspace
+ filterByLinesToCover: ->
+ @options.main.filterLinesByLinesToCover()
+
+
+ filterByUncoveredLines: ->
+ @options.main.filterLinesByUncoveredLines()
+
+
serializeData: ->
component = @options.main.component.toJSON()
if component.measures
) ->
$ = jQuery
+
API_COMPONENT = "#{baseUrl}/api/sources/app"
API_SOURCES = "#{baseUrl}/api/sources/show"
API_COVERAGE = "#{baseUrl}/api/coverage/show"
API_SCM = "#{baseUrl}/api/sources/scm"
+ LINES_AROUND_ISSUE = 4
+ LINES_AROUND_COVERED_LINE = 1
+
class ComponentViewer extends Marionette.Layout
$.get API_SCM, key: key, (data) =>
@source.set scm: data.scm
+
requestCoverage: (key) ->
$.get API_COVERAGE, key: key, (data) =>
@source.set coverage: data.coverage
- extractIssues: (data) ->
- issuesMeasures = {}
- data[0].msr.forEach (q) ->
- issuesMeasures[q.key] = q.frmt_val
- @component.set 'issuesMeasures', issuesMeasures
-
-
open: (key) ->
@workspace.reset [ key: key ]
@_open key
@requestCoverage(@key).done => @sourceView.render()
else
@sourceView.render()
- @sourceView.render()
hideCoverage: ->
@settings.set 'issues', true
if _.isArray(issues) && issues.length > 0
@source.set 'issues', issues
- @sourceView.render()
+ @filterLinesByIssues()
+ else
+ @sourceView.render()
hideIssues: ->
@sourceView.render()
+ filterLinesByIssues: ->
+ issues = @source.get 'issues'
+ @sourceView.resetShowBlocks()
+ issues.forEach (issue) =>
+ line = issue.line || 0
+ @sourceView.addShowBlock line - LINES_AROUND_ISSUE, line + LINES_AROUND_ISSUE
+ @sourceView.render()
+
+
+ filterLinesByLinesToCover: ->
+ unless @source.has 'coverage'
+ @requestCoverage(@key).done => @_filterLinesByLinesToCover()
+ else
+ @_filterLinesByLinesToCover()
+
+
+ _filterLinesByLinesToCover: ->
+ coverage = @source.get 'coverage'
+ @settings.set 'coverage', true
+ @sourceView.resetShowBlocks()
+ coverage.forEach (c) =>
+ if c[1]? && c[1]
+ line = c[0]
+ @sourceView.addShowBlock line - LINES_AROUND_COVERED_LINE, line + LINES_AROUND_COVERED_LINE
+ @sourceView.render()
+
+
+ filterLinesByUncoveredLines: ->
+ unless @source.has 'coverage'
+ @requestCoverage(@key).done => @_filterLinesByUncoveredLines()
+ else
+ @_filterLinesByUncoveredLines()
+
+
+ _filterLinesByUncoveredLines: ->
+ coverage = @source.get 'coverage'
+ @settings.set 'coverage', true
+ @sourceView.resetShowBlocks()
+ coverage.forEach (c) =>
+ if c[1]? && !c[1]
+ line = c[0]
+ @sourceView.addShowBlock line - LINES_AROUND_COVERED_LINE, line + LINES_AROUND_COVERED_LINE
+ @sourceView.render()
+
+
addTransition: (key, transition, optionsForCurrent, options) ->
if optionsForCurrent?
last = @workspace.at(@workspace.length - 1)
@showBlocks = []
+ resetShowBlocks: ->
+ @showBlocks = []
+
+
+ addShowBlock: (from, to) ->
+ @showBlocks.push from: from, to: to
+
+
onRender: ->
@delegateEvents()
@showSettings = false
source.forEach (sourceLine) =>
show = false
line = sourceLine.lineNumber
-
@showBlocks.forEach (block) ->
- if block.from <= line && block.to >= line
- show = true
-
- if @options.main.settings.get('issues') && !show
- @model.get('issues')?.forEach (issue) ->
- currentLine = issue.line || 0
- if (currentLine - LINES_AROUND_ISSUE) <= line && (currentLine + LINES_AROUND_ISSUE) >= line
- show = true
-
- if @options.main.settings.get('coverage') && !show
- @model.get('coverage')?.forEach (s) ->
- currentLine = s[0]
- if (currentLine - LINES_AROUND_COVERED_LINE) <= line && (currentLine + LINES_AROUND_COVERED_LINE) >= line
- show = true
-
+ show = true if block.from <= line && block.to >= line
_.extend sourceLine, show: show
source
<div class="component-viewer-header-expanded-bar-section-title">Unit Tests</div>
<ul class="component-viewer-header-expanded-bar-section-list">
<li><a class="item">
- <span>Line Coverage</span>
+ <span>Line coverage</span>
<span class="number">93.6%</span>
</a></li>
+ <li><a class="item js-filter-line-to-cover">
+ <span>Lines to cover</span>
+ <span class="number">171</span>
+ </a></li>
+ <li><a class="item js-filter-uncovered-lines">
+ <span>Uncovered lines</span>
+ <span class="number">16</span>
+ </a></li>
<li><a class="item">
- <span>Branch Coverage</span>
+ <span>Branch coverage</span>
<span class="number">100%</span>
</a></li>
+ <li><a class="item">
+ <span>Branches to cover</span>
+ <span class="number">16</span>
+ </a></li>
</ul>
</div>
<span class="number">47.2%</span>
</a></li>
<li><a class="item">
- <span>Branch Coverage</span>
- <span class="number">25%</span>
+ <span>Lines to cover</span>
+ <span class="number">171</span>
+ </a></li>
+ <li><a class="item">
+ <span>Uncovered lines</span>
+ <span class="number">16</span>
</a></li>
</ul>
</div>
\ No newline at end of file