diff --git a/lib/cartodb/cache/named_map_provider_cache.js b/lib/cartodb/cache/named_map_provider_cache.js index 7bb8e25c..df536af5 100644 --- a/lib/cartodb/cache/named_map_provider_cache.js +++ b/lib/cartodb/cache/named_map_provider_cache.js @@ -7,12 +7,13 @@ var queue = require('queue-async'); var LruCache = require("lru-cache"); -function NamedMapProviderCache(templateMaps, pgConnection, userLimitsApi, turboCartocssAdapter) { +function NamedMapProviderCache(templateMaps, pgConnection, userLimitsApi, overviewsAdapter, turboCartocssAdapter) { this.templateMaps = templateMaps; this.pgConnection = pgConnection; this.userLimitsApi = userLimitsApi; this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps); + this.overviewsAdapter = overviewsAdapter; this.turboCartocssAdapter = turboCartocssAdapter; this.providerCache = new LruCache({ max: 2000 }); @@ -31,6 +32,7 @@ NamedMapProviderCache.prototype.get = function(user, templateId, config, authTok this.pgConnection, this.userLimitsApi, this.namedLayersAdapter, + this.overviewsAdapter, this.turboCartocssAdapter, user, templateId, diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 36b7b975..07e0eea5 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -18,7 +18,6 @@ var NamedMapsCacheEntry = require('../cache/model/named_maps_entry'); var MapConfigNamedLayersAdapter = require('../models/mapconfig_named_layers_adapter'); var NamedMapMapConfigProvider = require('../models/mapconfig/named_map_provider'); var CreateLayergroupMapConfigProvider = require('../models/mapconfig/create_layergroup_provider'); -var MapConfigOverviewsAdapter = require('../models/mapconfig_overviews_adapter'); /** * @param {AuthApi} authApi @@ -33,8 +32,8 @@ var MapConfigOverviewsAdapter = require('../models/mapconfig_overviews_adapter') * @constructor */ function MapController(authApi, pgConnection, templateMaps, mapBackend, metadataBackend, - overviewsMetadataApi, - surrogateKeysCache, userLimitsApi, layergroupAffectedTables, turboCartoCssAdapter) { + surrogateKeysCache, userLimitsApi, layergroupAffectedTables, + overviewsAdapter, turboCartoCssAdapter) { BaseController.call(this, authApi, pgConnection); @@ -42,14 +41,13 @@ function MapController(authApi, pgConnection, templateMaps, mapBackend, metadata this.templateMaps = templateMaps; this.mapBackend = mapBackend; this.metadataBackend = metadataBackend; - this.overviewsMetadataApi = overviewsMetadataApi; this.surrogateKeysCache = surrogateKeysCache; this.userLimitsApi = userLimitsApi; this.layergroupAffectedTables = layergroupAffectedTables; this.turboCartoCssAdapter = turboCartoCssAdapter; this.namedLayersAdapter = new MapConfigNamedLayersAdapter(templateMaps); - this.overviewsAdapter = new MapConfigOverviewsAdapter(this.overviewsMetadataApi); + this.overviewsAdapter = overviewsAdapter; } util.inherits(MapController, BaseController); @@ -231,6 +229,7 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn self.pgConnection, self.userLimitsApi, self.namedLayersAdapter, + self.overviewsAdapter, self.turboCartoCssAdapter, cdbuser, req.params.template_id, @@ -240,22 +239,6 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn ); mapConfigProvider.getMapConfig(this); }, - function addOverviewsInformation(err, requestMapConfig, rendererParams/*, context*/) { - assert.ifError(err); - var next = this; - self.overviewsAdapter.getLayers(req.context.user, requestMapConfig.layers, - function(err, layers) { - if (err) { - return next(err); - } - - if (layers) { - requestMapConfig.layers = layers; - } - return next(null, requestMapConfig, rendererParams); - } - ); - }, function createLayergroup(err, mapConfig_, rendererParams) { assert.ifError(err); mapConfig = mapConfig_; diff --git a/lib/cartodb/models/mapconfig/named_map_provider.js b/lib/cartodb/models/mapconfig/named_map_provider.js index ebf1f55c..deeb39a2 100644 --- a/lib/cartodb/models/mapconfig/named_map_provider.js +++ b/lib/cartodb/models/mapconfig/named_map_provider.js @@ -11,13 +11,15 @@ var QueryTables = require('cartodb-query-tables'); * @constructor * @type {NamedMapMapConfigProvider} */ -function NamedMapMapConfigProvider(templateMaps, pgConnection, userLimitsApi, namedLayersAdapter, - turboCartoCssAdapter, owner, templateId, config, authToken, params) { +function NamedMapMapConfigProvider(templateMaps, pgConnection, userLimitsApi, + namedLayersAdapter, overviewsAdapter, turboCartoCssAdapter, + owner, templateId, config, authToken, params) { this.templateMaps = templateMaps; this.pgConnection = pgConnection; this.userLimitsApi = userLimitsApi; this.namedLayersAdapter = namedLayersAdapter; this.turboCartoCssAdapter = turboCartoCssAdapter; + this.overviewsAdapter = overviewsAdapter; this.owner = owner; this.templateName = templateName(templateId); @@ -92,6 +94,22 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { } ); }, + function addOverviewsInformation(err, _mapConfig, datasource) { + assert.ifError(err); + var next = this; + + self.overviewsAdapter.getLayers(self.owner, _mapConfig.layers, function(err, layers) { + if (err) { + return next(err); + } + + if (layers) { + _mapConfig.layers = layers; + } + + return next(null, _mapConfig, datasource); + }); + }, function parseTurboCartoCss(err, _mapConfig, datasource) { assert.ifError(err); var next = this; diff --git a/lib/cartodb/server.js b/lib/cartodb/server.js index 28eea3c5..5f628501 100644 --- a/lib/cartodb/server.js +++ b/lib/cartodb/server.js @@ -30,6 +30,8 @@ var PgConnection = require('./backends/pg_connection'); var timeoutErrorTilePath = __dirname + '/../../assets/render-timeout-fallback.png'; var timeoutErrorTile = require('fs').readFileSync(timeoutErrorTilePath, {encoding: null}); +var MapConfigOverviewsAdapter = require('./models/mapconfig_overviews_adapter'); + var TurboCartocssParser = require('./utils/style/turbo-cartocss-parser'); var TurboCartocssAdapter = require('./utils/style/turbo-cartocss-adapter'); @@ -142,6 +144,8 @@ module.exports = function(serverOptions) { var layergroupAffectedTablesCache = new LayergroupAffectedTablesCache(); app.layergroupAffectedTablesCache = layergroupAffectedTablesCache; + var overviewsAdapter = new MapConfigOverviewsAdapter(overviewsMetadataApi); + var turboCartoCssParser = new TurboCartocssParser(pgQueryRunner); var turboCartocssAdapter = new TurboCartocssAdapter(turboCartoCssParser); @@ -149,6 +153,7 @@ module.exports = function(serverOptions) { templateMaps, pgConnection, userLimitsApi, + overviewsAdapter, turboCartocssAdapter ); @@ -184,10 +189,10 @@ module.exports = function(serverOptions) { templateMaps, mapBackend, metadataBackend, - overviewsMetadataApi, surrogateKeysCache, userLimitsApi, layergroupAffectedTablesCache, + overviewsAdapter, turboCartocssAdapter ).register(app);