aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2015-01-21 11:43:23 +0100
committerStas Vilchik <vilchiks@gmail.com>2015-01-21 12:03:30 +0100
commite8f492a694c6868128d84d4a75f56f4e8cac0224 (patch)
tree3b41e4a35f5319390a4ae76a52932de4e986484f /server/sonar-web
parent2b9cf70abc0997cf0cb03616f8fb42c5a26381fb (diff)
downloadsonarqube-e8f492a694c6868128d84d4a75f56f4e8cac0224.tar.gz
sonarqube-e8f492a694c6868128d84d4a75f56f4e8cac0224.zip
SONAR-5820/SONAR-5973/SONAR-6017 finish facets on languages, repositories, tags
Diffstat (limited to 'server/sonar-web')
-rw-r--r--server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-custom-values-facet.hbs14
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets-view.js3
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/custom-values-facet.js70
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/language-facet.js44
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/repository-facet.js40
-rw-r--r--server/sonar-web/src/main/js/coding-rules/facets/tag-facet.js31
6 files changed, 193 insertions, 9 deletions
diff --git a/server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-custom-values-facet.hbs b/server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-custom-values-facet.hbs
new file mode 100644
index 00000000000..2d691b2e83c
--- /dev/null
+++ b/server/sonar-web/src/main/hbs/coding-rules/facets/coding-rules-custom-values-facet.hbs
@@ -0,0 +1,14 @@
+{{> '_coding-rules-facet-header'}}
+
+<div class="search-navigator-facet-list">
+ {{#each values}}
+ <a class="facet search-navigator-facet js-facet" data-value="{{val}}" title="{{default label val}}">
+ <span class="facet-name">{{default label val}}{{#if extra}} <span class="subtitle">{{extra}}</span>{{/if}}</span>
+ <span class="facet-stat">{{numberShort count}}</span>
+ </a>
+ {{/each}}
+
+ <div class="search-navigator-facet-custom-value">
+ <input type="hidden" class="js-custom-value">
+ </div>
+</div>
diff --git a/server/sonar-web/src/main/js/coding-rules/facets-view.js b/server/sonar-web/src/main/js/coding-rules/facets-view.js
index c10b7e0c5a5..7be7ccb8155 100644
--- a/server/sonar-web/src/main/js/coding-rules/facets-view.js
+++ b/server/sonar-web/src/main/js/coding-rules/facets-view.js
@@ -4,6 +4,7 @@ define([
'coding-rules/facets/query-facet',
'coding-rules/facets/language-facet',
'coding-rules/facets/repository-facet',
+ 'coding-rules/facets/tag-facet',
'coding-rules/facets/quality-profile-facet',
'coding-rules/facets/characteristic-facet',
'coding-rules/facets/severity-facet',
@@ -18,6 +19,7 @@ define([
QueryFacet,
LanguageFacet,
RepositoryFacet,
+ TagFacet,
QualityProfileFacet,
CharacteristicFacet,
SeverityFacet,
@@ -31,6 +33,7 @@ define([
q: QueryFacet,
languages: LanguageFacet,
repositories: RepositoryFacet,
+ tags: TagFacet,
qprofile: QualityProfileFacet,
debt_characteristics: CharacteristicFacet,
severities: SeverityFacet,
diff --git a/server/sonar-web/src/main/js/coding-rules/facets/custom-values-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/custom-values-facet.js
new file mode 100644
index 00000000000..60fe7ed20ae
--- /dev/null
+++ b/server/sonar-web/src/main/js/coding-rules/facets/custom-values-facet.js
@@ -0,0 +1,70 @@
+define([
+ 'coding-rules/facets/base-facet',
+ 'templates/coding-rules'
+], function (BaseFacet) {
+
+ return BaseFacet.extend({
+ template: Templates['coding-rules-custom-values-facet'],
+
+ events: function () {
+ return _.extend(BaseFacet.prototype.events.apply(this, arguments), {
+ 'change .js-custom-value': 'addCustomValue'
+ });
+ },
+
+ getUrl: function () {
+ return baseUrl;
+ },
+
+ onRender: function () {
+ BaseFacet.prototype.onRender.apply(this, arguments);
+ this.prepareSearch();
+ },
+
+ prepareSearch: function () {
+ this.$('.js-custom-value').select2({
+ placeholder: t('search_verb'),
+ minimumInputLength: 2,
+ allowClear: false,
+ formatNoMatches: function () {
+ return t('select2.noMatches');
+ },
+ formatSearching: function () {
+ return t('select2.searching');
+ },
+ formatInputTooShort: function () {
+ return tp('select2.tooShort', 2);
+ },
+ width: '100%',
+ ajax: this.prepareAjaxSearch()
+ });
+ },
+
+ prepareAjaxSearch: function () {
+ return {
+ quietMillis: 300,
+ url: this.getUrl(),
+ data: function (term, page) {
+ return { s: term, p: page };
+ },
+ results: function (data) {
+ return { more: data.more, results: data.results };
+ }
+ };
+ },
+
+ addCustomValue: function () {
+ var property = this.model.get('property'),
+ customValue = this.$('.js-custom-value').select2('val'),
+ value = this.getValue();
+ if (value.length > 0) {
+ value += ',';
+ }
+ value += customValue;
+ var obj = {};
+ obj[property] = value;
+ this.options.app.state.updateFilter(obj);
+ }
+ });
+
+});
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
index 6a89c42d93a..494ecad0432 100644
--- 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
@@ -1,11 +1,49 @@
define([
- 'coding-rules/facets/custom-labels-facet'
-], function (CustomLabelsFacet) {
+ 'coding-rules/facets/custom-values-facet'
+], function (CustomValuesFacet) {
- return CustomLabelsFacet.extend({
+ return CustomValuesFacet.extend({
+
+ getUrl: function () {
+ return baseUrl + '/api/languages/list';
+ },
+
+ prepareAjaxSearch: function () {
+ return {
+ quietMillis: 300,
+ url: this.getUrl(),
+ data: function (term) {
+ return { q: term, ps: 10000 };
+ },
+ results: function (data) {
+ return {
+ more: false,
+ results: data.languages.map(function (lang) {
+ return { id: lang.key, text: lang.name };
+ })
+ };
+ }
+ };
+ },
getLabelsSource: function () {
return this.options.app.languages;
+ },
+
+ 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(CustomValuesFacet.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
index 5bf8361f6e1..a2ec4fdb781 100644
--- 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
@@ -1,8 +1,30 @@
define([
- 'coding-rules/facets/custom-labels-facet'
-], function (CustomLabelsFacet) {
+ 'coding-rules/facets/custom-values-facet'
+], function (CustomValuesFacet) {
- return CustomLabelsFacet.extend({
+ return CustomValuesFacet.extend({
+
+ getUrl: function () {
+ return baseUrl + '/api/rules/repositories';
+ },
+
+ prepareAjaxSearch: function () {
+ return {
+ quietMillis: 300,
+ url: this.getUrl(),
+ data: function (term) {
+ return { q: term, ps: 10000 };
+ },
+ results: function (data) {
+ return {
+ more: false,
+ results: data.repositories.map(function (repo) {
+ return { id: repo.key, text: repo.name + ' (' + repo.language + ')' };
+ })
+ };
+ }
+ };
+ },
getLabelsSource: function () {
var repos = this.options.app.repositories;
@@ -11,14 +33,20 @@ define([
getValues: function () {
var that = this,
- values = CustomLabelsFacet.prototype.getValues.apply(this, arguments);
- return values.map(function (value) {
+ labels = that.getLabelsSource();
+ return this.model.getValues().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;
+ return _.extend(value, { label: labels[value.val] });
+ });
+ },
+
+ serializeData: function () {
+ return _.extend(CustomValuesFacet.prototype.serializeData.apply(this, arguments), {
+ values: this.getValues()
});
}
diff --git a/server/sonar-web/src/main/js/coding-rules/facets/tag-facet.js b/server/sonar-web/src/main/js/coding-rules/facets/tag-facet.js
new file mode 100644
index 00000000000..250edbbce15
--- /dev/null
+++ b/server/sonar-web/src/main/js/coding-rules/facets/tag-facet.js
@@ -0,0 +1,31 @@
+define([
+ 'coding-rules/facets/custom-values-facet'
+], function (CustomValuesFacet) {
+
+ return CustomValuesFacet.extend({
+
+ getUrl: function () {
+ return baseUrl + '/api/rules/tags';
+ },
+
+ prepareAjaxSearch: function () {
+ return {
+ quietMillis: 300,
+ url: this.getUrl(),
+ data: function (term) {
+ return { q: term, ps: 10000 };
+ },
+ results: function (data) {
+ return {
+ more: false,
+ results: data.tags.map(function (tag) {
+ return { id: tag, text: tag };
+ })
+ };
+ }
+ };
+ }
+
+ });
+
+});