diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2015-01-15 14:37:14 +0100 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2015-01-19 10:02:32 +0100 |
commit | 89fc8aa1a6a3ec70c11a5d10bf7670926b686a95 (patch) | |
tree | 9b762d30df4d00160a034f653a53996a0848610d | |
parent | 201817843129f8752cc92a52250d9b056cdaad98 (diff) | |
download | sonarqube-89fc8aa1a6a3ec70c11a5d10bf7670926b686a95.tar.gz sonarqube-89fc8aa1a6a3ec70c11a5d10bf7670926b686a95.zip |
SONAR-5820/SONAR-5987 Add some activation details
6 files changed, 148 insertions, 29 deletions
diff --git a/server/sonar-web/src/main/hbs/coding-rules/_coding-rules-workspace-list-item-activation.hbs b/server/sonar-web/src/main/hbs/coding-rules/_coding-rules-workspace-list-item-activation.hbs new file mode 100644 index 00000000000..84f89974491 --- /dev/null +++ b/server/sonar-web/src/main/hbs/coding-rules/_coding-rules-workspace-list-item-activation.hbs @@ -0,0 +1,29 @@ +{{#each activeProfiles}} + {{severityIcon severity}} + + {{#eq inherit 'OVERRIDES'}} + <i class="icon-inheritance" title="{{tp 'coding_rules.overrides' name parent.name}}"></i> + {{/eq}} + {{#eq inherit 'INHERITED'}} + <i class="icon-inheritance" title="{{tp 'coding_rules.inherits' name parent.name}}"></i> + {{/eq}} + + {{#if ../canWrite}} + <div class="button-group"> + {{#unless isTemplate}} + <button class="coding-rules-detail-quality-profile-change">{{t 'change_verb'}}</button> + {{/unless}} + {{#if parent}} + {{#eq inherit 'OVERRIDES'}} + <button class="coding-rules-detail-quality-profile-revert button-red"> + {{t 'coding_rules.revert_to_parent_definition'}} + </button> + {{/eq}} + {{else}} + <button class="coding-rules-detail-quality-profile-deactivate button-red"> + {{t 'coding_rules.deactivate'}} + </button> + {{/if}} + </div> + {{/if}} +{{/each}} diff --git a/server/sonar-web/src/main/hbs/coding-rules/coding-rules-workspace-list-item.hbs b/server/sonar-web/src/main/hbs/coding-rules/coding-rules-workspace-list-item.hbs index c93bc24c471..d5641452773 100644 --- a/server/sonar-web/src/main/hbs/coding-rules/coding-rules-workspace-list-item.hbs +++ b/server/sonar-web/src/main/hbs/coding-rules/coding-rules-workspace-list-item.hbs @@ -1,19 +1,71 @@ -<div class="coding-rule-inner"> - <div class="coding-rule-title"> - <a class="js-rule link-no-underline">{{name}}</a> - </div> - <div class="coding-rule-meta"> - {{#notEq status 'READY'}} - {{status}} - - {{/notEq}} - <a class="js-lang link-no-underline" data-lang="{{lang}}">{{langName}}</a> - {{#notEmpty tags}} - - <i class="icon-tags"></i> - {{#each tags}} - <a class="js-tag link-no-underline" data-tag="{{this}}">{{this}}</a> - {{/each}} - {{/notEmpty}} - </div> -</div> +<table class="coding-rule-table"> + <tr> + {{#if activeProfile}} + {{#if activeProfile.severity}} + <td class="coding-rule-table-meta-cell coding-rule-activation"> + {{severityIcon activeProfile.severity}} + {{#eq activeProfile.inherit 'OVERRIDES'}} + <i class="icon-inheritance" + title="{{tp 'coding_rules.overrides' activeProfile.name activeProfile.parent.name}}"></i> + {{/eq}} + {{#eq activeProfile.inherit 'INHERITED'}} + <i class="icon-inheritance" + title="{{tp 'coding_rules.inherits' activeProfile.name activeProfile.parent.name}}"></i> + {{/eq}} + </td> + {{/if}} + {{/if}} + + <td> + <div class="coding-rule-title"> + <a class="js-rule link-no-underline">{{name}}</a> + </div> + </td> + + <td class="coding-rule-table-meta-cell"> + <div class="coding-rule-meta"> + {{#notEq status 'READY'}} + {{status}} + + {{/notEq}} + <a class="js-lang link-no-underline" data-lang="{{lang}}">{{langName}}</a> + {{#notEmpty tags}} + + <i class="icon-tags"></i> + {{#each tags}} + <a class="js-tag link-no-underline" data-tag="{{this}}">{{this}}</a> + {{/each}} + {{/notEmpty}} + </div> + </td> + + {{#if activeProfile}} + {{#if canWrite}} + <td class="coding-rule-table-meta-cell coding-rule-activation-actions"> + <div class="button-group"> + {{#if activeProfile.severity}} + {{#unless activeProfile.isTemplate}} + <button class="coding-rules-detail-quality-profile-change">{{t 'change_verb'}}</button> + {{/unless}} + {{#if activeProfile.parent}} + {{#eq activeProfile.inherit 'OVERRIDES'}} + <button class="coding-rules-detail-quality-profile-revert button-red"> + {{t 'coding_rules.revert_to_parent_definition'}} + </button> + {{/eq}} + {{else}} + <button class="coding-rules-detail-quality-profile-deactivate button-red"> + {{t 'coding_rules.deactivate'}} + </button> + {{/if}} + {{else}} + <button class="coding-rules-detail-quality-profile-activate"> + {{t 'coding_rules.activate'}} + </button> + {{/if}} + </div> + </td> + {{/if}} + {{/if}} + </tr> +</table> diff --git a/server/sonar-web/src/main/js/coding-rules/controller.js b/server/sonar-web/src/main/js/coding-rules/controller.js index 5bbdabe234f..f32b51332a6 100644 --- a/server/sonar-web/src/main/js/coding-rules/controller.js +++ b/server/sonar-web/src/main/js/coding-rules/controller.js @@ -15,11 +15,16 @@ define([ _searchParameters: function () { + var fields = this.ruleFields.slice(), + profile = this.app.state.get('query').qprofile; + if (profile != null) { + fields.push('actives'); + } return { p: this.app.state.get('page'), ps: this.pageSize, facets: this._facetsFromServer().join(), - f: this.ruleFields.join(), + f: fields.join(), s: 'name', asc: true }; diff --git a/server/sonar-web/src/main/js/coding-rules/models/rules.js b/server/sonar-web/src/main/js/coding-rules/models/rules.js index d0cc24411e6..e6d92e6135e 100644 --- a/server/sonar-web/src/main/js/coding-rules/models/rules.js +++ b/server/sonar-web/src/main/js/coding-rules/models/rules.js @@ -6,7 +6,14 @@ define([ model: Rule, parseRules: function (r) { - return r.rules; + var rules = r.rules; + if (r.actives != null) { + rules = rules.map(function (rule) { + var profiles = r.actives[rule.key]; + return _.extend(rule, { activeProfiles: profiles }); + }); + } + return rules; }, setIndex: function () { diff --git a/server/sonar-web/src/main/js/coding-rules/workspace-list-item-view.js b/server/sonar-web/src/main/js/coding-rules/workspace-list-item-view.js index f7cd1120f15..02627c69f24 100644 --- a/server/sonar-web/src/main/js/coding-rules/workspace-list-item-view.js +++ b/server/sonar-web/src/main/js/coding-rules/workspace-list-item-view.js @@ -25,8 +25,16 @@ define([ }, serializeData: function () { + var activeProfiles = this.model.get('activeProfiles'), + activeProfile = _.isArray(activeProfiles) && activeProfiles.length === 1 ? activeProfiles[0] : null, + selectedProfile = this.options.app.state.get('query').qprofile; + if (selectedProfile != null && activeProfile == null) { + activeProfile = selectedProfile; + } return _.extend(WorkspaceListItemView.prototype.serializeData.apply(this, arguments), { - tags: _.union(this.model.get('sysTags'), this.model.get('tags')) + tags: _.union(this.model.get('sysTags'), this.model.get('tags')), + canWrite: this.options.app.canWrite, + activeProfile: activeProfile }); } }); diff --git a/server/sonar-web/src/main/less/components/rules.less b/server/sonar-web/src/main/less/components/rules.less index 681f54f1b96..c4314d0c84c 100644 --- a/server/sonar-web/src/main/less/components/rules.less +++ b/server/sonar-web/src/main/less/components/rules.less @@ -26,21 +26,30 @@ border-top-color: transparent; } -.coding-rule-inner { - .justify; - margin-bottom: -16px; +.coding-rule-table { + width: 100%; + + td { + vertical-align: top; + } +} + +.coding-rule-table + .coding-rule-table { + margin-top: 5px; +} + +.coding-rule-table-meta-cell { + width: 1px; + white-space: nowrap; } .coding-rule-title { - display: inline-block; - vertical-align: baseline; line-height: @lineHeight; font-size: @baseFontSize; } .coding-rule-meta { - display: inline-block; - vertical-align: baseline; + padding-left: 30px; line-height: @lineHeight; font-size: @smallFontSize; @@ -58,6 +67,15 @@ } } +.coding-rule-activation { + width: 40px; + line-height: @lineHeight; +} + +.coding-rule-activation-actions { + padding-left: 20px; +} + .coding-rule-section > div { max-width: 1020px; margin: 0 -10px; |