Refactoring of modal for adding content to report. [fixes SCI-487]

This commit is contained in:
Matej Zrimšek 2017-05-09 17:56:39 +02:00
parent 27cfd55ea5
commit b97cb91840
8 changed files with 152 additions and 153 deletions

View file

@ -136,16 +136,6 @@ label {
}
}
ul {
&.project-contents-list {
padding-left: 15px !important;
}
&.experiment-contents-list {
padding-left: 30px !important;
}
}
/** "New element" floating element */
.new-element {
display: block;

View file

@ -747,6 +747,13 @@ a[data-toggle="tooltip"] {
}
}
// Checkbox tree
.checkbox-tree ul {
list-style: none;
margin: 0;
padding-left: 15px;
}
/** Add users modal */
.btn-group-existing-users {
width: 100%;

View file

@ -6,7 +6,7 @@
<% if experiment.my_modules.count > 0 %>
<%= form.check_box :experiment, label: experiment.name, class: "experiment-all-cb" %>
<ul class="no-style experiment-contents-list">
<ul class="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| %>

View file

@ -6,50 +6,66 @@
</em>
</div>
<%= form.check_box :module_content_all, label: t("projects.reports.elements.modals.module_contents_inner.check_all") %>
<div class="no-style" style="padding-left: 15px;">
<div class="checkbox-tree">
<ul>
<li>
<%= form.check_box :module_content_all, label: t("projects.reports.elements.modals.module_contents_inner.check_all") %>
<ul>
<% if my_module_undefined or my_module.protocol.steps.count > 0 %>
<%= form.check_box :module_steps, label: t("projects.reports.elements.modals.module_contents_inner.steps") %>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.module_contents_inner.no_steps") %>
</em>
</div>
<% end %>
<% if my_module_undefined or my_module.protocol.steps.count > 0 %>
<li>
<%= form.check_box :module_steps, label: t("projects.reports.elements.modals.module_contents_inner.steps") %>
</li>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.module_contents_inner.no_steps") %>
</em>
</div>
<% end %>
<% if my_module_undefined or (my_module.results.select { |r| r.active? }).present? %>
<li>
<%= form.check_box :module_results, label: t("projects.reports.elements.modals.module_contents_inner.results"), class: "results-all" %>
<ul>
<% if my_module_undefined or (my_module.results.select { |r| r.is_asset && r.active? }).count > 0 %>
<li>
<%= form.check_box :module_result_assets, label: t("projects.reports.elements.modals.module_contents_inner.result_assets"), class: "result-cb" %>
</li>
<% end %>
<% if my_module_undefined or (my_module.results.select { |r| r.is_table && r.active? }).count > 0 %>
<li>
<%= form.check_box :module_result_tables, label: t("projects.reports.elements.modals.module_contents_inner.result_tables"), class: "result-cb" %>
</li>
<% end %>
<% if my_module_undefined or (my_module.results.select { |r| r.is_text && r.active? }).count > 0 %>
<li>
<%= form.check_box :module_result_texts, label: t("projects.reports.elements.modals.module_contents_inner.result_texts"), class: "result-cb" %>
</li>
<% end %>
</ul>
</li>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.module_contents_inner.no_results") %>
</em>
</div>
<% end %>
<% if my_module_undefined or (my_module.results.select { |r| r.active? }).count > 0 %>
<%= form.check_box :module_results, label: t("projects.reports.elements.modals.module_contents_inner.results"), class: "results-all" %>
<ul class="no-style" style="padding-left: 15px;">
<% if my_module_undefined or (my_module.results.select { |r| r.is_asset && r.active? }).count > 0 %>
<li>
<%= form.check_box :module_result_assets, label: t("projects.reports.elements.modals.module_contents_inner.result_assets"), class: "result-cb" %>
<%= form.check_box :module_activity, label: t("projects.reports.elements.modals.module_contents_inner.activity") %>
</li>
<% end %>
<% if my_module_undefined or (my_module.results.select { |r| r.is_table && r.active? }).count > 0 %>
<li>
<%= form.check_box :module_result_tables, label: t("projects.reports.elements.modals.module_contents_inner.result_tables"), class: "result-cb" %>
<%= form.check_box :module_samples, label: t("projects.reports.elements.modals.module_contents_inner.samples") %>
</li>
<% end %>
<% if my_module_undefined or (my_module.results.select { |r| r.is_text && r.active? }).count > 0 %>
<li>
<%= form.check_box :module_result_texts, label: t("projects.reports.elements.modals.module_contents_inner.result_texts"), class: "result-cb" %>
</li>
<% end %>
</ul>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.module_contents_inner.no_results") %>
</em>
</div>
<% end %>
<%= form.check_box :module_activity, label: t("projects.reports.elements.modals.module_contents_inner.activity") %>
<%= form.check_box :module_samples, label: t("projects.reports.elements.modals.module_contents_inner.samples") %>
</ul>
</li>
</ul>
</div>

View file

@ -40,41 +40,6 @@
<% end %>
<script type="javascript">
$(function() {
var form = $("#add-contents-form");
var tasksTab = form.find("#tasks-tab");
var contentTab = form.find("#content-tab");
var modulesCheckAll = contentTab.find("#_module_content_all");
var modulesOthers = contentTab.find("input:checkbox[name^='[module']:not([name$='all]'])");
var modulesResultsAll = contentTab.find(".results-all");
var modulesResults = contentTab.find(".result-cb");
checkboxTree(modulesResultsAll, modulesResults);
checkboxTree(modulesCheckAll, modulesOthers);
var stepsCheckAll = contentTab.find("#_step_content_all");
var stepsOthers = contentTab.find("input:checkbox[name^='[step']:not([name$='all]'])");
checkboxTree(stepsCheckAll, stepsOthers);
});
function checkboxTree($select_all, $others) {
// Update child checkboxes based on the parent "select all" checkbox
$select_all.change(function() {
$others.prop('checked', $(this).prop("checked"));
});
$others.change(function(){
// Uncheck "select all" checkbox, if one of the listed checkbox item is unchecked
if(!$(this).prop("checked")) {
$select_all.prop('checked', false);
}
// Check "select all" checkbox if all checkboxes are checked
if ($others.filter(':checked').length == $others.length ){
$select_all.prop('checked', true);
}
});
}
function checkboxTree2() {
$(".checkbox-tree input:checkbox").change(function() {
// Update descendent checkboxes
@ -86,10 +51,8 @@
});
// Update ancestor checkboxes
var $checkboxesContainer;
while (!$checkboxesContainer ||
!$checkboxesContainer.hasClass("checkbox-tree")) {
// Loop until top checkbox is reached or until parent checkbox isn't there
while ($checkbox.length !== 0 && !$checkbox.hasClass("checkbox-tree")) {
var $checkboxesContainer = $checkbox.closest("ul");
var $parentCheckbox = $checkboxesContainer.siblings().find("input:checkbox");
var $checkboxes = $checkboxesContainer.find("input:checkbox");

View file

@ -4,41 +4,42 @@
</em>
</div>
<% if project.project_my_modules.is_archived(false).count > 0 %>
<ul class="no-style checkbox-tree">
<li>
<%= form.check_box :project, label: project.name %>
<ul class="no-style project-contents-list">
<% project.experiments.is_archived(false).each do |experiment| %>
<% next unless experiment.my_modules.is_archived(false).count > 0 %>
<li>
<%= form.check_box "experiment_#{experiment.id}", label: experiment.name %>
<ul class="no-style experiment-contents-list">
<% experiment.my_module_groups.each do |my_module_group| %>
<% if my_module_group.my_modules.is_archived(false).present? then %>
<% my_module_group.ordered_modules.is_archived(false).each do |my_module| %>
<li>
<%= form.check_box "modules[#{my_module.id}]", label: my_module.name %>
</li>
<% end %>
<% if project.project_my_modules.is_archived(false).present? %>
<div class="checkbox-tree">
<ul>
<li>
<%= form.check_box :project, label: project.name %>
<ul>
<% project.experiments.is_archived(false).each do |experiment| %>
<% next unless experiment.my_modules.is_archived(false).present? %>
<li>
<%= form.check_box "experiment_#{experiment.id}", label: experiment.name %>
<ul>
<% experiment.my_module_groups.each do |my_module_group| %>
<% next unless my_module_group.my_modules.is_archived(false).present? %>
<% my_module_group.ordered_modules.is_archived(false).each do |my_module| %>
<li>
<%= form.check_box "modules[#{my_module.id}]", label: my_module.name %>
</li>
<% end %>
<% end %>
<% end %>
<!-- Tasks without groups -->
<% modules_without_group = experiment.modules_without_group %>
<% if modules_without_group.present? and modules_without_group.count > 0 %>
<% modules_without_group.each do |my_module| %>
<li>
<%= form.check_box "modules[#{my_module.id}]", label: my_module.name %>
</li>
<!-- Tasks without groups -->
<% modules_without_group = experiment.modules_without_group %>
<% if modules_without_group.present? %>
<% modules_without_group.each do |my_module| %>
<li>
<%= form.check_box "modules[#{my_module.id}]", label: my_module.name %>
</li>
<% end %>
<% end %>
<% end %>
</ul>
</li>
<% end %>
</ul>
</li>
</ul>
</ul>
</li>
<% end %>
</ul>
</li>
</ul>
</div>
<% else %>
<div>
<em>

View file

@ -4,9 +4,17 @@
</em>
</div>
<%= form.label :result_content_all, t("projects.reports.elements.modals.result_contents_inner.check_all"), class: "checkbox" %>
<div class="no-style" style="padding-left: 15px;">
<div class="checkbox-tree">
<ul>
<li><!-- result_content_all needed?-->
<%= form.label :result_content_all, t("projects.reports.elements.modals.result_contents_inner.check_all"), class: "checkbox" %>
<ul>
<%= form.check_box :result_comments, label: t("projects.reports.elements.modals.result_contents_inner.comments") %>
<li>
<%= form.check_box :result_comments, label: t("projects.reports.elements.modals.result_contents_inner.comments") %>
</li>
</ul>
</li>
</ul>
</div>

View file

@ -6,39 +6,53 @@
</em>
</div>
<%= form.check_box :step_content_all, label: t("projects.reports.elements.modals.step_contents_inner.check_all") %>
<div class="no-style" style="padding-left: 15px;">
<div class="checkbox-tree">
<ul>
<li>
<%= form.check_box :step_content_all, label: t("projects.reports.elements.modals.step_contents_inner.check_all") %>
<ul>
<% if step_undefined or step.checklists.count > 0 %>
<%= form.check_box :step_checklists, label: t("projects.reports.elements.modals.step_contents_inner.checklists") %>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.step_contents_inner.no_checklists") %>
</em>
</div>
<% end %>
<% if step_undefined or step.checklists.present? %>
<li>
<%= form.check_box :step_checklists, label: t("projects.reports.elements.modals.step_contents_inner.checklists") %>
</li>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.step_contents_inner.no_checklists") %>
</em>
</div>
<% end %>
<% if step_undefined or step.assets.count > 0 %>
<%= form.check_box :step_assets, label: t("projects.reports.elements.modals.step_contents_inner.assets") %>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.step_contents_inner.no_assets") %>
</em>
</div>
<% end %>
<% if step_undefined or step.assets.present? %>
<li>
<%= form.check_box :step_assets, label: t("projects.reports.elements.modals.step_contents_inner.assets") %>
</li>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.step_contents_inner.no_assets") %>
</em>
</div>
<% end %>
<% if step_undefined or step.tables.count > 0 %>
<%= form.check_box :step_tables, label: t("projects.reports.elements.modals.step_contents_inner.tables") %>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.step_contents_inner.no_tables") %>
</em>
</div>
<% end %>
<% if step_undefined or step.tables.present? %>
<li>
<%= form.check_box :step_tables, label: t("projects.reports.elements.modals.step_contents_inner.tables") %>
</li>
<% else %>
<div>
<em>
<%= t("projects.reports.elements.modals.step_contents_inner.no_tables") %>
</em>
</div>
<% end %>
<%= form.check_box :step_comments, label: t("projects.reports.elements.modals.step_contents_inner.comments") %>
<li>
<%= form.check_box :step_comments, label: t("projects.reports.elements.modals.step_contents_inner.comments") %>
</li>
</ul>
</li>
</ul>
</div>