{#if protocol}
Standort
Netzbereich
Notiz
Werkzeuge
{#each protocolTools as tool (tool.id)} {@const IconC = icon(tool.icon)}
openTool(tool)} >
{tool.name}
{tool.description}
{/each}
Dauer-/Stresstest
Langzeitmessung: Paketverlust und Latenz über einen Zeitraum, live sichtbar.
Geräte-Monitor
Erreichbarkeit mehrerer Geräte dauerhaft überwachen.
IP-Test
Dose prüfen: IP, DHCP und 10/100/1000 Mbit ablesen.
WLAN-Empfang
Empfangsstärke beim Durchgehen aufzeichnen.
WLAN-Kanäle
Kanalbelegung, Überlappung und Kanalempfehlung — alle Netze auf einen Blick.
{#if protocolMeasurements().length > 0}
Messungen
{#each protocolMeasurements() as m (m.clientId)}
{getTool(m.tool)?.name ?? werkzeugName(m.tool)}
{fmtUhrzeit(m.dateMeasure)}
{m.label}
{/each}
{/if}
Geräte ({protocol.devices.length})
{#if protocol.devices.length > 0}
(saveScanOpen = true)}> Scan speichern
{/if}
{#if protocol.devices.length === 0}
Noch keine Geräte — IP-Scanner ausführen, um das Netz zu erfassen.
{/if} {#each sortedDevices as device (device.clientId)}
openTool(tool, device)} onfavorite={() => doToggleFav(device)} onrename={() => (renameTarget = device)} /> {/each}
{#if protocol.savedScans && protocol.savedScans.length > 0}
Gespeicherte Scans
{#each protocol.savedScans as scan (scan.id)}
(expandedScan = expandedScan === scan.id ? null : scan.id)} >
{scan.name}
{scan.devices.length} Geräte · {scan.subnet || '—'} · {fmtDateTime(scan.createdAt)}
{#if expandedScan === scan.id}
{#each scan.devices as d (d.clientId)}
{/each}
(deleteScanId = scan.id)} > Scan löschen
{/if}
{/each}
{/if}
(confirmDelete = true)}> Protokoll löschen
{protocol.status === 1 ? 'Erneut synchronisieren' : 'Abschließen & synchronisieren'}
{#if activeTool}
(activeTool = null)} onrun={runTool} /> {/if} {#if renameTarget}
(renameTarget = null)} /> {/if} {#if confirmDelete}
(confirmDelete = false)} /> {/if} {#if saveScanOpen}
(saveScanOpen = false)} /> {/if} {#if deleteScanId}
(deleteScanId = null)} /> {/if} {:else}
Lädt …
{/if}