From 22f14a02470cc4b7ebb6e060d37ee4dc35a3f362 Mon Sep 17 00:00:00 2001 From: pkupczyk <piotr.kupczyk@id.ethz.ch> Date: Tue, 5 Oct 2021 15:33:19 +0200 Subject: [PATCH] SSDM-11664 : NG UI & ELN : common table widget --- .../components/common/grid/GridController.js | 55 +++++++++---------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/openbis_ng_ui/src/js/components/common/grid/GridController.js b/openbis_ng_ui/src/js/components/common/grid/GridController.js index eeef6f2a59c..aa55ae4f573 100644 --- a/openbis_ng_ui/src/js/components/common/grid/GridController.js +++ b/openbis_ng_ui/src/js/components/common/grid/GridController.js @@ -165,8 +165,7 @@ export default class GridController { } async load() { - const { columns, loadColumns, rows, loadRows, onLoad } = - this.context.getProps() + const { columns, loadColumns, rows, loadRows } = this.context.getProps() if ((rows && loadRows) || (!rows && !loadRows)) { throw new Error( @@ -184,7 +183,7 @@ export default class GridController { loading: true })) - const { filters, page, pageSize, sort, sortDirection } = + const { filters, page, pageSize, sort, sortDirection, selectedRowId } = this.context.getState() let newRows, @@ -241,9 +240,7 @@ export default class GridController { totalCount: newTotalCount })) - if (onLoad) { - onLoad() - } + this.updateSelectedRow(selectedRowId) } _loadSettings() { @@ -341,14 +338,27 @@ export default class GridController { async updateSelectedRow(newSelectedRowId) { const { onSelectedRowChange } = this.context.getProps() - const { selectedRowId } = this.context.getState() - - if (newSelectedRowId !== selectedRowId) { - await this.context.setState(() => ({ - selectedRowId: newSelectedRowId - })) - if (onSelectedRowChange) { - onSelectedRowChange(this.getSelectedRow()) + const { rows, selectedRow } = this.context.getState() + + let newSelectedRow = null + + if (newSelectedRowId !== null && newSelectedRowId !== undefined) { + const visible = + _.findIndex(rows, row => row.id === newSelectedRowId) !== -1 + newSelectedRow = { + id: newSelectedRowId, + visible + } + } + + await this.context.setState(() => ({ + selectedRowId: newSelectedRowId, + selectedRow: newSelectedRow + })) + + if (onSelectedRowChange) { + if (!_.isEqual(selectedRow, newSelectedRow)) { + onSelectedRowChange(newSelectedRow) } } } @@ -562,21 +572,8 @@ export default class GridController { } getSelectedRow() { - const { selectedRowId, rows, allRows } = this.context.getState() - - if (selectedRowId !== null && selectedRowId !== undefined) { - const selectedRow = _.find(allRows, row => row.id === selectedRowId) - if (selectedRow !== undefined) { - const visible = - _.findIndex(rows, row => row.id === selectedRowId) !== -1 - return { - id: selectedRow.id, - visible - } - } - } - - return null + const { selectedRow } = this.context.getState() + return selectedRow } getTotalCount() { -- GitLab