decidim-decidim_awesome 0.6.7 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +181 -0
  3. data/README.md +88 -36
  4. data/Rakefile +11 -12
  5. data/app/cells/decidim/decidim_awesome/content_blocks/map/error.erb +11 -0
  6. data/app/cells/decidim/decidim_awesome/content_blocks/map/show.erb +14 -0
  7. data/app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb +65 -0
  8. data/app/cells/decidim/decidim_awesome/content_blocks/map_form/show.erb +65 -0
  9. data/app/cells/decidim/decidim_awesome/content_blocks/map_form_cell.rb +19 -0
  10. data/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb +32 -0
  11. data/app/commands/decidim/decidim_awesome/admin/create_custom_redirect.rb +51 -0
  12. data/app/commands/decidim/decidim_awesome/admin/create_proposal_custom_field.rb +45 -0
  13. data/app/commands/decidim/decidim_awesome/admin/create_scoped_admin.rb +38 -0
  14. data/app/commands/decidim/decidim_awesome/admin/destroy_constraint.rb +4 -0
  15. data/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb +47 -0
  16. data/app/commands/decidim/decidim_awesome/admin/destroy_proposal_custom_field.rb +40 -0
  17. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_admin.rb +40 -0
  18. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb +1 -1
  19. data/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb +58 -0
  20. data/app/commands/decidim/decidim_awesome/admin/update_config.rb +1 -0
  21. data/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb +49 -0
  22. data/app/commands/decidim/decidim_awesome/create_editor_image.rb +12 -5
  23. data/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb +58 -0
  24. data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +15 -22
  25. data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +39 -18
  26. data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +4 -0
  27. data/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb +91 -0
  28. data/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +7 -10
  29. data/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb +38 -0
  30. data/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb +38 -0
  31. data/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb +38 -0
  32. data/app/controllers/decidim/decidim_awesome/blank_component_controller.rb +19 -0
  33. data/app/controllers/decidim/decidim_awesome/editor_images_controller.rb +2 -3
  34. data/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb +1 -1
  35. data/app/controllers/decidim/decidim_awesome/map_component/map_controller.rb +2 -9
  36. data/app/forms/decidim/decidim_awesome/admin/config_form.rb +41 -0
  37. data/app/forms/decidim/decidim_awesome/admin/constraint_form.rb +3 -1
  38. data/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb +45 -0
  39. data/app/forms/decidim/decidim_awesome/editor_image_form.rb +3 -2
  40. data/app/forms/decidim/decidim_awesome/proposals/proposal_wizard_create_step_form_override.rb +38 -0
  41. data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +32 -15
  42. data/app/helpers/decidim/decidim_awesome/admin/system_checker_helpers.rb +36 -0
  43. data/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb +48 -0
  44. data/app/helpers/decidim/decidim_awesome/map_helper.rb +76 -63
  45. data/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb +78 -0
  46. data/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb +106 -0
  47. data/app/middleware/decidim/decidim_awesome/current_config.rb +182 -0
  48. data/app/models/decidim/decidim_awesome/awesome_config.rb +15 -0
  49. data/app/models/decidim/decidim_awesome/editor_image.rb +4 -9
  50. data/app/models/decidim/decidim_awesome/user_override.rb +25 -0
  51. data/app/packs/entrypoints/decidim_admin_decidim_awesome.js +5 -0
  52. data/app/packs/entrypoints/decidim_admin_decidim_awesome.scss +1 -0
  53. data/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js +2 -0
  54. data/app/packs/entrypoints/decidim_decidim_awesome.js +9 -0
  55. data/app/packs/entrypoints/decidim_decidim_awesome.scss +1 -0
  56. data/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js +1 -0
  57. data/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js +1 -0
  58. data/app/packs/entrypoints/decidim_decidim_awesome_iframe.scss +1 -0
  59. data/app/packs/entrypoints/decidim_decidim_awesome_map.js +5 -0
  60. data/app/packs/entrypoints/decidim_decidim_awesome_map.scss +1 -0
  61. data/app/{assets → packs}/images/decidim/decidim_awesome/platoniq-logo.png +0 -0
  62. data/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js +82 -0
  63. data/app/packs/src/decidim/decidim_awesome/admin/check_redirections.js +48 -0
  64. data/app/packs/src/decidim/decidim_awesome/admin/codemirror.js +14 -0
  65. data/app/packs/src/decidim/decidim_awesome/admin/constraints.js +55 -0
  66. data/app/packs/src/decidim/decidim_awesome/admin/custom_fields_builder.js +77 -0
  67. data/app/{assets/javascripts/decidim/decidim_awesome/admin/form_exit_warn.js.es6 → packs/src/decidim/decidim_awesome/admin/form_exit_warn.js} +0 -2
  68. data/app/packs/src/decidim/decidim_awesome/admin/user_picker.js +24 -0
  69. data/app/packs/src/decidim/decidim_awesome/awesome_admin.js +23 -0
  70. data/app/packs/src/decidim/decidim_awesome/awesome_application.js +17 -0
  71. data/app/{assets/javascripts/decidim/decidim_awesome/awesome_map/api_fetcher.js.es6 → packs/src/decidim/decidim_awesome/awesome_map/api/api_fetcher.js} +1 -15
  72. data/app/packs/src/decidim/decidim_awesome/awesome_map/api/fetcher.js +131 -0
  73. data/app/packs/src/decidim/decidim_awesome/awesome_map/api/meetings_fetcher.js +59 -0
  74. data/app/packs/src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher.js +52 -0
  75. data/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js +130 -0
  76. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js +112 -0
  77. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js +31 -0
  78. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js +88 -0
  79. data/app/packs/src/decidim/decidim_awesome/awesome_map/controls_ui.js +221 -0
  80. data/app/packs/src/decidim/decidim_awesome/awesome_map/load_map.js +51 -0
  81. data/app/packs/src/decidim/decidim_awesome/editors/editor.js +190 -0
  82. data/app/packs/src/decidim/decidim_awesome/editors/tabs_focus.js +22 -0
  83. data/app/{assets/javascripts/decidim/decidim_awesome/forms/autosave.js.es6 → packs/src/decidim/decidim_awesome/forms/autosave.js} +20 -17
  84. data/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js +207 -0
  85. data/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js +107 -0
  86. data/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js +22 -0
  87. data/app/packs/src/decidim/decidim_awesome/proposals/images.js +25 -0
  88. data/{vendor/assets/javascripts → app/packs/src/vendor}/image-resize.min.js +0 -0
  89. data/{vendor/assets/javascripts → app/packs/src/vendor}/image-upload.min.js +0 -0
  90. data/{vendor/assets/javascripts → app/packs/src/vendor}/jquery.truncate.js +0 -0
  91. data/app/packs/src/vendor/leaflet.featuregroup.subgroup.js +184 -0
  92. data/app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss +16 -0
  93. data/app/packs/stylesheets/decidim/decidim_awesome/admin/check_redirections.scss +28 -0
  94. data/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +29 -0
  95. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/admin/constraints.scss +21 -9
  96. data/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +93 -0
  97. data/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +41 -0
  98. data/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss +71 -0
  99. data/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss +19 -0
  100. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss +3 -3
  101. data/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +176 -0
  102. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/editors/markdown_editor.scss +6 -4
  103. data/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +58 -0
  104. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/forms/autosave.scss +2 -2
  105. data/app/packs/stylesheets/vendor/select2-foundation-theme.scss +348 -0
  106. data/app/permissions/decidim/decidim_awesome/admin/permissions.rb +2 -0
  107. data/app/presenters/decidim/decidim_awesome/menu_item_presenter_override.rb +25 -0
  108. data/app/presenters/decidim/decidim_awesome/menu_presenter_override.rb +23 -0
  109. data/app/uploaders/decidim/cw/decidim_awesome/image_uploader.rb +26 -0
  110. data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +4 -21
  111. data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +28 -22
  112. data/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb +7 -0
  113. data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +3 -3
  114. data/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +21 -0
  115. data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +1 -3
  116. data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +25 -0
  117. data/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb +0 -2
  118. data/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +11 -13
  119. data/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb +1 -1
  120. data/app/views/decidim/decidim_awesome/admin/config/show.html.erb +3 -3
  121. data/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb +1 -1
  122. data/app/views/decidim/decidim_awesome/admin/custom_redirects/_form.html.erb +6 -0
  123. data/app/views/decidim/decidim_awesome/admin/custom_redirects/edit.html.erb +13 -0
  124. data/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb +37 -0
  125. data/app/views/decidim/decidim_awesome/admin/custom_redirects/new.html.erb +13 -0
  126. data/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb +1 -1
  127. data/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb +1 -1
  128. data/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb +6 -0
  129. data/app/views/decidim/decidim_awesome/custom_fields/_form_render.html.erb +6 -0
  130. data/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb +1 -1
  131. data/app/views/decidim/decidim_awesome/map_component/map/_api_ready.html.erb +3 -0
  132. data/app/views/decidim/decidim_awesome/map_component/map/_map_template.html.erb +68 -0
  133. data/app/views/decidim/decidim_awesome/map_component/map/{error.erb → error.html.erb} +2 -0
  134. data/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +3 -99
  135. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +101 -0
  136. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +83 -0
  137. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +1 -0
  138. data/app/views/layouts/decidim/admin/decidim_awesome.html.erb +34 -16
  139. data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +2 -0
  140. data/app/views/layouts/decidim/decidim_awesome/_custom_styles.html.erb +1 -1
  141. data/app/views/v0.25/decidim/proposals/collaborative_drafts/_show.html.erb +128 -0
  142. data/app/views/{v0.23 → v0.25}/layouts/decidim/_head.html.erb +12 -10
  143. data/app/views/v0.25/layouts/decidim/admin/_header.html.erb +11 -0
  144. data/app/views/v0.26/decidim/proposals/collaborative_drafts/_show.html.erb +128 -0
  145. data/app/views/{v0.22 → v0.26}/layouts/decidim/_head.html.erb +18 -10
  146. data/app/views/v0.26/layouts/decidim/admin/_header.html.erb +11 -0
  147. data/config/assets.rb +46 -0
  148. data/config/i18n-tasks.yml +6 -0
  149. data/config/locales/ca.yml +135 -14
  150. data/config/locales/cs.yml +124 -3
  151. data/config/locales/en.yml +156 -11
  152. data/config/locales/es.yml +123 -2
  153. data/config/locales/eu.yml +1 -174
  154. data/config/locales/fr.yml +136 -15
  155. data/config/locales/it.yml +346 -0
  156. data/config/locales/ja.yml +345 -0
  157. data/config/locales/nl.yml +23 -5
  158. data/config/locales/pt-BR.yml +346 -0
  159. data/config/locales/pt-PT.yml +7 -0
  160. data/config/locales/pt.yml +7 -0
  161. data/config/locales/sv.yml +75 -131
  162. data/db/migrate/20210628150825_change_awesome_config_var_type.rb +12 -0
  163. data/lib/decidim/decidim_awesome/admin_engine.rb +19 -12
  164. data/lib/decidim/decidim_awesome/awesome.rb +214 -0
  165. data/lib/decidim/decidim_awesome/awesome_helpers.rb +17 -17
  166. data/lib/decidim/decidim_awesome/checksums.yml +23 -16
  167. data/lib/decidim/decidim_awesome/config.rb +55 -9
  168. data/lib/decidim/decidim_awesome/content_parsers/editor_images_parser.rb +39 -0
  169. data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +27 -21
  170. data/lib/decidim/decidim_awesome/custom_fields.rb +94 -0
  171. data/lib/decidim/decidim_awesome/engine.rb +42 -14
  172. data/lib/decidim/decidim_awesome/iframe_component/admin_engine.rb +23 -0
  173. data/lib/decidim/decidim_awesome/iframe_component/component.rb +6 -6
  174. data/lib/decidim/decidim_awesome/map_component/admin_engine.rb +23 -0
  175. data/lib/decidim/decidim_awesome/map_component/component.rb +6 -5
  176. data/lib/decidim/decidim_awesome/map_component/engine.rb +34 -0
  177. data/lib/decidim/decidim_awesome/menu_hacker.rb +2 -1
  178. data/lib/decidim/decidim_awesome/system_checker.rb +1 -1
  179. data/lib/decidim/decidim_awesome/test/factories.rb +2 -2
  180. data/lib/decidim/decidim_awesome/test/initializer.rb +25 -0
  181. data/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb +30 -2
  182. data/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb +7 -2
  183. data/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb +116 -0
  184. data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +18 -0
  185. data/lib/decidim/decidim_awesome/test/shared_examples/controller_examples.rb +13 -0
  186. data/lib/decidim/decidim_awesome/test/shared_examples/current_config_examples.rb +143 -0
  187. data/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb +47 -0
  188. data/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +4 -0
  189. data/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb +0 -17
  190. data/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +420 -0
  191. data/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +202 -0
  192. data/lib/decidim/decidim_awesome/version.rb +2 -2
  193. data/lib/decidim/decidim_awesome.rb +4 -119
  194. data/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake +37 -0
  195. data/lib/tasks/decidim_awesome_webpacker_tasks.rake +64 -0
  196. data/package.json +211 -0
  197. metadata +149 -107
  198. data/app/assets/config/decidim_admin_decidim_awesome_manifest.css +0 -3
  199. data/app/assets/config/decidim_admin_decidim_awesome_manifest.js +0 -2
  200. data/app/assets/config/decidim_decidim_awesome_manifest.css +0 -5
  201. data/app/assets/config/decidim_decidim_awesome_manifest.js +0 -3
  202. data/app/assets/images/decidim/decidim_awesome/loading.gif +0 -0
  203. data/app/assets/javascripts/decidim/decidim_awesome/admin/codemirror.js.es6 +0 -15
  204. data/app/assets/javascripts/decidim/decidim_awesome/admin/constraints.js.es6 +0 -54
  205. data/app/assets/javascripts/decidim/decidim_awesome/admin.js +0 -3
  206. data/app/assets/javascripts/decidim/decidim_awesome/application.js +0 -4
  207. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/categories.js.es6 +0 -25
  208. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/hashtags.js.es6 +0 -48
  209. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/layers.js.es6 +0 -106
  210. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_map.js.es6 +0 -218
  211. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_proposals.js.es6 +0 -83
  212. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/map.js.es6 +0 -211
  213. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/markers.js.es6 +0 -56
  214. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/meetings.js.es6 +0 -132
  215. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/proposals.js.es6 +0 -107
  216. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/utilities.js.es6 +0 -48
  217. data/app/assets/javascripts/decidim/decidim_awesome/editors/markdown_view.js.es6 +0 -12
  218. data/app/assets/javascripts/decidim/decidim_awesome/editors/quill_editor.js.es6 +0 -160
  219. data/app/assets/javascripts/decidim/decidim_awesome/proposals/images.js.es6 +0 -25
  220. data/app/assets/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +0 -16
  221. data/app/assets/stylesheets/decidim/decidim_awesome/admin.scss +0 -52
  222. data/app/assets/stylesheets/decidim/decidim_awesome/application.scss +0 -8
  223. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/leaflet.scss.erb +0 -18
  224. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +0 -161
  225. data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_view.scss +0 -27
  226. data/app/assets/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +0 -7
  227. data/app/awesome_overrides/presenters/decidim/menu_presenter_override.rb +0 -39
  228. data/app/awesome_overrides/presenters/decidim/proposals/proposal_presenter_override.rb +0 -64
  229. data/app/controllers/decidim/decidim_awesome/iframe_component/application_controller.rb +0 -15
  230. data/app/controllers/decidim/decidim_awesome/map_component/application_controller.rb +0 -15
  231. data/app/views/v0.22/layouts/decidim/admin/_header.html.erb +0 -11
  232. data/app/views/v0.23/layouts/decidim/admin/_header.html.erb +0 -12
  233. data/lib/decidim/decidim_awesome/content_renderers/markdown_renderer.rb +0 -18
  234. data/lib/decidim/decidim_awesome/content_renderers.rb +0 -9
  235. data/lib/decidim/decidim_awesome/test/themes/css.lvh.me.css +0 -3
  236. data/lib/decidim/decidim_awesome/test/themes/erb.lvh.me.scss.erb +0 -2
  237. data/lib/decidim/decidim_awesome/test/themes/scss.lvh.me.scss +0 -1
  238. data/lib/decidim/decidim_awesome/test/themes/test-theme/body.scss +0 -4
  239. data/vendor/assets/images/layers-2x.png +0 -0
  240. data/vendor/assets/images/layers.png +0 -0
  241. data/vendor/assets/images/marker-icon.png +0 -0
  242. data/vendor/assets/javascripts/codemirror-4.inline-attachment.js +0 -89
  243. data/vendor/assets/javascripts/codemirror.js +0 -9801
  244. data/vendor/assets/javascripts/form-storage.js +0 -824
  245. data/vendor/assets/javascripts/highlight.min.js +0 -44
  246. data/vendor/assets/javascripts/inline-attachment.js +0 -399
  247. data/vendor/assets/javascripts/inscrybmde.min.js +0 -7
  248. data/vendor/assets/javascripts/jquery.inline-attachment.js +0 -66
  249. data/vendor/assets/javascripts/jsrender.min.js +0 -4
  250. data/vendor/assets/javascripts/keymap/sublime.js +0 -720
  251. data/vendor/assets/javascripts/leaflet.featuregroup.subgroup.js +0 -6
  252. data/vendor/assets/javascripts/mode/css/css.js +0 -864
  253. data/vendor/assets/stylesheets/codemirror.css +0 -350
  254. data/vendor/assets/stylesheets/default.min.css +0 -1
  255. data/vendor/assets/stylesheets/foundation.min.css +0 -1
  256. data/vendor/assets/stylesheets/github.min.css +0 -2
  257. data/vendor/assets/stylesheets/inscrybmde.min.scss +0 -180
