Исправлены ячейки
This commit is contained in:
@@ -116,7 +116,6 @@ interface CellProps {
|
||||
isMainCell: boolean
|
||||
rowSpan?: number
|
||||
colSpan?: number
|
||||
mergedValue?: any
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,11 +190,8 @@ const Cell = memo(
|
||||
}
|
||||
}
|
||||
|
||||
// Используем значение из объединенной ячейки, если доступно
|
||||
const cellDisplayValue =
|
||||
mergedCellInfo?.isMainCell && mergedCellInfo.mergedValue !== undefined
|
||||
? String(mergedCellInfo.mergedValue)
|
||||
: displayValue
|
||||
// Используем обычное значение displayValue для всех ячеек, включая объединенные
|
||||
const cellDisplayValue = displayValue
|
||||
|
||||
const handleClick = useCallback(() => {
|
||||
setActiveSheet(sheetType)
|
||||
@@ -413,7 +409,7 @@ const CellRenderer = ({
|
||||
isMainCell: mergedCellInfo.isMainCell,
|
||||
rowSpan: mergedCellInfo.spans?.rowSpan,
|
||||
colSpan: mergedCellInfo.spans?.colSpan,
|
||||
mergedValue: mergedCellInfo.mergedCell?.value,
|
||||
// Убираем mergedValue - будем использовать актуальные данные из движка
|
||||
}
|
||||
: undefined
|
||||
|
||||
@@ -716,6 +712,9 @@ const DualSpreadsheet: FC<DualSpreadsheetProps> = ({
|
||||
useEffect(() => {
|
||||
const reportTemplate = templateData?.[SHEET_NAMES.report]
|
||||
if (reportTemplate) {
|
||||
// Очищаем старые значения
|
||||
initialTemplateValues.current = {}
|
||||
|
||||
Object.entries(reportTemplate).forEach(([cellName, value]) => {
|
||||
initialTemplateValues.current[cellName] = String(value)
|
||||
})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||
import {
|
||||
CellValue,
|
||||
Workbook,
|
||||
CellValue,
|
||||
Workbook,
|
||||
} from '../lib/spreadsheet-engine/spreadsheet-engine'
|
||||
|
||||
// interface CellData {
|
||||
@@ -62,17 +62,31 @@ export function useMultiSheetEngine({
|
||||
workbookRef.current!.addSheet(sheetConfig.name)
|
||||
})
|
||||
|
||||
// Загружаем начальные данные
|
||||
if (Object.keys(initialData).length > 0) {
|
||||
workbookRef.current.fromJSON(initialData)
|
||||
// Первый пересчет для инициализации всех значений
|
||||
safeRecalc()
|
||||
} else {
|
||||
// Увеличиваем ревизию, чтобы вызвать начальную отрисовку
|
||||
setRevision((r) => r + 1)
|
||||
}
|
||||
// Увеличиваем ревизию для начальной отрисовки
|
||||
setRevision((r) => r + 1)
|
||||
}
|
||||
}, [initialData, safeRecalc, sheets]) // Восстанавливаем зависимости
|
||||
}, [sheets])
|
||||
|
||||
// Отдельный useEffect для перезагрузки данных при изменении initialData
|
||||
useEffect(() => {
|
||||
if (!workbookRef.current) return
|
||||
|
||||
if (Object.keys(initialData).length > 0) {
|
||||
// Очищаем только те листы, для которых есть новые данные
|
||||
for (const sheetName of Object.keys(initialData)) {
|
||||
const sheet = workbookRef.current.getSheet(sheetName)
|
||||
if (sheet) {
|
||||
sheet.cells.clear()
|
||||
}
|
||||
}
|
||||
|
||||
workbookRef.current.fromJSON(initialData)
|
||||
safeRecalc()
|
||||
} else {
|
||||
// Если данных нет, просто обновляем ревизию
|
||||
setRevision((r) => r + 1)
|
||||
}
|
||||
}, [initialData, safeRecalc])
|
||||
|
||||
// Синхронизация всех листов из движка
|
||||
// const syncAllSheetsFromEngine = useCallback(() => {
|
||||
|
||||
Reference in New Issue
Block a user