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