@@ -1,106 +0,0 @@
1
- // = require leaflet.featuregroup.subgroup
2
- // = require decidim/decidim_awesome/awesome_map/utilities
3
- // = require decidim/decidim_awesome/awesome_map/categories
4
- // = require decidim/decidim_awesome/awesome_map/hashtags
5
-
6
- ((exports) => {
7
- const { collapsedMenu, options, categories } = exports.AwesomeMap;
8
- const layers = {};
9
- const cluster = L.markerClusterGroup();
10
-
11
- const control = L.control.layers(null, null, {
12
- position: 'topleft',
13
- sortLayers: false,
14
- collapsed: collapsedMenu,
15
- // hideSingleBase: true
16
- });
17
-
18
- const addProposalsControls = (map, component) => {
19
- // add control layer for proposals
20
- layers.proposals = {
21
- label: `<span class="awesome_map-component" id="awesome_map-component_${component.id}" title="0">${component.name || window.DecidimAwesome.texts.proposals}</span>`,
22
- group: L.featureGroup.subGroup(cluster)
23
- };
24
- control.addOverlay(layers.proposals.group, layers.proposals.label);
25
- layers.proposals.group.addTo(map);
26
-
27
- // add control layer for amendments if any
28
- if(options.menu.amendments && component.amendments) {
29
- layers.amendments = {
30
- label: `<span class="awesome_map-component" id="awesome_map-amendments_${component.id}" title="0">${window.DecidimAwesome.texts.amendments}</span>`,
31
- group: L.featureGroup.subGroup(cluster)
32
- }
33
- control.addOverlay(layers.amendments.group, layers.amendments.label);
34
- layers.amendments.group.addTo(map);
35
- }
36
- };
37
-
38
- const addMeetingsControls = (map, component) => {
39
- // add control layer for meetings
40
- layers.meetings = {
41
- label: `<span class="awesome_map-component" id="awesome_map-component_${component.id}" title="0">${component.name || window.DecidimAwesome.texts.meetings}</span>`,
42
- group: L.featureGroup.subGroup(cluster)
43
- };
44
- control.addOverlay(layers.meetings.group, layers.meetings.label);
45
- layers.meetings.group.addTo(map);
46
- };
47
-
48
- const addSearchControls = () => {
49
- $(control.getContainer()).contents("form").after(`<div id="awesome_map-categories-control" class="active"><b class="awesome_map-title-control">${window.DecidimAwesome.texts.categories}</b><div class="categories-container"></div></div>
50
- <div id="awesome_map-hashtags-control"><b class="awesome_map-title-control">${window.DecidimAwesome.texts.hashtags}</b><div class="hashtags-container"></div><a href="#" class="awesome_map-toggle_all_tags">${window.DecidimAwesome.texts.select_deselect_all}</a></div>`);
51
- };
52
-
53
- const addCategoriesControls = (map) => {
54
- if(categories && categories.length) {
55
- categories.forEach((category) => {
56
- // add control layer for this category
57
- const label = `<i class="awesome_map-category-${category.id}"></i> ${category.name}`;
58
- layers[category.id] = {
59
- label: label,
60
- group: L.featureGroup.subGroup(cluster)
61
- };
62
- layers[category.id].group.addTo(map);
63
- // In the next iteration to be sure layers are rendered
64
- setTimeout(() => {
65
- $('#awesome_map-categories-control .categories-container').append(`<label data-layer="${category.id}" class="awesome_map-category-${category.id}${category.parent?" subcategory":""}"><input type="checkbox" class="awesome_map-categories-selector" checked><span>${label}</span></label>`);
66
- });
67
- });
68
- }
69
- };
70
-
71
- // Hashtags are collected directly from proposals (this is different than categories)
72
- const addHashtagsControls = (map, hashtags, marker) => {
73
- // show hashtag layer
74
- if(hashtags && hashtags.length) {
75
- $('#awesome_map-hashtags-control').show();
76
- hashtags.forEach(hashtag => {
77
- // Add layer if not exists, otherwise just add the marker to the group
78
- if(!layers[hashtag.tag]) {
79
- layers[hashtag.tag] = {
80
- label: hashtag.name,
81
- group: L.featureGroup.subGroup(cluster)
82
- };
83
- layers[hashtag.tag].group.addTo(map);
84
- $('#awesome_map-hashtags-control .hashtags-container').append(`<label data-layer="${hashtag.tag}" class="awesome_map-hashtag-${hashtag.tag}"><input type="checkbox" class="awesome_map-hashtags-selector" checked><span>${hashtag.name}</span></label>`);
85
- // Call a trigger, might be in service for customizations
86
- exports.AwesomeMap.hashtagAdded(hashtag, $('#awesome_map-hashtags-control .hashtags-container'));
87
- }
88
- marker.addTo(layers[hashtag.tag].group);
89
-
90
- const $label = $(`label.awesome_map-hashtag-${hashtag.tag}`);
91
- // update number of items
92
- $label.attr("title", (parseInt($label.attr("title") || 0) + 1) + " " + window.DecidimAwesome.texts.items);
93
- });
94
- }
95
- };
96
-
97
- exports.AwesomeMap.layers = layers;
98
- exports.AwesomeMap.control = control;
99
- exports.AwesomeMap.cluster = cluster;
100
- exports.AwesomeMap.addProposalsControls = addProposalsControls;
101
- exports.AwesomeMap.addMeetingsControls = addMeetingsControls;
102
- exports.AwesomeMap.addSearchControls = addSearchControls;
103
- exports.AwesomeMap.addCategoriesControls = addCategoriesControls;
104
- exports.AwesomeMap.addHashtagsControls = addHashtagsControls;
105
- exports.AwesomeMap.hashtagAdded = $.noop;
106
- })(window);
@@ -1,218 +0,0 @@
1
- // = require jsrender.min
2
- // = require decidim/map
3
- // = require leaflet.featuregroup.subgroup
4
- // = require decidim/decidim_awesome/awesome_map/utilities
5
- // = require decidim/decidim_awesome/awesome_map/categories
6
- // = require decidim/decidim_awesome/awesome_map/legacy_proposals
7
- // = require decidim/decidim_awesome/awesome_map/meetings
8
- // = require_self
9
-
10
- ((exports) => {
11
- const { fetchProposals, fetchMeetings, getCategory, amendments } = exports.AwesomeMap;
12
-
13
- const collapsedMenu = $("#map").data("collapsed");
14
- const show = {
15
- withdrawn: $("#map").data("show-withdrawn"),
16
- accepted: $("#map").data("show-accepted"),
17
- evaluating: $("#map").data("show-evaluating"),
18
- notAnswered: $("#map").data("show-not-answered"),
19
- rejected: $("#map").data("show-rejected")
20
- };
21
- const components = $("#map").data("components");
22
- const popupMeetingTemplateId = "marker-meeting-popup";
23
- const popupProposalTemplateId = "legacy-marker-proposal-popup";
24
-
25
- const cluster = L.markerClusterGroup();
26
- const layers = {};
27
-
28
- const control = L.control.layers(null, null, {
29
- position: 'topleft',
30
- sortLayers: false,
31
- collapsed: collapsedMenu,
32
- // hideSingleBase: true
33
- });
34
- const allMarkers = [];
35
-
36
- const drawMarker = (element, marker, component) => {
37
- let tmpl = component.type === "proposals" ? popupProposalTemplateId : popupMeetingTemplateId,
38
- node = document.createElement("div");
39
-
40
- $($.templates(`#${tmpl}`).render(element)).appendTo(node);
41
-
42
- marker.bindPopup(node, {
43
- maxwidth: 640,
44
- minWidth: 500,
45
- keepInView: true,
46
- className: "map-info"
47
- }).openPopup();
48
-
49
- allMarkers.push({
50
- marker: marker,
51
- component: component,
52
- element: element
53
- });
54
-
55
- // Add to category layer
56
- let cat = getCategory(element.category);
57
- if(layers[cat.id]) {
58
- marker.addTo(layers[cat.id].group);
59
- // show category if hidden
60
- const $label = $(`.awesome_map-category_${cat.id}`).closest("label");
61
- const $parent = $(`.awesome_map-category_${cat.parent}`).closest("label");
62
- $label.show();
63
- // update number of items
64
- $label.attr("title", parseInt($label.attr("title") || 0) + 1);
65
- // show parent if apply
66
- $parent.show();
67
- $parent.attr("title", parseInt($parent.attr("title") || 0) + 1);
68
- // update component stats
69
- const $component = $(`#awesome_map-component-${component.id}`);
70
- $component.attr("title", parseInt($component.attr("title") || 0) + 1);
71
- }
72
-
73
- return marker;
74
- };
75
-
76
- const loadElements = (map) => {
77
- // legends
78
- control.addTo(map);
79
- cluster.addTo(map);
80
-
81
- // Load markers
82
- components.forEach((component) => {
83
- if(component.type == "proposals") {
84
- // add control layer for proposals
85
- layers.proposals = {
86
- label: `<span id="awesome_map-component-${component.id}" title="0">${component.name || window.DecidimAwesome.texts.proposals}</span>`,
87
- group: L.featureGroup.subGroup(cluster)
88
- };
89
- control.addOverlay(layers.proposals.group, layers.proposals.label);
90
- layers.proposals.group.addTo(map);
91
-
92
- // add control layer for amendments if any
93
- if(component.amendments) {
94
- layers.amendments = {
95
- label: `<span id="awesome_map-component-${component.d}" title="0">${window.DecidimAwesome.texts.amendments}</span>`,
96
- group: L.featureGroup.subGroup(cluster)
97
- }
98
- control.addOverlay(layers.amendments.group, layers.amendments.label);
99
- layers.amendments.group.addTo(map);
100
- }
101
-
102
- fetchProposals(component, '', (element, marker) => {
103
- if(show[element.state || 'notAnswered']) {
104
- drawMarker(element, marker, component).addTo(layers.proposals.group)
105
- }
106
- }, () => {
107
- // finall call
108
- map.fitBounds(cluster.getBounds(), { padding: [50, 50] });
109
- allMarkers.forEach((item) => {
110
- // add marker to amendments layers if it's an amendment
111
- if(amendments.find((a) => a == item.element.id)) {
112
- item.marker.removeFrom(layers.proposals.group);
113
- item.marker.addTo(layers.amendments.group);
114
- }
115
- });
116
- });
117
- }
118
-
119
- if(component.type == "meetings") {
120
- // add control layer for meetings
121
- layers.meetings = {
122
- label: `<span id="awesome_map-component-${component.id}" title="0">${component.name || window.DecidimAwesome.texts.meetings}</span>`,
123
- group: L.featureGroup.subGroup(cluster)
124
- };
125
- control.addOverlay(layers.meetings.group, layers.meetings.label);
126
- layers.meetings.group.addTo(map);
127
-
128
- fetchMeetings(component, '', (element, marker) => {
129
- drawMarker(element, marker, component).addTo(layers.meetings.group);
130
- }, () => {
131
- map.fitBounds(cluster.getBounds(), { padding: [50, 50] });
132
- });
133
- }
134
- });
135
-
136
-
137
- // add categories control layers
138
- if(window.AwesomeMap.categories.length) {
139
- let lastLayer = layers[Object.keys(layers)[Object.keys(layers).length - 1]];
140
- // Add Categories "title"
141
- if(lastLayer) {
142
- lastLayer.label = `${lastLayer.label}<hr><b>${window.DecidimAwesome.texts.categories}</b>`;
143
- control.removeLayer(lastLayer.group);
144
- control.addOverlay(lastLayer.group, lastLayer.label);
145
- }
146
-
147
- window.AwesomeMap.categories.forEach((category) => {
148
- // add control layer for this category
149
- layers[category.id] = {
150
- label: `<i class="awesome_map-category_${category.id}"></i> ${category.name}`,
151
- group: L.featureGroup.subGroup(cluster)
152
- };
153
- layers[category.id].group.addTo(map);
154
- control.addOverlay(layers[category.id].group, layers[category.id].label);
155
- // hide layer by default, it will be activated if there's any marker in it
156
- setTimeout(() => {
157
- $(`.awesome_map-category_${category.id}`).closest("label").hide();
158
- });
159
- });
160
-
161
- // watch events for subcategories syncronitzation
162
- const getCatFromClass = (name) => {
163
- let id = name.match(/awesome_map-category_(\d+)/)
164
- if(!id) return;
165
- const cat = getCategory(id[1]);
166
- if(!cat || !cat.name) return;
167
-
168
- return cat;
169
- };
170
-
171
- const indeterminateInput = (id) => {
172
- $('[class^="awesome_map-category_"]').parent().prev().prop("indeterminate", false);
173
- if(id) {
174
- let $input = $(`.awesome_map-category_${id}`).parent().prev();
175
- if(!$input.prop("checked")) {
176
- $input.prop("indeterminate", true);
177
- }
178
- }
179
- };
180
-
181
- map.on('overlayadd', (e) => {
182
- const cat = getCatFromClass(e.name);
183
- if(!cat) return;
184
- // if it's a children, put the parent to indeterminate
185
- indeterminateInput(cat.parent);
186
- });
187
-
188
- // on remove a parent category, remove all children
189
- map.on('overlayremove', (e) => {
190
- const cat = getCatFromClass(e.name);
191
- if(!cat) return;
192
- cat.children().forEach((c) => {
193
- let $el = $(`.awesome_map-category_${c.id}`);
194
- if($el.parent().prev().prop("checked")) {
195
- $el.click();
196
- }
197
- });
198
- });
199
-
200
- }
201
-
202
- };
203
-
204
- // currentMap might not be loaded yet so let's delay a bit
205
- // TODO: improve this
206
- const waitMap = () => {
207
- if(exports.Decidim && exports.Decidim.currentMap) {
208
- loadElements(exports.Decidim.currentMap);
209
- } else {
210
- setTimeout(() => {
211
- waitMap();
212
- }, 100);
213
- }
214
- };
215
-
216
- waitMap();
217
-
218
- })(window);
@@ -1,83 +0,0 @@
1
- // = require decidim/decidim_awesome/awesome_map/api_fetcher
2
- // = require decidim/decidim_awesome/awesome_map/categories
3
- // = require decidim/decidim_awesome/awesome_map/utilities
4
-
5
- ((exports) => {
6
- const { getCategory, truncate } = exports.AwesomeMap;
7
- const query = `query ($id: ID!, $after: String!) {
8
- component(id: $id) {
9
- id
10
- __typename
11
- ... on Proposals {
12
- proposals(first: 50, after: $after){
13
- pageInfo {
14
- hasNextPage
15
- endCursor
16
- }
17
- edges {
18
- node {
19
- id
20
- state
21
- title
22
- body
23
- address
24
- coordinates {
25
- latitude
26
- longitude
27
- }
28
- amendments {
29
- emendation {
30
- id
31
- }
32
- }
33
- category {
34
- id
35
- }
36
- }
37
- }
38
- }
39
- }
40
- }
41
- }`;
42
-
43
- const ProposalIcon = L.DivIcon.SVGIcon.DecidimIcon;
44
-
45
- const createMarker = (element, callback) => {
46
- const marker = L.marker([element.coordinates.latitude, element.coordinates.longitude], {
47
- icon: new ProposalIcon({
48
- fillColor: getCategory(element.category).color
49
- })
50
- });
51
-
52
- element.body = truncate(element.body.replace(/\n/g, "<br>"));
53
- callback(element, marker);
54
- };
55
-
56
- const fetchProposals = (component, after, callback, finalCall = () => {}) => {
57
- const variables = {
58
- "id": component.id,
59
- "after": after
60
- };
61
- const api = new ApiFetcher(query, variables);
62
- api.fetchAll((result) => {
63
- if(result) {
64
- result.component.proposals.edges.forEach((element) => {
65
- if(!element.node) return;
66
-
67
- if(element.node.coordinates) {
68
- element.node.link = component.url + '/proposals/' + element.node.id;
69
- createMarker(element.node, callback);
70
- }
71
- });
72
- if (result.component.proposals.pageInfo.hasNextPage) {
73
- fetchProposals(component, result.component.proposals.pageInfo.endCursor, callback, finalCall);
74
- } else {
75
- finalCall();
76
- }
77
- }
78
- });
79
- };
80
-
81
- exports.AwesomeMap = exports.AwesomeMap || {};
82
- exports.AwesomeMap.fetchProposals = fetchProposals;
83
- })(window);
@@ -1,211 +0,0 @@
1
- // = require decidim/decidim_awesome/awesome_map/layers
2
- // = require decidim/decidim_awesome/awesome_map/utilities
3
- // = require decidim/decidim_awesome/awesome_map/markers
4
- // = require decidim/decidim_awesome/awesome_map/categories
5
- // = require decidim/decidim_awesome/awesome_map/proposals
6
- // = require decidim/decidim_awesome/awesome_map/meetings
7
- // = require_self
8
-
9
- ((exports) => {
10
- const {
11
- layers,
12
- cluster,
13
- control,
14
- addProposalsControls,
15
- addMeetingsControls,
16
- addSearchControls,
17
- addCategoriesControls,
18
- addHashtagsControls,
19
- fetchProposals,
20
- fetchMeetings,
21
- options,
22
- show,
23
- components,
24
- amendments,
25
- allMarkers,
26
- drawMarker,
27
- getCategory
28
- } = exports.AwesomeMap;
29
-
30
- exports.AwesomeMap.allMarkersLoaded = $.noop;
31
-
32
- const autoResizeMap = (map) => {
33
- // Setup center/zoom options if specified, otherwise fitbounds
34
- if(options.center) {
35
- map.setView(options.center, options.zoom);
36
- } else {
37
- map.fitBounds(cluster.getBounds(), { padding: [50, 50] });
38
- }
39
- };
40
-
41
- const loadElements = (map) => {
42
- // legends
43
- control.addTo(map);
44
- cluster.addTo(map);
45
-
46
- // Load markers
47
- components.forEach((component) => {
48
- if(component.type == "proposals") {
49
- addProposalsControls(map, component);
50
-
51
- fetchProposals(component, '', (element, marker) => {
52
- // console.log(element.state, show[element.state || 'notAnswered'], show, element);
53
- if(show[element.state || 'notAnswered']) {
54
- drawMarker(element, marker, component).addTo(layers.proposals.group);
55
- // Add hashtags menu items here, only hashtags with proposals associated will be present
56
- if(options.menu.hashtags) {
57
- addHashtagsControls(map, element.hashtags, marker);
58
- }
59
- }
60
- }, () => { // final call
61
- // Setup center/zoom options if specified, otherwise fitbounds
62
- autoResizeMap(map);
63
-
64
- allMarkers.forEach((item) => {
65
- // add marker to amendments layers if it's an amendment
66
- if(amendments.find((a) => a == item.element.id)) {
67
- item.marker.removeFrom(layers.proposals.group);
68
- if(options.menu.amendments) {
69
- item.marker.addTo(layers.amendments.group);
70
- }
71
- }
72
- });
73
- // Call a trigger, might be useful for customizations
74
- exports.AwesomeMap.allMarkersLoaded();
75
- });
76
- }
77
-
78
- if(options.menu.meetings && component.type == "meetings") {
79
- addMeetingsControls(map, component);
80
-
81
- fetchMeetings(component, '', (element, marker) => {
82
- drawMarker(element, marker, component).addTo(layers.meetings.group);
83
- }, () => autoResizeMap(map) );
84
- }
85
- });
86
-
87
- /*
88
- * We add all categories and hide those that have no proposals
89
- * This is done this way to ensure all parent categories are displayed
90
- * even if the have not proposals associated
91
- */
92
- addSearchControls(map);
93
- addCategoriesControls(map);
94
-
95
- // category events
96
- $("#awesome-map").on("change", ".awesome_map-categories-selector", (e) => {
97
- e.preventDefault();
98
- e.stopPropagation();
99
- const id = $(e.target).closest("label").data("layer");
100
- const cat = getCategory(id);
101
- // console.log("changed, layer", id, "cat", cat, "checked", e.target.checked, e);
102
- if(cat) {
103
- const layer = layers[cat.id];
104
- if(e.target.checked) {
105
- // show group of markers
106
- map.addLayer(layer.group);
107
-
108
- // if it's a children, put the parent to indeterminate
109
- indeterminateInput(cat.parent);
110
- } else {
111
- // hide group of markers
112
- map.removeLayer(layer.group);
113
- // if it's a children, put the parent to indeterminate
114
- cat.children().forEach((c) => {
115
- let $el = $(`.awesome_map-category-${c.id}`);
116
- if($el.parent().prev().prop("checked")) {
117
- $el.click();
118
- }
119
- });
120
- }
121
- // sync tags
122
- updateHashtagLayers();
123
- }
124
- });
125
-
126
- const indeterminateInput = (id) => {
127
- $('[class^="awesome_map-category-"]').parent().prev().prop("indeterminate", false);
128
- if(id) {
129
- let $input = $(`.awesome_map-category-${id}`).parent().prev();
130
- if(!$input.prop("checked")) {
131
- $input.prop("indeterminate", true);
132
- }
133
- }
134
- };
135
-
136
- const updateHashtagLayers = () => {
137
- // hide all
138
- $(".awesome_map-hashtags-selector").each((_idx, el) => {
139
- const layer = layers[$(el).closest("label").data("layer")];
140
- if(layer) {
141
- map.removeLayer(layer.group);
142
- }
143
- });
144
- // show selected only
145
- $(".awesome_map-hashtags-selector:checked").each((_idx, el) => {
146
- const layer = layers[$(el).closest("label").data("layer")];
147
- if(layer) {
148
- map.addLayer(layer.group);
149
- }
150
- });
151
- // hide non-selected categories
152
- $(".awesome_map-categories-selector:not(:checked)").each((_idx, el) => {
153
- const layer = layers[$(el).closest("label").data("layer")];
154
- console.log(el, layer, map)
155
- if(layer) {
156
- map.addLayer(layer.group);
157
- map.removeLayer(layer.group);
158
- }
159
- });
160
- };
161
-
162
- // hashtag events
163
- $("#awesome-map").on("change", ".awesome_map-hashtags-selector", (e) => {
164
- e.preventDefault();
165
- e.stopPropagation();
166
- const tag = $(e.target).closest("label").data("layer");
167
- // console.log("changed, layer", tag, "checked", e.target.checked, e);
168
- if(tag) {
169
- updateHashtagLayers();
170
- }
171
- });
172
-
173
- // select/deselect all tags
174
- $("#awesome-map").on("click", ".awesome_map-toggle_all_tags", (e) => {
175
- e.preventDefault();
176
- e.stopPropagation();
177
- $("#awesome-map .awesome_map-hashtags-selector").prop("checked", $("#awesome-map .awesome_map-hashtags-selector:checked").length < $("#awesome-map .awesome_map-hashtags-selector").length);
178
- updateHashtagLayers();
179
- });
180
-
181
- // sub-layer hashtag title toggle
182
- $("#awesome-map").on("click", ".awesome_map-title-control", (e) => {
183
- e.preventDefault();
184
- e.stopPropagation();
185
- $("#awesome_map-hashtags-control").toggleClass("active");
186
- });
187
- };
188
-
189
-
190
- $("#map").on("ready.decidim", (_e, map) => {
191
- if(options.center) {
192
- map.setView(options.center, options.zoom);
193
- }
194
- loadElements(map);
195
-
196
- // order hashtags alphabetically
197
- exports.AwesomeMap.hashtagAdded = (_hashtag, $div) => {
198
- let $last = $div.contents("label:last");
199
- if($last.prev("label").length) {
200
- // move the label to order it alphabetically
201
- $div.contents("label").each((_idx, el) => {
202
- if($(el).text().localeCompare($last.text()) > 0) {
203
- $(el).before($last);
204
- return false;
205
- }
206
- });
207
- }
208
- };
209
- });
210
-
211
- })(window);
@@ -1,56 +0,0 @@
1
- // = require jsrender.min
2
- // = require decidim/decidim_awesome/awesome_map/layers
3
- // = require decidim/decidim_awesome/awesome_map/categories
4
-
5
- ((exports) => {
6
- const { getCategory, layers } = exports.AwesomeMap;
7
-
8
- const popupMeetingTemplateId = "marker-meeting-popup";
9
- const popupProposalTemplateId = "marker-proposal-popup";
10
- const allMarkers = [];
11
-
12
- const drawMarker = (element, marker, component) => {
13
- let tmpl = component.type === "proposals" ? popupProposalTemplateId : popupMeetingTemplateId,
14
- node = document.createElement("div");
15
-
16
- $($.templates(`#${tmpl}`).render(element)).appendTo(node);
17
-
18
- marker.bindPopup(node, {
19
- maxwidth: 640,
20
- minWidth: 500,
21
- keepInView: true,
22
- className: "map-info"
23
- }).openPopup();
24
-
25
- allMarkers.push({
26
- marker: marker,
27
- component: component,
28
- element: element
29
- });
30
-
31
- // Add to category layer
32
- let cat = getCategory(element.category);
33
- if(layers[cat.id]) {
34
- $('#awesome_map-categories-control').show();
35
- marker.addTo(layers[cat.id].group);
36
- // show category if hidden
37
- const $label = $(`label.awesome_map-category-${cat.id}`);
38
- const $parent = $(`label.awesome_map-category-${cat.parent}`);
39
- $label.show();
40
- // update number of items
41
- $label.attr("title", (parseInt($label.attr("title") || 0) + 1) + " " + window.DecidimAwesome.texts.items);
42
- // show parent if apply
43
- $parent.show();
44
- $parent.attr("title", (parseInt($parent.attr("title") || 0) + 1) + " " + window.DecidimAwesome.texts.items);
45
- }
46
-
47
- // update component stats
48
- const $component = $(`#awesome_map-component_${component.id}`);
49
- $component.attr("title", parseInt($component.attr("title") || 0) + 1);
50
-
51
- return marker;
52
- };
53
-
54
- exports.AwesomeMap.allMarkers = allMarkers;
55
- exports.AwesomeMap.drawMarker = drawMarker;
56
- })(window);