aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2015-01-15 14:37:14 +0100
committerStas Vilchik <vilchiks@gmail.com>2015-01-19 10:02:32 +0100
commit89fc8aa1a6a3ec70c11a5d10bf7670926b686a95 (patch)
tree9b762d30df4d00160a034f653a53996a0848610d
parent201817843129f8752cc92a52250d9b056cdaad98 (diff)
downloadsonarqube-89fc8aa1a6a3ec70c11a5d10bf7670926b686a95.tar.gz
sonarqube-89fc8aa1a6a3ec70c11a5d10bf7670926b686a95.zip
SONAR-5820/SONAR-5987 Add some activation details
-rw-r--r--server/sonar-web/src/main/hbs/coding-rules/_coding-rules-workspace-list-item-activation.hbs29
-rw-r--r--server/sonar-web/src/main/hbs/coding-rules/coding-rules-workspace-list-item.hbs90
-rw-r--r--server/sonar-web/src/main/js/coding-rules/controller.js7
-rw-r--r--server/sonar-web/src/main/js/coding-rules/models/rules.js9
-rw-r--r--server/sonar-web/src/main/js/coding-rules/workspace-list-item-view.js10
-rw-r--r--server/sonar-web/src/main/less/components/rules.less32
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}}
- &nbsp;&nbsp;&nbsp;
- {{/notEq}}
- <a class="js-lang link-no-underline" data-lang="{{lang}}">{{langName}}</a>
- {{#notEmpty tags}}
- &nbsp;&nbsp;&nbsp;
- <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}}
+ &nbsp;&nbsp;&nbsp;
+ {{/notEq}}
+ <a class="js-lang link-no-underline" data-lang="{{lang}}">{{langName}}</a>
+ {{#notEmpty tags}}
+ &nbsp;&nbsp;&nbsp;
+ <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;