From 94d74b8101698f79269432e98c95ab50a0465153 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Fri, 16 Jun 2017 11:47:41 +0200 Subject: [PATCH] Make assigned column always visible in repositories [SCI-1346] --- .../repositories/repository_datatable.js | 9 +++------ app/datatables/repository_datatable.rb | 14 ++++++++++++-- app/views/repositories/_repository_table.html.erb | 6 +----- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/repositories/repository_datatable.js b/app/assets/javascripts/repositories/repository_datatable.js index 28cf3c22d..a1e486a6a 100644 --- a/app/assets/javascripts/repositories/repository_datatable.js +++ b/app/assets/javascripts/repositories/repository_datatable.js @@ -42,6 +42,7 @@ function dataTableInit() { originalHeader = $('#repository-table thead').children().clone(); viewAssigned = 'assigned'; table = $('#repository-table').DataTable({ + order: [[2, 'desc']], dom: "R<'row'<'col-sm-9-custom toolbar'l><'col-sm-3-custom'f>>tpi", stateSave: true, processing: true, @@ -157,12 +158,8 @@ function dataTableInit() { // Reload correct column order and visibility (if you refresh page) // First two columns are fixed table.column(0).visible(true); - if ($('#assigned').text().length === 0) { - table.column(1).visible(false); - } else { - table.column(1).visible(true); - } - for (var i = 1; i < table.columns()[0].length; i++) { + table.column(1).visible(true); + for (var i = 2; i < table.columns()[0].length; i++) { var visibility = false; if (myData.columns[i]) { visibility = myData.columns[i].visible; diff --git a/app/datatables/repository_datatable.rb b/app/datatables/repository_datatable.rb index d6f4ae306..3a86ede29 100644 --- a/app/datatables/repository_datatable.rb +++ b/app/datatables/repository_datatable.rb @@ -102,7 +102,7 @@ class RepositoryDatatable < AjaxDatatablesRails::Base records.map do |record| row = { 'DT_RowId': record.id, - '1': @my_module ? assigned_row(record) : '', + '1': assigned_row(record), '2': escape_input(record.name), '3': I18n.l(record.created_at, format: :full), '4': escape_input(record.created_by.full_name), @@ -155,6 +155,11 @@ class RepositoryDatatable < AjaxDatatablesRails::Base ) .joins(:created_by) .where(repository: @repository) + else + @assigned_rows = repository_rows.joins( + 'INNER JOIN my_module_repository_rows ON + (repository_rows.id = my_module_repository_rows.repository_row_id)' + ) end # Make mappings of custom columns, so we have same id for every column @@ -189,16 +194,21 @@ class RepositoryDatatable < AjaxDatatablesRails::Base if params[:order].present? && params[:order].length == 1 if sort_column(params[:order].values[0]) == ASSIGNED_SORT_COL # If "assigned" column is sorted + direction = sort_null_direction(params[:order].values[0]) if @my_module # Depending on the sort, order nulls first or # nulls last on repository_cells association - direction = sort_null_direction(params[:order].values[0]) records.joins( "LEFT OUTER JOIN my_module_repository_rows ON (repository_rows.id = my_module_repository_rows.repository_row_id AND (my_module_repository_rows.my_module_id = #{@my_module.id} OR my_module_repository_rows.id IS NULL))" ).order("my_module_repository_rows.id NULLS #{direction}") + else + records.joins( + 'LEFT OUTER JOIN my_module_repository_rows ON + (repository_rows.id = my_module_repository_rows.repository_row_id)' + ).order("my_module_repository_rows.id NULLS #{direction}") end elsif sorting_by_custom_column # Check if have to filter records first diff --git a/app/views/repositories/_repository_table.html.erb b/app/views/repositories/_repository_table.html.erb index 8d841be46..3147dae51 100644 --- a/app/views/repositories/_repository_table.html.erb +++ b/app/views/repositories/_repository_table.html.erb @@ -15,11 +15,7 @@ - <% if @my_module %> - <%= t("repositories.table.assigned") %> - <% else %> - - <% end %> + <%= t("repositories.table.assigned") %> <%= t("repositories.table.row_name") %> <%= t("repositories.table.added_on") %> <%= t("repositories.table.added_by") %>