geoblacklight_admin 0.0.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +59 -36
  3. data/Rakefile +47 -14
  4. data/app/assets/javascripts/geoblacklight_admin.js +2 -1
  5. data/app/assets/stylesheets/geoblacklight_admin/_core.scss +5 -0
  6. data/app/assets/stylesheets/geoblacklight_admin/modules/_chosen.scss +425 -0
  7. data/app/assets/stylesheets/geoblacklight_admin/modules/_forms.scss +108 -0
  8. data/app/controllers/admin/admin_controller.rb +4 -2
  9. data/app/controllers/admin/advanced_search_controller.rb +123 -103
  10. data/app/controllers/admin/api_controller.rb +123 -108
  11. data/app/controllers/admin/bookmarks_controller.rb +4 -4
  12. data/app/controllers/admin/bulk_actions_controller.rb +9 -4
  13. data/app/controllers/admin/concerns/upload_util.rb +2 -0
  14. data/app/controllers/admin/document_accesses_controller.rb +10 -4
  15. data/app/controllers/admin/document_assets_controller.rb +14 -11
  16. data/app/controllers/admin/document_downloads_controller.rb +12 -10
  17. data/app/controllers/admin/documents_controller.rb +32 -15
  18. data/app/controllers/admin/elements_controller.rb +6 -5
  19. data/app/controllers/admin/form_elements_controller.rb +4 -4
  20. data/app/controllers/admin/ids_controller.rb +107 -87
  21. data/app/controllers/admin/import_documents_controller.rb +1 -1
  22. data/app/controllers/admin/imports_controller.rb +7 -3
  23. data/app/controllers/admin/mappings_controller.rb +6 -4
  24. data/app/controllers/admin/notifications_controller.rb +1 -1
  25. data/app/controllers/admin/search_controller.rb +3 -2
  26. data/app/controllers/admin/users_controller.rb +2 -2
  27. data/app/helpers/form_input_helper.rb +4 -4
  28. data/app/helpers/geoblacklight_admin_helper.rb +1 -1
  29. data/app/indexers/document_indexer.rb +1 -1
  30. data/app/jobs/export_job.rb +9 -6
  31. data/app/jobs/export_json_bulk_job.rb +95 -0
  32. data/app/jobs/export_json_job.rb +14 -12
  33. data/app/models/admin/bookmark.rb +18 -0
  34. data/app/models/api_search_builder.rb +3 -1
  35. data/app/models/blacklight_api.rb +6 -6
  36. data/app/models/blacklight_api_facets.rb +7 -2
  37. data/app/models/blacklight_api_ids.rb +3 -4
  38. data/app/models/bulk_action.rb +1 -1
  39. data/app/models/document/bbox_validator.rb +9 -5
  40. data/app/models/document/date_range_validator.rb +13 -10
  41. data/app/models/document/geom_validator.rb +4 -2
  42. data/app/models/document.rb +15 -7
  43. data/app/models/element.rb +9 -7
  44. data/app/models/form_control.rb +2 -0
  45. data/app/models/form_element.rb +2 -0
  46. data/app/models/form_feature.rb +2 -0
  47. data/app/models/form_group.rb +2 -0
  48. data/app/models/form_header.rb +2 -0
  49. data/app/models/geoblacklight_admin/schema.rb +5 -2
  50. data/app/models/geoblacklight_admin.rb +2 -0
  51. data/app/models/import/csv_duplicates_validator.rb +2 -1
  52. data/app/models/import/csv_header_validator.rb +2 -1
  53. data/app/models/import.rb +4 -7
  54. data/app/models/user.rb +1 -1
  55. data/app/services/export_csv_service.rb +5 -1
  56. data/app/views/admin/advanced_search/facets.json.jbuilder +9 -8
  57. data/app/views/admin/advanced_search/index.json.jbuilder +8 -7
  58. data/app/views/admin/api/_field.json.jbuilder +1 -1
  59. data/app/views/admin/api/fetch.json.jbuilder +8 -7
  60. data/app/views/admin/api/index.json.jbuilder +8 -7
  61. data/app/views/admin/bookmarks/index.html.erb +2 -2
  62. data/app/views/admin/bulk_actions/index.html.erb +3 -3
  63. data/app/views/admin/bulk_actions/show.html.erb +1 -1
  64. data/app/views/admin/document_accesses/_form.html.erb +1 -1
  65. data/app/views/admin/document_accesses/destroy_all.html.erb +3 -3
  66. data/app/views/admin/document_accesses/edit.html.erb +1 -1
  67. data/app/views/admin/document_accesses/import.html.erb +2 -2
  68. data/app/views/admin/document_accesses/index.html.erb +9 -9
  69. data/app/views/admin/document_accesses/new.html.erb +1 -1
  70. data/app/views/admin/document_downloads/_form.html.erb +1 -1
  71. data/app/views/admin/document_downloads/destroy_all.html.erb +2 -2
  72. data/app/views/admin/document_downloads/edit.html.erb +2 -3
  73. data/app/views/admin/document_downloads/import.html.erb +1 -1
  74. data/app/views/admin/document_downloads/index.html.erb +9 -9
  75. data/app/views/admin/document_downloads/new.html.erb +1 -1
  76. data/app/views/admin/document_downloads/show.html.erb +2 -2
  77. data/app/views/admin/documents/_document_bookmark.html.erb +1 -1
  78. data/app/views/admin/documents/_form_nav.html.erb +3 -1
  79. data/app/views/admin/documents/_json_btaa_aardvark.jbuilder +1 -3
  80. data/app/views/admin/documents/_json_file.jbuilder +14 -0
  81. data/app/views/admin/documents/_result_selected_options.html.erb +3 -1
  82. data/app/views/admin/documents/edit.html.erb +1 -1
  83. data/app/views/admin/documents/features/_multiple_download_links.html.erb +2 -2
  84. data/app/views/admin/documents/fetch.json_file.jbuilder +9 -0
  85. data/app/views/admin/documents/index.html.erb +2 -4
  86. data/app/views/admin/documents/index.json_file.jbuilder +9 -0
  87. data/app/views/admin/documents/versions.html.erb +1 -1
  88. data/app/views/admin/elements/_element.json.jbuilder +4 -1
  89. data/app/views/admin/elements/_form.html.erb +1 -1
  90. data/app/views/admin/elements/edit.html.erb +2 -2
  91. data/app/views/admin/elements/index.html.erb +4 -4
  92. data/app/views/admin/elements/index.json.jbuilder +2 -0
  93. data/app/views/admin/elements/new.html.erb +1 -1
  94. data/app/views/admin/elements/show.html.erb +6 -6
  95. data/app/views/admin/elements/show.json.jbuilder +2 -0
  96. data/app/views/admin/form_elements/_form.html.erb +1 -1
  97. data/app/views/admin/form_elements/_form_element.json.jbuilder +2 -0
  98. data/app/views/admin/form_elements/edit.html.erb +2 -2
  99. data/app/views/admin/form_elements/index.html.erb +2 -2
  100. data/app/views/admin/form_elements/index.json.jbuilder +2 -0
  101. data/app/views/admin/form_elements/new.html.erb +1 -1
  102. data/app/views/admin/form_elements/show.html.erb +2 -2
  103. data/app/views/admin/form_elements/show.json.jbuilder +2 -0
  104. data/app/views/admin/ids/fetch.json.jbuilder +8 -7
  105. data/app/views/admin/ids/index.json.jbuilder +3 -2
  106. data/app/views/admin/import_documents/show.html.haml +1 -1
  107. data/app/views/admin/imports/_import.json.jbuilder +2 -1
  108. data/app/views/admin/imports/_show_failed_tab.html.erb +2 -2
  109. data/app/views/admin/imports/_show_success_tab.html.erb +1 -1
  110. data/app/views/admin/imports/edit.html.erb +3 -3
  111. data/app/views/admin/imports/index.html.erb +3 -3
  112. data/app/views/admin/layouts/application.html.erb +4 -4
  113. data/app/views/admin/mappings/_form.html.erb +1 -1
  114. data/app/views/admin/mappings/_mapping.json.jbuilder +2 -1
  115. data/app/views/admin/mappings/edit.html.erb +2 -2
  116. data/app/views/admin/mappings/new.html.erb +1 -1
  117. data/app/views/admin/mappings/show.html.erb +2 -2
  118. data/app/views/admin/notifications/index.html.erb +3 -3
  119. data/app/views/admin/search/index.html.erb +2 -2
  120. data/app/views/admin/shared/_navbar.html.erb +11 -6
  121. data/app/views/admin/shared/_toast.html.erb +1 -1
  122. data/app/views/admin/users/index.html.erb +1 -1
  123. data/app/views/catalog/_show_gbl_admin.html.erb +3 -0
  124. data/config/locales/documents.en.yml +3 -0
  125. data/config/routes.rb +37 -33
  126. data/db/migrate/20230316183001_add_geoblacklight_admin_gem.rb +409 -0
  127. data/db/seeds.rb +7 -6
  128. data/db/seeds_elements.csv +56 -55
  129. data/db/seeds_elements.numbers +0 -0
  130. data/db/seeds_form_elements.csv +65 -64
  131. data/db/seeds_form_elements.numbers +0 -0
  132. data/lib/generators/geoblacklight_admin/config_generator.rb +61 -94
  133. data/lib/generators/geoblacklight_admin/install_generator.rb +3 -12
  134. data/lib/generators/geoblacklight_admin/jobs_generator.rb +3 -2
  135. data/lib/generators/geoblacklight_admin/models_generator.rb +0 -1
  136. data/lib/generators/geoblacklight_admin/templates/_show_sidebar.html.erb +19 -0
  137. data/lib/generators/geoblacklight_admin/templates/_user_util_links.html.erb +1 -1
  138. data/lib/generators/geoblacklight_admin/templates/config/database.yml +9 -5
  139. data/lib/generators/geoblacklight_admin/templates/config/geomg_aardvark_schema.json +12 -6
  140. data/lib/generators/geoblacklight_admin/templates/config/initializers/devise.rb +315 -0
  141. data/lib/generators/geoblacklight_admin/templates/config/initializers/geoblacklight_admin.rb +1 -2
  142. data/lib/generators/geoblacklight_admin/templates/config/initializers/kithe.rb +2 -0
  143. data/lib/generators/geoblacklight_admin/templates/config/initializers/mime_types.rb +15 -0
  144. data/lib/generators/geoblacklight_admin/templates/config/initializers/pagy.rb +152 -68
  145. data/lib/generators/geoblacklight_admin/templates/config/initializers/simple_form.rb +178 -0
  146. data/lib/generators/geoblacklight_admin/templates/config/initializers/simple_form_bootstrap.rb +365 -0
  147. data/lib/generators/geoblacklight_admin/templates/config/settings.yml +293 -0
  148. data/lib/generators/geoblacklight_admin/templates/javascript/controllers/results_controller.js +10 -0
  149. data/lib/generators/geoblacklight_admin/templates/package.json +3 -0
  150. data/lib/generators/geoblacklight_admin/templates/solr/conf/schema.xml +3 -3
  151. data/lib/generators/geoblacklight_admin/views_generator.rb +2 -3
  152. data/lib/geoblacklight_admin/engine.rb +5 -6
  153. data/lib/geoblacklight_admin/version.rb +1 -1
  154. data/lib/geoblacklight_admin.rb +1 -1
  155. data/lib/tasks/geoblacklight_admin.rake +15 -11
  156. metadata +101 -63
  157. data/.editorconfig +0 -18
  158. data/.gitignore +0 -75
  159. data/.standard.yml +0 -4
  160. data/Gemfile +0 -59
  161. data/LICENSE +0 -21
  162. data/app/assets/images/.keep +0 -0
  163. data/app/controllers/admin/concerns/.keep +0 -0
  164. data/app/models/bookmark.rb +0 -17
  165. data/app/models/concerns/.keep +0 -0
  166. data/db/migrate/20230316183001_add_geoblacklight_admin.rb +0 -399
  167. data/geoblacklight_admin.gemspec +0 -67
  168. data/lib/generators/geoblacklight_admin/example_docs_generator.rb +0 -18
  169. data/lib/generators/geoblacklight_admin/templates/.env.development.example +0 -28
  170. data/lib/generators/geoblacklight_admin/templates/.solr_wrapper.yml +0 -7
  171. data/lib/generators/geoblacklight_admin/templates/solr/snapshots/.keep +0 -0
  172. data/lib/tasks/.keep +0 -0
  173. data/spec/test_app_templates/lib/generators/test_app_generator.rb +0 -35
  174. data/template.rb +0 -16
  175. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/confirmations/new.html.erb +0 -0
  176. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/invitations/edit.html.erb +0 -0
  177. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/invitations/new.html.erb +0 -0
  178. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/mailer/invitation_instructions.html.erb +0 -0
  179. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/mailer/invitation_instructions.text.erb +0 -0
  180. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/passwords/edit.html.erb +0 -0
  181. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/passwords/new.html.erb +0 -0
  182. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/registrations/edit.html.erb +0 -0
  183. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/registrations/new.html.erb +0 -0
  184. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/sessions/new.html.erb +0 -0
  185. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/shared/_links.html.erb +0 -0
  186. /data/{app/views/admin → lib/generators/geoblacklight_admin/templates}/devise/unlocks/new.html.erb +0 -0
