куча доработок
This commit is contained in:
@@ -2,7 +2,7 @@ import * as React from 'react';
|
||||
import styles from './RequestPortal.module.scss';
|
||||
import type { IRequestPortalProps } from './IRequestPortalProps';
|
||||
import { IconSprite } from '../shared/ui/Icon/IconSprite';
|
||||
import { navigate, useRoute, NavSection, OwnTab } from '../shared/routing';
|
||||
import { navigate, persistOwnSelection, useRoute, NavSection, OwnTab } from '../shared/routing';
|
||||
import { onRequestsChanged, emitRequestsChanged } from '../shared/requestEvents';
|
||||
import { confirmDiscardFormChanges, markFormClean, markFormDirty } from '../shared/unsavedChanges';
|
||||
import { SideNav } from './SideNav/SideNav';
|
||||
@@ -110,28 +110,27 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
|
||||
// таблица на него подписана и перечитает данные фоном, не убирая с экрана
|
||||
// текущие строки (см. RequestsTableView/SearchView).
|
||||
if (nav === route.nav && route.mode === 'submit') emitRequestsChanged();
|
||||
// Возврат в «Мои заявки» открывает ту же подвкладку и с тем же фильтром,
|
||||
// что были в прошлый раз, — иначе уход в другой раздел и обратно сбрасывал
|
||||
// бы выбор пользователя.
|
||||
navigate(
|
||||
nav === 'own'
|
||||
? { mode: 'submit', nav, ownTab: route.ownTab, ownStatus: route.ownStatus }
|
||||
: { mode: 'submit', nav }
|
||||
);
|
||||
// Подвкладку/фильтр «Моих заявок» здесь передавать не нужно: при переходе
|
||||
// ИЗ другого раздела route.ownTab всё равно undefined (parseRoute заполняет
|
||||
// его только когда nav==='own'), а при возврате на уже открытую «own» их
|
||||
// подхватит storage-фолбэк в parseRoute — то же самое значение, которое
|
||||
// пользователь выбирал последним (см. persistOwnSelection/gotoOwnTab).
|
||||
navigate({ mode: 'submit', nav });
|
||||
};
|
||||
|
||||
const gotoOwnTab = (ownTab: OwnTab): void =>
|
||||
const gotoOwnTab = (ownTab: OwnTab): void => {
|
||||
// Фильтр по статусу относится только к «Инициированным» — на других
|
||||
// подвкладках отбор задаёт сама вкладка, поэтому фильтр туда не тащим.
|
||||
navigate({
|
||||
mode: 'submit',
|
||||
nav: 'own',
|
||||
ownTab,
|
||||
ownStatus: ownTab === 'created' ? route.ownStatus : undefined,
|
||||
});
|
||||
const ownStatus = ownTab === 'created' ? route.ownStatus : undefined;
|
||||
persistOwnSelection(ownTab, ownStatus);
|
||||
navigate({ mode: 'submit', nav: 'own', ownTab, ownStatus });
|
||||
};
|
||||
|
||||
const setOwnStatus = (ownStatus: string): void =>
|
||||
navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: ownStatus || undefined });
|
||||
const setOwnStatus = (ownStatus: string): void => {
|
||||
const normalized = ownStatus || undefined;
|
||||
persistOwnSelection('created', normalized);
|
||||
navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: normalized });
|
||||
};
|
||||
// Клик по строке таблицы. СВОЯ заявка в незавершённом статусе (черновик,
|
||||
// возвращённая, отклонённая) открывается на редактирование, всё остальное —
|
||||
// на просмотр: чужую заявку править нельзя, а свою уже ушедшую по маршруту —
|
||||
|
||||
Reference in New Issue
Block a user