From dc621a1223d6e86838de9940ad42b6073908849c Mon Sep 17 00:00:00 2001 From: PotapovaA Date: Fri, 17 Jul 2026 17:18:26 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20sort-order=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8?= =?UTF-8?q?/=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RealtimeTable/utils/cellUtils.js | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/web/src/components/RealtimeTable/utils/cellUtils.js b/web/src/components/RealtimeTable/utils/cellUtils.js index 8236b09..304a8ab 100644 --- a/web/src/components/RealtimeTable/utils/cellUtils.js +++ b/web/src/components/RealtimeTable/utils/cellUtils.js @@ -84,7 +84,6 @@ export function updateCells(data, newRows) { Object.keys(newData).forEach((key) => { if (row.data && row.data[key]) { if (typeof row.data[key] === "object") { - console.log(newData[key], row.data[key], key, newData); row.data[key] = deepMerge(row.data[key], newData[key]); } else { row.data[key] = newData[key]; @@ -132,24 +131,30 @@ export function insertCell(data, newRow, expense_item_id) { return updatedRows; } + let adding = false; function findAndUpdate(rows) { for (let i = 0; i < rows.length; i++) { const row = rows[i]; - if (row.data.header.expense_item_id === expense_item_id) { + if ( + (row.sort_order >= newRowObject.sort_order) & + (row.data.line_id != newRowObject.data.line_id) + ) { + row.sort_order = row.sort_order + 1; + } + + if (!adding & (row.data.header.expense_item_id === expense_item_id)) { if (!("subRows" in row)) { row.subRows = []; } row.subRows.push(newRowObject); - return true; + adding = true; } if (row.subRows && Array.isArray(row.subRows) && row.subRows.length > 0) { const found = findAndUpdate(row.subRows); - if (found) return true; } } - return false; } findAndUpdate(updatedRows); return updatedRows; @@ -158,21 +163,25 @@ export function insertCell(data, newRow, expense_item_id) { export function deleteRow(data, lineId) { const updatedRows = JSON.parse(JSON.stringify(data)); + let rowDeleteSortOrder = false; function findAndDelete(rows) { for (let i = 0; i < rows.length; i++) { const row = rows[i]; if (row.data.line_id == lineId) { + rowDeleteSortOrder = row.sort_order; rows.splice(i, 1); - return true; + i--; + } + + if ((rowDeleteSortOrder > 0) & (row.sort_order >= rowDeleteSortOrder)) { + row.sort_order = row.sort_order - 1; } if (row.subRows && Array.isArray(row.subRows) && row.subRows.length > 0) { const found = findAndDelete(row.subRows); - if (found) return true; } } - return false; } findAndDelete(updatedRows); return updatedRows;