Painel de Controle
Gerenciamento de serviços monitorados
← Dashboard
Novo Serviço
{#if data.error}
{data.error}
{:else if services.length === 0}
Nenhum serviço cadastrado
{:else} {#each [...new Set(services.map((s) => s.group_name || 'Geral'))].sort() as group}
{group}
ID
Nome
URL
Status
SLA 30d
Ações
{#each services.filter((s) => (s.group_name || 'Geral') === group) as svc (svc.id)}
{svc.id}
{svc.name}
{svc.url}
{svc.last_heartbeat?.is_up ?? true ? 'UP' : 'DOWN'}
{svc.stats ? svc.stats.uptime_30d.toFixed(2) + '%' : '—'}
openEdit(svc)} class="rounded-lg px-2.5 py-1 text-[10px] font-medium text-[var(--text-secondary)] transition-colors hover:bg-[var(--border-color)] hover:text-white" > Editar
handleToggle(svc.id)} disabled={toggling[svc.id] ?? false} class="rounded-lg px-2.5 py-1 text-[10px] font-medium transition-colors" style="color: {svc.is_active ?? true ? 'var(--green)' : 'var(--red)'}; {(svc.is_active ?? true) ? 'border:1px solid rgba(34,240,106,0.3)' : 'border:1px solid rgba(255,64,96,0.3)'}; {toggling[svc.id] ? 'opacity:0.5' : ''}" > {svc.is_active ?? true ? 'Ativo' : 'Pausado'}
handleTest(svc.id)} disabled={testing[svc.id] ?? false} class="rounded-lg px-2.5 py-1 text-[10px] font-medium text-[var(--text-secondary)] transition-colors hover:bg-[var(--border-color)] hover:text-white" style={testing[svc.id] ? 'opacity:0.5' : ''} > {testing[svc.id] ? '...' : 'Testar'}
handleDelete(svc.id)} class="rounded-lg px-2.5 py-1 text-[10px] font-medium text-[var(--red)] transition-colors hover:bg-[var(--red)]/10" > Excluir
{/each}
{/each} {/if} {#if showForm}
e.stopPropagation()} >
{editingSvc ? 'Editar Serviço' : 'Novo Serviço'}
{#if editingSvc}
{/if}
Nome do Serviço
URL
Grupo / Categoria
Intervalo (segundos)
Opcionais
Palavra-chave
Webhook Discord
E-mail de Alerta
{#if formError}
{formError}
{/if}
Cancelar
{saving ? 'Salvando…' : editingSvc ? 'Salvar' : 'Adicionar'}
{/if}