Заявление на увольнение (#15)
Tests / frontend-test (push) Successful in 1m17s

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/15
This commit was merged in pull request #15.
This commit is contained in:
2026-08-26 07:07:03 +00:00
parent f751f03060
commit df29d080ed
39 changed files with 2460 additions and 46 deletions
@@ -421,6 +421,12 @@ export const RequestsTableView: React.FC<IRequestsTableViewProps> = ({
? undefined
: (partial: IPage): void => {
if (cancelled) return;
// ПУСТОЙ промежуточный результат не показываем: смысл onPartial —
// не держать экран пустым, пока отвечает более медленный источник,
// а пустая страница как раз пустой экран и даёт, только вместо
// «Загрузка…» на нём появляется «Вы ещё не создавали заявок» —
// и через мгновение исчезает, когда придёт второй источник.
if (partial.rows.length === 0) return;
setRows(partial.rows);
setTotalRows(partial.totalRows);
};
@@ -477,6 +483,18 @@ export const RequestsTableView: React.FC<IRequestsTableViewProps> = ({
const q = debouncedQuery.trim();
const total = totalRows;
const visible = rows || [];
/**
* Можно ли уже судить о содержимом таблицы.
*
* Пустоту («Вы ещё не создавали заявок») объявляем ТОЛЬКО по завершённой
* загрузке именно ЭТОЙ таблицы (loadedKey), а не по любому пустому rows: до
* этого rows может быть пустым по совершенно другой причине — часть источников
* ещё в пути (см. onPartial выше, «Мои заявки» собираются из Search + REST).
* Промежуточный НЕПУСТОЙ результат показывать можно и нужно — в нём уже есть
* что смотреть.
*/
const loaded = loadedKey === dataKey || visible.length > 0;
const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));
// Страница может оказаться за пределами набора: пришла из старой ссылки или
@@ -527,8 +545,8 @@ export const RequestsTableView: React.FC<IRequestsTableViewProps> = ({
</div>
{error && <div className={styles.error}>Не удалось загрузить заявки: {error}</div>}
{!error && rows === undefined && <div className={styles.empty}>Загрузка…</div>}
{!error && rows && total === 0 && (
{!error && !loaded && <div className={styles.empty}>Загрузка…</div>}
{!error && loaded && total === 0 && (
<div className={styles.empty}>
{q ? `По запросу «${debouncedQuery}» ничего не найдено.` : EMPTY_TEXTS[view]}
</div>