diff --git a/panoramix/assets/javascripts/dashboard.js b/panoramix/assets/javascripts/dashboard.js index 6d57c03e9..c196e6ac2 100644 --- a/panoramix/assets/javascripts/dashboard.js +++ b/panoramix/assets/javascripts/dashboard.js @@ -10,146 +10,148 @@ require('brace/theme/crimson_editor'); require('select2'); require('../node_modules/gridster/dist/jquery.gridster.min.js'); -require('../node_modules/gridster/dist/jquery.gridster.min.js'); -var dashboard; -var Dashboard = function(id){ - var dash = { - slices: [], +var Dashboard = function (dashboardData) { + var dashboard = $.extend(dashboardData, { filters: {}, - id: id, - addFilter: function(slice_id, filters) { + init: function () { + this.initDashboardView(); + var sliceObjects = [], + dash = this; + dashboard.slices.forEach(function (data) { + var slice = px.Slice(data, dash); + $("#slice_" + data.slice_id).find('a.refresh').click(function () { + slice.render(); + }); + sliceObjects.push(slice); + slice.render(); + }); + this.slices = sliceObjects; + }, + addFilter: function (slice_id, filters) { this.filters[slice_id] = filters; this.refreshExcept(slice_id); }, - readFilters: function() { + readFilters: function () { // Returns a list of human readable active filters return JSON.stringify(this.filters, null, 4); }, - refreshExcept: function(slice_id) { - this.slices.forEach(function(slice){ - if(slice.data.slice_id != slice_id){ + refreshExcept: function (slice_id) { + var immune = this.metadata.filter_immune_slices; + this.slices.forEach(function (slice) { + if(slice.data.slice_id !== slice_id && immune.indexOf(slice.data.slice_id) === -1) { slice.render(); } }); }, - clearFilter: function(slice_id) { + clearFilter: function (slice_id) { delete this.filters[slice_id]; this.refreshExcept(slice_id); }, - getSlice: function(slice_id) { - for(var i=0; i +