aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-server/src/main/coffee/component-viewer/source.coffee
blob: e4ea8c7502af2f9311b9d9adc67fc18519287a0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
define [
  'backbone.marionette'
  'templates/component-viewer'
  'component-viewer/coverage-popup'
  'common/handlebars-extensions'
], (
  Marionette
  Templates
  CoveragePopupView
) ->

  $ = jQuery


  class SourceView extends Marionette.ItemView
    template: Templates['source']


    events:
      'click .coverage a': 'showCoveragePopup'


    onRender: ->
      @delegateEvents()


    showSpinner: ->
      @$el.html '<div style="padding: 10px;"><i class="spinner"></i></div>'


    hideCoverage: ->
      @$('.coverage').hide()


    showCoveragePopup: (e) ->
      e.stopPropagation()
      $('body').click()
      popup = new CoveragePopupView
        triggerEl: $(e.currentTarget).closest('td')
        main: @options.main
      popup.render()


    serializeData: ->
      source = @model.get 'source'
      coverage = @model.get 'coverage'
      coverageConditions = @model.get 'coverageConditions'
      conditions = @model.get 'conditions'
      source = _.map source, (code, line) ->
        lineCoverage = coverage? && coverage[line]? && coverage[line]
        lineCoverageConditions = coverageConditions? && coverageConditions[line]? && coverageConditions[line]
        lineConditions = conditions? && conditions[line]? && conditions[line]
        lineCoverageStatus = lineCoverage? &&  if lineCoverage > 0 then 'green' else 'red'
        lineCoverageConditionsStatus = null
        if lineCoverageConditions? && conditions?
          lineCoverageConditionsStatus = 'red' if lineCoverageConditions == 0
          lineCoverageConditionsStatus = 'orange' if lineCoverageConditions > 0 && lineCoverageConditions < lineConditions
          lineCoverageConditionsStatus = 'green' if lineCoverageConditions == lineConditions

        lineNumber: line
        code: code
        coverage: lineCoverage
        coverageStatus: lineCoverageStatus
        coverageConditions: lineCoverageConditions
        conditions: lineConditions
        coverageConditionsStatus: lineCoverageConditionsStatus
      source: source