diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 4a9d89148..a36c8c1e3 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -400,23 +400,39 @@ class ReportsController < ApplicationController .keys .collect { |id| id.to_i } - modules.each do |module_id| - my_module = MyModule.find_by_id(module_id) - if my_module.present? - res << generate_new_el(false) - el = generate_el( - "reports/elements/my_module_element.html.erb", - { my_module: my_module } - ) - el[:children] = generate_module_contents_json(my_module) - res << el - end + # Get unique experiments from given modules + experiments = MyModule.where(id: modules).map(&:experiment).uniq + experiments.each do |experiment| + res << generate_new_el(false) + el = generate_el( + "reports/elements/experiment_element.html.erb", + { experiment: experiment } + ) + el[:children] = generate_experiment_contents_json(experiment, modules) + res << el end end res << generate_new_el(false) res end + def generate_experiment_contents_json(experiment, selected_modules) + res = [] + experiment.my_modules.each do |my_module| + if selected_modules.include?(my_module.id) + res << generate_new_el(false) + el = generate_el( + "reports/elements/my_module_element.html.erb", + { my_module: my_module } + ) + el[:children] = generate_module_contents_json(my_module) + res << el + res << generate_new_el(false) + end + end + res + end + def generate_module_contents_json(my_module) res = [] if (in_params? :module_steps) && my_module.protocol.present? then diff --git a/app/views/reports/elements/_experiment_element.html.erb b/app/views/reports/elements/_experiment_element.html.erb new file mode 100644 index 000000000..519f64b73 --- /dev/null +++ b/app/views/reports/elements/_experiment_element.html.erb @@ -0,0 +1,40 @@ +<% timestamp = experiment.created_at %> +<% name = experiment.name %> +
" data-name="<%= name %>" data-icon-class="glyphicon-filter"> +
+
+
+ <%=t "projects.reports.elements.experiment.user_time", timestamp: l(timestamp, format: :full) %> +
+
+ <%= render partial: "reports/elements/module_element_controls.html.erb", locals: { show_sort: true } %> +
+
+
+
+
+
+

+ + <%= name %>

+
+
+
+
+ <% if experiment.description.present? %> + <%= experiment.description %> + <% else %> + <%=t "projects.reports.elements.experiment.no_description" %> + <% end %> +
+
+
+
+ <%= children if (defined? children and children.present?) %> +
+
diff --git a/config/locales/en.yml b/config/locales/en.yml index 4ae87b5f8..7b88a1628 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -275,6 +275,11 @@ en: module_tab: "Task content" steps_tab: "Protocols content" results_tab: "Results content" + experiment_contents: + head_title: "Add contents to experiment %{experiment}" + module_tab: "Task content" + steps_tab: "Protocols content" + results_tab: "Results content" module_contents_inner: instructions: "Choose what information from task/s to include in the report" header: "Report elements" @@ -332,6 +337,10 @@ en: no_description: "No description" tags_header: "Task tags:" no_tags: "No tags" + experiment: + user_time: "Experiment created on %{timestamp}." + no_description: "No description" + no_tags: "No tags" module_activity: name: "Activity of task %{my_module}" sidebar_name: "Activity"