From e165a552aae42a05a2ad4b0f1187ad684b376fa6 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Mon, 11 May 2026 22:37:22 +0300 Subject: [PATCH] fix(ui): block route render with centered GlobeLoader until queries resolve MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per user feedback ('вот такого не должно быть, лучше лоадер'): - /dictionaries — full-page LoadingBlock (size lg, centered min-h 60vh) пока useDictionaries query loading. Раньше size=md без centering показывался в углу — а на пустой странице это смотрелось куце. - /dictionaries/$name — same gate на detailQuery.isLoading. Без этого юзер видел partial render: пустую sidebar info panel, узкую records колонку (extra columns ещё не computed из schema), битую табличную toolbar. Теперь — централизованный GlobeLoader пока схема не дойдёт. --- .../src/routes/dictionaries.$name.tsx | 19 +++++++++++++++++++ .../src/routes/dictionaries.index.tsx | 8 +++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ordinis-admin-ui/src/routes/dictionaries.$name.tsx b/ordinis-admin-ui/src/routes/dictionaries.$name.tsx index a5be970..8e13245 100644 --- a/ordinis-admin-ui/src/routes/dictionaries.$name.tsx +++ b/ordinis-admin-ui/src/routes/dictionaries.$name.tsx @@ -598,6 +598,25 @@ function DictionaryDetail() { return false }, [detailQuery.data?.schemaJson]) + // Full-page loader пока ОБА query (detail + records) не готовы. Иначе + // юзер видит partial render — узкая колонка без extra columns, info panel + // ещё не появилась, бар нагружается частями. Per user: "вот такого не + // должно быть, лучше лоадер". + if (detailQuery.isLoading || (!detailQuery.data && !detailQuery.error)) { + return ( +
+ +
+ ) + } + if (detailQuery.error) { + return ( + + {String(detailQuery.error)} + + ) + } + return (
{scope && ( diff --git a/ordinis-admin-ui/src/routes/dictionaries.index.tsx b/ordinis-admin-ui/src/routes/dictionaries.index.tsx index 81eba94..65e3835 100644 --- a/ordinis-admin-ui/src/routes/dictionaries.index.tsx +++ b/ordinis-admin-ui/src/routes/dictionaries.index.tsx @@ -185,7 +185,13 @@ function DictionariesPage() { ) : null - if (isLoading) return + if (isLoading) { + return ( +
+ +
+ ) + } if (error) { return (