From 84f359b39288f9cdcfa2b0d71e2dac1ff15a8666 Mon Sep 17 00:00:00 2001 From: Vinidamiap Date: Tue, 20 Aug 2024 11:06:42 -0300 Subject: [PATCH 1/2] fix(column-reordering): align column values with reordered columns from cookies Addressed an issue where column values were incorrectly aligned after reloading the page with reordered columns saved in cookies. Updated the data retrieval logic to respect the new column order by adjusting the fields to match the correct columns based on the saved order, ensuring accurate data display. --- src/bootstrap-table.js | 2 +- .../cookie/bootstrap-table-cookie.js | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/bootstrap-table.js b/src/bootstrap-table.js index 73c8c3600f..638c3129ed 100644 --- a/src/bootstrap-table.js +++ b/src/bootstrap-table.js @@ -1562,7 +1562,7 @@ class BootstrapTable { } const tds = this.header.fields.map((field, j) => { - const column = this.columns[j] + const column = this.options.columns[0][j] const value_ = Utils.getItemField(item, field, this.options.escape, column.escape) let value = '' const attrs = { diff --git a/src/extensions/cookie/bootstrap-table-cookie.js b/src/extensions/cookie/bootstrap-table-cookie.js index 43e75924eb..bf228e1a97 100644 --- a/src/extensions/cookie/bootstrap-table-cookie.js +++ b/src/extensions/cookie/bootstrap-table-cookie.js @@ -407,11 +407,40 @@ $.BootstrapTable = class extends $.BootstrapTable { initHeader (...args) { if (this.options.reorderableColumns && this.options.cookie) { + if (this.columnsSortOrder) { + this.options.columns[0] = this.reorderColumnsFromCookies(this.columnsSortOrder, this.options.columns[0]) + } this.columnsSortOrder = JSON.parse(UtilsCookie.getCookie(this, UtilsCookie.cookieIds.reorderColumns)) } super.initHeader(...args) } + reorderColumnsFromCookies (reorderedColumns) { + const reorderedList = [] + const notInReorderedList = [] + const reorderedKeys = Object.keys(reorderedColumns) + + this.options.columns[0].forEach(column => { + if (reorderedKeys.includes(column.field)) { + const fieldIndex = reorderedColumns[column.field] - 1 + + reorderedList[fieldIndex] = column + } else { + notInReorderedList.push(column) + } + }) + + let finalList = [...reorderedList, ...notInReorderedList] + + finalList = finalList.map((item, index) => { + item.fieldIndex = index + item.colspanIndex = index + return item + }) + + return finalList + } + persistReorderColumnsState (that) { UtilsCookie.setCookie(that, UtilsCookie.cookieIds.reorderColumns, JSON.stringify(that.columnsSortOrder)) } From 3fc9efd665db39e9162bbd04d3e5d698c44ab5f2 Mon Sep 17 00:00:00 2001 From: Vinidamiap Date: Tue, 20 Aug 2024 11:35:04 -0300 Subject: [PATCH 2/2] fix(column-reordering): fixed issue with reordered columns and cookies --- src/extensions/cookie/bootstrap-table-cookie.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extensions/cookie/bootstrap-table-cookie.js b/src/extensions/cookie/bootstrap-table-cookie.js index bf228e1a97..eda0aa66d1 100644 --- a/src/extensions/cookie/bootstrap-table-cookie.js +++ b/src/extensions/cookie/bootstrap-table-cookie.js @@ -408,7 +408,7 @@ $.BootstrapTable = class extends $.BootstrapTable { initHeader (...args) { if (this.options.reorderableColumns && this.options.cookie) { if (this.columnsSortOrder) { - this.options.columns[0] = this.reorderColumnsFromCookies(this.columnsSortOrder, this.options.columns[0]) + this.options.columns[0] = this.reorderColumnsFromCookies(this.columnsSortOrder) } this.columnsSortOrder = JSON.parse(UtilsCookie.getCookie(this, UtilsCookie.cookieIds.reorderColumns)) }