Add aggregation proxy
This commit is contained in:
parent
1767b83d09
commit
73ae736603
43
lib/cartodb/models/aggregation/aggregation-proxy.js
Normal file
43
lib/cartodb/models/aggregation/aggregation-proxy.js
Normal file
@ -0,0 +1,43 @@
|
||||
const RasterAggregation = require('./raster-aggregation');
|
||||
const VectorAggregation = require('./vector-aggregation');
|
||||
const RASTER_AGGREGATION = 'RasterAggregation';
|
||||
const VECTOR_AGGREGATION = 'VectorAggregation';
|
||||
|
||||
module.exports = class AggregationProxy {
|
||||
constructor (mapconfig, resolution = 256, threshold = 10e5, placement = 'centroid') {
|
||||
this.mapconfig = mapconfig;
|
||||
this.resolution = resolution;
|
||||
this.threshold = threshold;
|
||||
this.placement = placement;
|
||||
this.implementation = this._getAggregationImplementation();
|
||||
}
|
||||
|
||||
_getAggregationImplementation () {
|
||||
let implementation = null;
|
||||
|
||||
switch (this._getAggregationType()) {
|
||||
case VECTOR_AGGREGATION:
|
||||
implementation = new VectorAggregation(this.resolution, this.threshold, this.placement);
|
||||
break;
|
||||
case RASTER_AGGREGATION:
|
||||
implementation = new RasterAggregation(this.resolution, this.threshold, this.placement);
|
||||
break;
|
||||
default:
|
||||
throw new Error('Unsupported aggregation type');
|
||||
}
|
||||
|
||||
return implementation;
|
||||
}
|
||||
|
||||
_getAggregationType () {
|
||||
if (this.mapconfig.isVetorLayergroup()) {
|
||||
return VECTOR_AGGREGATION;
|
||||
}
|
||||
|
||||
return RASTER_AGGREGATION;
|
||||
}
|
||||
|
||||
sql () {
|
||||
return this.implementation.sql();
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user