feat(panel-v3): integración ECOIN — daemon, wallet info y GUI

- Detección de ecoind via JSON-RPC (puerto 7474, lee ~/.ecoin/ecoin.conf)
- Botones INICIAR/DETENER/ABRIR GUI/VER INFO en pestaña ECOIN
- ABRIR GUI para ecoind antes de lanzar ecoin-qt (no pueden coexistir)
- Compilación automática de ecoin-qt con qmake si no está compilado
- Grid en tiempo real: balance ECO, bloques, conexiones, wallet, daemon
- ecoin_rpc() helper para llamadas JSON-RPC al daemon
- _start_ecoin/_stop_ecoin/_open_ecoin_gui/_ecoin_info en panel.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
SITO 2026-03-30 20:13:32 +02:00
parent 68b3ceff8d
commit fe030f2066
7 changed files with 235 additions and 35 deletions

View file

@ -59,27 +59,38 @@ function updateStatus(data) {
document.getElementById('globalDot').dataset.state = state;
// --- ECOIN ---
const eCard = document.getElementById('ecoinCard');
const estate = data.ecoin_installed ? 'running' : 'unknown';
eCard.dataset.state = estate;
const eCard = document.getElementById('ecoinCard');
eCard.dataset.state = data.ecoin_running ? 'running' : (data.ecoin_installed ? 'stopped' : 'unknown');
if (data.ecoin_installed) {
document.getElementById('ecoinState').textContent = 'COMPILADO';
document.getElementById('ecoinSub').textContent = 'wallet ECOIN disponible';
_btn('btnEGui', false);
_btn('btnEWallet', false);
_btn('btnEConnect', false);
if (data.ecoin_running) {
document.getElementById('ecoinState').textContent = 'ACTIVO';
document.getElementById('ecoinSub').textContent = 'daemon corriendo (headless)';
_btn('btnEStart', true);
_btn('btnEStop', false);
_btn('btnEGui', false);
_btn('btnEInfo', false);
} else if (data.ecoin_installed) {
document.getElementById('ecoinState').textContent = 'INSTALADO';
document.getElementById('ecoinSub').textContent = 'daemon detenido';
_btn('btnEStart', false);
_btn('btnEStop', true);
_btn('btnEGui', false);
_btn('btnEInfo', true);
} else {
document.getElementById('ecoinState').textContent = 'NO INSTALADO';
document.getElementById('ecoinSub').textContent = 'instala ECOIN para comenzar';
_btn('btnEGui', true);
_btn('btnEWallet', true);
_btn('btnEConnect', true);
_btn('btnEStart', true);
_btn('btnEStop', true);
_btn('btnEGui', true);
_btn('btnEInfo', true);
}
document.getElementById('eWallet').textContent = data.ecoin_wallet ? 'Si' : 'No';
document.getElementById('eQt').textContent = data.ecoin_qt ? 'Si' : 'No';
document.getElementById('eDaemon').textContent = data.ecoin_daemon ? 'Si' : 'No';
// Info grid ecoin
document.getElementById('eBalance').textContent = data.ecoin_balance != null ? data.ecoin_balance + ' ECO' : '—';
document.getElementById('eBlocks').textContent = data.ecoin_blocks != null ? data.ecoin_blocks : '—';
document.getElementById('eConns').textContent = data.ecoin_connections != null ? data.ecoin_connections : '—';
document.getElementById('eWallet').textContent = data.ecoin_wallet ? 'Si' : 'No';
document.getElementById('eDaemon').textContent = data.ecoin_daemon ? 'Si' : 'No';
}
// ── Log (llamado desde Python) ────────────────────────────────