@@ -0,0 +1,365 @@
1
+ # frozen_string_literal: true
2
+
3
+ # These defaults are defined and maintained by the community at
4
+ # https://github.com/heartcombo/simple_form-bootstrap
5
+ # Please submit feedback, changes and tests only there.
6
+
7
+ # Uncomment this and change the path if necessary to include your own
8
+ # components.
9
+ # See https://github.com/heartcombo/simple_form#custom-components
10
+ # to know more about custom components.
11
+ # Dir[Rails.root.join('lib/components/**/*.rb')].each { |f| require f }
12
+
13
+ # Use this setup block to configure all options available in SimpleForm.
14
+ SimpleForm.setup do |config|
15
+ # Default class for buttons
16
+ config.button_class = "btn"
17
+
18
+ # Define the default class of the input wrapper of the boolean input.
19
+ config.boolean_label_class = "form-check-label"
20
+
21
+ # How the label text should be generated altogether with the required text.
22
+ config.label_text = lambda { |label, required, explicit_label| "#{label} #{required}" }
23
+
24
+ # Define the way to render check boxes / radio buttons with labels.
25
+ config.boolean_style = :inline
26
+
27
+ # You can wrap each item in a collection of radio/check boxes with a tag
28
+ config.item_wrapper_tag = :div
29
+
30
+ # Defines if the default input wrapper class should be included in radio
31
+ # collection wrappers.
32
+ config.include_default_input_wrapper_class = false
33
+
34
+ # CSS class to add for error notification helper.
35
+ config.error_notification_class = "alert alert-danger"
36
+
37
+ # Method used to tidy up errors. Specify any Rails Array method.
38
+ # :first lists the first message for each field.
39
+ # :to_sentence to list all errors for each field.
40
+ config.error_method = :to_sentence
41
+
42
+ # add validation classes to `input_field`
43
+ config.input_field_error_class = "is-invalid"
44
+ config.input_field_valid_class = "is-valid"
45
+
46
+ # vertical forms
47
+ #
48
+ # vertical default_wrapper
49
+ config.wrappers :vertical_form, class: "mb-3" do |b|
50
+ b.use :html5
51
+ b.use :placeholder
52
+ b.optional :maxlength
53
+ b.optional :minlength
54
+ b.optional :pattern
55
+ b.optional :min_max
56
+ b.optional :readonly
57
+ b.use :label, class: "form-label"
58
+ b.use :input, class: "form-control", error_class: "is-invalid", valid_class: "is-valid"
59
+ b.use :full_error, wrap_with: {class: "invalid-feedback"}
60
+ b.use :hint, wrap_with: {class: "form-text"}
61
+ end
62
+
63
+ # vertical input for boolean
64
+ config.wrappers :vertical_boolean, tag: "fieldset", class: "mb-3" do |b|
65
+ b.use :html5
66
+ b.optional :readonly
67
+ b.wrapper :form_check_wrapper, class: "form-check" do |bb|
68
+ bb.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
69
+ bb.use :label, class: "form-check-label"
70
+ bb.use :full_error, wrap_with: {class: "invalid-feedback"}
71
+ bb.use :hint, wrap_with: {class: "form-text"}
72
+ end
73
+ end
74
+
75
+ # vertical input for radio buttons and check boxes
76
+ config.wrappers :vertical_collection, item_wrapper_class: "form-check", item_label_class: "form-check-label", tag: "fieldset", class: "mb-3" do |b|
77
+ b.use :html5
78
+ b.optional :readonly
79
+ b.wrapper :legend_tag, tag: "legend", class: "col-form-label pt-0" do |ba|
80
+ ba.use :label_text
81
+ end
82
+ b.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
83
+ b.use :full_error, wrap_with: {class: "invalid-feedback d-block"}
84
+ b.use :hint, wrap_with: {class: "form-text"}
85
+ end
86
+
87
+ # vertical input for inline radio buttons and check boxes
88
+ config.wrappers :vertical_collection_inline, item_wrapper_class: "form-check form-check-inline", item_label_class: "form-check-label", tag: "fieldset", class: "mb-3" do |b|
89
+ b.use :html5
90
+ b.optional :readonly
91
+ b.wrapper :legend_tag, tag: "legend", class: "col-form-label pt-0" do |ba|
92
+ ba.use :label_text
93
+ end
94
+ b.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
95
+ b.use :full_error, wrap_with: {class: "invalid-feedback d-block"}
96
+ b.use :hint, wrap_with: {class: "form-text"}
97
+ end
98
+
99
+ # vertical file input
100
+ config.wrappers :vertical_file, class: "mb-3" do |b|
101
+ b.use :html5
102
+ b.use :placeholder
103
+ b.optional :maxlength
104
+ b.optional :minlength
105
+ b.optional :readonly
106
+ b.use :label, class: "form-label"
107
+ b.use :input, class: "form-control", error_class: "is-invalid", valid_class: "is-valid"
108
+ b.use :full_error, wrap_with: {class: "invalid-feedback"}
109
+ b.use :hint, wrap_with: {class: "form-text"}
110
+ end
111
+
112
+ # vertical select input
113
+ config.wrappers :vertical_select, class: "mb-3" do |b|
114
+ b.use :html5
115
+ b.optional :readonly
116
+ b.use :label, class: "form-label"
117
+ b.use :input, class: "form-select", error_class: "is-invalid", valid_class: "is-valid"
118
+ b.use :full_error, wrap_with: {class: "invalid-feedback"}
119
+ b.use :hint, wrap_with: {class: "form-text"}
120
+ end
121
+
122
+ # vertical multi select
123
+ config.wrappers :vertical_multi_select, class: "mb-3" do |b|
124
+ b.use :html5
125
+ b.optional :readonly
126
+ b.use :label, class: "form-label"
127
+ b.wrapper class: "d-flex flex-row justify-content-between align-items-center" do |ba|
128
+ ba.use :input, class: "form-select mx-1", error_class: "is-invalid", valid_class: "is-valid"
129
+ end
130
+ b.use :full_error, wrap_with: {class: "invalid-feedback d-block"}
131
+ b.use :hint, wrap_with: {class: "form-text"}
132
+ end
133
+
134
+ # vertical range input
135
+ config.wrappers :vertical_range, class: "mb-3" do |b|
136
+ b.use :html5
137
+ b.use :placeholder
138
+ b.optional :readonly
139
+ b.optional :step
140
+ b.use :label, class: "form-label"
141
+ b.use :input, class: "form-range", error_class: "is-invalid", valid_class: "is-valid"
142
+ b.use :full_error, wrap_with: {class: "invalid-feedback"}
143
+ b.use :hint, wrap_with: {class: "form-text"}
144
+ end
145
+
146
+ # horizontal forms
147
+ #
148
+ # horizontal default_wrapper
149
+ config.wrappers :horizontal_form, class: "row mb-3" do |b|
150
+ b.use :html5
151
+ b.use :placeholder
152
+ b.optional :maxlength
153
+ b.optional :minlength
154
+ b.optional :pattern
155
+ b.optional :min_max
156
+ b.optional :readonly
157
+ b.use :label, class: "col-sm-3 col-form-label"
158
+ b.wrapper :grid_wrapper, class: "col-sm-9" do |ba|
159
+ ba.use :input, class: "form-control", error_class: "is-invalid", valid_class: "is-valid"
160
+ ba.use :full_error, wrap_with: {class: "invalid-feedback"}
161
+ ba.use :hint, wrap_with: {class: "form-text"}
162
+ end
163
+ end
164
+
165
+ # horizontal input for boolean
166
+ config.wrappers :horizontal_boolean, class: "row mb-3" do |b|
167
+ b.use :html5
168
+ b.optional :readonly
169
+ b.wrapper :grid_wrapper, class: "col-sm-9 offset-sm-3" do |wr|
170
+ wr.wrapper :form_check_wrapper, class: "form-check" do |bb|
171
+ bb.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
172
+ bb.use :label, class: "form-check-label"
173
+ bb.use :full_error, wrap_with: {class: "invalid-feedback"}
174
+ bb.use :hint, wrap_with: {class: "form-text"}
175
+ end
176
+ end
177
+ end
178
+
179
+ # horizontal input for radio buttons and check boxes
180
+ config.wrappers :horizontal_collection, item_wrapper_class: "form-check", item_label_class: "form-check-label", class: "row mb-3" do |b|
181
+ b.use :html5
182
+ b.optional :readonly
183
+ b.use :label, class: "col-sm-3 col-form-label pt-0"
184
+ b.wrapper :grid_wrapper, class: "col-sm-9" do |ba|
185
+ ba.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
186
+ ba.use :full_error, wrap_with: {class: "invalid-feedback d-block"}
187
+ ba.use :hint, wrap_with: {class: "form-text"}
188
+ end
189
+ end
190
+
191
+ # horizontal input for inline radio buttons and check boxes
192
+ config.wrappers :horizontal_collection_inline, item_wrapper_class: "form-check form-check-inline", item_label_class: "form-check-label", class: "row mb-3" do |b|
193
+ b.use :html5
194
+ b.optional :readonly
195
+ b.use :label, class: "col-sm-3 col-form-label pt-0"
196
+ b.wrapper :grid_wrapper, class: "col-sm-9" do |ba|
197
+ ba.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
198
+ ba.use :full_error, wrap_with: {class: "invalid-feedback d-block"}
199
+ ba.use :hint, wrap_with: {class: "form-text"}
200
+ end
201
+ end
202
+
203
+ # horizontal file input
204
+ config.wrappers :horizontal_file, class: "row mb-3" do |b|
205
+ b.use :html5
206
+ b.use :placeholder
207
+ b.optional :maxlength
208
+ b.optional :minlength
209
+ b.optional :readonly
210
+ b.use :label, class: "col-sm-3 col-form-label"
211
+ b.wrapper :grid_wrapper, class: "col-sm-9" do |ba|
212
+ ba.use :input, class: "form-control", error_class: "is-invalid", valid_class: "is-valid"
213
+ ba.use :full_error, wrap_with: {class: "invalid-feedback"}
214
+ ba.use :hint, wrap_with: {class: "form-text"}
215
+ end
216
+ end
217
+
218
+ # horizontal select input
219
+ config.wrappers :horizontal_select, class: "row mb-3" do |b|
220
+ b.use :html5
221
+ b.optional :readonly
222
+ b.use :label, class: "col-sm-3 col-form-label"
223
+ b.wrapper :grid_wrapper, class: "col-sm-9" do |ba|
224
+ ba.use :input, class: "form-select", error_class: "is-invalid", valid_class: "is-valid"
225
+ ba.use :full_error, wrap_with: {class: "invalid-feedback"}
226
+ ba.use :hint, wrap_with: {class: "form-text"}
227
+ end
228
+ end
229
+
230
+ # horizontal multi select
231
+ config.wrappers :horizontal_multi_select, class: "row mb-3" do |b|
232
+ b.use :html5
233
+ b.optional :readonly
234
+ b.use :label, class: "col-sm-3 col-form-label"
235
+ b.wrapper :grid_wrapper, class: "col-sm-9" do |ba|
236
+ ba.wrapper class: "d-flex flex-row justify-content-between align-items-center" do |bb|
237
+ bb.use :input, class: "form-select mx-1", error_class: "is-invalid", valid_class: "is-valid"
238
+ end
239
+ ba.use :full_error, wrap_with: {class: "invalid-feedback d-block"}
240
+ ba.use :hint, wrap_with: {class: "form-text"}
241
+ end
242
+ end
243
+
244
+ # horizontal range input
245
+ config.wrappers :horizontal_range, class: "row mb-3" do |b|
246
+ b.use :html5
247
+ b.use :placeholder
248
+ b.optional :readonly
249
+ b.optional :step
250
+ b.use :label, class: "col-sm-3 col-form-label pt-0"
251
+ b.wrapper :grid_wrapper, class: "col-sm-9" do |ba|
252
+ ba.use :input, class: "form-range", error_class: "is-invalid", valid_class: "is-valid"
253
+ ba.use :full_error, wrap_with: {class: "invalid-feedback"}
254
+ ba.use :hint, wrap_with: {class: "form-text"}
255
+ end
256
+ end
257
+
258
+ # inline forms
259
+ #
260
+ # inline default_wrapper
261
+ config.wrappers :inline_form, class: "col-12" do |b|
262
+ b.use :html5
263
+ b.use :placeholder
264
+ b.optional :maxlength
265
+ b.optional :minlength
266
+ b.optional :pattern
267
+ b.optional :min_max
268
+ b.optional :readonly
269
+ b.use :label, class: "visually-hidden"
270
+
271
+ b.use :input, class: "form-control", error_class: "is-invalid", valid_class: "is-valid"
272
+ b.use :error, wrap_with: {class: "invalid-feedback"}
273
+ b.optional :hint, wrap_with: {class: "form-text"}
274
+ end
275
+
276
+ # inline input for boolean
277
+ config.wrappers :inline_boolean, class: "col-12" do |b|
278
+ b.use :html5
279
+ b.optional :readonly
280
+ b.wrapper :form_check_wrapper, class: "form-check" do |bb|
281
+ bb.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
282
+ bb.use :label, class: "form-check-label"
283
+ bb.use :error, wrap_with: {class: "invalid-feedback"}
284
+ bb.optional :hint, wrap_with: {class: "form-text"}
285
+ end
286
+ end
287
+
288
+ # bootstrap custom forms
289
+ #
290
+ # custom input switch for boolean
291
+ config.wrappers :custom_boolean_switch, class: "mb-3" do |b|
292
+ b.use :html5
293
+ b.optional :readonly
294
+ b.wrapper :form_check_wrapper, tag: "div", class: "form-check form-switch" do |bb|
295
+ bb.use :input, class: "form-check-input", error_class: "is-invalid", valid_class: "is-valid"
296
+ bb.use :label, class: "form-check-label"
297
+ bb.use :full_error, wrap_with: {tag: "div", class: "invalid-feedback"}
298
+ bb.use :hint, wrap_with: {class: "form-text"}
299
+ end
300
+ end
301
+
302
+ # Input Group - custom component
303
+ # see example app and config at https://github.com/heartcombo/simple_form-bootstrap
304
+ config.wrappers :input_group, class: "mb-3" do |b|
305
+ b.use :html5
306
+ b.use :placeholder
307
+ b.optional :maxlength
308
+ b.optional :minlength
309
+ b.optional :pattern
310
+ b.optional :min_max
311
+ b.optional :readonly
312
+ b.use :label, class: "form-label"
313
+ b.wrapper :input_group_tag, class: "input-group" do |ba|
314
+ ba.optional :prepend
315
+ ba.use :input, class: "form-control", error_class: "is-invalid", valid_class: "is-valid"
316
+ ba.optional :append
317
+ ba.use :full_error, wrap_with: {class: "invalid-feedback"}
318
+ end
319
+ b.use :hint, wrap_with: {class: "form-text"}
320
+ end
321
+
322
+ # Floating Labels form
323
+ #
324
+ # floating labels default_wrapper
325
+ config.wrappers :floating_labels_form, class: "form-floating mb-3" do |b|
326
+ b.use :html5
327
+ b.use :placeholder
328
+ b.optional :maxlength
329
+ b.optional :minlength
330
+ b.optional :pattern
331
+ b.optional :min_max
332
+ b.optional :readonly
333
+ b.use :input, class: "form-control", error_class: "is-invalid", valid_class: "is-valid"
334
+ b.use :label
335
+ b.use :full_error, wrap_with: {class: "invalid-feedback"}
336
+ b.use :hint, wrap_with: {class: "form-text"}
337
+ end
338
+
339
+ # custom multi select
340
+ config.wrappers :floating_labels_select, class: "form-floating mb-3" do |b|
341
+ b.use :html5
342
+ b.optional :readonly
343
+ b.use :input, class: "form-select", error_class: "is-invalid", valid_class: "is-valid"
344
+ b.use :label
345
+ b.use :full_error, wrap_with: {class: "invalid-feedback"}
346
+ b.use :hint, wrap_with: {class: "form-text"}
347
+ end
348
+
349
+ # The default wrapper to be used by the FormBuilder.
350
+ config.default_wrapper = :vertical_form
351
+
352
+ # Custom wrappers for input types. This should be a hash containing an input
353
+ # type as key and the wrapper that will be used for all inputs with specified type.
354
+ config.wrapper_mappings = {
355
+ boolean: :vertical_boolean,
356
+ check_boxes: :vertical_collection,
357
+ date: :vertical_multi_select,
358
+ datetime: :vertical_multi_select,
359
+ file: :vertical_file,
360
+ radio_buttons: :vertical_collection,
361
+ range: :vertical_range,
362
+ time: :vertical_multi_select,
363
+ select: :vertical_select
364
+ }
365
+ end
@@ -0,0 +1,293 @@
1
+ # Configurable Logo Used for CartoDB export
2
+ APPLICATION_LOGO_URL: 'http://geoblacklight.org/images/geoblacklight-logo.png'
3
+
4
+ # Carto OneClick Service https://carto.com/engine/open-in-carto/
5
+ CARTO_ONECLICK_LINK: 'http://oneclick.carto.com/'
6
+
7
+ # ArcGIS Online Base URL
8
+ ARCGIS_BASE_URL: 'https://www.arcgis.com/home/webmap/viewer.html'
9
+
10
+ # Download path can be configured using this setting
11
+ #DOWNLOAD_PATH: "./tmp/cache/downloads"
12
+
13
+ # The bq boost value for spatial search matches within a bounding box
14
+ BBOX_WITHIN_BOOST: '10'
15
+
16
+ # The bf boost value for overlap ratio
17
+ OVERLAP_RATIO_BOOST: '2'
18
+
19
+ # Homepage Map Geometry
20
+ # Leave null to default to entire world
21
+ # Add a stringified GeoJSON object to scope initial render (example from UMass)
22
+ HOMEPAGE_MAP_GEOM: null
23
+ # HOMEPAGE_MAP_GEOM: '{"type":"Polygon","coordinates":[[[-73.58,42.93],[-73.58,41.20],[-69.90,41.20],[-69.90,42.93]]]}'
24
+
25
+ # Non-search-field GeoBlacklight application permitted params
26
+ GBL_PARAMS:
27
+ - :bbox
28
+ - :email
29
+ - :file
30
+ - :format
31
+ - :id
32
+ - :logo
33
+ - :provider
34
+ - :type
35
+ - :BBOX
36
+ - :HEIGHT
37
+ - :LAYERS
38
+ - :QUERY_LAYERS
39
+ - :URL
40
+ - :WIDTH
41
+ - :X
42
+ - :Y
43
+
44
+ # Solr field mappings
45
+ FIELDS:
46
+ :ACCESS_RIGHTS: 'dct_accessRights_s'
47
+ :ALTERNATIVE_TITLE: 'dct_alternative_sm'
48
+ :CENTROID: 'dcat_centroid'
49
+ :CREATOR: 'dct_creator_sm'
50
+ :DATE_ISSUED: 'dct_issued_s'
51
+ :DATE_RANGE: 'gbl_dateRange_drsim'
52
+ :DESCRIPTION: 'dct_description_sm'
53
+ :DISPLAY_NOTE: 'gbl_displayNote_sm'
54
+ :FORMAT: 'dct_format_s'
55
+ :FILE_SIZE: 'gbl_fileSize_s'
56
+ :GEOREFERENCED: 'gbl_georeferenced_b'
57
+ :ID: 'id'
58
+ :IDENTIFIER: 'dct_identifier_sm'
59
+ :INDEX_YEAR: 'gbl_indexYear_im'
60
+ :IS_PART_OF: 'dct_isPartOf_sm'
61
+ :IS_REPLACED_BY: 'dct_isReplacedBy_sm'
62
+ :THEME: 'dcat_theme_sm'
63
+ :KEYWORD: 'dcat_keyword_sm'
64
+ :LANGUAGE: 'dct_language_sm'
65
+ :LAYER_MODIFIED: 'gbl_mdModified_dt'
66
+ :LICENSE: 'dct_license_sm'
67
+ :MEMBER_OF: 'pcdm_memberOf_sm'
68
+ :METADATA_VERSION: 'gbl_mdVersion_s'
69
+ :MODIFIED: 'gbl_mdModified_dt'
70
+ :OVERLAP_FIELD: 'solr_bboxtype'
71
+ :PUBLISHER: 'dct_publisher_sm'
72
+ :PROVIDER: 'schema_provider_s'
73
+ :REFERENCES: 'dct_references_s'
74
+ :RELATION: 'dct_relation_sm'
75
+ :REPLACES: 'dct_replaces_sm'
76
+ :RESOURCE_CLASS: 'gbl_resourceClass_sm'
77
+ :RESOURCE_TYPE: 'gbl_resourceType_sm'
78
+ :RIGHTS: 'dct_rights_sm'
79
+ :RIGHTS_HOLDER: 'dct_rightsHolder_sm'
80
+ :SOURCE: 'dct_source_sm'
81
+ :SPATIAL_COVERAGE: 'dct_spatial_sm'
82
+ :GEOMETRY: 'locn_geometry'
83
+ :SUBJECT: 'dct_subject_sm'
84
+ :SUPPRESSED: 'gbl_suppressed_b'
85
+ :TEMPORAL_COVERAGE: 'dct_temporal_sm'
86
+ :TITLE: 'dct_title_s'
87
+ :VERSION: 'dct_isVersionOf_sm'
88
+ :WXS_IDENTIFIER: 'gbl_wxsIdentifier_s'
89
+ :B1G_PUBLICATION_STATE: 'b1g_publication_state_s'
90
+ :B1G_ACCRUAL_METHOD: 'b1g_dct_accrualMethod_s'
91
+ :B1G_CODE: 'b1g_code_s'
92
+ :B1G_CHILD_RECORD: 'b1g_child_record_b'
93
+ :B1G_GEOMG_ID: 'geomg_id_s'
94
+
95
+ # Institution deployed at
96
+ INSTITUTION: 'Stanford'
97
+
98
+ # Metadata shown in tool panel
99
+ METADATA_SHOWN:
100
+ - 'mods'
101
+ - 'fgdc'
102
+ - 'iso19139'
103
+ - 'html'
104
+
105
+ # (For external Download) timeout and open_timeout parameters for Faraday
106
+ TIMEOUT_DOWNLOAD: 16
107
+
108
+ # (For WMS inspection) timeout and open_timeout parameters for Faraday
109
+ TIMEOUT_WMS: 4
110
+
111
+ # Use the geometry type for the data relations icon
112
+ USE_GEOM_FOR_RELATIONS_ICON: false
113
+
114
+ # Web services shown in tool panel
115
+ WEBSERVICES_SHOWN:
116
+ - 'wms'
117
+ - 'tms'
118
+ - 'wfs'
119
+ - 'xyz'
120
+ - 'wmts'
121
+ - 'tilejson'
122
+ - 'iiif'
123
+ - 'feature_layer'
124
+ - 'tiled_map_layer'
125
+ - 'dynamic_map_layer'
126
+ - 'image_map_layer'
127
+
128
+ # Display Notes to display / Non-prefixed default bootstrap class is alert-secondary
129
+ DISPLAY_NOTES_SHOWN:
130
+ danger:
131
+ bootstrap_alert_class: alert-danger
132
+ icon: fire-solid
133
+ note_prefix: "Danger: "
134
+ info:
135
+ bootstrap_alert_class: alert-info
136
+ icon: circle-info-solid
137
+ note_prefix: "Info: "
138
+ tip:
139
+ bootstrap_alert_class: alert-success
140
+ icon: lightbulb-solid
141
+ note_prefix: "Tip: "
142
+ warning:
143
+ bootstrap_alert_class: alert-warning
144
+ icon: triangle-exclamation-solid
145
+ note_prefix: "Warning: "
146
+
147
+ # Relationships to display
148
+ RELATIONSHIPS_SHOWN:
149
+ MEMBER_OF_ANCESTORS:
150
+ field: pcdm_memberOf_sm
151
+ icon: parent-item
152
+ inverse: :MEMBER_OF_DESCENDANTS
153
+ label: geoblacklight.relations.member_of_ancestors
154
+ query_type: ancestors
155
+ MEMBER_OF_DESCENDANTS:
156
+ field: pcdm_memberOf_sm
157
+ icon: child-item
158
+ inverse: :MEMBER_OF_ANCESTORS
159
+ label: geoblacklight.relations.member_of_descendants
160
+ query_type: descendants
161
+ PART_OF_ANCESTORS:
162
+ field: dct_isPartOf_sm
163
+ icon: parent-item
164
+ inverse: :PART_OF_DESCENDANTS
165
+ label: geoblacklight.relations.part_of_ancestors
166
+ query_type: ancestors
167
+ PART_OF_DESCENDANTS:
168
+ field: dct_isPartOf_sm
169
+ icon: child-item
170
+ inverse: :PART_OF_ANCESTORS
171
+ label: geoblacklight.relations.part_of_descendants
172
+ query_type: descendants
173
+ RELATION_ANCESTORS:
174
+ field: dct_relation_sm
175
+ icon: nil
176
+ inverse: :RELATION_DESCENDANTS
177
+ label: geoblacklight.relations.relation_ancestors
178
+ query_type: ancestors
179
+ RELATION_DESCENDANTS:
180
+ field: dct_relation_sm
181
+ icon: nil
182
+ inverse: :RELATION_ANCESTORS
183
+ label: geoblacklight.relations.relation_descendants
184
+ query_type: descendants
185
+ REPLACES_ANCESTORS:
186
+ field: dct_replaces_sm
187
+ icon: nil
188
+ inverse: :REPLACES_DESCENDANTS
189
+ label: geoblacklight.relations.replaces_ancestors
190
+ query_type: ancestors
191
+ REPLACES_DESCENDANTS:
192
+ field: dct_replaces_sm
193
+ icon: nil
194
+ inverse: :REPLACES_ANCESTORS
195
+ label: geoblacklight.relations.replaces_descendants
196
+ query_type: descendants
197
+ SOURCE_ANCESTORS:
198
+ field: dct_source_sm
199
+ icon: parent-item
200
+ inverse: :SOURCE_DESCENDANTS
201
+ label: geoblacklight.relations.source_ancestors
202
+ query_type: ancestors
203
+ SOURCE_DESCENDANTS:
204
+ field: dct_source_sm
205
+ icon: child-item
206
+ inverse: :SOURCE_ANCESTORS
207
+ label: geoblacklight.relations.source_descendants
208
+ query_type: descendants
209
+ VERSION_OF_ANCESTORS:
210
+ field: dct_isVersionOf_sm
211
+ icon: parent-item
212
+ inverse: :VERSION_OF_DESCENDANTS
213
+ label: geoblacklight.relations.version_of_ancestors
214
+ query_type: ancestors
215
+ VERSION_OF_DESCENDANTS:
216
+ field: dct_isVersionOf_sm
217
+ icon: child-item
218
+ inverse: :VERSION_OF_ANCESTORS
219
+ label: geoblacklight.relations.version_of_descendants
220
+ query_type: descendants
221
+
222
+ # WMS Parameters
223
+ WMS_PARAMS:
224
+ :SERVICE: 'WMS'
225
+ :VERSION: '1.1.1'
226
+ :REQUEST: 'GetFeatureInfo'
227
+ :STYLES: ''
228
+ :SRS: 'EPSG:4326'
229
+ :EXCEPTIONS: 'application/json'
230
+ :INFO_FORMAT: 'text/html'
231
+
232
+ # Settings for leaflet
233
+ LEAFLET:
234
+ MAP:
235
+ LAYERS:
236
+ DETECT_RETINA: true
237
+ INDEX:
238
+ DEFAULT: &default
239
+ color: "#7FCDBB"
240
+ weight: "1"
241
+ radius: "4"
242
+ UNAVAILABLE:
243
+ <<: *default
244
+ color: "#EDF8B1"
245
+ SELECTED:
246
+ <<: *default
247
+ color: "#2C7FB8"
248
+ VIEWERS:
249
+ DYNAMICMAPLAYER:
250
+ CONTROLS:
251
+ - 'Opacity'
252
+ - 'Fullscreen'
253
+ FEATURELAYER:
254
+ CONTROLS:
255
+ - 'Opacity'
256
+ - 'Fullscreen'
257
+ IIIF:
258
+ CONTROLS:
259
+ - 'Fullscreen'
260
+ IMAGEMAPLAYER:
261
+ CONTROLS:
262
+ - 'Opacity'
263
+ - 'Fullscreen'
264
+ INDEXMAP:
265
+ CONTROLS:
266
+ - 'Fullscreen'
267
+ TILEDMAPLAYER:
268
+ CONTROLS:
269
+ - 'Opacity'
270
+ - 'Fullscreen'
271
+ WMS:
272
+ CONTROLS:
273
+ - 'Opacity'
274
+ - 'Fullscreen'
275
+
276
+ # Toggle the help text feature that offers users context
277
+ HELP_TEXT:
278
+ viewer_protocol:
279
+ - 'dynamic_map_layer'
280
+ - 'feature_layer'
281
+ - 'iiif'
282
+ - 'iiif_manifest'
283
+ - 'image_map_layer'
284
+ - 'index_map'
285
+ - 'tiled_map_layer'
286
+ - 'wms'
287
+ - 'tms'
288
+ - 'oembed'
289
+
290
+ # Enable catalog#show sidebar static map for items with the following viewer protocols
291
+ SIDEBAR_STATIC_MAP:
292
+ - 'iiif'
293
+ - 'iiif_manifest'
@@ -197,6 +197,16 @@ export default class extends Controller {
197
197
  }
198
198
  }
199
199
 
200
+ exportJsonFile() {
201
+ var scope = this.checkSelectionScope();
202
+ var el = document.querySelector('#result-selected-options');
203
+ if(scope === 'pageset') {
204
+ window.location = el.dataset.pageset + "&format=json_file"
205
+ } else {
206
+ window.location = el.dataset.resultset + "&format=json_file"
207
+ }
208
+ }
209
+
200
210
  exportJsonAardvark() {
201
211
  var scope = this.checkSelectionScope();
202
212
  var el = document.querySelector('#result-selected-options');
@@ -2,6 +2,9 @@
2
2
  "name": "internal",
3
3
  "private": true,
4
4
  "dependencies": {
5
+ "@babel/plugin-proposal-private-methods": "^7.18.6",
6
+ "@babel/plugin-proposal-private-property-in-object": "^7.20.0",
7
+ "@nathanvda/cocoon": "^1.2.14",
5
8
  "@rails/actioncable": "^6.0.0",
6
9
  "@rails/activestorage": "^6.0.0",
7
10
  "@rails/ujs": "^6.0.0",