From f6af34cb0a9edd8f8a878e1714de623828c7f5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=83=D1=80=20=D0=93=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D1=86=D0=BA=D0=B8=D0=B9?= Date: Mon, 19 Oct 2026 16:17:56 +0500 Subject: [PATCH] fix: send the back link to the reports list when there is no history Reports open from the list in a new tab, where history.back() did nothing. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../stroyBot/pages/report/BackLink.tsx | 31 +++++++++++-------- src/webparts/stroyBot/pages/report/goBack.ts | 11 ++++++- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/webparts/stroyBot/pages/report/BackLink.tsx b/src/webparts/stroyBot/pages/report/BackLink.tsx index e643b1c..999e7d4 100644 --- a/src/webparts/stroyBot/pages/report/BackLink.tsx +++ b/src/webparts/stroyBot/pages/report/BackLink.tsx @@ -1,18 +1,23 @@ import * as React from 'react'; +import { useRouter } from '../../app/routing/RouterContext'; import { goBack } from './goBack'; import { REPORT_TEXTS } from './texts'; import styles from './ReportPage.module.scss'; -/** «← Вернуться назад» — назад по истории браузера, как в старой форме. */ -export const BackLink: React.FC = () => ( - { - event.preventDefault(); - goBack(); - }} - > - {REPORT_TEXTS.back} - -); +/** «← Вернуться назад» — назад по истории браузера, как в старой форме; без истории — к списку отчётов проекта. */ +export const BackLink: React.FC = () => { + const { route, navigate } = useRouter(); + + return ( + { + event.preventDefault(); + goBack(() => navigate({ page: 'reports', projectId: route.projectId })); + }} + > + {REPORT_TEXTS.back} + + ); +}; diff --git a/src/webparts/stroyBot/pages/report/goBack.ts b/src/webparts/stroyBot/pages/report/goBack.ts index 3ce239f..d579797 100644 --- a/src/webparts/stroyBot/pages/report/goBack.ts +++ b/src/webparts/stroyBot/pages/report/goBack.ts @@ -1,8 +1,17 @@ +/** В новой вкладке (так отчёты открываются из списка) история состоит из одной текущей страницы. */ +const NO_HISTORY_LENGTH = 1; + /** * «← Вернуться назад» — как в старом коде: если страница открыта во фрейме, назад идёт верхнее окно, * при ошибке доступа к нему (другой домен) — текущее. + * Если возвращаться некуда (вкладка открыта из списка отчётов), вызывается onNoHistory: в старом коде + * кнопка в этом случае ничего не делала — исправлено при проверке T-REP-21. */ -export function goBack(): void { +export function goBack(onNoHistory: () => void): void { + if (window.history.length <= NO_HISTORY_LENGTH) { + onNoHistory(); + return; + } try { if (window.top && window.top !== window) { window.top.history.back();