aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2014-09-24 12:27:41 +0600
committerStas Vilchik <vilchiks@gmail.com>2014-09-24 12:27:48 +0600
commitad23fc889606b8d9e5c08ed5c165928e876f6384 (patch)
tree1dcfa971ba575e52e0e8be9d5860969226cbdf88
parent1540fa46087dd1b5d26bc660a1989834b7def20f (diff)
downloadsonarqube-ad23fc889606b8d9e5c08ed5c165928e876f6384.tar.gz
sonarqube-ad23fc889606b8d9e5c08ed5c165928e876f6384.zip
SONAR-5646 Support of project-level widgets
-rw-r--r--server/sonar-web/src/main/es6/dashboard/app.js8
-rw-r--r--server/sonar-web/src/main/es6/dashboard/collections/widgets.js6
-rw-r--r--server/sonar-web/src/main/es6/dashboard/mockjax.js8
-rw-r--r--server/sonar-web/src/main/es6/dashboard/views/widget-view.js25
-rw-r--r--server/sonar-web/src/main/es6/dashboard/views/widgets-view.js4
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/views/dashboard2/index.html.erb3
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/app/views/measures/_display_list.html.erb4
7 files changed, 38 insertions, 20 deletions
diff --git a/server/sonar-web/src/main/es6/dashboard/app.js b/server/sonar-web/src/main/es6/dashboard/app.js
index 7239062ac5a..323a0b9495a 100644
--- a/server/sonar-web/src/main/es6/dashboard/app.js
+++ b/server/sonar-web/src/main/es6/dashboard/app.js
@@ -34,17 +34,21 @@ requirejs([
var App = new Marionette.Application(),
$ = jQuery;
+ App.dashboard = window.did;
+ App.resource = window.resource;
+
App.addInitializer(function () {
this.widgetsView = new WidgetsView({
collection: this.widgets,
dashboard: this.dashboard,
- el: $('#dashboard')
+ el: $('#dashboard'),
+ app: this
});
this.widgetsView.render();
});
var requestDetails = function () {
- return $.get(`${baseUrl}/api/dashboards/details`, { did: window.did }, function (data) {
+ return $.get(`${baseUrl}/api/dashboards/details`, { did: App.dashboard }, function (data) {
console.log(JSON.stringify(data));
App.dashboard = new Backbone.Model(_.omit(data, 'widgets'));
App.widgets = new Widgets(data.widgets);
diff --git a/server/sonar-web/src/main/es6/dashboard/collections/widgets.js b/server/sonar-web/src/main/es6/dashboard/collections/widgets.js
index 03826f31482..255ad8b4e1e 100644
--- a/server/sonar-web/src/main/es6/dashboard/collections/widgets.js
+++ b/server/sonar-web/src/main/es6/dashboard/collections/widgets.js
@@ -6,7 +6,11 @@ define([
Widget) {
return Backbone.Collection.extend({
- model: Widget
+ model: Widget,
+
+ comparator: function(model) {
+ return model.get('layout').row;
+ }
});
});
diff --git a/server/sonar-web/src/main/es6/dashboard/mockjax.js b/server/sonar-web/src/main/es6/dashboard/mockjax.js
index b3cce8f4d42..04b30fbec36 100644
--- a/server/sonar-web/src/main/es6/dashboard/mockjax.js
+++ b/server/sonar-web/src/main/es6/dashboard/mockjax.js
@@ -32,6 +32,14 @@ define(['third-party/jquery.mockjax'], function () {
key: 'my_reviews',
props: [],
layout: {
+ column: 1,
+ row: 2
+ }
+ },
+ {
+ key: 'hotspot_most_violated_rules',
+ props: [],
+ layout: {
column: 2,
row: 1
}
diff --git a/server/sonar-web/src/main/es6/dashboard/views/widget-view.js b/server/sonar-web/src/main/es6/dashboard/views/widget-view.js
index 0507d5933b4..9aaa53b9359 100644
--- a/server/sonar-web/src/main/es6/dashboard/views/widget-view.js
+++ b/server/sonar-web/src/main/es6/dashboard/views/widget-view.js
@@ -13,27 +13,24 @@ define([
}
requestContent() {
- var props = this.getWidgetProps();
- $.get(`${baseUrl}/widget/show?id=${this.model.id}&${props}`, (html) => {
+ var payload = { id: this.model.id };
+ if (this.options.app.resource) {
+ payload.resource = this.options.app.resource;
+ }
+ _.extend(payload, this.getWidgetProps());
+ $.get(`${baseUrl}/widget/show`, payload, (html) => {
this.model.set('html', html);
this.render();
});
}
getWidgetProps() {
- var props = this.model.get('props')
- .map(function (prop) {
- return `${prop.key}=${encodeURIComponent(prop.value)}`;
- })
- .join('&');
- return props;
- }
-
- serializeData() {
- var props = this.getWidgetProps();
- return _.extend(super.serializeData(), {
- url: `${baseUrl}/widget?id=${this.model.id}&${props}`
+ var props = this.model.get('props'),
+ r = {};
+ props.forEach(function (prop) {
+ r[prop.key] = prop.value;
});
+ return r;
}
}
diff --git a/server/sonar-web/src/main/es6/dashboard/views/widgets-view.js b/server/sonar-web/src/main/es6/dashboard/views/widgets-view.js
index ce8692d38a7..8df38b79f8c 100644
--- a/server/sonar-web/src/main/es6/dashboard/views/widgets-view.js
+++ b/server/sonar-web/src/main/es6/dashboard/views/widgets-view.js
@@ -13,6 +13,10 @@ define([
$container.eq(column).append(itemView.el);
}
+ itemViewOptions() {
+ return { app: this.options.app };
+ }
+
serializeData() {
return _.extend(super.serializeData(), {
dashboard: this.options.dashboard.toJSON(),
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/dashboard2/index.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/dashboard2/index.html.erb
index 8dd759d6cf1..57b4def8b11 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/dashboard2/index.html.erb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/views/dashboard2/index.html.erb
@@ -8,5 +8,8 @@
<script>
window.did = '<%= @dashboard.id -%>';
+ <% if @resource %>
+ window.resource = '<%= @resource.key -%>';
+ <% end %>
jQuery('html').addClass('dashboard-page');
</script>
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/measures/_display_list.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/measures/_display_list.html.erb
index 3dae12f9a0e..91ecee1c111 100644
--- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/measures/_display_list.html.erb
+++ b/server/sonar-web/src/main/webapp/WEB-INF/app/views/measures/_display_list.html.erb
@@ -1,5 +1,4 @@
<div id="measure_filter_list<%= widget_id -%>">
-<% content_for :script do %>
<script>
var filterCriteria<%= widget_id -%> = <%= json_escape(filter.criteria.to_json) -%>;
@@ -20,9 +19,8 @@
return false;
}
</script>
-<%
- end
+ <%
display_favourites = logged_in?
colspan = filter.display.columns.size
colspan += 1 if display_favourites