diff --git a/app/assets/javascripts/reports/new.js b/app/assets/javascripts/reports/new.js
index 63dc46a60..e536ab6b8 100644
--- a/app/assets/javascripts/reports/new.js
+++ b/app/assets/javascripts/reports/new.js
@@ -1220,8 +1220,20 @@ function reportHandsonTableConverter() {
disableSearch: true,
onChange: function() {
let template = $('#templateSelector').val();
- $.get($('#templateSelector').data('valuesEditorPath'), { template: template }, function(result) {
+ let params = {
+ project_id: dropdownSelector.getValues('#projectSelector'),
+ template: template
+ };
+ $.get($('#templateSelector').data('valuesEditorPath'), params, function(result) {
$('.report-template-values-container').html(result.html);
+ $('.report-template-value-dropdown').each(function() {
+ dropdownSelector.init($(this), {
+ singleSelect: false,
+ closeOnSelect: true,
+ noEmptyOption: true,
+ selectAppearance: 'simple'
+ });
+ });
});
}
});
diff --git a/app/components/reports/multi_checkbox_input_component.html.erb b/app/components/reports/multi_checkbox_input_component.html.erb
index 98ff08ff9..686e1ec1b 100644
--- a/app/components/reports/multi_checkbox_input_component.html.erb
+++ b/app/components/reports/multi_checkbox_input_component.html.erb
@@ -4,7 +4,7 @@
<% @items.each do |key, value| %>
- <%= check_box_tag "#{@name}[]", key, (@value && @value[key.to_s] == 'true') ,class: 'sci-checkbox', data: { type: 'MultiCheckboxInputComponent' } %>
+ <%= check_box_tag "#{@name}[]", key, (@value && @value[key.to_s] == 'true'), class: 'sci-checkbox', data: { type: 'MultiCheckboxInputComponent' } %>
<%= value %>
diff --git a/app/components/reports/project_members_input_component.html.erb b/app/components/reports/project_members_input_component.html.erb
new file mode 100644
index 000000000..0a431c94d
--- /dev/null
+++ b/app/components/reports/project_members_input_component.html.erb
@@ -0,0 +1,11 @@
+<% if @editing %>
+
+ <%= label_tag @name, @label %>
+ <%= select_tag @name, options_from_collection_for_select(@project_members, :id, :name), placeholder: @placeholder, class: 'sci-input-field report-template-value-dropdown', data: { type: 'ProjectMembersInputComponent' } %>
+
+<% else %>
+ <% @project_members.where(id: @value).pluck(@displayed_field).each do |field| %>
+ <%= field %>
+
+ <% end %>
+<% end %>
diff --git a/app/components/reports/team_member_input_component.rb b/app/components/reports/project_members_input_component.rb
similarity index 54%
rename from app/components/reports/team_member_input_component.rb
rename to app/components/reports/project_members_input_component.rb
index ec5dbc2ed..ec4b436e5 100644
--- a/app/components/reports/team_member_input_component.rb
+++ b/app/components/reports/project_members_input_component.rb
@@ -1,10 +1,11 @@
# frozen_string_literal: true
module Reports
- class TeamMemberInputComponent < TemplateValueComponent
- def initialize(report:, name:, label:, placeholder: nil, editing: true, team:)
+ class ProjectMembersInputComponent < TemplateValueComponent
+ def initialize(report:, name:, label:, placeholder: nil, editing: true, displayed_field: :full_name)
super(report: report, name: name, label: label, placeholder: placeholder, editing: editing)
- @team_members = team.users
+ @project_members = report.project&.users
+ @displayed_field = displayed_field
end
end
end
diff --git a/app/components/reports/team_member_input_component.html.erb b/app/components/reports/team_member_input_component.html.erb
deleted file mode 100644
index 4ef7722d7..000000000
--- a/app/components/reports/team_member_input_component.html.erb
+++ /dev/null
@@ -1,8 +0,0 @@
-<% if @editing %>
-
- <%= label_tag @name, @label %>
- <%= select_tag @name, options_from_collection_for_select(@team_members, :id, :name), placeholder: @placeholder, class: 'sci-input-field', data: { type: 'TeamMemberInputComponent' } %>
-
-<% else %>
- <%= @value %>
-<% end %>
diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb
index 4ddb66816..1941177aa 100644
--- a/app/controllers/reports_controller.rb
+++ b/app/controllers/reports_controller.rb
@@ -10,6 +10,7 @@ class ReportsController < ApplicationController
generate_pdf
generate_docx
save_modal
+ new_template_values
project_contents
experiment_contents_modal
module_contents_modal
@@ -57,6 +58,9 @@ class ReportsController < ApplicationController
template = Extends::REPORT_TEMPLATES[params[:template].to_sym]
return render_404 if template.blank?
+ report = current_team.reports.where(project: @project).find_by(id: params[:report_id])
+ report ||= current_team.reports.new(project: @project)
+
respond_to do |format|
format.json do
if lookup_context.template_exists?("reports/templates/#{template}/edit.html.erb")
@@ -64,7 +68,7 @@ class ReportsController < ApplicationController
html: render_to_string(
template: "reports/templates/#{template}/edit.html.erb",
layout: 'reports/template_values_editor',
- locals: { report: Report.find_by(id: params[:report_id]) || Report.new }
+ locals: { report: report }
)
}
else
diff --git a/app/helpers/reports_helper.rb b/app/helpers/reports_helper.rb
index 67a950976..f22834b9e 100644
--- a/app/helpers/reports_helper.rb
+++ b/app/helpers/reports_helper.rb
@@ -173,6 +173,19 @@ module ReportsHelper
html_doc.to_s
end
+ def report_experiment_descriptions(report)
+ report.report_elements.experiment.pluck(:description)
+ end
+
+ def assigned_to_report_repository_items(report, repository_name)
+ repository = Repository.accessible_by_teams(report.team).where(name: repository_name).take
+ return RepositoryRow.none if repository.blank?
+
+ my_modules = MyModule.where(experiment: { project: report.project })
+ .where(id: report.report_elements.my_module.select(:my_module_id))
+ repository.repository_rows.joins(:my_modules).where(my_modules: my_modules)
+ end
+
private
def obj_name_to_filename(obj, filename_suffix = '')
diff --git a/app/views/reports/templates/template_1/cover.html.erb b/app/views/reports/templates/template_1/cover.html.erb
index b5418cf2c..75e629e53 100644
--- a/app/views/reports/templates/template_1/cover.html.erb
+++ b/app/views/reports/templates/template_1/cover.html.erb
@@ -84,7 +84,10 @@
1. PRODUCT
- <%# template[:product] %> %>
+ <% report_experiment_descriptions(report).each do |description| %>
+ <%= description %>
+
+ <% end %>
@@ -92,7 +95,7 @@
2. SAMPLE NUMBER
- <%# template[:sample_number] %>
+ <%= assigned_to_report_repository_items(report, 'Samples').pluck(:name).join(', ') %>
|
@@ -246,7 +249,7 @@
11. RESERVE SAMPLE
- <%# template[:reserve_sample] %>
+ <%= render Reports::TextInputComponent.new(report: report, name: :reserve_sample, label: 'Reserve sample', editing: false) %>
diff --git a/app/views/reports/templates/template_1/edit.html.erb b/app/views/reports/templates/template_1/edit.html.erb
index 49eec9e98..2d9229c1c 100644
--- a/app/views/reports/templates/template_1/edit.html.erb
+++ b/app/views/reports/templates/template_1/edit.html.erb
@@ -1,8 +1,3 @@
-<% content_for :header do %>
- <%= render Reports::TextInputComponent.new(report: report, name: :product, label: 'Product') %>
- <%= render Reports::TextInputComponent.new(report: report, name: :sample_number, label: 'Sample number') %>
-<% end %>
-
<% content_for :cover do %>
<%= render Reports::MultiCheckboxInputComponent.new(
report: report,
@@ -31,6 +26,7 @@
<%= render Reports::CheckboxInputComponent.new(report: report, name: :labeling_none, label: 'None') %>
<%= render Reports::LargeTextInputComponent.new(report: report, name: :analysis_summary, label: 'Summary of analysis') %>
+ <%= render Reports::TextInputComponent.new(report: report, name: :reserve_sample, label: 'Reserve sample') %>
<%= render Reports::CheckboxInputComponent.new(report: report, name: :analyst_signature_broke, label: 'Broke seal') %>
<%= render Reports::TextInputComponent.new(report: report, name: :analyst_signature_a, label: 'Analyst signature A') %>
<%= render Reports::TextInputComponent.new(report: report, name: :analyst_signature_b, label: 'Analyst signature B') %>
@@ -41,7 +37,7 @@
<% end %>
<% content_for :footer do %>
- <%= render Reports::TeamMemberInputComponent.new(report: report, name: :analyst, label: 'Analyst', team: current_team) %>
- <%= render Reports::TextInputComponent.new(report: report, name: :analyst_number, label: 'Employee number') %>
- <%= render Reports::TeamMemberInputComponent.new(report: report, name: :checked_by, label: 'Checked by', team: current_team) %>
+ <%= render Reports::ProjectMembersInputComponent.new(report: report, name: :analyst, label: 'Analyst') %>
+ <%= render Reports::ProjectMembersInputComponent.new(report: report, name: :analyst_number, label: 'Employee number', displayed_field: :external_id) %>
+ <%= render Reports::ProjectMembersInputComponent.new(report: report, name: :checked_by, label: 'Checked by') %>
<% end %>
diff --git a/app/views/reports/templates/template_1/footer.html.erb b/app/views/reports/templates/template_1/footer.html.erb
index 39973e5fb..bd6c97f08 100644
--- a/app/views/reports/templates/template_1/footer.html.erb
+++ b/app/views/reports/templates/template_1/footer.html.erb
@@ -44,7 +44,7 @@
ANALYST(S)
- <%= render Reports::TeamMemberInputComponent.new(report: report, name: :analyst, label: 'Analyst', editing: false, team: current_team) %>
+ <%= render Reports::ProjectMembersInputComponent.new(report: report, name: :analyst, label: 'Analyst', editing: false) %>
@@ -52,7 +52,7 @@
ANALYST EMPLOYEE NO.
- <%= render Reports::TextInputComponent.new(report: report, name: :analyst_number, label: 'Employee number', editing: false) %>
+ <%= render Reports::ProjectMembersInputComponent.new(report: report, name: :analyst_number, label: 'Employee number', editing: false, displayed_field: :external_id) %>
|
@@ -60,7 +60,7 @@
CHECKED BY:
- <%= render Reports::TeamMemberInputComponent.new(report: report, name: :checked_by, label: 'Checked by', editing: false, team: current_team) %>
+ <%= render Reports::ProjectMembersInputComponent.new(report: report, name: :checked_by, label: 'Checked by', editing: false) %>
|