Samples - show all/show assigned [SCI-1277] (#644)

* Samples - show all/show assigned [SCI-1277]

* Some fixes in code

* Some minor fixes in code

* Omit present

* Correct missed present

* Fixing hound warnings
This commit is contained in:
ajugo 2017-06-06 12:46:56 +02:00 committed by GitHub
parent eb95ec74a3
commit 887d9a4f52
5 changed files with 57 additions and 6 deletions

View file

@ -33,9 +33,12 @@ var loadFirstTime = true;
var table;
var originalHeader;
var view_assigned;
function dataTableInit() {
// Make a copy of original samples table header
originalHeader = $('#samples thead').children().clone();
view_assigned = 'assigned';
table = $('#samples').DataTable({
order: [[2, 'desc']],
dom: "R<'row'<'col-sm-9-custom toolbar'l><'col-sm-3-custom'f>>tpi",
@ -53,6 +56,9 @@ function dataTableInit() {
destroy: true,
ajax: {
url: $('#samples').data('source'),
data: function ( d ) {
d.assigned = view_assigned;
},
global: false,
type: 'POST'
},
@ -819,6 +825,15 @@ function onClickAddSample() {
});
}
$('#assignedSamples').on('click', function () {
view_assigned = 'assigned';
table.draw();
});
$('#allSamples').on('click', function () {
view_assigned = 'all';
table.draw();
});
// Handle enter key
$(document).off('keypress').keypress(function(event) {
var keycode = (event.keyCode ? event.keyCode : event.which);

View file

@ -17,6 +17,12 @@ $("form#form-samples-file")
$(this).find(".form-group").append("<span class='help-block'>" + data.responseJSON.message + "</span>");
});
$('.sample-assign-group > .btn').click(function() {
$('.btn-group > .btn').removeClass('active btn-primary');
$('.btn-group > .btn').addClass('btn-default');
$(this).addClass('active btn-primary');
});
// Fetch samples data and updates the select options fields for
// sample group and sample type column
function updateSamplesTypesandGroups() {

View file

@ -21,6 +21,7 @@ class SampleDatatable < AjaxDatatablesRails::Base
'regex' => false,
'caseInsensitive' => true },
'columns' => [],
'assigned' => 'all',
'ColReorder' => [*0..6]
}
7.times do
@ -178,10 +179,14 @@ class SampleDatatable < AjaxDatatablesRails::Base
@assigned_samples = @my_module.samples
samples = samples.joins("LEFT OUTER JOIN sample_my_modules ON
(samples.id = sample_my_modules.sample_id AND
(sample_my_modules.my_module_id = #{@my_module.id.to_s} OR
sample_my_modules.id IS NULL))")
.references(:sample_my_modules)
(samples.id = sample_my_modules.sample_id AND
(sample_my_modules.my_module_id =
#{@my_module.id} OR
sample_my_modules.id IS NULL))")
.references(:sample_my_modules)
if params[:assigned] == 'assigned'
samples = samples.where('"sample_my_modules"."id" > 0')
end
elsif @project
@assigned_samples = @project.assigned_samples
ids = @project.my_modules_ids
@ -198,6 +203,16 @@ class SampleDatatable < AjaxDatatablesRails::Base
sample_my_modules.id IS NULL))")
.references(:sample_my_modules)
end
if params[:assigned] == 'assigned'
samples = samples.joins('LEFT OUTER JOIN "my_modules" ON
"my_modules"."id" =
"sample_my_modules"."my_module_id"')
.joins('LEFT OUTER JOIN "experiments" ON
"experiments"."id" =
"my_modules"."experiment_id"')
.where('"experiments"."project_id" = ?', @project.id)
.where('"my_modules"."nr_of_assigned_samples" > 0')
end
elsif @experiment
@assigned_samples = @experiment.assigned_samples
ids = @experiment.my_modules.select(:id)
@ -207,6 +222,14 @@ class SampleDatatable < AjaxDatatablesRails::Base
(sample_my_modules.my_module_id IN (#{ids.to_sql}) OR
sample_my_modules.id IS NULL))")
.references(:sample_my_modules)
if params[:assigned] == 'assigned'
samples = samples.joins('LEFT OUTER JOIN "my_modules" ON
"my_modules"."id" =
"sample_my_modules"."my_module_id"')
.where('"my_modules"."experiment_id" = ?',
@experiment.id)
.where('"my_modules"."nr_of_assigned_samples" > 0')
end
end
# Make mappings of custom fields, so we have same id for every column
@ -297,9 +320,9 @@ class SampleDatatable < AjaxDatatablesRails::Base
.distinct
# check the input param and merge the two arrays of ids
if params[:order].values[0]["dir"] == "asc"
if params[:order].values[0]['dir'] == 'asc'
ids = assigned + unassigned
elsif params[:order].values[0]["dir"] == "desc"
elsif params[:order].values[0]['dir'] == 'desc'
ids = unassigned + assigned
end
ids = ids.collect { |s| s.id }

View file

@ -36,6 +36,11 @@
<span class="glyphicon glyphicon-cloud-download"></span>
<span class="hidden-xs"><%= t("samples.export") %></span>
</a>
<div id="show-assigned-buttons" class="btn-group sample-assign-group" data-toggle="buttons">
<button type="button" class="active btn btn-primary" id="assignedSamples"><%= t("samples.view_assigned_samples") %></button>
<button type="button" class="btn btn-default" id="allSamples"><%= t("samples.view_all_samples") %></button>
</div>
<% end %>
<div id="datatables-buttons" style="display: inline;">

View file

@ -853,6 +853,8 @@ en:
add_new_sample_type: "Add sample type"
add_new_sample_group: "Add sample group"
add_new_column: "Add column"
view_all_samples: "View all samples"
view_assigned_samples: "View assigned samples"
modal_info:
added_on: "Added on"
added_by: "Added by"