Refactor filter application into own model
This also avoids storing an object in the overviews query rewriter for the bbox filter (a plain data structure is used instead).
This commit is contained in:
@@ -140,7 +140,17 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param
|
||||
if (params.bbox) {
|
||||
var bboxFilter = new BBoxFilter({column: 'the_geom', srid: 4326}, {bbox: params.bbox});
|
||||
query = bboxFilter.sql(query);
|
||||
queryRewriteData = _.extend(queryRewriteData, { bbox_filter: bboxFilter });
|
||||
var bbox_filter_definition = {
|
||||
type: 'bbox',
|
||||
options: {
|
||||
column: 'the_geom',
|
||||
srid: 4326,
|
||||
},
|
||||
params: {
|
||||
bbox: params.bbox
|
||||
}
|
||||
};
|
||||
queryRewriteData = _.extend(queryRewriteData, { bbox_filter: bbox_filter_definition });
|
||||
}
|
||||
|
||||
var dataviewFactory = DataviewFactoryWithOverviews.getFactory(
|
||||
|
||||
13
lib/cartodb/models/filter/camshaft.js
Normal file
13
lib/cartodb/models/filter/camshaft.js
Normal file
@@ -0,0 +1,13 @@
|
||||
// this is meant as a hack for development
|
||||
// TODO: reproduce here the filter application of Camshaft
|
||||
var queryBuilder = require('camshaft/lib/filter/query-builder');
|
||||
|
||||
function CamshaftFilters(filters) {
|
||||
this.filters = filters;
|
||||
}
|
||||
|
||||
CamshaftFilters.prototype.sql = function(rawSql) {
|
||||
return queryBuilder.getSQL(rawSql, filters);
|
||||
};
|
||||
|
||||
module.exports = CamshaftFilters;
|
||||
@@ -1,15 +1,17 @@
|
||||
var _ = require('underscore');
|
||||
var TableNameParser = require('./table_name_parser');
|
||||
|
||||
// this is meant as a hack for development
|
||||
var queryBuilder = require('camshaft/lib/filter/query-builder');
|
||||
var BBoxFilter = require('../models/filter/bbox');
|
||||
var CamshaftFilter = require('../models/filter/camshaft');
|
||||
|
||||
function apply_filters_to_query(query, filters, bbox_filter) {
|
||||
// TODO: implement filter application here
|
||||
if ( filters && !_.isEmpty(filters)) {
|
||||
query = queryBuilder.getSql(query, filters);
|
||||
var camshaftFilter = new CamshaftFilter(filters)
|
||||
query = camshaftFilter.sql(query);
|
||||
}
|
||||
if ( bbox_filter ) {
|
||||
query = bbox_filter.sql(query);
|
||||
var bboxFilter = new BBoxFilter(bbox_filter.options, bbox_filter.params);
|
||||
query = bboxFilter.sql(query);
|
||||
}
|
||||
return query;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user