Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/9
This commit was merged in pull request #9.
This commit is contained in:
@@ -4,6 +4,7 @@ import styles from '../approve/ApproveFeature.module.scss';
|
||||
import { getFormComponent } from '../../forms/registry';
|
||||
import { REQUEST_TYPES } from '../../data/requests';
|
||||
import { emitRequestsChanged } from '../../shared/requestEvents';
|
||||
import { isConfirmedStaleListId } from '../../shared/approval';
|
||||
|
||||
export interface IEditFeatureProps {
|
||||
context: WebPartContext;
|
||||
@@ -11,6 +12,8 @@ export interface IEditFeatureProps {
|
||||
formKey: string;
|
||||
/** RowID редактируемой заявки из URL. */
|
||||
itemId: number;
|
||||
/** Партиция, где лежит заявка (см. IRoute.listId) — не задана у ссылок старого формата. */
|
||||
listId?: string;
|
||||
/** Закрыть панель (после сохранения). */
|
||||
onClose: () => void;
|
||||
}
|
||||
@@ -22,7 +25,7 @@ export interface IEditFeatureProps {
|
||||
//
|
||||
// Отдельно от features/submit намеренно: там форма живёт в потоке «плитки →
|
||||
// новая заявка», а тут — точечное открытие конкретной записи по ссылке.
|
||||
const EditFeature: React.FC<IEditFeatureProps> = ({ context, formKey, itemId, onClose }) => {
|
||||
const EditFeature: React.FC<IEditFeatureProps> = ({ context, formKey, itemId, listId, onClose }) => {
|
||||
const FormComponent = getFormComponent(formKey);
|
||||
const requestType = REQUEST_TYPES.filter((r) => r.id === formKey)[0];
|
||||
|
||||
@@ -30,6 +33,24 @@ const EditFeature: React.FC<IEditFeatureProps> = ({ context, formKey, itemId, on
|
||||
return <div className={styles.state}>Для формы «{formKey}» редактирование не настроено.</div>;
|
||||
}
|
||||
|
||||
// Партиция указана (заявки нумерованные, см. shared/approval/listPartitions.ts)
|
||||
// и реестр ТОЧНО знает, что такого listId в серии типа нет (см.
|
||||
// isConfirmedStaleListId) — устаревшая/битая ссылка. Если реестр про серию
|
||||
// просто ничего не знает (approval-route не ответил при старте) — это НЕ
|
||||
// повод отказывать: listId доверяем как есть, ровно как listTargetsForType в
|
||||
// myRequests.service.ts. Проверяем ЗДЕСЬ, ДО монтирования формы: внутри неё
|
||||
// имя списка резолвится синхронно (useMemo) и там уже негде красиво показать
|
||||
// ошибку без риска уронить рендер всей панели — см. vacationApprovalService и
|
||||
// аналоги в остальных формах.
|
||||
if (listId && isConfirmedStaleListId(formKey, listId)) {
|
||||
return (
|
||||
<div className={styles.state}>
|
||||
Не удалось открыть заявку: список «{listId}» не найден в реестре партиций. Ссылка могла устареть —
|
||||
попробуйте открыть заявку заново из списка.
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={styles.content}>
|
||||
<React.Suspense fallback={<div className={styles.state}>Загрузка формы…</div>}>
|
||||
@@ -37,6 +58,7 @@ const EditFeature: React.FC<IEditFeatureProps> = ({ context, formKey, itemId, on
|
||||
requestType={requestType}
|
||||
context={context}
|
||||
editId={itemId}
|
||||
editListId={listId}
|
||||
onCancel={onClose}
|
||||
onSaved={() => {
|
||||
emitRequestsChanged();
|
||||
|
||||
Reference in New Issue
Block a user