fix(backups): продолжать наблюдение без повторного создания

This commit is contained in:
Denozordec committed 2026-10-01 15:58:47 +07:00
1 parent 4aee2a34f1
commit 714af7e872
9 files changed
+265 -74

No files matched your search

+25 -6
View File
@@ -43,6 +43,13 @@ export function BackupCreateSheet({
destinationLabel,
busy,
onSubmit,
locked = false,
terminal = false,
canObserve = true,
jobId,
jobStatus,
result,
onReset,
}: {
open: boolean
onOpenChange: (open: boolean) => void
@@ -57,16 +64,25 @@ export function BackupCreateSheet({
onNotesChange: (value: string) => void
destinationLabel: string
busy: boolean
locked?: boolean
terminal?: boolean
canObserve?: boolean
jobId?: string
jobStatus?: string
result?: string
onReset: () => void
onSubmit: () => void
}) {
return (
<Sheet open={open} onOpenChange={(v) => { onOpenChange(v); if (!v) onStepChange(1) }}>
<SheetContent side="right" className="w-full sm:max-w-md flex flex-col gap-0 p-0">
<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>Новый бэкап</SheetTitle>
<SheetTitle>{locked ? "Задача резервного копирования" : "Новый бэкап"}</SheetTitle>
<SheetDescription>Снять конфигурацию вручную с выбранных серверов</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>}
<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">
<StepperItem step={1}>
@@ -141,6 +157,8 @@ export function BackupCreateSheet({
<FormField label="Заметка">
<Input
placeholder="Например: перед обновлением BGP"
aria-label="Заметка резервной копии"
maxLength={500}
value={notes}
onChange={(e) => onNotesChange(e.target.value)}
/>
@@ -157,15 +175,16 @@ export function BackupCreateSheet({
</StepperContent>
</StepperPanel>
</Stepper>
</fieldset>
<SheetFooter className="px-6 py-4 border-t shrink-0 flex-row gap-2">
<SheetClose render={<Button variant="outline" className="flex-1" />}>Отмена</SheetClose>
{step > 1 && (
<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>
{!locked && step > 1 && (
<Button type="button" variant="outline" className="flex-1" onClick={() => onStepChange(step - 1)}>
Назад
</Button>
)}
{step < 3 ? (
{locked ? <><Button type="button" disabled={!canObserve || busy || terminal} onClick={onSubmit}>Проверить задачу</Button>{terminal && <Button type="button" onClick={onReset}>Новая задача</Button>}</> : step < 3 ? (
<Button
type="button"
className="flex-1"