up
This commit is contained in:
@@ -46,8 +46,11 @@
|
||||
<span x-show="agentOnline(servidor)">● En línea</span>
|
||||
<span x-show="!agentOnline(servidor) && servidor.agent_token">● Fuera</span>
|
||||
<span x-show="!servidor.agent_token">○ Sin agente</span>
|
||||
</span>
|
||||
</div>
|
||||
</span> <!-- Badge estado Hostinger -->
|
||||
<span x-show="servidor.hostinger_vps_id" class="text-xs px-2 py-0.5 rounded-full font-bold"
|
||||
:class="servidor.hostinger_state === 'running' ? 'bg-emerald-200 text-emerald-900' : (servidor.hostinger_state ? 'bg-amber-200 text-amber-900' : 'bg-slate-200 text-slate-600')">
|
||||
<span x-text="servidor.hostinger_state || 'Hostinger'" class="capitalize"></span>
|
||||
</span> </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -153,6 +156,14 @@
|
||||
</svg>
|
||||
Agente
|
||||
</button>
|
||||
<button x-show="servidor.hostinger_vps_id" @click="syncHostinger(servidor)"
|
||||
:disabled="syncCargando[servidor.ID]"
|
||||
title="Sincronizar specs desde Hostinger"
|
||||
class="px-3 py-2 rounded-lg font-medium transition-colors text-sm border border-orange-300 text-orange-600 hover:bg-orange-50 flex items-center gap-1 disabled:opacity-40">
|
||||
<svg :class="syncCargando[servidor.ID] ? 'animate-spin' : ''" class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -484,6 +495,7 @@
|
||||
agentTokenCargando: false,
|
||||
cargando: true,
|
||||
cargandoConexiones: false,
|
||||
syncCargando: {},
|
||||
pingCargando: {},
|
||||
pingResultado: {},
|
||||
|
||||
@@ -560,6 +572,25 @@
|
||||
}
|
||||
},
|
||||
|
||||
async syncHostinger(servidor) {
|
||||
const id = servidor.ID;
|
||||
if (!id || this.syncCargando[id]) return;
|
||||
this.syncCargando[id] = true;
|
||||
try {
|
||||
const r = await fetch(`/app/servidor/${id}/sync-hostinger`, { method: 'POST' });
|
||||
const data = await r.json();
|
||||
if (data.ok) {
|
||||
await this.cargarServidores();
|
||||
} else {
|
||||
alert('Error: ' + (data.error || 'No se pudo sincronizar'));
|
||||
}
|
||||
} catch (e) {
|
||||
alert('Error al sincronizar con Hostinger: ' + e.message);
|
||||
} finally {
|
||||
this.syncCargando[id] = false;
|
||||
}
|
||||
},
|
||||
|
||||
agentOnline(servidor) {
|
||||
if (!servidor?.agent_last_seen) return false;
|
||||
const last = new Date(servidor.agent_last_seen);
|
||||
|
||||
Reference in New Issue
Block a user