mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 19:42:36 +02:00
fix: do not import empty features
This commit is contained in:
parent
fb03c6a39e
commit
9af74b0a4e
3 changed files with 69 additions and 5 deletions
|
@ -564,6 +564,10 @@ class Feature {
|
|||
return false
|
||||
}
|
||||
|
||||
isEmpty() {
|
||||
return !this.coordinates.length
|
||||
}
|
||||
|
||||
clone() {
|
||||
const geojson = this.toGeoJSON()
|
||||
delete geojson.id
|
||||
|
@ -951,10 +955,6 @@ export class LineString extends Path {
|
|||
return { coordinates, type }
|
||||
}
|
||||
|
||||
isEmpty() {
|
||||
return !this.coordinates.length
|
||||
}
|
||||
|
||||
getUIClass() {
|
||||
return super.getUIClass() || LeafletPolyline
|
||||
}
|
||||
|
|
|
@ -522,7 +522,7 @@ export class DataLayer extends ServerStored {
|
|||
})
|
||||
)
|
||||
}
|
||||
if (feature) {
|
||||
if (feature && !feature.isEmpty()) {
|
||||
this.addFeature(feature)
|
||||
if (sync) feature.onCommit()
|
||||
return feature
|
||||
|
|
|
@ -500,6 +500,70 @@ def test_import_multipolyline(live_server, page, tilelayer):
|
|||
expect(paths).to_have_count(1)
|
||||
|
||||
|
||||
def test_should_not_import_empty_coordinates(live_server, page, tilelayer):
|
||||
data = {
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {"name": "An empty polygon"},
|
||||
"geometry": {
|
||||
"type": "Polygon",
|
||||
"coordinates": [],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {"name": "An empty linestring"},
|
||||
"geometry": {
|
||||
"type": "LineString",
|
||||
"coordinates": [],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {"name": "An empty point"},
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [],
|
||||
},
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [6.922931671142578, 47.481161607175736],
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {"name": "A point"},
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"type": "LineString",
|
||||
"coordinates": [
|
||||
[2.4609375, 48.88639177703194],
|
||||
[2.48291015625, 48.76343113791796],
|
||||
[2.164306640625, 48.719961222646276],
|
||||
],
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"name": "A linestring",
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
page.goto(f"{live_server.url}/map/new/")
|
||||
page.get_by_title("Open browser").click()
|
||||
page.get_by_title("Import data").click()
|
||||
textarea = page.locator(".umap-import textarea")
|
||||
textarea.fill(json.dumps(data))
|
||||
page.locator('select[name="format"]').select_option("geojson")
|
||||
page.get_by_role("button", name="Import data", exact=True).click()
|
||||
page.locator("#map").click(button="right")
|
||||
page.get_by_role("button", name="browse data").click()
|
||||
expect(page.locator("li.feature")).to_have_count(2)
|
||||
|
||||
|
||||
def test_import_csv_without_valid_latlon_headers(tilelayer, live_server, page):
|
||||
page.goto(f"{live_server.url}/map/new/")
|
||||
page.get_by_title("Open browser").click()
|
||||
|
|
Loading…
Reference in a new issue