fix: batch upload to HRDLog instead of one by one

This commit is contained in:
2026-06-18 19:28:36 +02:00
parent 679e8f8d39
commit 4d074de27e
3 changed files with 113 additions and 45 deletions
+35 -33
View File
@@ -112,45 +112,47 @@ export function BulkEditModal({ open, ids, onClose, onApplied }: Props) {
</DialogDescription>
</DialogHeader>
<div className="grid grid-cols-[90px_1fr] gap-3 items-center py-2">
<Label className="text-sm">Field</Label>
<Select value={field} onValueChange={setField}>
<SelectTrigger className="h-8"><SelectValue /></SelectTrigger>
<SelectContent>
{GROUPS.map((g) => (
<div key={g}>
<div className="px-2 py-1 text-[10px] uppercase tracking-wider text-muted-foreground">{g}</div>
{FIELDS.filter((f) => f.group === g).map((f) => (
<SelectItem key={f.id} value={f.id}>{f.label}</SelectItem>
))}
</div>
))}
</SelectContent>
</Select>
<Label className="text-sm">Value</Label>
{isStatus ? (
<Select value={statusValue} onValueChange={setStatusValue}>
<div className="px-5 py-2 space-y-3">
<div className="grid grid-cols-[90px_1fr] gap-3 items-center">
<Label className="text-sm">Field</Label>
<Select value={field} onValueChange={setField}>
<SelectTrigger className="h-8"><SelectValue /></SelectTrigger>
<SelectContent>
{STATUS_VALUES.map((v) => <SelectItem key={v.v} value={v.v}>{v.label}</SelectItem>)}
{GROUPS.map((g) => (
<div key={g}>
<div className="px-2 py-1 text-[10px] uppercase tracking-wider text-muted-foreground">{g}</div>
{FIELDS.filter((f) => f.group === g).map((f) => (
<SelectItem key={f.id} value={f.id}>{f.label}</SelectItem>
))}
</div>
))}
</SelectContent>
</Select>
) : (
<Input
className="h-8 text-xs"
value={textValue}
placeholder="leave empty to clear the field"
onChange={(e) => setTextValue(def.upper ? e.target.value.toUpperCase() : e.target.value)}
/>
)}
</div>
<div className="text-[11px] text-muted-foreground">
Will set <span className="font-semibold">{def.label}</span> ={' '}
<span className="font-mono">{effectiveValue === '' ? '(blank)' : effectiveValue}</span> on {ids.length} QSO{ids.length > 1 ? 's' : ''}.
<Label className="text-sm">Value</Label>
{isStatus ? (
<Select value={statusValue} onValueChange={setStatusValue}>
<SelectTrigger className="h-8"><SelectValue /></SelectTrigger>
<SelectContent>
{STATUS_VALUES.map((v) => <SelectItem key={v.v} value={v.v}>{v.label}</SelectItem>)}
</SelectContent>
</Select>
) : (
<Input
className="h-8 text-xs"
value={textValue}
placeholder="leave empty to clear the field"
onChange={(e) => setTextValue(def.upper ? e.target.value.toUpperCase() : e.target.value)}
/>
)}
</div>
<div className="text-[11px] text-muted-foreground">
Will set <span className="font-semibold">{def.label}</span> ={' '}
<span className="font-mono">{effectiveValue === '' ? '(blank)' : effectiveValue}</span> on {ids.length} QSO{ids.length > 1 ? 's' : ''}.
</div>
{error && <div className="text-xs text-rose-700">{error}</div>}
</div>
{error && <div className="text-xs text-rose-700">{error}</div>}
<DialogFooter>
<Button variant="outline" onClick={onClose} disabled={busy}>Cancel</Button>