aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/coding-rules/facets
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2014-12-18 15:17:57 +0100
committerStas Vilchik <vilchiks@gmail.com>2014-12-22 10:46:42 +0100
commit4b69d42d7f83aa22853dffbf2b49acda85c7ef99 (patch)
tree9a92219c8ebc0afeade341755e7ba92ded6502f3 /server/sonar-web/src/main/js/coding-rules/facets
parent2b6c121e6764b6baf106c94767d8daedd85b7839 (diff)
downloadsonarqube-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')
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/base-facet.js11
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/characteristic-facet.js37
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/custom-labels-facet.js28
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/language-facet.js13
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/quality-profile-facet.js41
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/repository-facet.js27
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/severity-facet.js30
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/status-facet.js23
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())
+ });
+ }
+ });
+
+});