diff --git a/lib/cartodb/models/analysis-mapconfig-adapter.js b/lib/cartodb/models/analysis-mapconfig-adapter.js index 3c5761c6..935179ea 100644 --- a/lib/cartodb/models/analysis-mapconfig-adapter.js +++ b/lib/cartodb/models/analysis-mapconfig-adapter.js @@ -79,6 +79,11 @@ AnalysisMapConfigAdapter.prototype.getLayers = function(analysisConfiguration, r debug(dataviewsFilters); var dataviews = requestMapConfig.dataviews || {}; + var errors = getDataviewsErrors(dataviews); + if (errors.length > 0) { + return callback(errors); + } + var dataviewsFiltersBySourceId = Object.keys(dataviewsFilters).reduce(function(bySourceId, dataviewName) { var dataview = dataviews[dataviewName]; if (dataview) { @@ -140,3 +145,20 @@ AnalysisMapConfigAdapter.prototype.getLayers = function(analysisConfiguration, r return callback(null, requestMapConfig, analysesResults); }); }; + +function getDataviewsErrors(dataviews) { + var errors = []; + + Object.keys(dataviews).forEach(function(dataviewName) { + var dataview = dataviews[dataviewName]; + if (!dataview.hasOwnProperty('source') || !dataview.source.id) { + errors.push(new Error('Dataview "' + dataviewName + '" is missing `source.id` attribute')); + } + + if (!dataview.type) { + errors.push(new Error('Dataview "' + dataviewName + '" is missing `type` attribute')); + } + }); + + return errors; +}