decidim-navigation_maps 1.1.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +32 -5
- data/Rakefile +18 -0
- data/app/cells/decidim/navigation_maps/content_blocks/groups_navigation_map_cell.rb +21 -0
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map/_tabs_content.erb +1 -1
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map/show.erb +6 -6
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_cell.rb +31 -0
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form/_form.erb +4 -4
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form/_tabs_content.erb +0 -1
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form/show.erb +7 -4
- data/app/cells/decidim/navigation_maps/content_blocks/navigation_map_settings_form_cell.rb +10 -1
- data/app/commands/decidim/navigation_maps/save_blueprints.rb +7 -1
- data/app/controllers/decidim/navigation_maps/admin/blueprints_controller.rb +3 -3
- data/app/forms/decidim/navigation_maps/area_form.rb +1 -1
- data/app/forms/decidim/navigation_maps/blueprint_form.rb +1 -0
- data/app/forms/decidim/navigation_maps/blueprint_forms.rb +1 -0
- data/app/jobs/decidim/navigation_maps/migrate_legacy_images_job.rb +32 -0
- data/app/models/decidim/navigation_maps/blueprint.rb +5 -3
- data/app/packs/entrypoints/decidim_admin_navigation_maps.js +4 -0
- data/app/packs/entrypoints/decidim_admin_navigation_maps.scss +1 -0
- data/app/packs/entrypoints/decidim_navigation_maps.js +7 -0
- data/app/packs/entrypoints/decidim_navigation_maps.scss +1 -0
- data/app/packs/src/decidim/navigation_maps/admin/map_editor.js +83 -0
- data/app/packs/src/decidim/navigation_maps/admin/navigation_maps.js +154 -0
- data/app/packs/src/decidim/navigation_maps/map_view.js +125 -0
- data/app/packs/src/decidim/navigation_maps/navigation_maps.js +43 -0
- data/app/{assets → packs}/stylesheets/decidim/navigation_maps/_variables.scss +0 -0
- data/app/{assets → packs}/stylesheets/decidim/navigation_maps/admin/navigation_maps.scss +4 -4
- data/app/{assets → packs}/stylesheets/decidim/navigation_maps/navigation_maps.scss +1 -2
- data/app/queries/decidim/navigation_maps/content_block_blueprints.rb +20 -0
- data/app/uploaders/decidim/navigation_maps/blueprint_uploader.rb +4 -12
- data/app/uploaders/decidim/navigation_maps/cw/blueprint_uploader.rb +24 -0
- data/config/assets.rb +41 -0
- data/config/locales/ca.yml +1 -0
- data/config/locales/cs.yml +2 -1
- data/config/locales/en.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/db/migrate/20201105130724_add_reference_to_content_block_to_blueprints_table.rb +12 -0
- data/db/seeds/pla-cerda.jpg +0 -0
- data/db/seeds.rb +62 -11
- data/lib/decidim/navigation_maps/admin_engine.rb +0 -4
- data/lib/decidim/navigation_maps/engine.rb +16 -4
- data/lib/decidim/navigation_maps/navigation_map_cell_helpers.rb +4 -4
- data/lib/decidim/navigation_maps/test/factories.rb +1 -0
- data/lib/decidim/navigation_maps/version.rb +2 -2
- data/lib/decidim/navigation_maps.rb +0 -2
- data/lib/tasks/custom_seeds.rake +8 -0
- data/lib/tasks/decidim_navigation_maps_webpacker_tasks.rake +58 -0
- data/lib/tasks/navigation_maps_active_storage_migration_tasks.rake +37 -0
- metadata +38 -29
- data/app/assets/config/admin/decidim_navigation_maps_manifest.css +0 -3
- data/app/assets/config/admin/decidim_navigation_maps_manifest.js +0 -3
- data/app/assets/config/decidim_navigation_maps_manifest.css +0 -3
- data/app/assets/config/decidim_navigation_maps_manifest.js +0 -1
- data/app/assets/images/decidim/navigation_maps/icon.svg +0 -1
- data/app/assets/javascripts/decidim/navigation_maps/admin/map_editor.js +0 -88
- data/app/assets/javascripts/decidim/navigation_maps/admin/navigation_maps.js +0 -143
- data/app/assets/javascripts/decidim/navigation_maps/map_view.js +0 -123
- data/app/assets/javascripts/decidim/navigation_maps/navigation_maps.js +0 -44
@@ -9,10 +9,6 @@ module Decidim
|
|
9
9
|
class Engine < ::Rails::Engine
|
10
10
|
isolate_namespace Decidim::NavigationMaps
|
11
11
|
|
12
|
-
initializer "decidim_navigation_maps.assets" do |app|
|
13
|
-
app.config.assets.precompile += %w(decidim_navigation_maps_manifest.js decidim_navigation_maps_manifest.css)
|
14
|
-
end
|
15
|
-
|
16
12
|
initializer "decidim.navigation_maps.content_blocks" do
|
17
13
|
Decidim.content_blocks.register(:homepage, :navigation_map) do |content_block|
|
18
14
|
content_block.cell = "decidim/navigation_maps/content_blocks/navigation_map"
|
@@ -21,6 +17,18 @@ module Decidim
|
|
21
17
|
|
22
18
|
content_block.settings do |settings|
|
23
19
|
settings.attribute :title, type: :text, translated: true
|
20
|
+
settings.attribute :autohide_tabs, type: :boolean, default: false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
Decidim.content_blocks.register(:participatory_process_group_homepage, :navigation_map) do |content_block|
|
25
|
+
content_block.cell = "decidim/navigation_maps/content_blocks/groups_navigation_map"
|
26
|
+
content_block.public_name_key = "decidim.navigation_maps.content_blocks.name"
|
27
|
+
content_block.settings_form_cell = "decidim/navigation_maps/content_blocks/navigation_map_settings_form"
|
28
|
+
|
29
|
+
content_block.settings do |settings|
|
30
|
+
settings.attribute :title, type: :text, translated: true
|
31
|
+
settings.attribute :autohide_tabs, type: :boolean, default: false
|
24
32
|
end
|
25
33
|
end
|
26
34
|
end
|
@@ -29,6 +37,10 @@ module Decidim
|
|
29
37
|
Cell::ViewModel.view_paths << File.expand_path("#{Decidim::NavigationMaps::Engine.root}/app/cells")
|
30
38
|
Cell::ViewModel.view_paths << File.expand_path("#{Decidim::NavigationMaps::Engine.root}/app/views") # for partials
|
31
39
|
end
|
40
|
+
|
41
|
+
initializer "decidim_notify.webpacker.assets_path" do
|
42
|
+
Decidim.register_assets_path File.expand_path("app/packs", root)
|
43
|
+
end
|
32
44
|
end
|
33
45
|
end
|
34
46
|
end
|
@@ -7,7 +7,7 @@ module Decidim
|
|
7
7
|
delegate :available_locales, to: :current_organization
|
8
8
|
|
9
9
|
def valid_blueprints
|
10
|
-
|
10
|
+
content_block_blueprints.joins(:image_attachment).order(:created_at)
|
11
11
|
end
|
12
12
|
|
13
13
|
def valid_blueprints?
|
@@ -15,13 +15,13 @@ module Decidim
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def blueprints
|
18
|
-
|
18
|
+
content_block_blueprints.order(:created_at)
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
|
-
def
|
24
|
-
@
|
23
|
+
def content_block_blueprints
|
24
|
+
@content_block_blueprints ||= (OrganizationBlueprints.new(current_organization) | ContentBlockBlueprints.new(content_block)).query
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -8,6 +8,7 @@ FactoryBot.define do
|
|
8
8
|
image { Decidim::Dev.test_file("city.jpeg", "image/jpeg") }
|
9
9
|
title { Decidim::Faker::Localized.word }
|
10
10
|
description { generate_localized_title }
|
11
|
+
content_block { create(:content_block, organization: organization) }
|
11
12
|
end
|
12
13
|
|
13
14
|
factory :blueprint_area, class: "Decidim::NavigationMaps::BlueprintArea" do
|
@@ -5,8 +5,6 @@ require "decidim/navigation_maps/engine"
|
|
5
5
|
require "decidim/navigation_maps/admin_engine"
|
6
6
|
|
7
7
|
module Decidim
|
8
|
-
# This namespace holds the logic of the `NavigationMaps` component. This component
|
9
|
-
# allows users to create navigation_maps in a participatory space.
|
10
8
|
module NavigationMaps
|
11
9
|
autoload :NavigationMapCellHelpers, "decidim/navigation_maps/navigation_map_cell_helpers"
|
12
10
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "decidim/gem_manager"
|
4
|
+
|
5
|
+
namespace :decidim_navigation_maps do
|
6
|
+
namespace :webpacker do
|
7
|
+
desc "Installs Decidim Awesome webpacker files in Rails instance application"
|
8
|
+
task install: :environment do
|
9
|
+
raise "Decidim gem is not installed" if decidim_path.nil?
|
10
|
+
|
11
|
+
install_navigation_maps_npm
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Adds Decidim Awesome dependencies in package.json"
|
15
|
+
task upgrade: :environment do
|
16
|
+
raise "Decidim gem is not installed" if decidim_path.nil?
|
17
|
+
|
18
|
+
install_navigation_maps_npm
|
19
|
+
end
|
20
|
+
|
21
|
+
def install_navigation_maps_npm
|
22
|
+
navigation_maps_npm_dependencies.each do |type, packages|
|
23
|
+
system! "npm i --save-#{type} #{packages.join(" ")}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def navigation_maps_npm_dependencies
|
28
|
+
@navigation_maps_npm_dependencies ||= begin
|
29
|
+
package_json = JSON.parse(File.read(navigation_maps_path.join("package.json")))
|
30
|
+
|
31
|
+
{
|
32
|
+
prod: package_json["dependencies"].map { |package, version| "#{package}@#{version}" },
|
33
|
+
dev: package_json["devDependencies"].map { |package, version| "#{package}@#{version}" }
|
34
|
+
}.freeze
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def navigation_maps_path
|
39
|
+
@navigation_maps_path ||= Pathname.new(navigation_maps_gemspec.full_gem_path) if Gem.loaded_specs.has_key?(gem_name)
|
40
|
+
end
|
41
|
+
|
42
|
+
def navigation_maps_gemspec
|
43
|
+
@navigation_maps_gemspec ||= Gem.loaded_specs[gem_name]
|
44
|
+
end
|
45
|
+
|
46
|
+
def rails_app_path
|
47
|
+
@rails_app_path ||= Rails.root
|
48
|
+
end
|
49
|
+
|
50
|
+
def system!(command)
|
51
|
+
system("cd #{rails_app_path} && #{command}") || abort("\n== Command #{command} failed ==")
|
52
|
+
end
|
53
|
+
|
54
|
+
def gem_name
|
55
|
+
"decidim-navigation_maps"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
namespace :navigation_maps do
|
4
|
+
namespace :active_storage_migrations do
|
5
|
+
desc "Migrates editor images from Carrierwave to ActiveStorage"
|
6
|
+
task migrate_from_carrierwave: :environment do
|
7
|
+
stdout = Logger.new($stdout)
|
8
|
+
stdout.level = Logger::INFO
|
9
|
+
Rails.logger.extend(ActiveSupport::Logger.broadcast(stdout))
|
10
|
+
Decidim::Organization.find_each do |organization|
|
11
|
+
puts "Migrating Organization #{organization.id} (#{organization.host})..."
|
12
|
+
routes_mappings = []
|
13
|
+
Decidim::NavigationMaps::MigrateLegacyImagesJob.perform_now(organization.id, routes_mappings)
|
14
|
+
|
15
|
+
path = Rails.root.join("tmp/navigation_maps_editor_images_mappings.csv")
|
16
|
+
dirname = File.dirname(path)
|
17
|
+
FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
|
18
|
+
File.open(path, "wb") do |file|
|
19
|
+
file.write(Decidim::Exporters::CSV.new(routes_mappings).export.read)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Checks editor images migrated from Carrierwave to ActiveStorage"
|
25
|
+
task check_migration_from_carrierwave: :environment do
|
26
|
+
logger = ActiveSupport::TaggedLogging.new(Logger.new($stdout))
|
27
|
+
|
28
|
+
Decidim::CarrierWaveMigratorService.check_migration(
|
29
|
+
klass: Decidim::NavigationMaps::Blueprint,
|
30
|
+
cw_attribute: "image",
|
31
|
+
cw_uploader: Decidim::NavigationMaps::Cw::BlueprintUploader,
|
32
|
+
as_attribute: "image",
|
33
|
+
logger: logger
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-navigation_maps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Vergés
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: decidim-admin
|
@@ -16,61 +16,61 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.25'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '0.
|
22
|
+
version: '0.27'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
29
|
+
version: '0.25'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '0.
|
32
|
+
version: '0.27'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: decidim-core
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0.
|
39
|
+
version: '0.25'
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '0.
|
42
|
+
version: '0.27'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '0.
|
49
|
+
version: '0.25'
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '0.
|
52
|
+
version: '0.27'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: decidim-dev
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '0.
|
59
|
+
version: '0.25'
|
60
60
|
- - "<"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0.
|
62
|
+
version: '0.27'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0.
|
69
|
+
version: '0.25'
|
70
70
|
- - "<"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: '0.
|
73
|
-
description: Allows to
|
72
|
+
version: '0.27'
|
73
|
+
description: Allows to create visual guiding maps in content blocks for Decidim.
|
74
74
|
email:
|
75
75
|
- ivan@platoniq.net
|
76
76
|
executables: []
|
@@ -80,18 +80,7 @@ files:
|
|
80
80
|
- LICENSE-AGPLv3.txt
|
81
81
|
- README.md
|
82
82
|
- Rakefile
|
83
|
-
- app/
|
84
|
-
- app/assets/config/admin/decidim_navigation_maps_manifest.js
|
85
|
-
- app/assets/config/decidim_navigation_maps_manifest.css
|
86
|
-
- app/assets/config/decidim_navigation_maps_manifest.js
|
87
|
-
- app/assets/images/decidim/navigation_maps/icon.svg
|
88
|
-
- app/assets/javascripts/decidim/navigation_maps/admin/map_editor.js
|
89
|
-
- app/assets/javascripts/decidim/navigation_maps/admin/navigation_maps.js
|
90
|
-
- app/assets/javascripts/decidim/navigation_maps/map_view.js
|
91
|
-
- app/assets/javascripts/decidim/navigation_maps/navigation_maps.js
|
92
|
-
- app/assets/stylesheets/decidim/navigation_maps/_variables.scss
|
93
|
-
- app/assets/stylesheets/decidim/navigation_maps/admin/navigation_maps.scss
|
94
|
-
- app/assets/stylesheets/decidim/navigation_maps/navigation_maps.scss
|
83
|
+
- app/cells/decidim/navigation_maps/content_blocks/groups_navigation_map_cell.rb
|
95
84
|
- app/cells/decidim/navigation_maps/content_blocks/navigation_map/_styles.erb
|
96
85
|
- app/cells/decidim/navigation_maps/content_blocks/navigation_map/_tabs.erb
|
97
86
|
- app/cells/decidim/navigation_maps/content_blocks/navigation_map/_tabs_content.erb
|
@@ -112,14 +101,29 @@ files:
|
|
112
101
|
- app/forms/decidim/navigation_maps/area_form.rb
|
113
102
|
- app/forms/decidim/navigation_maps/blueprint_form.rb
|
114
103
|
- app/forms/decidim/navigation_maps/blueprint_forms.rb
|
104
|
+
- app/jobs/decidim/navigation_maps/migrate_legacy_images_job.rb
|
115
105
|
- app/models/decidim/navigation_maps/application_record.rb
|
116
106
|
- app/models/decidim/navigation_maps/blueprint.rb
|
117
107
|
- app/models/decidim/navigation_maps/blueprint_area.rb
|
108
|
+
- app/packs/entrypoints/decidim_admin_navigation_maps.js
|
109
|
+
- app/packs/entrypoints/decidim_admin_navigation_maps.scss
|
110
|
+
- app/packs/entrypoints/decidim_navigation_maps.js
|
111
|
+
- app/packs/entrypoints/decidim_navigation_maps.scss
|
112
|
+
- app/packs/src/decidim/navigation_maps/admin/map_editor.js
|
113
|
+
- app/packs/src/decidim/navigation_maps/admin/navigation_maps.js
|
114
|
+
- app/packs/src/decidim/navigation_maps/map_view.js
|
115
|
+
- app/packs/src/decidim/navigation_maps/navigation_maps.js
|
116
|
+
- app/packs/stylesheets/decidim/navigation_maps/_variables.scss
|
117
|
+
- app/packs/stylesheets/decidim/navigation_maps/admin/navigation_maps.scss
|
118
|
+
- app/packs/stylesheets/decidim/navigation_maps/navigation_maps.scss
|
119
|
+
- app/queries/decidim/navigation_maps/content_block_blueprints.rb
|
118
120
|
- app/queries/decidim/navigation_maps/organization_blueprints.rb
|
119
121
|
- app/uploaders/decidim/navigation_maps/blueprint_uploader.rb
|
122
|
+
- app/uploaders/decidim/navigation_maps/cw/blueprint_uploader.rb
|
120
123
|
- app/views/decidim/navigation_maps/admin/areas/_form.html.erb
|
121
124
|
- app/views/decidim/navigation_maps/admin/areas/new.html.erb
|
122
125
|
- app/views/decidim/navigation_maps/admin/areas/show.html.erb
|
126
|
+
- config/assets.rb
|
123
127
|
- config/i18n-tasks.yml
|
124
128
|
- config/locales/ca.yml
|
125
129
|
- config/locales/cs.yml
|
@@ -131,10 +135,12 @@ files:
|
|
131
135
|
- db/migrate/20191126045831_add_link_type_to_decidim_navigation_maps_blueprint_areas.rb
|
132
136
|
- db/migrate/20191126154019_add_area_id_to_decidim_navigation_maps_blueprint_areas.rb
|
133
137
|
- db/migrate/20191127093746_add_color_to_navigation_maps_blueprint_areas.rb
|
138
|
+
- db/migrate/20201105130724_add_reference_to_content_block_to_blueprints_table.rb
|
134
139
|
- db/migrate/20210112135817_add_height_to_navigation_maps_blueprints.rb
|
135
140
|
- db/seeds.rb
|
136
141
|
- db/seeds/antarctica.png
|
137
142
|
- db/seeds/penguins.jpg
|
143
|
+
- db/seeds/pla-cerda.jpg
|
138
144
|
- lib/decidim/navigation_maps.rb
|
139
145
|
- lib/decidim/navigation_maps/admin.rb
|
140
146
|
- lib/decidim/navigation_maps/admin_engine.rb
|
@@ -142,6 +148,9 @@ files:
|
|
142
148
|
- lib/decidim/navigation_maps/navigation_map_cell_helpers.rb
|
143
149
|
- lib/decidim/navigation_maps/test/factories.rb
|
144
150
|
- lib/decidim/navigation_maps/version.rb
|
151
|
+
- lib/tasks/custom_seeds.rake
|
152
|
+
- lib/tasks/decidim_navigation_maps_webpacker_tasks.rake
|
153
|
+
- lib/tasks/navigation_maps_active_storage_migration_tasks.rake
|
145
154
|
- vendor/assets/images/draw/layers-2x.png
|
146
155
|
- vendor/assets/images/draw/layers.png
|
147
156
|
- vendor/assets/images/draw/marker-icon-2x.png
|
@@ -173,14 +182,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
173
182
|
requirements:
|
174
183
|
- - ">="
|
175
184
|
- !ruby/object:Gem::Version
|
176
|
-
version: '2.
|
185
|
+
version: '2.7'
|
177
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
187
|
requirements:
|
179
188
|
- - ">="
|
180
189
|
- !ruby/object:Gem::Version
|
181
190
|
version: '0'
|
182
191
|
requirements: []
|
183
|
-
rubygems_version: 3.1.
|
192
|
+
rubygems_version: 3.1.6
|
184
193
|
signing_key:
|
185
194
|
specification_version: 4
|
186
195
|
summary: A decidim navigation_maps module
|
@@ -1 +0,0 @@
|
|
1
|
-
//= link decidim/navigation_maps/navigation_maps.js
|
@@ -1 +0,0 @@
|
|
1
|
-
<svg height="35px" width="35px" fill="#000000" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 1 511 511" style="enable-background:new 0 1 511 511;" xml:space="preserve"><g><path d="M205.6,146.9c-22.2,0-40.2,18-40.2,40.2c0,22.2,18,40.2,40.2,40.2c22.2,0,40.2-18,40.2-40.2 C245.9,165,227.8,146.9,205.6,146.9z M205.6,206.6c-10.7,0-19.3-8.7-19.3-19.3c0-10.7,8.7-19.3,19.3-19.3 c10.6,0,19.3,8.7,19.3,19.3C225,197.9,216.3,206.6,205.6,206.6z"/><path d="M406.6,178V70.3c0-5.8-4.2-10.1-10-10.1H10.6C4.8,60.3,0,64.6,0,70.3v304.9c0,5.8,4.8,10.9,10.6,10.9h242 c24.5,39.8,68.7,66.7,119.1,66.7c77,0,139.4-62.8,139.4-139.7C511,248.4,467.4,193.7,406.6,178z M21,365.2v-284h364.7v92.9 c-4.2-0.5-9.1-0.7-14-0.7c-0.3,0-0.6,0-0.6,0v-66.4c0-5.8-5-10-10.9-10H47.2c-5.8,0-10.5,4.2-10.5,10v231.8 c0,5.8,4.7,10.8,10.5,10.8h189.7c1.5,5.2,3.1,10.5,5.2,15.7H21z M232.9,328.6H57.6v-40.4l61.5-54.3c2.8-2.5,7-2.6,10-0.2l63.3,50.6 c10.7,8.6,26,8.4,36.5-0.5l7.6-6.5c-3,11.4-4.6,23.6-4.6,35.8C232,318.3,232.3,323.3,232.9,328.6z M215.7,267.8 c-2.8,2.4-7,2.4-10,0.1l-63.4-50.6c-10.9-8.7-26.5-8.4-37,0.9l-47.7,42V117.9H350v57.2c-37.7,6-70.1,26.8-91.4,56.4L215.7,267.8z M371.6,431.7C306.2,431.7,253,378.4,253,313s53.2-118.6,118.6-118.6c65.4,0,118.6,53.2,118.6,118.6 C490.4,378.4,437.1,431.7,371.6,431.7z"/><path d="M435.4,234c-34.8-34.6-91-34.6-125.6,0c-13.7,13.7-22.4,31.2-25,50.4c-2.5,18.5,0.9,37.8,9.9,54.4c0,0,0,0.1,0.1,0.1 c4.4,8,9.4,14.7,15.2,20.4l55.1,55.1c2,2,4.6,3,7.4,3s5.5-1.2,7.4-3l55.1-55.1c16.9-16.9,26.2-39.2,26.2-62.8 C461.4,273,452.2,250.7,435.4,234z M420.1,344.6l-47.7,47.7l-47.7-47.7c-4.4-4.4-8.2-9.5-11.6-15.7c-14.2-26.6-9.6-58.8,11.6-80.1 c26.4-26.4,69.4-26.4,95.8,0c12.8,12.8,19.8,29.8,19.7,47.7C440.2,314.6,433,331.7,420.1,344.6z"/><path d="M372.3,241.7c-29,0-52.7,23.7-52.7,52.7c0,29,23.7,52.7,52.7,52.7s52.7-23.7,52.7-52.7 C425.1,265.4,401.5,241.7,372.3,241.7z M372.3,326c-17.5,0-31.8-14.2-31.8-31.8c0-17.5,14.3-31.8,31.8-31.8 c17.5,0,31.8,14.3,31.8,31.8C404.1,311.8,389.9,326,372.3,326z"/></g></svg>
|
@@ -1,88 +0,0 @@
|
|
1
|
-
// Creates a map
|
2
|
-
//= require decidim/navigation_maps/map_view
|
3
|
-
|
4
|
-
function NavigationMapEditor(map_object, table_object) {
|
5
|
-
var self = this;
|
6
|
-
// Call constructor of superclass to initialize superclass-derived members.
|
7
|
-
NavigationMapView.call(self, map_object, function() {
|
8
|
-
self.createControls();
|
9
|
-
if(self.blueprint) {
|
10
|
-
self.createAreas();
|
11
|
-
}
|
12
|
-
});
|
13
|
-
self.table_object = table_object;
|
14
|
-
this.createAreaCallback = function () {};
|
15
|
-
this.editAreaCallback = function () {};
|
16
|
-
this.removeAreaCallback = function () {};
|
17
|
-
}
|
18
|
-
|
19
|
-
// NavigationMapEditor derives from NavigationMapView
|
20
|
-
NavigationMapEditor.prototype = Object.create(NavigationMapView.prototype);
|
21
|
-
NavigationMapEditor.prototype.constructor = NavigationMapEditor;
|
22
|
-
|
23
|
-
NavigationMapEditor.prototype.createControls = function() {
|
24
|
-
var self = this;
|
25
|
-
self.map.pm.addControls({
|
26
|
-
position: 'topleft',
|
27
|
-
drawCircle: false,
|
28
|
-
drawMarker: false,
|
29
|
-
drawCircleMarker: false,
|
30
|
-
drawPolyline: false,
|
31
|
-
cutPolygon: false
|
32
|
-
});
|
33
|
-
|
34
|
-
self.map.on('pm:create', function(e) {
|
35
|
-
var geojson = e.layer.toGeoJSON();
|
36
|
-
self.blueprint[e.layer._leaflet_id] = geojson;
|
37
|
-
self.attachEditorEvents(e.layer);
|
38
|
-
self.createAreaCallback(e.layer._leaflet_id, e.layer, self);
|
39
|
-
});
|
40
|
-
|
41
|
-
self.map.on('pm:remove', function(e) {
|
42
|
-
delete self.blueprint[e.layer._leaflet_id];
|
43
|
-
self.removeAreaCallback(e.layer._leaflet_id, e.layer, self);
|
44
|
-
});
|
45
|
-
};
|
46
|
-
|
47
|
-
NavigationMapEditor.prototype.editing = function() {
|
48
|
-
var pm = this.map.pm;
|
49
|
-
return pm.globalRemovalEnabled() || pm.globalDragModeEnabled() || pm.globalEditEnabled();
|
50
|
-
};
|
51
|
-
|
52
|
-
// register callback to handle area edits,removals and creations
|
53
|
-
NavigationMapView.prototype.onCreateArea = function(callback) {
|
54
|
-
this.createAreaCallback = callback;
|
55
|
-
};
|
56
|
-
NavigationMapView.prototype.onEditArea = function(callback) {
|
57
|
-
this.editAreaCallback = callback;
|
58
|
-
};
|
59
|
-
NavigationMapView.prototype.onRemoveArea = function(callback) {
|
60
|
-
this.removeCreateCallback = callback;
|
61
|
-
};
|
62
|
-
|
63
|
-
NavigationMapEditor.prototype.attachEditorEvents = function (layer) {
|
64
|
-
var self = this;
|
65
|
-
|
66
|
-
layer.on('mouseover', function(e) {
|
67
|
-
e.target.getElement().classList.add('selected')
|
68
|
-
});
|
69
|
-
|
70
|
-
layer.on('mouseout', function(e) {
|
71
|
-
e.target.getElement().classList.remove('selected')
|
72
|
-
});
|
73
|
-
|
74
|
-
layer.on('pm:edit', function(e) {
|
75
|
-
self.blueprint[e.target._leaflet_id] = e.target.toGeoJSON();
|
76
|
-
self.editAreaCallback(e.target._leaflet_id, e.target, self);
|
77
|
-
});
|
78
|
-
|
79
|
-
layer.on('click', function(e) {
|
80
|
-
if(!self.editing()) {
|
81
|
-
self.clickAreaCallback(e.target._leaflet_id, e.target, self);
|
82
|
-
}
|
83
|
-
});
|
84
|
-
};
|
85
|
-
|
86
|
-
NavigationMapEditor.prototype.getBlueprint = function () {
|
87
|
-
return this.blueprint;
|
88
|
-
};
|
@@ -1,143 +0,0 @@
|
|
1
|
-
// Place all the behaviors and hooks related to the matching controller here.
|
2
|
-
// All this logic will automatically be available in application.js.
|
3
|
-
//= require jquery.form
|
4
|
-
//= require decidim/navigation_maps/admin/map_editor
|
5
|
-
//= require_self
|
6
|
-
|
7
|
-
$(function() {
|
8
|
-
|
9
|
-
var $maps = $('.navigation_maps.admin .map');
|
10
|
-
var $progress = $('.navigation_maps.admin .progress');
|
11
|
-
var $bar = $('.navigation_maps.admin .progress-meter');
|
12
|
-
var $loading = $('.navigation_maps.admin .loading');
|
13
|
-
var $callout = $('.navigation_maps.admin .callout');
|
14
|
-
var $modal = $('#mapEditModal');
|
15
|
-
var $form = $('form');
|
16
|
-
var $tabs = $('#navigation_maps-tabs');
|
17
|
-
var $accordion = $('.navigation_maps.admin .accordion');
|
18
|
-
var editors = {};
|
19
|
-
var new_areas = {};
|
20
|
-
|
21
|
-
$maps.each(function() {
|
22
|
-
var id = $(this).data('id');
|
23
|
-
var table = document.getElementById("navigation_maps-table-" + id);
|
24
|
-
editors[id] = new NavigationMapEditor(this, table);
|
25
|
-
editors[id].onCreateArea(function(area_id) {
|
26
|
-
new_areas[area_id] = true;
|
27
|
-
});
|
28
|
-
|
29
|
-
editors[id].onClickArea(function(area_id, area) {
|
30
|
-
$modal.find('.modal-content').html('');
|
31
|
-
$modal.addClass('loading').foundation('open');
|
32
|
-
$callout.hide();
|
33
|
-
$callout.removeClass('alert success');
|
34
|
-
// "new" form insted of editing
|
35
|
-
var rel = new_areas[area_id] ? 'new' : area_id;
|
36
|
-
$modal.find('.modal-content').load(`/admin/navigation_maps/blueprints/${id}/areas/${rel}`, function() {
|
37
|
-
var $input1 = $modal.find('input[name="blueprint_area[area_id]"]');
|
38
|
-
var $input2 = $modal.find('input[name="blueprint_area[area_type]"]');
|
39
|
-
var $input3 = $modal.find('input[name="blueprint_area[area]"]');
|
40
|
-
var a = area.toGeoJSON();
|
41
|
-
$modal.removeClass('loading');
|
42
|
-
if($input1.length) $input1.val(area_id);
|
43
|
-
if($input2.length) $input2.val(a.type);
|
44
|
-
if($input3.length) $input3.val(JSON.stringify(a));
|
45
|
-
$modal.find('ul[data-tabs=true]').each(function() {
|
46
|
-
new Foundation.Tabs($(this));
|
47
|
-
});
|
48
|
-
});
|
49
|
-
});
|
50
|
-
});
|
51
|
-
|
52
|
-
// Rails AJAX events
|
53
|
-
document.body.addEventListener('ajax:error', function(responseText) {
|
54
|
-
$callout.contents('p').html(responseText.detail[0].message + ": <strong>" + responseText.detail[0].error + "</strong>");
|
55
|
-
$callout.addClass('alert');
|
56
|
-
});
|
57
|
-
|
58
|
-
document.body.addEventListener('ajax:success', function(responseText) {
|
59
|
-
if(new_areas[responseText.detail[0].area]) {
|
60
|
-
delete new_areas[responseText.detail[0].area]
|
61
|
-
}
|
62
|
-
var blueprint_id = responseText.detail[0].blueprint_id;
|
63
|
-
var area_id = responseText.detail[0].area_id;
|
64
|
-
var area = responseText.detail[0].area;
|
65
|
-
editors[blueprint_id].setLayerProperties(editors[blueprint_id].map._layers[area_id], area);
|
66
|
-
editors[blueprint_id].blueprint[area_id] = area;
|
67
|
-
$callout.contents('p').html(responseText.detail[0].message);
|
68
|
-
$callout.addClass('success');
|
69
|
-
});
|
70
|
-
|
71
|
-
document.body.addEventListener('ajax:complete', function() {
|
72
|
-
$callout.show();
|
73
|
-
$modal.foundation('close');
|
74
|
-
})
|
75
|
-
|
76
|
-
$tabs.on('change.zf.tabs', function(e, $tab, $content) {
|
77
|
-
var id = $content.find('.map').data('id');
|
78
|
-
if(id) {
|
79
|
-
editors[id].reload();
|
80
|
-
}
|
81
|
-
});
|
82
|
-
|
83
|
-
$accordion.on('down.zf.accordion', function(e, $accordion) {
|
84
|
-
var id = $accordion.find('.map').data('id');
|
85
|
-
if(id) {
|
86
|
-
editors[id].reload();
|
87
|
-
}
|
88
|
-
});
|
89
|
-
|
90
|
-
// If a new item si going to be created o the image is changed a reload is needed
|
91
|
-
var needsReload = function() {
|
92
|
-
var reload = false;
|
93
|
-
if($form.find('#map-new input:checked').length) return true;
|
94
|
-
if($form.find('.delete-tab input[type=checkbox]:checked').length) return true;
|
95
|
-
|
96
|
-
$form.find('input[type=file],input[tabs_id=blueprints___title]').each(function() {
|
97
|
-
if($(this).val()) {
|
98
|
-
reload = true;
|
99
|
-
return false;
|
100
|
-
}
|
101
|
-
});
|
102
|
-
return reload;
|
103
|
-
};
|
104
|
-
|
105
|
-
$form.ajaxForm({
|
106
|
-
url: $form.find('[name=action]').val(),
|
107
|
-
beforeSerialize: function() {
|
108
|
-
Object.keys(editors).forEach(function(key) {
|
109
|
-
var editor = editors[key];
|
110
|
-
$(`#blueprints_${editor.id}_blueprint`).val(JSON.stringify(editor.getBlueprint()));
|
111
|
-
});
|
112
|
-
},
|
113
|
-
beforeSend: function() {
|
114
|
-
var percentVal = '0%';
|
115
|
-
$bar.width(percentVal).html(percentVal);
|
116
|
-
$progress.show();
|
117
|
-
$callout.hide();
|
118
|
-
$callout.removeClass('alert success');
|
119
|
-
$loading.show();
|
120
|
-
},
|
121
|
-
uploadProgress: function(event, position, total, percentComplete) {
|
122
|
-
var percentVal = percentComplete + '%';
|
123
|
-
$bar.width(percentVal).html(percentVal);
|
124
|
-
},
|
125
|
-
success: function(responseText) {
|
126
|
-
$callout.show();
|
127
|
-
$progress.hide();
|
128
|
-
$callout.contents('p').html(responseText);
|
129
|
-
$callout.addClass('success');
|
130
|
-
$loading.hide();
|
131
|
-
if(needsReload()) {
|
132
|
-
$loading.show();
|
133
|
-
location.reload();
|
134
|
-
}
|
135
|
-
},
|
136
|
-
error: function(xhr) {
|
137
|
-
$loading.hide();
|
138
|
-
$callout.show();
|
139
|
-
$callout.contents('p').html(xhr.responseText);
|
140
|
-
$callout.addClass('alert');
|
141
|
-
}
|
142
|
-
});
|
143
|
-
});
|