6.19.7: Сброс скролла и загрузка при смене проекта
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 1m16s
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 1m16s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -677,6 +677,8 @@ function AppContent() {
|
||||
// Refs для отслеживания активного таба
|
||||
const prevActiveTabRef = useRef(null)
|
||||
const lastLoadedTabRef = useRef(null) // Отслеживаем последний загруженный таб, чтобы избежать двойной загрузки
|
||||
const fullStatisticsScrollRef = useRef(null)
|
||||
const lastFullProjectRef = useRef(selectedProject)
|
||||
|
||||
// Обновляем ref при изменении данных
|
||||
useEffect(() => {
|
||||
@@ -1102,11 +1104,15 @@ function AppContent() {
|
||||
lastLoadedTabRef.current = tabKey
|
||||
const projectName = activeTab === 'full' ? selectedProject : null
|
||||
loadTabData(activeTab, false, projectName)
|
||||
if (activeTab === 'full') lastFullProjectRef.current = selectedProject
|
||||
} else if (isReturningToTab) {
|
||||
// Возврат на таб - фоновая загрузка
|
||||
// Возврат на таб
|
||||
lastLoadedTabRef.current = tabKey
|
||||
const projectName = activeTab === 'full' ? selectedProject : null
|
||||
loadTabData(activeTab, true, projectName)
|
||||
// Если проект изменился - загрузка с индикатором, иначе фоновая
|
||||
const isBackground = activeTab === 'full' && lastFullProjectRef.current !== selectedProject ? false : true
|
||||
loadTabData(activeTab, isBackground, projectName)
|
||||
if (activeTab === 'full') lastFullProjectRef.current = selectedProject
|
||||
}
|
||||
|
||||
prevActiveTabRef.current = activeTab
|
||||
@@ -1128,6 +1134,13 @@ function AppContent() {
|
||||
const isAnyLoading = currentWeekLoading || fullStatisticsLoading || prioritiesLoading || isRefreshing
|
||||
const hasAnyError = currentWeekError || fullStatisticsError || prioritiesError
|
||||
|
||||
// Сбрасываем скролл экрана статистики при его открытии
|
||||
useEffect(() => {
|
||||
if (activeTab === 'full' && fullStatisticsScrollRef.current) {
|
||||
fullStatisticsScrollRef.current.scrollTop = 0
|
||||
}
|
||||
}, [activeTab])
|
||||
|
||||
// Сохраняем выбранный таб, чтобы восстановить его после перезагрузки
|
||||
useEffect(() => {
|
||||
try {
|
||||
@@ -1238,7 +1251,7 @@ function AppContent() {
|
||||
)}
|
||||
|
||||
{loadedTabs.full && (
|
||||
<div className={getTabContainerClasses('full')}>
|
||||
<div ref={fullStatisticsScrollRef} className={getTabContainerClasses('full')}>
|
||||
<div className={getInnerContainerClasses('full')}>
|
||||
<FullStatistics
|
||||
selectedProject={selectedProject}
|
||||
|
||||
Reference in New Issue
Block a user