perf(table): управляемые columnFilters и columnSizingInfo в RealtimeTable

Значения нужны до создания таблицы, чтобы войти в ключ сброса мемоизации (design.md D3, D4).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-28 21:19:56 +04:00
parent e5f4b3b965
commit 1f553fd33e

View File

@ -26,6 +26,7 @@ import { useTableScale } from './hooks/useTableScale';
import { useBudgetYear } from './hooks/useBudgetYear'; import { useBudgetYear } from './hooks/useBudgetYear';
import { useValidationRules } from './hooks/useValidationRules'; import { useValidationRules } from './hooks/useValidationRules';
import { getRowId } from './utils/rowUtils'; import { getRowId } from './utils/rowUtils';
import { DEFAULT_COLUMN_SIZING_INFO } from './utils/columnResizeInfo';
import { getColumnVirtualizerOptions, getOrderedVisibleColumns } from './utils/columnLayoutUtils'; import { getColumnVirtualizerOptions, getOrderedVisibleColumns } from './utils/columnLayoutUtils';
import { DictVspApi } from '../../api/dict-vsp'; import { DictVspApi } from '../../api/dict-vsp';
@ -93,6 +94,8 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => {
const [showColumnFilters, setShowColumnFilters] = useState(false); const [showColumnFilters, setShowColumnFilters] = useState(false);
const [selectedColumnId, setSelectedColumnId] = useState(); const [selectedColumnId, setSelectedColumnId] = useState();
const [rowSelection, setRowSelection] = useState({}); const [rowSelection, setRowSelection] = useState({});
const [columnFilters, setColumnFilters] = useState([]);
const [columnSizingInfo, setColumnSizingInfo] = useState(DEFAULT_COLUMN_SIZING_INFO);
const rowSelectionRef = useRef(rowSelection); const rowSelectionRef = useRef(rowSelection);
rowSelectionRef.current = rowSelection; rowSelectionRef.current = rowSelection;
const [, startTransition] = useTransition(); const [, startTransition] = useTransition();
@ -332,6 +335,8 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => {
globalFilter, globalFilter,
showColumnFilters, showColumnFilters,
rowSelection, rowSelection,
columnFilters,
columnSizingInfo,
containerRef, containerRef,
tableMeta, tableMeta,
setColumnSizing, setColumnSizing,
@ -366,6 +371,8 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => {
'data-row-id': row.id, 'data-row-id': row.id,
}), }),
onColumnSizingChange: setColumnSizing, onColumnSizingChange: setColumnSizing,
onColumnFiltersChange: setColumnFilters,
onColumnSizingInfoChange: setColumnSizingInfo,
onColumnPinningChange: setColumnPinning, onColumnPinningChange: setColumnPinning,
onExpandedChange: setExpanded, onExpandedChange: setExpanded,
onGlobalFilterChange: handleGlobalFilterChange, onGlobalFilterChange: handleGlobalFilterChange,
@ -376,6 +383,8 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => {
globalFilter, globalFilter,
showColumnFilters, showColumnFilters,
rowSelection, rowSelection,
columnFilters,
columnSizingInfo,
editingCell, editingCell,
expanded, expanded,
}, },
@ -425,6 +434,8 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => {
globalFilter, globalFilter,
showColumnFilters, showColumnFilters,
rowSelection, rowSelection,
columnFilters,
columnSizingInfo,
containerRef, containerRef,
tableMeta, tableMeta,
setColumnSizing, setColumnSizing,
@ -444,6 +455,8 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => {
globalFilter, globalFilter,
showColumnFilters, showColumnFilters,
rowSelection, rowSelection,
columnFilters,
columnSizingInfo,
containerRef, containerRef,
tableMeta, tableMeta,
setColumnSizing, setColumnSizing,
@ -809,7 +822,7 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => {
columnPinning={columnPinning} columnPinning={columnPinning}
columnSizing={columnSizing} columnSizing={columnSizing}
columnVisibility={columnVisibility} columnVisibility={columnVisibility}
columnFilters={table.getState().columnFilters} columnFilters={columnFilters}
showColumnFilters={showColumnFilters} showColumnFilters={showColumnFilters}
selectedColumnId={selectedColumnId} selectedColumnId={selectedColumnId}
onColumnSelect={handleColumnSelect} onColumnSelect={handleColumnSelect}