diff --git a/lib/cartodb/backends/dataview.js b/lib/cartodb/backends/dataview.js index 946ea0d8..6c9f8a15 100644 --- a/lib/cartodb/backends/dataview.js +++ b/lib/cartodb/backends/dataview.js @@ -114,7 +114,7 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param var filters = node.filters; // TODO: node.getFilters() when available in camshaft var filters_disabler = _.keys(filters).reduce(function(disabler, filter_id){ disabler[filter_id] = false; return disabler; }, {}); var unfiltered_query = node.getQuery(filters_disabler); - queryRewriteData = _.extend({}, queryRewriteData, { filters: filters }); + queryRewriteData = _.extend({}, queryRewriteData, { filters: filters, unfiltered_query: unfiltered_query }); var rewritten_query = overviewsQueryRewriter.query(unfiltered_query, queryRewriteData, { bounding_box: params.bbox }); if ( rewritten_query !== unfiltered_query ) { query = rewritten_query; diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 442079e0..d5307d12 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -186,6 +186,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn) { assert.ifError(err); var next = this; self.overviewsAdapter.getLayers(req.context.user, requestMapConfig.layers, function(err, layers) { + self.overviewsAdapter.getLayers(req.context.user, requestMapConfig.layers, analysesResults, function(err, layers) { if (err) { return next(err); } diff --git a/lib/cartodb/models/mapconfig/named_map_provider.js b/lib/cartodb/models/mapconfig/named_map_provider.js index 9c8c218d..e285b2b7 100644 --- a/lib/cartodb/models/mapconfig/named_map_provider.js +++ b/lib/cartodb/models/mapconfig/named_map_provider.js @@ -142,7 +142,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { assert.ifError(err); var next = this; - self.overviewsAdapter.getLayers(self.owner, _mapConfig.layers, function(err, layers) { + self.overviewsAdapter.getLayers(self.owner, _mapConfig.layers, self.analysesResults, function(err, layers) { if (err) { return next(err); } diff --git a/lib/cartodb/models/mapconfig_overviews_adapter.js b/lib/cartodb/models/mapconfig_overviews_adapter.js index 70a02dc5..f0587d1c 100644 --- a/lib/cartodb/models/mapconfig_overviews_adapter.js +++ b/lib/cartodb/models/mapconfig_overviews_adapter.js @@ -7,7 +7,7 @@ function MapConfigOverviewsAdapter(overviewsMetadataApi) { module.exports = MapConfigOverviewsAdapter; -MapConfigOverviewsAdapter.prototype.getLayers = function(username, layers, callback) { +MapConfigOverviewsAdapter.prototype.getLayers = function(username, layers, analysesResults, callback) { var self = this; if (!layers || layers.length === 0) { @@ -24,9 +24,22 @@ MapConfigOverviewsAdapter.prototype.getLayers = function(username, layers, callb if (err) { done(err, layer); } else { + var query_rewrite_data = { overviews: metadata }; + if ( layer.options.source && analysesResults ) { + var sourceId = layer.options.source.id; + var node = _.find(analysesResults, function(a){ a.rootNode.params.id === sourceId }); + if ( node ) { + node = node.roorNode; + var filters = node.filters; // TODO: node.getFilters() when available in camshaft + var filters_disabler = _.keys(filters).reduce(function(disabler, filter_id){ disabler[filter_id] = false; return disabler; }, {}); + var unfiltered_query = node.getQuery(filters_disabler); + query_rewrite_data.filters = filters; + query_rewrite_data.unfiltered_query = unfiltered_query; + } + } if ( !_.isEmpty(metadata) ) { layer = _.extend({}, layer); - layer.options = _.extend({}, layer.options, { query_rewrite_data: { overviews: metadata } }); + layer.options = _.extend({}, layer.options, { query_rewrite_data: query_rewrite_data }); } done(null, layer); }