From b834f1008d7522959ed17905259c401a6bd78760 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Thu, 29 Oct 2026 12:07:38 +0400 Subject: [PATCH] =?UTF-8?q?fix(svod2):=20grid-no-grow=20=D0=B8=20enableCol?= =?UTF-8?q?umnPinning=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=B8=D1=80=D1=82?= =?UTF-8?q?=D1=83=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D0=BD=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- web/src/pages/Svod2Page/Svod2Page.jsx | 23 ++++++++++++++------- web/src/pages/Svod2Page/svod2Styles.js | 7 +++++++ web/src/pages/Svod2Page/svod2Styles.test.js | 6 ++++++ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/web/src/pages/Svod2Page/Svod2Page.jsx b/web/src/pages/Svod2Page/Svod2Page.jsx index 932a483..c129adf 100644 --- a/web/src/pages/Svod2Page/Svod2Page.jsx +++ b/web/src/pages/Svod2Page/Svod2Page.jsx @@ -12,7 +12,7 @@ import DenominationSelect from '../../components/common/DenominationSelect'; import useDenomination from '../../components/common/useDenomination'; import { useSvod } from '../SvodPage/SvodContext'; import { SvodFilters } from '../SvodPage/SvodFilters'; -import { SVOD2_TABLE_CONTAINER_SX, createColumnClassMap, getEstimateTypeClassName } from './svod2Styles'; +import { SVOD2_LAYOUT_OPTIONS, SVOD2_TABLE_CONTAINER_SX, createColumnClassMap, getEstimateTypeClassName } from './svod2Styles'; const SHEETS = [ { value: 'GO', label: 'ССП' }, @@ -273,12 +273,13 @@ const getColumnConfig = (sheet) => { return COLUMN_CONFIG_CACHE.get(sheet); }; -const scaleNumericColumns = (columns, divisor) => columns.map((column) => { - const isText = ['name', 'org_name', 'smeta_type', 'smeta_direction', 'section_code', 'contract_number'].includes(column.id); - const children = column.columns ? scaleNumericColumns(column.columns, divisor) : undefined; - if (isText || children) return { ...column, ...(children ? { columns: children } : {}) }; - return { ...column, Cell: ({ cell }) => formatValue(cell.getValue(), divisor) }; -}); +const scaleNumericColumns = (columns, divisor) => + columns.map((column) => { + const isText = ['name', 'org_name', 'smeta_type', 'smeta_direction', 'section_code', 'contract_number'].includes(column.id); + const children = column.columns ? scaleNumericColumns(column.columns, divisor) : undefined; + if (isText || children) return { ...column, ...(children ? { columns: children } : {}) }; + return { ...column, Cell: ({ cell }) => formatValue(cell.getValue(), divisor) }; + }); const matchesSearch = (row, query) => { const searchableData = { @@ -405,6 +406,7 @@ export default function Svod2Page() { enablePagination: false, enableRowVirtualization: true, enableColumnVirtualization: true, + ...SVOD2_LAYOUT_OPTIONS, columnVirtualizerOptions: getSvod2ColumnVirtualizerOptions, enableTopToolbar: false, enableBottomToolbar: false, @@ -487,7 +489,12 @@ export default function Svod2Page() { onChange={(_event, value) => setSheet(value)} sx={{ px: '1rem', minHeight: '3rem', borderBottom: '0.0625rem solid #edf0f2' }}> {SHEETS.map((item) => ( - + ))} { assert.ok(SVOD2_TABLE_CONTAINER_SX[key], key); } }); + +test('column virtualization layout uses grid-no-grow and column pinning', () => { + assert.equal(SVOD2_LAYOUT_OPTIONS.layoutMode, 'grid-no-grow'); + assert.equal(SVOD2_LAYOUT_OPTIONS.enableColumnPinning, true); +});