diff --git a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js index c48de8a4..b704ed06 100644 --- a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js @@ -11,64 +11,6 @@ function AnalysisMapConfigAdapter(analysisBackend) { module.exports = AnalysisMapConfigAdapter; -var SKIP_COLUMNS = { - 'the_geom': true, - 'the_geom_webmercator': true -}; - -function skipColumns(columnNames) { - return columnNames - .filter(function(columnName) { return !SKIP_COLUMNS[columnName]; }); -} - -var layerQueryTemplate = dot.template([ - 'SELECT {{=it._columns}}', - 'FROM ({{=it._query}}) _cdb_analysis_query' -].join('\n')); - -function layerQuery(node) { - if (node.type === 'source') { - return node.getQuery(); - } - var _columns = ['ST_Transform(the_geom, 3857) the_geom_webmercator'].concat(skipColumns(node.getColumns())); - return layerQueryTemplate({ _query: node.getQuery(), _columns: _columns.join(', ') }); -} - -function appendFiltersToNodes(requestMapConfig, dataviewsFiltersBySourceId) { - var analyses = requestMapConfig.analyses || []; - - requestMapConfig.analyses = analyses.map(function(analysisDefinition) { - var analysisGraph = new camshaft.reference.AnalysisGraph(analysisDefinition); - var definition = analysisDefinition; - Object.keys(dataviewsFiltersBySourceId).forEach(function(sourceId) { - definition = analysisGraph.getDefinitionWith(sourceId, {filters: dataviewsFiltersBySourceId[sourceId] }); - }); - - return definition; - }); - - return requestMapConfig; -} - -function shouldAdaptLayers(requestMapConfig) { - return Array.isArray(requestMapConfig.layers) && - Array.isArray(requestMapConfig.analyses) && requestMapConfig.analyses.length > 0; -} - -var DATAVIEW_TYPE_2_FILTER_TYPE = { - aggregation: 'category', - histogram: 'range' -}; -function getFilter(dataview, params) { - var type = dataview.type; - - return { - type: DATAVIEW_TYPE_2_FILTER_TYPE[type], - column: dataview.options.column, - params: params - }; -} - AnalysisMapConfigAdapter.prototype.getMapConfig = function(user, requestMapConfig, params, context, callback) { // jshint maxcomplexity:7 var self = this; @@ -184,6 +126,64 @@ AnalysisMapConfigAdapter.prototype.getMapConfig = function(user, requestMapConfi }); }; +var SKIP_COLUMNS = { + 'the_geom': true, + 'the_geom_webmercator': true +}; + +function skipColumns(columnNames) { + return columnNames + .filter(function(columnName) { return !SKIP_COLUMNS[columnName]; }); +} + +var layerQueryTemplate = dot.template([ + 'SELECT {{=it._columns}}', + 'FROM ({{=it._query}}) _cdb_analysis_query' +].join('\n')); + +function layerQuery(node) { + if (node.type === 'source') { + return node.getQuery(); + } + var _columns = ['ST_Transform(the_geom, 3857) the_geom_webmercator'].concat(skipColumns(node.getColumns())); + return layerQueryTemplate({ _query: node.getQuery(), _columns: _columns.join(', ') }); +} + +function appendFiltersToNodes(requestMapConfig, dataviewsFiltersBySourceId) { + var analyses = requestMapConfig.analyses || []; + + requestMapConfig.analyses = analyses.map(function(analysisDefinition) { + var analysisGraph = new camshaft.reference.AnalysisGraph(analysisDefinition); + var definition = analysisDefinition; + Object.keys(dataviewsFiltersBySourceId).forEach(function(sourceId) { + definition = analysisGraph.getDefinitionWith(sourceId, {filters: dataviewsFiltersBySourceId[sourceId] }); + }); + + return definition; + }); + + return requestMapConfig; +} + +function shouldAdaptLayers(requestMapConfig) { + return Array.isArray(requestMapConfig.layers) && + Array.isArray(requestMapConfig.analyses) && requestMapConfig.analyses.length > 0; +} + +var DATAVIEW_TYPE_2_FILTER_TYPE = { + aggregation: 'category', + histogram: 'range' +}; +function getFilter(dataview, params) { + var type = dataview.type; + + return { + type: DATAVIEW_TYPE_2_FILTER_TYPE[type], + column: dataview.options.column, + params: params + }; +} + function getLayerSourceId(layer) { return layer.options.source && layer.options.source.id; }