Fix column reordering for repositories [SCI-4070]

This commit is contained in:
Oleksii Kriuchykhin 2019-11-20 15:05:44 +01:00 committed by Urban Rotnik
parent 220c3f8eeb
commit 3481b50796
5 changed files with 23 additions and 25 deletions

View file

@ -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;
}

View file

@ -60,18 +60,18 @@ var RepositoryDatatableRowEditor = (function() {
const formId = 'repositoryNewRowForm';
let actionUrl = $(TABLE.table().node()).data('createRecord');
let rowForm = $(`
<form id="${formId}"
class="repository-row-edit-form"
action="${actionUrl}"
method="post"
data-remote="true">
</form>
<td>
<form id="${formId}"
class="repository-row-edit-form"
action="${actionUrl}"
method="post"
data-remote="true">
</form>
</td>
`);
$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() {
</form>
`);
$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');

View file

@ -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

View file

@ -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')

View file

@ -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) %>">