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'),
- app: this
+ el: $('#dashboard')
});
this.widgetsView.render();
});
var requestDetails = function () {
- return $.get(`${baseUrl}/api/dashboards/details`, { did: App.dashboard }, function (data) {
+ return $.get(`${baseUrl}/api/dashboards/details`, { did: window.did }, function (data) {
console.log(JSON.stringify(data));
App.dashboard = new Backbone.Model(_.omit(data, 'widgets'));
App.widgets = new Widgets(data.widgets);
Widget) {
return Backbone.Collection.extend({
- model: Widget,
-
- comparator: function(model) {
- return model.get('layout').row;
- }
+ model: Widget
});
});
{
key: 'my_reviews',
props: [],
- layout: {
- column: 1,
- row: 2
- }
- },
- {
- key: 'hotspot_most_violated_rules',
- props: [],
layout: {
column: 2,
row: 1
}
requestContent() {
- 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) => {
+ var props = this.getWidgetProps();
+ $.get(`${baseUrl}/widget/show?id=${this.model.id}&${props}`, (html) => {
this.model.set('html', html);
this.render();
});
}
getWidgetProps() {
- var props = this.model.get('props'),
- r = {};
- props.forEach(function (prop) {
- r[prop.key] = prop.value;
+ 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}`
});
- return r;
}
}
$container.eq(column).append(itemView.el);
}
- itemViewOptions() {
- return { app: this.options.app };
- }
-
serializeData() {
return _.extend(super.serializeData(), {
dashboard: this.options.dashboard.toJSON(),
<script>
window.did = '<%= @dashboard.id -%>';
- <% if @resource %>
- window.resource = '<%= @resource.key -%>';
- <% end %>
jQuery('html').addClass('dashboard-page');
</script>
<div id="measure_filter_list<%= widget_id -%>">
+<% content_for :script do %>
<script>
var filterCriteria<%= widget_id -%> = <%= json_escape(filter.criteria.to_json) -%>;
return false;
}
</script>
+<%
+ end
- <%
display_favourites = logged_in?
colspan = filter.display.columns.size
colspan += 1 if display_favourites