fix(backups): показывать частичный результат внутри формы

This commit is contained in:
Denozordec committed 2026-10-01 20:39:35 +07:00
1 parent ad457b90a9
commit 98b4c39a00
18 files changed
+112 -16

No files matched your search

+11 -5
View File
@@ -26,6 +26,7 @@ import {
StepperTitle,
StepperTrigger,
} from "@/components/reui/stepper"
import { Alert, AlertDescription, AlertTitle } from "@/components/reui/alert"
import { cn } from "@/lib/utils"
export function BackupCreateSheet({
@@ -49,6 +50,7 @@ export function BackupCreateSheet({
jobId,
jobStatus,
result,
error,
onReset,
}: {
open: boolean
@@ -70,6 +72,7 @@ export function BackupCreateSheet({
jobId?: string
jobStatus?: string
result?: string
error?: string | null
onReset: () => void
onSubmit: () => void
}) {
@@ -78,10 +81,12 @@ export function BackupCreateSheet({
<SheetContent side="right" className="data-[side=right]:w-full data-[side=right]:sm:max-w-md min-w-0 flex flex-col gap-0 p-0">
<SheetHeader className="px-6 pt-6 pb-4 border-b shrink-0">
<SheetTitle>{locked ? "Задача резервного копирования" : "Новый бэкап"}</SheetTitle>
<SheetDescription>Снять конфигурацию вручную с выбранных серверов</SheetDescription>
<SheetDescription>{locked ? "Подтверждённые файлы и ошибки выполнения" : "Снять конфигурацию вручную с выбранных серверов"}</SheetDescription>
</SheetHeader>
{locked && <div role="status" className="px-6 py-3 text-sm break-all"><p>ID: {jobId}</p><p>{jobStatus}</p>{result && <p>{result}</p>}<p className="text-xs text-muted-foreground">Закрытие формы не отменяет задачу. Повторная проверка не создаёт новые копии.</p></div>}
<div className="min-h-0 flex-1 overflow-y-auto">
{locked && <div role="status" className="px-6 py-3 text-sm [overflow-wrap:anywhere]"><p>ID: {jobId}</p><p>{jobStatus}</p>{result && <p>{result}</p>}<p className="text-xs text-muted-foreground">Закрытие формы не отменяет задачу. Повторная проверка не создаёт новые копии.</p></div>}
{error && <div className="px-6 pb-3"><Alert variant="warning" aria-label="Результат задачи"><AlertTitle>{terminal ? "Результат с ограничениями" : "Запрос не подтверждён"}</AlertTitle><AlertDescription className="[overflow-wrap:anywhere]">{error}</AlertDescription></Alert></div>}
<fieldset disabled={busy || locked} className="flex-1 min-h-0 flex flex-col">
<Stepper value={step} onValueChange={onStepChange} className="flex-1 flex flex-col min-h-0 px-6 py-5">
<StepperNav className="mb-5">
@@ -166,16 +171,17 @@ export function BackupCreateSheet({
</StepperContent>
<StepperContent value={3} className="flex flex-col gap-3 text-sm">
<p className="text-muted-foreground">
Будет создан бэкап для <strong className="text-foreground">{selected.size}</strong> серверов.
{locked ? "Запрошены резервные копии для" : "Будет создан бэкап для"} <strong className="text-foreground">{selected.size}</strong> серверов.
</p>
<p className="text-muted-foreground">
{!locked && <p className="text-muted-foreground">
Куда сохранится: <strong className="text-foreground">{destinationLabel}</strong>
</p>
</p>}
{notes ? <p className="text-muted-foreground">Заметка: {notes}</p> : null}
</StepperContent>
</StepperPanel>
</Stepper>
</fieldset>
</div>
<SheetFooter className="px-6 py-4 border-t shrink-0 flex-row flex-wrap gap-2">
<SheetClose render={<Button variant="outline" className="flex-1" />}>Закрыть</SheetClose>