aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-quality-profile-view.coffee
blob: 7a1544bc9c4af9cb70d1575459ac48fd7fc0b98d (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
define [
  'backbone.marionette',
  'templates/coding-rules'
], (
  Marionette,
  Templates
) ->

  class CodingRulesDetailQualityProfileView extends Marionette.ItemView
    className: 'coding-rules-detail-quality-profile'
    template: Templates['coding-rules-detail-quality-profile']


    modelEvents:
      'change': 'render'


    ui:
      change: '.coding-rules-detail-quality-profile-change'
      revert: '.coding-rules-detail-quality-profile-revert'
      deactivate: '.coding-rules-detail-quality-profile-deactivate'


    events:
      'click @ui.change': 'change'
      'click @ui.revert': 'revert'
      'click @ui.deactivate': 'deactivate'


    change: ->
      @options.app.codingRulesQualityProfileActivationView.model = @model
      @options.app.codingRulesQualityProfileActivationView.show()


    revert: ->
      ruleKey = @options.rule.get('key')
      confirmDialog
        title: t 'coding_rules.revert_to_parent_definition'
        html: tp 'coding_rules.revert_to_parent_definition.confirm', @getParent().name
        yesHandler: =>
          jQuery.ajax
            type: 'POST'
            url: "#{baseUrl}/api/qualityprofiles/activate_rule"
            data:
              profile_key: @model.get('qProfile')
              rule_key: ruleKey
              reset: true
          .done =>
            @options.app.showRule ruleKey


    deactivate: ->
      ruleKey = @options.rule.get('key')
      myProfile = _.findWhere(@options.app.qualityProfiles, key: @model.get('qProfile'))
      confirmDialog
        title: t 'coding_rules.deactivate'
        html: tp 'coding_rules.deactivate.confirm', myProfile.name
        yesHandler: =>
          jQuery.ajax
            type: 'POST'
            url: "#{baseUrl}/api/qualityprofiles/deactivate_rule"
            data:
              profile_key: @model.get('qProfile')
              rule_key: ruleKey
          .done =>
            @options.app.showRule ruleKey


    enableUpdate: ->
      @ui.update.prop 'disabled', false


    getParent: ->
      return null unless @model.get('inherit') && @model.get('inherit') != 'NONE'
      myProfile = _.findWhere(@options.app.qualityProfiles, key: @model.get('qProfile'))
      parentKey = myProfile.parentKey
      parent = _.extend {}, _.findWhere(@options.app.qualityProfiles, key: parentKey)
      parentActiveInfo = @model.collection.findWhere(qProfile: parentKey) or new Backbone.Model()
      _.extend parent, parentActiveInfo.toJSON()
      parent


    enhanceParameters: ->
      parent = @getParent()
      params = _.sortBy(@model.get('params'), 'key')
      return params unless parent
      params.map (p) ->
        parentParam = _.findWhere(parent.params, key: p.key)
        if parentParam
          _.extend p, original: _.findWhere(parent.params, key: p.key).value
        else
          p


    serializeData: ->
      hash = _.extend super,
        parent: @getParent()
        parameters: @enhanceParameters()
        canWrite: @options.app.canWrite
        templateKey: @options.rule.get 'templateKey'
        isTemplate: @options.rule.get 'isTemplate'