куча доработок
This commit is contained in:
@@ -7,11 +7,12 @@ import {
|
||||
getApprovalQueueIndex,
|
||||
getLinkedTypes,
|
||||
getOwnRequests,
|
||||
getOwnRequestsByStatus,
|
||||
hydratePendingAuthors,
|
||||
searchOwnRequests,
|
||||
} from './myRequests.service';
|
||||
import { IMyRequest } from './models/IMyRequest';
|
||||
import { REQUEST_STATUS, REQUEST_STATUS_CHOICES, IRequestType } from '../../shared/approval';
|
||||
import { REQUEST_STATUS, REQUEST_STATUS_CHOICES, IRequestType, StatusBadge } from '../../shared/approval';
|
||||
import { onRequestsChanged } from '../../shared/requestEvents';
|
||||
import { usePersistedQuery, useDebouncedQuery } from '../../shared/usePersistedQuery';
|
||||
import { IPage, pageKey, pageSignature, readPage, writePage } from './pageCache';
|
||||
@@ -103,23 +104,6 @@ function formatDate(iso: string): string {
|
||||
return `${dd}.${mm}.${d.getFullYear()}`;
|
||||
}
|
||||
|
||||
function statusClass(status: string): string {
|
||||
switch (status) {
|
||||
case REQUEST_STATUS.approved:
|
||||
return styles.statusApproved;
|
||||
case REQUEST_STATUS.rejected:
|
||||
return styles.statusRejected;
|
||||
case REQUEST_STATUS.returned:
|
||||
return styles.statusReturned;
|
||||
case REQUEST_STATUS.onApproval:
|
||||
return styles.statusOnApproval;
|
||||
case REQUEST_STATUS.draft:
|
||||
return styles.statusDraft;
|
||||
default:
|
||||
return styles.statusDefault;
|
||||
}
|
||||
}
|
||||
|
||||
// Таблица заявок. Клик в ЛЮБОМ месте строки открывает заявку (кликабельна вся
|
||||
// строка, а не только название), поэтому строка — <tr> с onClick + tabIndex
|
||||
// (доступ с клавиатуры: Enter/Space).
|
||||
@@ -173,7 +157,7 @@ const Table: React.FC<{
|
||||
)}
|
||||
{columns.status && (
|
||||
<td className={styles.colStatus}>
|
||||
<span className={`${styles.status} ${statusClass(r.status)}`}>{r.status || '—'}</span>
|
||||
{r.status ? <StatusBadge status={r.status} size="sm" /> : '—'}
|
||||
</td>
|
||||
)}
|
||||
</tr>
|
||||
@@ -205,9 +189,12 @@ const Table: React.FC<{
|
||||
// после фильтрации — нарезка на страницы и дочитывание автора
|
||||
// (hydratePendingAuthors) — тоже только для видимой страницы.
|
||||
//
|
||||
// Отбор по статусу ЗАЯВКИ ('rework' и фильтр на 'own:created') уходит в тот же
|
||||
// KQL отдельным условием (см. MP_TICKET_STATUS) — то есть работает вместе с
|
||||
// текстовым поиском и с серверной постраничностью, без вычитывания архива.
|
||||
// Отбор по статусу ЗАЯВКИ ('rework' и фильтр на 'own:created') — НЕ через KQL:
|
||||
// managed property для произвольной Choice-колонки ненадёжна (см.
|
||||
// getOwnRequestsByStatus в myRequests.service.ts — там объяснение и ссылка на
|
||||
// реальный инцидент). Вместо этого Search ищет только по автору (надёжная
|
||||
// AuthorOWSUSER), а статус фильтруется в памяти по полям, дочитанным через
|
||||
// REST; постраничность там же, в памяти.
|
||||
//
|
||||
// Все варианты перечитываются по событию rp-requests-changed
|
||||
// (shared/requestEvents) — после создания заявки и после решения согласующего.
|
||||
@@ -263,13 +250,17 @@ export const RequestsTableView: React.FC<IRequestsTableViewProps> = ({
|
||||
const q = debouncedQuery.trim();
|
||||
|
||||
const fetchPage = async (): Promise<IPage> => {
|
||||
// Свои заявки: «Доработка» — тот же список, что «Инициированные», просто
|
||||
// со статусом, зашитым в раздел, а не выбранным в фильтре.
|
||||
if (view === 'rework' || view === 'own:created') {
|
||||
// «Доработка» — тот же список, что «Инициированные», просто со статусом,
|
||||
// зашитым в раздел, а не выбранным в фильтре.
|
||||
if (view === 'rework' || (view === 'own:created' && statusFilter)) {
|
||||
const status = view === 'rework' ? REQUEST_STATUS.returned : statusFilter;
|
||||
return getOwnRequestsByStatus(context, types, status, page, debouncedQuery);
|
||||
}
|
||||
|
||||
if (view === 'own:created') {
|
||||
return q.length > 0
|
||||
? searchOwnRequests(context, types, debouncedQuery, page, status)
|
||||
: getOwnRequests(context, types, page, status);
|
||||
? searchOwnRequests(context, types, debouncedQuery, page)
|
||||
: getOwnRequests(context, types, page);
|
||||
}
|
||||
|
||||
const queue = QUEUE_BY_VIEW[view];
|
||||
|
||||
Reference in New Issue
Block a user