diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2014-12-18 15:17:57 +0100 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2014-12-22 10:46:42 +0100 |
commit | 4b69d42d7f83aa22853dffbf2b49acda85c7ef99 (patch) | |
tree | 9a92219c8ebc0afeade341755e7ba92ded6502f3 /server/sonar-web/src/main/js/coding-rules/facets | |
parent | 2b6c121e6764b6baf106c94767d8daedd85b7839 (diff) | |
download | sonarqube-4b69d42d7f83aa22853dffbf2b49acda85c7ef99.tar.gz sonarqube-4b69d42d7f83aa22853dffbf2b49acda85c7ef99.zip |
SONAR-5820 Create a new coding rules page
Diffstat (limited to 'server/sonar-web/src/main/js/coding-rules/facets')
8 files changed, 210 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/coding-rules/facets/base-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/base-facet.js new file mode 100644 index 00000000000..b757662d197 --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/base-facet.js @@ -0,0 +1,11 @@ +define([ + 'components/navigator/facets/base-facet', + 'templates/coding-rules' +], function (BaseFacet, Templates) { + + return BaseFacet.extend({ + className: 'search-navigator-facet-box', + template: Templates['coding-rules-base-facet'] + }); + +}); diff --git a/server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js new file mode 100644 index 00000000000..f0ba53566bc --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js @@ -0,0 +1,37 @@ +define([ + 'coding-rules/facets/base-facet' +], function (BaseFacet) { + + var $ = jQuery; + + return BaseFacet.extend({ + + getValues: function () { + var values = _.map(this.options.app.characteristics, function (value, key) { + return { + label: value, + val: key + }; + }); + return _.sortBy(values, 'label'); + }, + + toggleFacet: function (e) { + var obj = {}, + property = this.model.get('property'); + if ($(e.currentTarget).is('.active')) { + obj[property] = null; + } else { + obj[property] = $(e.currentTarget).data('value'); + } + this.options.app.state.updateFilter(obj); + }, + + serializeData: function () { + return _.extend(BaseFacet.prototype.serializeData.apply(this, arguments), { + values: this.getValues() + }); + } + }); + +}); diff --git a/server/sonar-web/src/main/js/coding-rules/facets/custom-labels-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/custom-labels-facet.js new file mode 100644 index 00000000000..af54a48b2d2 --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/custom-labels-facet.js @@ -0,0 +1,28 @@ +define([ + 'coding-rules/facets/base-facet' +], function (BaseFacet) { + + return BaseFacet.extend({ + + getLabelsSource: function () { + return []; + }, + + getValues: function () { + var that = this, + labels = that.getLabelsSource(); + return this.model.getValues().map(function (item) { + return _.extend(item, { + label: labels[item.val] + }); + }); + }, + + serializeData: function () { + return _.extend(BaseFacet.prototype.serializeData.apply(this, arguments), { + values: this.getValues() + }); + } + }); + +}); diff --git a/server/sonar-web/src/main/js/coding-rules/facets/language-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/language-facet.js new file mode 100644 index 00000000000..6a89c42d93a --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/language-facet.js @@ -0,0 +1,13 @@ +define([ + 'coding-rules/facets/custom-labels-facet' +], function (CustomLabelsFacet) { + + return CustomLabelsFacet.extend({ + + getLabelsSource: function () { + return this.options.app.languages; + } + + }); + +}); diff --git a/server/sonar-web/src/main/js/coding-rules/facets/quality-profile-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/quality-profile-facet.js new file mode 100644 index 00000000000..1e90e2bacca --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/quality-profile-facet.js @@ -0,0 +1,41 @@ +define([ + 'coding-rules/facets/base-facet' +], function (BaseFacet) { + + var $ = jQuery; + + return BaseFacet.extend({ + + getValues: function () { + var that = this, + values = this.options.app.qualityProfiles.map(function (profile) { + return { + label: profile.name, + extra: that.options.app.languages[profile.lang], + val: profile.key + }; + }); + return _.sortBy(values, 'label'); + }, + + toggleFacet: function (e) { + var obj = {}, + property = this.model.get('property'); + if ($(e.currentTarget).is('.active')) { + obj.activation = null; + obj[property] = null; + } else { + obj.activation = true; + obj[property] = $(e.currentTarget).data('value'); + } + this.options.app.state.updateFilter(obj); + }, + + serializeData: function () { + return _.extend(BaseFacet.prototype.serializeData.apply(this, arguments), { + values: this.getValues() + }); + } + }); + +}); diff --git a/server/sonar-web/src/main/js/coding-rules/facets/repository-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/repository-facet.js new file mode 100644 index 00000000000..5bf8361f6e1 --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/repository-facet.js @@ -0,0 +1,27 @@ +define([ + 'coding-rules/facets/custom-labels-facet' +], function (CustomLabelsFacet) { + + return CustomLabelsFacet.extend({ + + getLabelsSource: function () { + var repos = this.options.app.repositories; + return _.object(_.pluck(repos, 'key'), _.pluck(repos, 'name')); + }, + + getValues: function () { + var that = this, + values = CustomLabelsFacet.prototype.getValues.apply(this, arguments); + return values.map(function (value) { + var repo = _.findWhere(that.options.app.repositories, { key: value.val }); + if (repo != null) { + var langName = that.options.app.languages[repo.language]; + _.extend(value, { extra: langName }); + } + return value; + }); + } + + }); + +}); diff --git a/server/sonar-web/src/main/js/coding-rules/facets/severity-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/severity-facet.js new file mode 100644 index 00000000000..133cc18c3a6 --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/severity-facet.js @@ -0,0 +1,30 @@ +define([ + 'coding-rules/facets/base-facet', + 'templates/coding-rules' +], function (BaseFacet, Templates) { + + return BaseFacet.extend({ + template: Templates['coding-rules-severity-facet'], + severities: ['BLOCKER', 'MINOR', 'CRITICAL', 'INFO', 'MAJOR'], + + sortValues: function (values) { + var order = this.severities; + return _.sortBy(values, function (v) { + return order.indexOf(v.val); + }); + }, + + getValues: function () { + return this.severities.map(function (s) { + return { val: s }; + }); + }, + + serializeData: function () { + return _.extend(BaseFacet.prototype.serializeData.apply(this, arguments), { + values: this.sortValues(this.getValues()) + }); + } + }); + +}); diff --git a/server/sonar-web/src/main/js/coding-rules/facets/status-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/status-facet.js new file mode 100644 index 00000000000..3429f1a5147 --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/facets/status-facet.js @@ -0,0 +1,23 @@ +define([ + 'coding-rules/facets/base-facet' +], function (BaseFacet) { + + return BaseFacet.extend({ + + getValues: function () { + return ['BETA', 'DEPRECATED', 'READY'].map(function (s) { + return { + label: t('rules.status', s.toLowerCase()), + val: s + }; + }); + }, + + serializeData: function () { + return _.extend(BaseFacet.prototype.serializeData.apply(this, arguments), { + values: this.sortValues(this.getValues()) + }); + } + }); + +}); |