mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-06 21:24:23 +08:00
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:
parent
eb95ec74a3
commit
887d9a4f52
5 changed files with 57 additions and 6 deletions
|
@ -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);
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -21,6 +21,7 @@ class SampleDatatable < AjaxDatatablesRails::Base
|
|||
'regex' => false,
|
||||
'caseInsensitive' => true },
|
||||
'columns' => [],
|
||||
'assigned' => 'all',
|
||||
'ColReorder' => [*0..6]
|
||||
}
|
||||
7.times do
|
||||
|
@ -179,9 +180,13 @@ class SampleDatatable < AjaxDatatablesRails::Base
|
|||
|
||||
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.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 }
|
||||
|
|
|
@ -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;">
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue