[LASSO FILTER] wrap poly filter in parens (#2433)

* [LASSO FILTER] wrap poly filter in parens

* [MAP MIXIN] use null when lon/lat out of bounds for initial bounds

* [LASSO FILTER] fix parens in multi circle statement
This commit is contained in:
Jonathan Huang 2017-03-17 18:33:15 -07:00 committed by Mrudulabaj
parent d07c97ab7f
commit 712b5f7846
3 changed files with 10 additions and 8 deletions

View File

@ -419,10 +419,10 @@ export default function mapMixin (_chart, chartDivId, _mapboxgl, _MapboxDraw = M
return initialBounds
}
var latMaxSafe = bounds.latMax < LATMAX ? bounds.latMax : LATMAX
var latMinSafe = bounds.latMin > LATMIN ? bounds.latMin : LATMIN
var lonMaxSafe = bounds.lonMax < LONMAX ? bounds.lonMax : LONMAX
var lonMinSafe = bounds.lonMin > LONMIN ? bounds.lonMin : LONMIN
var latMaxSafe = bounds.latMax < LATMAX ? bounds.latMax : null
var latMinSafe = bounds.latMin > LATMIN ? bounds.latMin : null
var lonMaxSafe = bounds.lonMax < LONMAX ? bounds.lonMax : null
var lonMinSafe = bounds.lonMin > LONMIN ? bounds.lonMin : null
var sw = new _mapboxgl.LngLat(lonMinSafe, latMinSafe)
var ne = new _mapboxgl.LngLat(lonMaxSafe, latMaxSafe)

View File

@ -77,7 +77,7 @@ export function convertGeojsonToSql (features, px, py) {
return clause.substring(0, clause.length - 3)
}
}).join(" OR (")
sql = sql + `(${px} IS NOT NULL AND ${py} IS NOT NULL) AND (${triangleClause})`
sql = sql + `((${px} IS NOT NULL AND ${py} IS NOT NULL) AND (${triangleClause}))`
}
if (circleStmts.length) {
@ -86,6 +86,8 @@ export function convertGeojsonToSql (features, px, py) {
} else {
sql = sql + `(${circleStmts.join(" OR ")})`
}
sql = `(${sql})`
}
if (triangleTests.length) {

View File

@ -39,7 +39,7 @@ describe("convertGeojsonToSql", () => {
]
expect(utils.convertGeojsonToSql(features, "lon", "lat")).to.equal(
"(UNLIKELY( lon >= -128.320313 AND lon <= -40.429688 AND lat >= -9.661713 AND lat <= 51.483925)) AND (lon IS NOT NULL AND lat IS NOT NULL) AND (((((lon)-(-84.023438))*((22.069062)-(51.483925)) - ((-40.429688)-(-84.023438))*((lat)-(51.483925)) < 0.0) = (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0))) AND (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0) = (((lon)-(-40.429688))*((29.958472)-(22.069062)) - ((-128.320313)-(-40.429688))*((lat)-(22.069062)) < 0.0) OR (((((lon)-(-124.453125))*((29.958472)-(-9.661713)) - ((-128.320313)-(-124.453125))*((lat)-(-9.661713)) < 0.0) = (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0))) AND (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0) = (((lon)-(-128.320313))*((22.069062)-(29.958472)) - ((-40.429688)-(-128.320313))*((lat)-(29.958472)) < 0.0)"
"(UNLIKELY( lon >= -128.320313 AND lon <= -40.429688 AND lat >= -9.661713 AND lat <= 51.483925)) AND ((lon IS NOT NULL AND lat IS NOT NULL) AND (((((lon)-(-84.023438))*((22.069062)-(51.483925)) - ((-40.429688)-(-84.023438))*((lat)-(51.483925)) < 0.0) = (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0))) AND (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0) = (((lon)-(-40.429688))*((29.958472)-(22.069062)) - ((-128.320313)-(-40.429688))*((lat)-(22.069062)) < 0.0) OR (((((lon)-(-124.453125))*((29.958472)-(-9.661713)) - ((-128.320313)-(-124.453125))*((lat)-(-9.661713)) < 0.0) = (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0))) AND (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0) = (((lon)-(-128.320313))*((22.069062)-(29.958472)) - ((-40.429688)-(-128.320313))*((lat)-(29.958472)) < 0.0))"
)
})
@ -61,7 +61,7 @@ describe("convertGeojsonToSql", () => {
]
expect(utils.convertGeojsonToSql(features, "lon", "lat")).to.equal(
"(DISTANCE_IN_METERS(0, 0, lon, lat) < 1000000)"
"((DISTANCE_IN_METERS(0, 0, lon, lat) < 1000000))"
)
})
@ -138,7 +138,7 @@ describe("convertGeojsonToSql", () => {
]
expect(utils.convertGeojsonToSql(features, "lon", "lat")).to.equal(
"(UNLIKELY( lon >= -128.320313 AND lon <= -40.429688 AND lat >= -9.661713 AND lat <= 51.483925)) AND (lon IS NOT NULL AND lat IS NOT NULL) AND (((((lon)-(-84.023438))*((22.069062)-(51.483925)) - ((-40.429688)-(-84.023438))*((lat)-(51.483925)) < 0.0) = (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0))) AND (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0) = (((lon)-(-40.429688))*((29.958472)-(22.069062)) - ((-128.320313)-(-40.429688))*((lat)-(22.069062)) < 0.0) OR (((((lon)-(-124.453125))*((29.958472)-(-9.661713)) - ((-128.320313)-(-124.453125))*((lat)-(-9.661713)) < 0.0) = (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0))) AND (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0) = (((lon)-(-128.320313))*((22.069062)-(29.958472)) - ((-40.429688)-(-128.320313))*((lat)-(29.958472)) < 0.0) OR (DISTANCE_IN_METERS(0, 0, lon, lat) < 1000000)"
"(UNLIKELY( lon >= -128.320313 AND lon <= -40.429688 AND lat >= -9.661713 AND lat <= 51.483925)) AND (((lon IS NOT NULL AND lat IS NOT NULL) AND (((((lon)-(-84.023438))*((22.069062)-(51.483925)) - ((-40.429688)-(-84.023438))*((lat)-(51.483925)) < 0.0) = (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0))) AND (((lon)-(-128.320313))*((51.483925)-(29.958472)) - ((-84.023438)-(-128.320313))*((lat)-(29.958472)) < 0.0) = (((lon)-(-40.429688))*((29.958472)-(22.069062)) - ((-128.320313)-(-40.429688))*((lat)-(22.069062)) < 0.0) OR (((((lon)-(-124.453125))*((29.958472)-(-9.661713)) - ((-128.320313)-(-124.453125))*((lat)-(-9.661713)) < 0.0) = (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0))) AND (((lon)-(-40.429688))*((-9.661713)-(22.069062)) - ((-124.453125)-(-40.429688))*((lat)-(22.069062)) < 0.0) = (((lon)-(-128.320313))*((22.069062)-(29.958472)) - ((-40.429688)-(-128.320313))*((lat)-(29.958472)) < 0.0)) OR (DISTANCE_IN_METERS(0, 0, lon, lat) < 1000000))"
)
})