diff --git a/app/helpers/dynamic_form_helper.rb b/app/helpers/dynamic_form_helper.rb index 6f6662e..5493bdc 100644 --- a/app/helpers/dynamic_form_helper.rb +++ b/app/helpers/dynamic_form_helper.rb @@ -11,75 +11,125 @@ when "array" render partial: 'questions/fields/multiple_field', locals: { - f: form, - field_values: @structured_datum.data[key], - field_properties: prop, - field_name: key - } - end + f: form, + field_values: @structured_datum.data[key], + field_properties: prop, + field_name: key + } + end + end + end + + def create_text_field(form, value, name, label, html_class: nil, is_multiple: false, index: 0) + render partial: 'shared/dynamic_form/fields/text_field', + locals: { + f: form, + multiple: is_multiple, + index: index, + field_value: value, + field_name: name, + field_label: label, + field_class: html_class, + input_type: nil + } + end + + + + def create_url_field(form, value, name, label, html_class: nil, is_multiple: false, index: 0) + render partial: 'shared/dynamic_form/fields/text_field', + locals: { + f: form, + multiple: is_multiple, + index: index, + field_value: value, + field_name: name, + field_label: label, + field_class: html_class, + input_type: 'url' + } + end + + + + def create_email_field(form, value, name, label, html_class: nil, is_multiple: false, index: 0) + render partial: 'shared/dynamic_form/fields/text_field', + locals: { + f: form, + multiple: is_multiple, + index: index, + field_value: value, + field_name: name, + field_label: label, + field_class: html_class, + input_type: 'email' + } + end + + + + def create_date_field(form, value, name, label, html_class: nil, is_multiple: false, index: 0) + render partial: 'shared/dynamic_form/fields/text_field', + locals: { + f: form, + multiple: is_multiple, + index: index, + field_value: value, + field_name: name, + field_label: label, + field_class: html_class, + input_type: 'date' + } + end + + + + def create_number_field(form, value, name, label, html_class=nil, is_multiple=false, index=0) + render partial: 'shared/dynamic_form/fields/number_field', + locals: { + f: form, + multiple: is_multiple, + index: index, + field_value: value, + field_name: name, + field_label: label + } + end + + + + def create_checkbox_field(form, value, name, label, html_class: nil) + render partial: 'shared/dynamic_form/fields/checkbox_field', + locals: { + f: form, + field_value: value, + field_name: name, + field_label: label + } + end + + def create_select_field(form, value, name, properties, html_class: nil) + render partial: 'questions/fields/select_field', + locals: { + f: form, + field_value: value, + field_name: name, + field_properties: properties + } end -end -def create_text_field(form, value, name, label, is_multiple=false, index=0) - render partial: 'questions/fields/text_field', - locals: { - f: form, - multiple: is_multiple, - index: index, - field_value: value, - field_name: name, - field_label: label -} -end - - - -def create_number_field(form, value, name, label, is_multiple=false, index=0) - render partial: 'questions/fields/number_field', - locals: { - f: form, - multiple: is_multiple, - index: index, - field_value: value, - field_name: name, - field_label: label -} -end - - - -def create_checkbox_field(form, value, name, label) - render partial: 'questions/fields/checkbox_field', - locals: { - f: form, - field_value: value, - field_name: name, - field_label: label -} -end - -def create_select_field(form, value, name, properties) - render partial: 'questions/fields/select_field', - locals: { - f: form, - field_value: value, - field_name: name, - field_properties: properties -} -end - -def create_schema_field(form, value, name, label, is_multiple=false, index=0, schema_id, answer_id) - render partial: 'questions/fields/schema_field', - locals: { - f: form, - multiple: is_multiple, - index: index, - field_value: value, - field_name: name, - field_label: label, - schema_id: schema_id, - answer_id: answer_id, -} -end + def create_schema_field(form, value, name, label, is_multiple=false, index=0, schema_id, answer_id) + render partial: 'questions/fields/schema_field', + locals: { + f: form, + multiple: is_multiple, + index: index, + field_value: value, + field_name: name, + field_label: label, + schema_id: schema_id, + answer_id: answer_id, + } + end end diff --git a/app/views/branded/plans/plan_details/_plan_funding_form.html.erb b/app/views/branded/plans/plan_details/_plan_funding_form.html.erb index 988bdea..10132ea 100644 --- a/app/views/branded/plans/plan_details/_plan_funding_form.html.erb +++ b/app/views/branded/plans/plan_details/_plan_funding_form.html.erb @@ -2,7 +2,7 @@
<%= _('Funder') %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { + <%= render(partial: 'shared/dynamic_form/fields/text_field', locals: { f: f, field_value: fragment && fragment["funder"] ? fragment["funder"]["name"] : nil, multiple: false, @@ -11,7 +11,7 @@ } ) %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { + <%= render(partial: 'shared/dynamic_form/fields/text_field', locals: { f: f, field_value: fragment && fragment["funder"] && fragment["funder"]["funderId"] ? fragment["funder"]["funderId"]["value"] : nil, multiple: false, @@ -31,12 +31,13 @@
- <%= render(partial: 'plans/plan_details/fields/url_field', locals: { + <%= render(partial: 'shared/dynamic_form/fields/text_field', locals: { f: f, field_value: fragment && fragment["funder"] ? fragment["funder"]["dataPolicyUrl"] : nil, multiple: false, field_name: "funder[dataPolicyUrl]", - field_label: _('Data Policy URL') + field_label: _('Data Policy URL'), + input_type: 'url' } ) %>
@@ -44,7 +45,7 @@
<%= _('Grant ID') %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { + <%= render(partial: 'shared/dynamic_form/fields/text_field', locals: { f: f, field_value: fragment && fragment["grantId"] ? fragment["grantId"]["value"] : nil, multiple: false, diff --git a/app/views/branded/plans/plan_details/_plan_metadata.html.erb b/app/views/branded/plans/plan_details/_plan_metadata.html.erb index eb3aebf..3987ff5 100644 --- a/app/views/branded/plans/plan_details/_plan_metadata.html.erb +++ b/app/views/branded/plans/plan_details/_plan_metadata.html.erb @@ -46,57 +46,56 @@
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: dmpID ? dmpID["value"] : nil, - multiple: false, - field_name: "dmpID[value]", - field_label: _('ID') - } ) %> - + <%= create_text_field( + f, + dmpID ? dmpID["value"] : nil, + "dmpID[value]", + _('ID') + ) + %>
<%= _('Version') %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: p_version ? p_version["versionNumber"] : nil, - multiple: false, - field_name: "version[versionNumber]", - field_label: _('Number') - } ) %> + <%= create_text_field( + f, + p_version ? p_version["versionNumber"] : nil, + "version[versionNumber]", + _('Number') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: p_version ? p_version["versionNotes"] : nil, - multiple: false, - field_name: "version[versionNotes]", - field_label: _('Notes') - } ) %> + <%= create_text_field( + f, + p_version ? p_version["versionNotes"] : nil, + "version[versionNotes]", + _('Notes') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: meta["relatedDocUrl"], - multiple: false, - field_name: "relatedDocUrl", - field_label: _('Related Documentation URL') - } ) %> + <%= create_text_field( + f, + meta["relatedDocUrl"], + "relatedDocUrl", + _('Related Documentation URL') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: meta["associatedDMPId"], - multiple: false, - field_name: "associatedDMPId", - field_label: _('Associated DMPs') - } ) %> + <%= create_text_field( + f, + meta["associatedDMPId"], + "associatedDMPId", + _('Associated DMPs') + ) + %>
<%= render(partial: 'shared/fragments/person_fragment_form', locals: { @@ -112,31 +111,31 @@
<%= _("Licence") %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: licence ? licence["licenseName"] : nil, - multiple: false, - field_name: "licence[licenseName]", - field_label: _('Name') - } ) %> + <%= create_text_field( + f, + licence ? licence["licenseName"] : nil, + "licence[licenseName]", + _('Name') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/url_field', locals: { - f: f, - field_value: licence ? licence["licenseUrl"] : nil, - multiple: false, - field_name: "licence[licenseUrl]", - field_label: _('URL') - } ) %> + <%= create_url_field( + f, + licence ? licence["licenseUrl"] : nil, + "licence[licenseUrl]", + _('URL') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/date_field', locals: { - f: f, - field_value: meta["licenceStartDate"], - multiple: false, - field_name: "licenceStartDate", - field_label: _('Start Date') - } ) %> + <%= create_date_field( + f, + licence ? licence["licenceStartDate"] : nil, + "licence[licenceStartDate]", + _('Start Date') + ) + %>
diff --git a/app/views/branded/plans/plan_details/_plan_partner_form.html.erb b/app/views/branded/plans/plan_details/_plan_partner_form.html.erb index 71f0fdc..c11d7cc 100644 --- a/app/views/branded/plans/plan_details/_plan_partner_form.html.erb +++ b/app/views/branded/plans/plan_details/_plan_partner_form.html.erb @@ -1,7 +1,7 @@ <%# locals: { fragment } %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { + <%= render(partial: 'shared/dynamic_form/fields/text_field', locals: { f: f, field_value: fragment ? fragment["name"] : nil, multiple: false, @@ -13,7 +13,7 @@
<%= _('Org ID') %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { + <%= render(partial: 'shared/dynamic_form/fields/text_field', locals: { f: f, field_value: fragment && fragment["orgId"] ? fragment["orgId"]["value"] : nil, multiple: false, @@ -35,11 +35,12 @@
- <%= render(partial: 'plans/plan_details/fields/url_field', locals: { + <%= render(partial: 'shared/dynamic_form/fields/text_field', locals: { f: f, field_value: fragment ? fragment["dataPolicyUrl"] : nil, multiple: false, field_name: "dataPolicyUrl", - field_label: _('Data Policy URL') + field_label: _('Data Policy URL'), + input_type: 'url' } ) %>
\ No newline at end of file diff --git a/app/views/branded/plans/plan_details/_plan_project.html.erb b/app/views/branded/plans/plan_details/_plan_project.html.erb index feb5de3..cf5eac5 100644 --- a/app/views/branded/plans/plan_details/_plan_project.html.erb +++ b/app/views/branded/plans/plan_details/_plan_project.html.erb @@ -7,31 +7,31 @@ <% principalInvestigator = @plan.json_fragment().project.principalInvestigator %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: project["title"], - multiple: false, - field_name: "project_title", - field_label: _('Project title') - } ) %> + <%= create_text_field( + f, + project["title"], + "project_title", + _('Project title') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: project["acronym"], - multiple: false, - field_name: "project_acronym", - field_label: _('Acronym') - } ) %> + <%= create_text_field( + f, + project["acronym"], + "project_acronym", + _('Acronym') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: project["projectId"], - multiple: false, - field_name: "project_id", - field_label: _('Project ID') - } ) %> + <%= create_text_field( + f, + project["projectId"], + "project_id", + _('Project ID') + ) + %>
@@ -55,22 +55,22 @@
- <%= render(partial: 'plans/plan_details/fields/date_field', locals: { - f: f, - field_value: project["startDate"], - multiple: false, - field_name: "project_start_date", - field_label: _('Start Date') - } ) %> + <%= create_date_field( + f, + project["startDate"], + "project_start_date", + _('Start Date') + ) + %>
- <%= render(partial: 'plans/plan_details/fields/date_field', locals: { - f: f, - field_value: project["endDate"], - multiple: false, - field_name: "project_end_date", - field_label: _('End Date') - } ) %> + <%= create_date_field( + f, + project["endDate"], + "project_end_date", + _('End Date') + ) + %>
@@ -83,13 +83,13 @@
- <%= render(partial: 'plans/plan_details/fields/url_field', locals: { - f: f, - field_value: project["experimentalPlanUrl"], - multiple: false, - field_name: "experimental_plan_url", - field_label: _('Experimental Plan URL') - } ) %> + <%= create_url_field( + f, + project["experimentalPlanUrl"], + "experimental_plan_url", + _('Experimental Plan URL') + ) + %>
diff --git a/app/views/branded/plans/plan_details/fields/_date_field.html.erb b/app/views/branded/plans/plan_details/fields/_date_field.html.erb deleted file mode 100644 index 6900a9a..0000000 --- a/app/views/branded/plans/plan_details/fields/_date_field.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -<% field_class = nil if local_assigns[:field_class].nil? %> -
- <%= f.label field_name, field_label, class: 'control-label' %> -
-
- <%= f.text_field field_name, value: field_value, multiple: multiple, class: "form-control #{field_class}", type: "date" %> - <% if multiple %> - Add - <% if index != 0 %> - Remove - <% else %> - - <% end %> - <% end %> -
diff --git a/app/views/branded/plans/plan_details/fields/_text_field.html.erb b/app/views/branded/plans/plan_details/fields/_text_field.html.erb deleted file mode 100644 index d4d7677..0000000 --- a/app/views/branded/plans/plan_details/fields/_text_field.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -<% field_class = nil if local_assigns[:field_class].nil? %> -
- <%= f.label field_name, field_label, class: 'control-label' %> -
-
- <%= f.text_field field_name, value: field_value, multiple: multiple, class: "form-control #{field_class}" %> - <% if multiple %> - Add - <% if index != 0 %> - Remove - <% else %> - - <% end %> - <% end %> -
diff --git a/app/views/branded/plans/plan_details/fields/_url_field.html.erb b/app/views/branded/plans/plan_details/fields/_url_field.html.erb deleted file mode 100644 index 4da9194..0000000 --- a/app/views/branded/plans/plan_details/fields/_url_field.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -<% field_class = nil if local_assigns[:field_class].nil? %> -
- <%= f.label field_name, field_label, class: 'control-label' %> -
-
- <%= f.url_field field_name, value: field_value, multiple: multiple, class: "form-control #{field_class}" %> - <% if multiple %> - Add - <% if index != 0 %> - Remove - <% else %> - - <% end %> - <% end %> -
diff --git a/app/views/branded/questions/_new_edit_question_structured.erb b/app/views/branded/questions/_new_edit_question_structured.erb index ca95dae..9d9c76e 100644 --- a/app/views/branded/questions/_new_edit_question_structured.erb +++ b/app/views/branded/questions/_new_edit_question_structured.erb @@ -6,7 +6,13 @@ <% value = answer.structured_answer.data[key] unless answer.structured_answer.nil? %> <% case prop['type'] %> <% when 'string' %> - <%= create_text_field(f, value, key, prop['label']) %> + <% if prop['format'].nil?%> + <%= create_text_field(f, value, key, prop['label']) %> + <% elsif prop['format'] == 'date' %> + <%= create_date_field(f, value, key, prop['label']) %> + <% elsif prop['format'] == 'url' %> + <%= create_url_field(f, value, key, prop['label']) %> + <%end%> <% when 'integer' %> <%= create_number_field(f, value, key, prop['label']) %> <% when 'boolean' %> diff --git a/app/views/branded/questions/fields/_checkbox_field.html.erb b/app/views/branded/questions/fields/_checkbox_field.html.erb deleted file mode 100644 index 07e003f..0000000 --- a/app/views/branded/questions/fields/_checkbox_field.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -
- <%= f.label field_name, field_label, class: 'control-label' %> - <%= f.check_box field_name, checked: field_value, class: 'form-control' %> -
\ No newline at end of file diff --git a/app/views/branded/questions/fields/_number_field.html.erb b/app/views/branded/questions/fields/_number_field.html.erb deleted file mode 100644 index 485ef6e..0000000 --- a/app/views/branded/questions/fields/_number_field.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -
- <%= f.label field_name, field_label, class: 'control-label' %> - <%= f.number_field field_name, value: field_value, multiple: multiple, class: 'form-control' %> - <% if multiple %> - Add - <% if index != 0 %> - Remove - <% else %> - - <% end %> - <% end %> -
\ No newline at end of file diff --git a/app/views/branded/questions/fields/_text_field.html.erb b/app/views/branded/questions/fields/_text_field.html.erb deleted file mode 100644 index 86e5cae..0000000 --- a/app/views/branded/questions/fields/_text_field.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -
- <%= f.label field_name, field_label, class: 'control-label' %> - <%= f.text_field field_name, value: field_value, multiple: multiple, class: 'form-control' %> - <% if multiple %> - Add - <% if index != 0 %> - Remove - <% else %> - - <% end %> - <% end %> -
diff --git a/app/views/branded/shared/dynamic_form/fields/_checkbox_field.html.erb b/app/views/branded/shared/dynamic_form/fields/_checkbox_field.html.erb new file mode 100644 index 0000000..a786d0c --- /dev/null +++ b/app/views/branded/shared/dynamic_form/fields/_checkbox_field.html.erb @@ -0,0 +1,7 @@ +<% field_class = nil if local_assigns[:field_class].nil? %> +
+ <%= f.label check_box, field_label, class: 'control-label' %> +
+
+ <%= f.number_field field_name, value: field_value, multiple: multiple, class: "form-control #{field_class}" %> +
diff --git a/app/views/branded/shared/dynamic_form/fields/_date_field.html.erb b/app/views/branded/shared/dynamic_form/fields/_date_field.html.erb new file mode 100644 index 0000000..29a4d48 --- /dev/null +++ b/app/views/branded/shared/dynamic_form/fields/_date_field.html.erb @@ -0,0 +1,15 @@ +<% field_class = nil if local_assigns[:field_class].nil? %> +
+ <%= f.label field_name, field_label, class: 'control-label' %> +
+
+ <%= f.text_field field_name, value: field_value, multiple: multiple, class: "form-control #{field_class}", type: "date" %> + <% if multiple %> + Add + <% if index != 0 %> + Remove + <% else %> + + <% end %> + <% end %> +
diff --git a/app/views/branded/shared/dynamic_form/fields/_number_field.html.erb b/app/views/branded/shared/dynamic_form/fields/_number_field.html.erb new file mode 100644 index 0000000..b0458e0 --- /dev/null +++ b/app/views/branded/shared/dynamic_form/fields/_number_field.html.erb @@ -0,0 +1,15 @@ +<% field_class = nil if local_assigns[:field_class].nil? %> +
+ <%= f.label field_name, field_label, class: 'control-label' %> +
+
+ <%= f.number_field field_name, value: field_value, multiple: multiple, class: "form-control #{field_class}" %> + <% if multiple %> + Add + <% if index != 0 %> + Remove + <% else %> + + <% end %> + <% end %> +
diff --git a/app/views/branded/shared/dynamic_form/fields/_text_field.html.erb b/app/views/branded/shared/dynamic_form/fields/_text_field.html.erb new file mode 100644 index 0000000..c082fa9 --- /dev/null +++ b/app/views/branded/shared/dynamic_form/fields/_text_field.html.erb @@ -0,0 +1,14 @@ +
+ <%= f.label field_name, field_label, class: 'control-label' %> +
+
+ <%= f.text_field field_name, value: field_value, multiple: multiple, class: "form-control #{field_class}", type: input_type %> + <% if multiple %> + Add + <% if index != 0 %> + Remove + <% else %> + + <% end %> + <% end %> +
diff --git a/app/views/branded/shared/fragments/_person_fragment_form.html.erb b/app/views/branded/shared/fragments/_person_fragment_form.html.erb index 92ebf15..6b056fc 100644 --- a/app/views/branded/shared/fragments/_person_fragment_form.html.erb +++ b/app/views/branded/shared/fragments/_person_fragment_form.html.erb @@ -19,43 +19,43 @@
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: person ? person["lastName"] : nil, - multiple: false, - field_name: "#{fragment_name}[lastName]", - field_label: _('Surname'), - field_class: "person_lastName" - } ) %> + <%= create_text_field( + f, + person ? person["lastName"] : nil, + "#{fragment_name}[lastName]", + _('Surname'), + html_class: "person_lastName" + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: person ? person["firstName"] : nil, - multiple: false, - field_name: "#{fragment_name}[firstName]", - field_label: _('First Name'), - field_class: "person_firstName" - } ) %> + <%= create_text_field( + f, + person ? person["firstName"] : nil, + "#{fragment_name}[firstName]", + _('Firstname'), + html_class: "person_firstName" + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: person ? person["mbox"] : nil, - multiple: false, - field_name: "#{fragment_name}[mbox]", - field_label: _('Email'), - field_class: "person_mbox" - } ) %> + <%= create_email_field( + f, + person ? person["mbox"] : nil, + "#{fragment_name}[mbox]", + _('Email'), + html_class: "person_mbox" + ) + %>
- <%= render(partial: 'plans/plan_details/fields/text_field', locals: { - f: f, - field_value: person ? person["identifier"] : nil, - multiple: false, - field_name: "#{fragment_name}[identifier]", - field_label: _('Identifier'), - field_class: "person_identifier" - } ) %> + <%= create_text_field( + f, + person ? person["identifier"] : nil, + "#{fragment_name}[identifier]", + _('Identifier'), + html_class: "person_identifier" + ) + %>
\ No newline at end of file