39 lines
1.2 KiB
Ruby
39 lines
1.2 KiB
Ruby
require_relative '../../app/services/carto/visualizations_export_service_2'
|
|
|
|
module Carto
|
|
module MapcappedVisualizationUpdater
|
|
include VisualizationsExportService2Exporter
|
|
|
|
# Takes a block |visualization, persisted| in which you should do the modifications
|
|
# Only call .save (or equivalent) if persisted is true or this will fail. Return the result of saving
|
|
def update_visualization_and_mapcap(visualization)
|
|
# Update the persisted visualization
|
|
return false unless yield visualization, true
|
|
|
|
# Update the mapcap (if it exists)
|
|
if visualization.mapcapped?
|
|
mapcap = visualization.latest_mapcap
|
|
regenerated_viz = mapcap.regenerate_visualization
|
|
|
|
yield regenerated_viz, false
|
|
|
|
mapcap.export_json = export_in_memory_visualization(regenerated_viz, regenerated_viz.user)
|
|
return false unless mapcap.save
|
|
end
|
|
|
|
true
|
|
end
|
|
|
|
private
|
|
|
|
# Reimplementation of VisualizationExportService2.export_visualization_json_hash
|
|
# that works with in-memory visualizations
|
|
def export_in_memory_visualization(visualization, user)
|
|
{
|
|
version: CURRENT_VERSION,
|
|
visualization: export(visualization, user, with_mapcaps: false)
|
|
}
|
|
end
|
|
end
|
|
end
|