From 3481b507960e8dad1d34f39f946e684af507427a Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Wed, 20 Nov 2019 15:05:44 +0100 Subject: [PATCH] Fix column reordering for repositories [SCI-4070] --- .../repositories/repository_datatable.js | 21 +++++++------------ .../javascripts/repositories/row_editor.js | 20 +++++++++--------- app/helpers/repository_datatable_helper.rb | 4 ++++ .../repository_table_state_service.rb | 2 +- .../repositories/_repository_table.html.erb | 1 + 5 files changed, 23 insertions(+), 25 deletions(-) diff --git a/app/assets/javascripts/repositories/repository_datatable.js b/app/assets/javascripts/repositories/repository_datatable.js index bc987bf3e..c449a5751 100644 --- a/app/assets/javascripts/repositories/repository_datatable.js +++ b/app/assets/javascripts/repositories/repository_datatable.js @@ -509,7 +509,7 @@ var RepositoryDatatable = (function(global) { sScrollXInner: '100%', scrollY: '64vh', scrollCollapse: true, - order: [[2, 'asc']], + order: $(TABLE_ID).data('default-order'), colReorder: { fixedColumnsLeft: 2, realtime: false @@ -526,6 +526,7 @@ var RepositoryDatatable = (function(global) { columnDefs: [{ // Checkbox column needs special handling targets: 0, + visible: true, searchable: false, orderable: false, className: 'dt-body-center', @@ -536,6 +537,7 @@ var RepositoryDatatable = (function(global) { }, { // Assigned column is not searchable targets: 1, + visible: true, searchable: false, orderable: true, sWidth: '1%', @@ -578,6 +580,10 @@ var RepositoryDatatable = (function(global) { columns: (function() { var columns = $(TABLE_ID).data('default-table-columns'); var customColumns = $(TABLE_ID).find('thead th[data-type]'); + for (let i = 0; i < columns.length; i += 1) { + columns[i].data = String(i); + columns[i].defaultContent = ''; + } customColumns.each((i, column) => { columns.push({ visible: true, @@ -675,19 +681,6 @@ var RepositoryDatatable = (function(global) { animateLoading(); }); - // Timeout for table header scrolling - setTimeout(function() { - TABLE.columns.adjust(); - - // Append button to inner toolbar in table - $('div.toolbarButtonsDatatable').appendTo('div.toolbar'); - $('div.toolbarButtonsDatatable').show(); - - // Append buttons for task inventory - $('div.toolbarButtons').appendTo('div.toolbar'); - $('div.toolbarButtons').show(); - }, 100); - return TABLE; } diff --git a/app/assets/javascripts/repositories/row_editor.js b/app/assets/javascripts/repositories/row_editor.js index 60ed2493c..76f965cb1 100644 --- a/app/assets/javascripts/repositories/row_editor.js +++ b/app/assets/javascripts/repositories/row_editor.js @@ -60,18 +60,18 @@ var RepositoryDatatableRowEditor = (function() { const formId = 'repositoryNewRowForm'; let actionUrl = $(TABLE.table().node()).data('createRecord'); let rowForm = $(` -
-
+ +
+
+ `); - $row.prepend(rowForm); - // First two columns are always present and visible - $row.append($(TABLE_CELL)); + $row.append(rowForm); $row.append($(TABLE_CELL)); table.columns().every(function() { @@ -117,7 +117,7 @@ var RepositoryDatatableRowEditor = (function() { `); - $row.prepend(rowForm); + $row.find('td').first().append(rowForm); TABLE.cells(row.index(), row.columns().eq(0)).every(function() { let columnId = $(TABLE.columns(this.index().column).header()).attr('id'); diff --git a/app/helpers/repository_datatable_helper.rb b/app/helpers/repository_datatable_helper.rb index 6d384c3ef..669c9aa0a 100644 --- a/app/helpers/repository_datatable_helper.rb +++ b/app/helpers/repository_datatable_helper.rb @@ -56,6 +56,10 @@ module RepositoryDatatableHelper can_manage_repository_rows?(repository) end + def default_table_order_as_js_array + Constants::REPOSITORY_TABLE_DEFAULT_STATE['order'].to_json + end + def default_table_columns Constants::REPOSITORY_TABLE_DEFAULT_STATE['columns'].to_json end diff --git a/app/services/repository_table_state_service.rb b/app/services/repository_table_state_service.rb index a92dfe755..6937e5db1 100644 --- a/app/services/repository_table_state_service.rb +++ b/app/services/repository_table_state_service.rb @@ -25,7 +25,7 @@ class RepositoryTableStateService def update_state(state) saved_state = load_state - state['order'][0] = [3, 'asc'] if state.dig('order', 0, 0).to_i < 2 + state['order'] = Constants::REPOSITORY_TABLE_DEFAULT_STATE['order'] if state.dig('order', 0, 0).to_i < 1 return if saved_state.state.except('time') == state.except('time') diff --git a/app/views/repositories/_repository_table.html.erb b/app/views/repositories/_repository_table.html.erb index 2607f8004..5ca85b89e 100644 --- a/app/views/repositories/_repository_table.html.erb +++ b/app/views/repositories/_repository_table.html.erb @@ -17,6 +17,7 @@ data-columns-delete-text="<%= I18n.t('repositories.columns_delete') %>" data-available-columns="<%= repository_available_columns_path(repository) %>" data-columns-changed="<%= I18n.t('repositories.columns_changed') %>" + data-default-order="<%= default_table_order_as_js_array %>" data-default-table-columns="<%= default_table_columns %>" data-list-items-path="<%= Rails.application.routes.url_helpers.repository_list_items_path %>" data-editable="<%= can_manage_repository_rows?(repository) %>">