aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/source-viewer
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2014-12-18 13:05:40 +0100
committerStas Vilchik <vilchiks@gmail.com>2014-12-18 13:05:45 +0100
commit893b47cda8755709cd982baa1f7da4aa46e9f37e (patch)
treefa42cbd13785465f99aabbcef4736bc14ae6575d /server/sonar-web/src/main/js/source-viewer
parentf80ea8db54d1cf78c6e72882ed1f3377c86920b3 (diff)
downloadsonarqube-893b47cda8755709cd982baa1f7da4aa46e9f37e.tar.gz
sonarqube-893b47cda8755709cd982baa1f7da4aa46e9f37e.zip
SONAR-5884 Apply feedback
Diffstat (limited to 'server/sonar-web/src/main/js/source-viewer')
-rw-r--r--server/sonar-web/src/main/js/source-viewer/measures-overlay.js11
-rw-r--r--server/sonar-web/src/main/js/source-viewer/viewer.js30
2 files changed, 38 insertions, 3 deletions
diff --git a/server/sonar-web/src/main/js/source-viewer/measures-overlay.js b/server/sonar-web/src/main/js/source-viewer/measures-overlay.js
index 82090095a28..6d6de2a7adf 100644
--- a/server/sonar-web/src/main/js/source-viewer/measures-overlay.js
+++ b/server/sonar-web/src/main/js/source-viewer/measures-overlay.js
@@ -22,6 +22,14 @@ define([
onRender: function () {
Overlay.prototype.onRender.apply(this, arguments);
this.$('.js-pie-chart').pieChart();
+ if (this.selectedTest != null) {
+ this.scrollToTest();
+ }
+ },
+
+ scrollToTest: function () {
+ var position = this.$('.js-selected-test').offset().top - this.$el.offset().top - 50;
+ this.$el.scrollTop(position);
},
show: function () {
@@ -49,6 +57,7 @@ define([
metrics = _.filter(data, function (metric) {
return !metric.hidden && metric.val_type !== 'DATA';
});
+ metrics = _.sortBy(metrics, 'name');
});
return metrics;
},
@@ -180,6 +189,7 @@ define([
showTest: function (e) {
var that = this,
+ p = window.process.addBackgroundProcess(),
name = $(e.currentTarget).data('name'),
url = baseUrl + '/api/tests/covered_files',
options = {
@@ -190,6 +200,7 @@ define([
that.coveredFiles = data.files;
that.selectedTest = _.findWhere(that.model.get('tests'), {name: name});
that.render();
+ window.process.finishBackgroundProcess(p);
});
},
diff --git a/server/sonar-web/src/main/js/source-viewer/viewer.js b/server/sonar-web/src/main/js/source-viewer/viewer.js
index 16f8dcf8141..22eb3f1dbe6 100644
--- a/server/sonar-web/src/main/js/source-viewer/viewer.js
+++ b/server/sonar-web/src/main/js/source-viewer/viewer.js
@@ -66,6 +66,7 @@ define([
this.model = new Source();
}
this.issues = new Issues();
+ this.listenTo(this.issues, 'change:severity', this.onIssuesSeverityChange);
this.issueViews = [];
this.loadSourceBeforeThrottled = _.throttle(this.loadSourceBefore, 1000);
this.loadSourceAfterThrottled = _.throttle(this.loadSourceAfter, 1000);
@@ -248,8 +249,16 @@ define([
});
},
+ _sortBySeverity: function (issues) {
+ var order = ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO'];
+ return _.sortBy(issues, function (issue) {
+ return order.indexOf(issue.severity);
+ });
+ },
+
addIssuesPerLineMeta: function (issues) {
- var lines = {};
+ var that = this,
+ lines = {};
issues.forEach(function (issue) {
var line = issue.get('line') || 0;
if (!_.isArray(lines[line])) {
@@ -260,7 +269,7 @@ define([
var issuesPerLine = _.pairs(lines).map(function (line) {
return {
line: +line[0],
- issues: line[1]
+ issues: that._sortBySeverity(line[1])
};
});
this.model.addMeta(issuesPerLine);
@@ -307,6 +316,17 @@ define([
issues.forEach(this.renderIssue, this);
},
+ onIssuesSeverityChange: function () {
+ var that = this;
+ this.addIssuesPerLineMeta(this.issues);
+ this.$('.source-line-with-issues').each(function () {
+ var line = +$(this).data('line-number'),
+ row = _.findWhere(that.model.get('source'), { line: line }),
+ issue = _.first(row.issues);
+ $(this).html('<i class="icon-severity-' + issue.severity.toLowerCase() + '"></i>');
+ });
+ },
+
highlightUsages: function (e) {
var highlighted = $(e.currentTarget).is('.highlighted'),
key = e.currentTarget.className.split(/\s+/)[0];
@@ -379,7 +399,11 @@ define([
onLineIssuesClick: function (e) {
var line = $(e.currentTarget).data('line-number');
- this.showIssuesForLine(line);
+ if ($(e.currentTarget).parent().find('.issue-list').is('.hidden')) {
+ this.showIssuesForLine(line);
+ } else {
+ $(e.currentTarget).parent().find('.issue-list').addClass('hidden');
+ }
},
showLineActionsPopup: function (e) {