generated from Dicken/dickendock
round37: API-Scanner Kontrollprobe entschaerft (weniger Fehlalarme false negatives), Alle-bestaetigen-Buttons, Scan-Buttons bei Geraeten zusammengelegt
This commit is contained in:
@@ -133,9 +133,17 @@ function NameChangesReview({
|
||||
|
||||
return (
|
||||
<div className="mt-3 rounded-xl border border-blue-500/30 bg-blue-500/5 p-3 text-xs">
|
||||
<p className="mb-2 font-medium text-blue-700 dark:text-blue-400">
|
||||
{nameChanges.length} erkannte Änderung(en) weichen vom gespeicherten Wert ab:
|
||||
</p>
|
||||
<div className="mb-2 flex items-center justify-between gap-2">
|
||||
<p className="font-medium text-blue-700 dark:text-blue-400">
|
||||
{nameChanges.length} erkannte Änderung(en) weichen vom gespeicherten Wert ab:
|
||||
</p>
|
||||
<button
|
||||
onClick={() => nameChanges.forEach((c) => onResolve(nameChangeKey(c)))}
|
||||
className="shrink-0 text-black/40 underline hover:text-black/60 dark:text-white/40 dark:hover:text-white/60"
|
||||
>
|
||||
Alle bestätigen
|
||||
</button>
|
||||
</div>
|
||||
<ul className="max-h-60 space-y-1 overflow-y-auto">
|
||||
{nameChanges.map((c) => (
|
||||
<li key={nameChangeKey(c)} className="flex items-center justify-between gap-2">
|
||||
@@ -169,9 +177,17 @@ function NewServicesList({
|
||||
|
||||
return (
|
||||
<div className="mt-3 rounded-xl border border-emerald-500/30 bg-emerald-500/5 p-3 text-xs">
|
||||
<p className="mb-2 font-medium text-emerald-700 dark:text-emerald-400">
|
||||
{newServices.length} neue(r) Dienst(e) gefunden:
|
||||
</p>
|
||||
<div className="mb-2 flex items-center justify-between gap-2">
|
||||
<p className="font-medium text-emerald-700 dark:text-emerald-400">
|
||||
{newServices.length} neue(r) Dienst(e) gefunden:
|
||||
</p>
|
||||
<button
|
||||
onClick={() => newServices.forEach((s) => onResolve(s.id))}
|
||||
className="shrink-0 text-black/40 underline hover:text-black/60 dark:text-white/40 dark:hover:text-white/60"
|
||||
>
|
||||
Alle bestätigen
|
||||
</button>
|
||||
</div>
|
||||
<ul className="max-h-60 space-y-1 overflow-y-auto">
|
||||
{newServices.map((s) => (
|
||||
<li key={s.id} className="flex items-center justify-between gap-2">
|
||||
@@ -215,10 +231,18 @@ function StaleServicesReview({
|
||||
|
||||
return (
|
||||
<div className="mt-3 rounded-xl border border-amber-500/30 bg-amber-500/5 p-3 text-xs">
|
||||
<p className="mb-2 font-medium text-amber-700 dark:text-amber-400">
|
||||
{staleServices.length} Dienst(e) über alle gescannten Geräte hinweg nicht mehr gefunden (Port
|
||||
nicht mehr offen):
|
||||
</p>
|
||||
<div className="mb-2 flex items-center justify-between gap-2">
|
||||
<p className="font-medium text-amber-700 dark:text-amber-400">
|
||||
{staleServices.length} Dienst(e) über alle gescannten Geräte hinweg nicht mehr gefunden (Port
|
||||
nicht mehr offen):
|
||||
</p>
|
||||
<button
|
||||
onClick={() => staleServices.forEach((s) => onResolve(s.id))}
|
||||
className="shrink-0 text-black/40 underline hover:text-black/60 dark:text-white/40 dark:hover:text-white/60"
|
||||
>
|
||||
Alle bestätigen
|
||||
</button>
|
||||
</div>
|
||||
<ul className="max-h-60 space-y-1 overflow-y-auto">
|
||||
{staleServices.map((s) => (
|
||||
<li key={s.id} className="flex items-center justify-between gap-2">
|
||||
@@ -263,9 +287,17 @@ function DeviceChangesReview({
|
||||
|
||||
return (
|
||||
<div className="mt-3 rounded-xl border border-blue-500/30 bg-blue-500/5 p-3 text-xs">
|
||||
<p className="mb-2 font-medium text-blue-700 dark:text-blue-400">
|
||||
{deviceChanges.length} Geräte-Änderung(en) weichen von den gespeicherten Werten ab:
|
||||
</p>
|
||||
<div className="mb-2 flex items-center justify-between gap-2">
|
||||
<p className="font-medium text-blue-700 dark:text-blue-400">
|
||||
{deviceChanges.length} Geräte-Änderung(en) weichen von den gespeicherten Werten ab:
|
||||
</p>
|
||||
<button
|
||||
onClick={() => deviceChanges.forEach((c) => onResolve(`${c.deviceId}:${c.field}`))}
|
||||
className="shrink-0 text-black/40 underline hover:text-black/60 dark:text-white/40 dark:hover:text-white/60"
|
||||
>
|
||||
Alle bestätigen
|
||||
</button>
|
||||
</div>
|
||||
<ul className="max-h-60 space-y-1 overflow-y-auto">
|
||||
{deviceChanges.map((c) => (
|
||||
<li key={`${c.deviceId}:${c.field}`} className="flex items-center justify-between gap-2">
|
||||
@@ -308,10 +340,18 @@ function StaleDevicesReview({
|
||||
|
||||
return (
|
||||
<div className="mt-3 rounded-xl border border-amber-500/30 bg-amber-500/5 p-3 text-xs">
|
||||
<p className="mb-2 font-medium text-amber-700 dark:text-amber-400">
|
||||
{staleDevices.length} Gerät(e), die die FritzBox früher gemeldet hatte, diesmal aber nicht
|
||||
mehr:
|
||||
</p>
|
||||
<div className="mb-2 flex items-center justify-between gap-2">
|
||||
<p className="font-medium text-amber-700 dark:text-amber-400">
|
||||
{staleDevices.length} Gerät(e), die die FritzBox früher gemeldet hatte, diesmal aber nicht
|
||||
mehr:
|
||||
</p>
|
||||
<button
|
||||
onClick={() => staleDevices.forEach((d) => onResolve(d.id))}
|
||||
className="shrink-0 text-black/40 underline hover:text-black/60 dark:text-white/40 dark:hover:text-white/60"
|
||||
>
|
||||
Alle bestätigen
|
||||
</button>
|
||||
</div>
|
||||
<ul className="space-y-1">
|
||||
{staleDevices.map((d) => (
|
||||
<li key={d.id} className="flex items-center justify-between gap-2">
|
||||
@@ -416,7 +456,16 @@ function ApiScannerCard() {
|
||||
{status ? <p className="mt-2 text-sm text-black/50 dark:text-white/50">{status}</p> : null}
|
||||
|
||||
{lastNewFindings.length > 0 ? (
|
||||
<ul className="mt-4 max-h-72 space-y-2 overflow-y-auto text-sm">
|
||||
<>
|
||||
<div className="mt-4 flex items-center justify-end">
|
||||
<button
|
||||
onClick={() => setLastNewFindings([])}
|
||||
className="text-xs text-black/40 underline hover:text-black/60 dark:text-white/40 dark:hover:text-white/60"
|
||||
>
|
||||
Alle bestätigen
|
||||
</button>
|
||||
</div>
|
||||
<ul className="max-h-72 space-y-2 overflow-y-auto text-sm">
|
||||
{lastNewFindings.map(({ serviceId, serviceName, apis: entries }) => (
|
||||
<li key={serviceId} className="rounded-lg border border-emerald-500/30 bg-emerald-500/5 p-2">
|
||||
<div className="flex items-center justify-between gap-2">
|
||||
@@ -445,6 +494,7 @@ function ApiScannerCard() {
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user