Add experiment content report dialog

Adding still has to be implemented
This commit is contained in:
Jure Grabnar 2016-07-29 16:53:50 +02:00
parent b402d67f24
commit acc41dae40
7 changed files with 160 additions and 23 deletions

View file

@ -176,17 +176,18 @@ function initializeNewElement(newEl) {
parentElementId = parent.data("id");
modalTitle = parent.data("modal-title");
if (parent.data("type") == "my_module") {
// Adding module contents
url = dh.data("add-module-contents-url");
} else if (parent.data("type") == "step") {
// Adding step contents
url = dh.data("add-step-contents-url");
} else if (_.contains(
["result_asset", "result_table", "result_text"],
parent.data("type"))) {
// Adding result comments
url = dh.data("add-result-contents-url");
// Select correct AJAX URL based on type
switch (parent.data("type")) {
case "experiment":
url = dh.data("add-experiment-contents-url"); break;
case "my_module":
url = dh.data("add-module-contents-url"); break;
case "step":
url = dh.data("add-step-contents-url"); break;
case "result_asset":
case "result_table":
case "result_text":
url = dh.data("add-result-contents-url"); break;
}
}

View file

@ -17,6 +17,7 @@ class ReportsController < ApplicationController
:destroy,
:save_modal,
:project_contents_modal,
:experiment_contents_modal,
:module_contents_modal,
:step_contents_modal,
:result_contents_modal,
@ -35,6 +36,7 @@ class ReportsController < ApplicationController
:generate,
:save_modal,
:project_contents_modal,
:experiment_contents_modal,
:module_contents_modal,
:step_contents_modal,
:result_contents_modal,
@ -213,24 +215,46 @@ class ReportsController < ApplicationController
end
end
# Experiment for adding contents into experiment element
def experiment_contents_modal
experiment = Experiment.find_by_id(params[:id])
respond_to do |format|
if experiment.blank?
format.json do
render json: {}, status: :not_found
end
else
format.json do
render json: {
html: render_to_string(
partial: "reports/new/modal/experiment_contents.html.erb",
locals: { project: @project, experiment: experiment }
)
}
end
end
end
end
# Modal for adding contents into module element
def module_contents_modal
my_module = MyModule.find_by_id(params[:id])
respond_to do |format|
if my_module.blank?
format.json {
format.json do
render json: {}, status: :not_found
}
end
else
format.json {
format.json do
render json: {
html: render_to_string({
html: render_to_string(
partial: "reports/new/modal/module_contents.html.erb",
locals: { project: @project, my_module: my_module }
})
)
}
}
end
end
end
end

View file

@ -11,6 +11,7 @@
class="hidden"
data-project-modal-title="<%=t "projects.reports.elements.modals.project_contents.head_title" %>"
data-add-project-contents-url="<%= project_contents_modal_project_reports_url %>"
data-add-experiment-contents-url="<%= experiment_contents_modal_project_reports_url %>"
data-add-module-contents-url="<%= module_contents_modal_project_reports_url %>"
data-add-step-contents-url="<%= step_contents_modal_project_reports_url %>"
data-add-result-contents-url="<%= result_contents_modal_project_reports_url %>"
@ -19,7 +20,7 @@
data-project-id="<%= @project.id %>"
data-save-report-url="<%= save_modal_project_reports_url %>"
data-report-id="<%= @report.present? ? @report.id : "" %>"
data-unsaved-work-text="<%=t "projects.reports.new.unsaved_work" %>"
data,unsaved-work-text="<%=t "projects.reports.new.unsaved_work" %>"
data-global-sort-text="<%=t "projects.reports.new.global_sort" %>"
>
</div>

View file

@ -0,0 +1,62 @@
<%= bootstrap_form_tag remote: true, url: experiment_contents_project_reports_path(project, format: :json), method: :post, html: { id: "add-contents-form" } do |f| %>
<%= hidden_field_tag :id, experiment.id %>
<div>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#experiment-tab" aria-controls="experiment-tab" role="tab" data-toggle="tab"><%= t("projects.reports.elements.modals.experiment_contents.experiment_tab") %></a></li>
<li role="presentation"><a href="#module-tab" aria-controls="module-tab" role="tab" data-toggle="tab"><%= t("projects.reports.elements.modals.experiment_contents.module_tab") %></a></li>
<li role="presentation"><a href="#module-steps-tab" aria-controls="module-steps-tab" role="tab" data-toggle="tab"><%= t("projects.reports.elements.modals.experiment_contents.steps_tab") %></a></li>
<li role="presentation"><a href="#step-results-tab" aria-controls="step-results-tab" role="tab" data-toggle="tab"><%= t("projects.reports.elements.modals.experiment_contents.results_tab") %></a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="experiment-tab">
<%= render partial: "reports/new/modal/experiment_contents_inner.html.erb", locals: { form: f, experiment: experiment } %>
</div>
<div role="tabpanel" class="tab-pane" id="module-tab">
<%= render partial: "reports/new/modal/module_contents_inner.html.erb", locals: { form: f } %>
</div>
<div role="tabpanel" class="tab-pane" id="module-steps-tab">
<%= render partial: "reports/new/modal/step_contents_inner.html.erb", locals: { form: f } %>
</div>
<div role="tabpanel" class="tab-pane" id="step-results-tab">
<%= render partial: "reports/new/modal/result_contents_inner.html.erb", locals: { form: f } %>
</div>
</div>
</div>
<% end %>
<script type="javascript">
$(function() {
var form = $("#add-contents-form");
var moduleTab = form.find("#module-tab");
var stepsTab = form.find("#module-steps-tab");
var moduleCheckAll = moduleTab.find(".module-check-all");
var moduleOthers = moduleTab.find("input:checkbox:not(.module-check-all)");
var moduleResultsAll = moduleTab.find(".results-all");
var moduleResults = moduleTab.find(".result-cb");
moduleCheckAll.click(function() {
moduleOthers.prop("checked", this.checked);
});
moduleOthers.click(function() {
moduleCheckAll.prop("checked", false);
});
moduleResultsAll.click(function() {
moduleResults.prop("checked", this.checked);
});
moduleResults.click(function() {
moduleResultsAll.prop("checked", false);
});
var stepsCheckAll = stepsTab.find(".step-check-all");
var stepsOthers = stepsTab.find("input:checkbox:not(.step-check-all)");
stepsCheckAll.click(function() {
stepsOthers.prop("checked", this.checked);
});
stepsOthers.click(function() {
stepsCheckAll.prop("checked", false);
});
});
</script>

View file

@ -0,0 +1,39 @@
<div>
<em>
<%= t("projects.reports.elements.modals.experiment_contents_inner.instructions") %>
</em>
</div>
<% if experiment.my_modules.count > 0 %>
<%= form.check_box :experiment, label: experiment.name, class: "experiment-all-cb" %>
<ul class="no-style experiment-contents-list">
<% experiment.my_module_groups.each do |my_module_group| %>
<% if my_module_group.my_modules.present? then %>
<% my_module_group.ordered_modules.each do |my_module| %>
<li>
<%= form.check_box "modules[#{my_module.id}]", label: my_module.name %>
</li>
<% end %>
<% end %>
<!-- Tasks without groups -->
<% modules_without_group = experiment.modules_without_group %>
<% if modules_without_group.present? and modules_without_group.count > 0 %>
<ul class="no-style experiment-contents-list">
<% modules_without_group.each do |my_module| %>
<li>
<%= form.check_box "modules[#{my_module.id}]", label: my_module.name %>
</li>
<% end %>
</ul>
<% end %>
<% end %>
</ul>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.experiment_contents_inner.no_modules") %>
</em>
</div>
<% end %>

View file

@ -275,11 +275,6 @@ 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"
@ -292,6 +287,15 @@ en:
no_results: "Task contains no results"
activity: "Activity"
samples: "Samples"
experiment_contents:
head_title: "Add contents to experiment %{experiment}"
experiment_tab: "Experiment content"
module_tab: "Task content"
steps_tab: "Protocols content"
results_tab: "Results content"
experiment_contents_inner:
instructions: "Select tasks to include in the report"
no_modules: "The experiment contains no tasks"
step_contents:
head_title: "Add contents to step %{step}"
step_tab: "Step content"

View file

@ -66,6 +66,12 @@ Rails.application.routes.draw do
post 'new/project_contents',
to: 'reports#project_contents',
as: :project_contents
get 'new/experiment_contents_modal',
to: 'reports#experiment_contents_modal',
as: :experiment_contents_modal
post 'new/experiment_contents',
to: 'reports#experiment_contents',
as: :experiment_contents
get 'new/module_contents_modal',
to: 'reports#module_contents_modal',
as: :module_contents_modal