Skip to content

Commit

Permalink
fix: Scope create & update
Browse files Browse the repository at this point in the history
fix: Enable to update geocoded scope
  • Loading branch information
Quentinchampenois authored Jun 4, 2024
2 parents e5b1fe6 + 73bda50 commit 1ff2225
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 13 deletions.
14 changes: 11 additions & 3 deletions app/commands/decidim/admin/create_scope.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,20 @@ def create_scope
def geojson
return nil if form.geolocalized.blank?

geojson = form.geojson.deep_dup.deep_symbolize_keys
{
color: form.geojson[:color],
geometry: form.geojson[:geometry],
parsed_geometry: form.geojson[:parsed_geometry]
color: geojson[:color] || form.color,
geometry: geojson[:geometry],
parsed_geometry: parsed_geometry(geojson)
}
end

def parsed_geometry(geojson)
return if geojson.nil? || geojson[:geometry].nil?
return geojson[:parsed_geometry].deep_symbolize_keys if geojson[:parsed_geometry].is_a? Hash

JSON.parse(geojson[:parsed_geometry].gsub("=>", ":")).deep_symbolize_keys
end
end
end
end
14 changes: 11 additions & 3 deletions app/commands/decidim/admin/update_scope.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,20 @@ def attributes
def geojson
return nil if form.geolocalized.blank?

geojson = form.geojson.deep_dup.deep_symbolize_keys
{
color: form.geojson[:color],
geometry: form.geojson[:geometry],
parsed_geometry: form.geojson[:parsed_geometry]
color: geojson[:color] || form.color,
geometry: geojson[:geometry],
parsed_geometry: parsed_geometry(geojson)
}
end

def parsed_geometry(geojson)
return if geojson.nil? || geojson[:geometry].nil?
return geojson[:parsed_geometry].deep_symbolize_keys if geojson[:parsed_geometry].is_a? Hash

JSON.parse(geojson[:parsed_geometry].gsub("=>", ":")).deep_symbolize_keys
end
end
end
end
12 changes: 5 additions & 7 deletions lib/decidim/homepage_interactive_map/coordinates_swapper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,20 @@ module HomepageInteractiveMap
module CoordinatesSwapper
def self.convert_geojson(geojson, opts = {})
return if geojson.nil?
return if geojson.try(:values)&.compact.blank?

from = opts[:from] || detect_crs(geojson) || "EPSG:4326"
to = opts[:to] || "EPSG:4326"

geojson_clone = geojson.dup.deep_symbolize_keys
new_coordinates = transform(geojson_clone[:parsed_geometry][:geometry][:coordinates], from, to)
new_geometry = geojson_clone[:parsed_geometry][:geometry].merge(
new_coordinates = transform(geojson[:parsed_geometry][:geometry][:coordinates], from, to)
new_geometry = geojson[:parsed_geometry][:geometry].merge(
{
coordinates: new_coordinates,
crs: to
}
)
new_parsed_geometry = geojson_clone[:parsed_geometry].merge(geometry: new_geometry)
new_parsed_geometry = geojson[:parsed_geometry].merge(geometry: new_geometry)

geojson_clone.merge(parsed_geometry: new_parsed_geometry)
geojson.merge(parsed_geometry: new_parsed_geometry)
end

def self.transform(coordinates, from, to)
Expand Down Expand Up @@ -54,7 +52,7 @@ def self.coord_sys(coord_sys)
end

def self.detect_crs(geojson)
geojson.dup.deep_symbolize_keys.dig(:parsed_geometry, :geometry, :crs)
geojson.dig(:parsed_geometry, :geometry, :crs)
end
end
end
Expand Down

0 comments on commit 1ff2225

Please sign in to comment.