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) <noreply@anthropic.com>
This commit is contained in:
@@ -1,18 +1,23 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
import { useRouter } from '../../app/routing/RouterContext';
|
||||||
import { goBack } from './goBack';
|
import { goBack } from './goBack';
|
||||||
import { REPORT_TEXTS } from './texts';
|
import { REPORT_TEXTS } from './texts';
|
||||||
import styles from './ReportPage.module.scss';
|
import styles from './ReportPage.module.scss';
|
||||||
|
|
||||||
/** «← Вернуться назад» — назад по истории браузера, как в старой форме. */
|
/** «← Вернуться назад» — назад по истории браузера, как в старой форме; без истории — к списку отчётов проекта. */
|
||||||
export const BackLink: React.FC = () => (
|
export const BackLink: React.FC = () => {
|
||||||
<a
|
const { route, navigate } = useRouter();
|
||||||
href="#"
|
|
||||||
className={styles.backLink}
|
return (
|
||||||
onClick={(event) => {
|
<a
|
||||||
event.preventDefault();
|
href="#"
|
||||||
goBack();
|
className={styles.backLink}
|
||||||
}}
|
onClick={(event) => {
|
||||||
>
|
event.preventDefault();
|
||||||
{REPORT_TEXTS.back}
|
goBack(() => navigate({ page: 'reports', projectId: route.projectId }));
|
||||||
</a>
|
}}
|
||||||
);
|
>
|
||||||
|
{REPORT_TEXTS.back}
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|||||||
@@ -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 {
|
try {
|
||||||
if (window.top && window.top !== window) {
|
if (window.top && window.top !== window) {
|
||||||
window.top.history.back();
|
window.top.history.back();
|
||||||
|
|||||||
Reference in New Issue
Block a user