OASIS-USABILITY/INSTALLER_V3/ui/index.html
SITO fe030f2066 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>
2026-03-30 20:13:32 +02:00

104 lines
4.7 KiB
HTML

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OASIS</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- HEADER -->
<header>
<div class="header-left">
<img src="../oasis-logo.png" class="logo" alt="OASIS">
<div class="header-titles">
<span class="app-title">OASIS</span>
<span class="app-sub">SOLAR NET HUB PANEL</span>
</div>
</div>
<div class="status-dot" id="globalDot" data-state="unknown"></div>
</header>
<!-- TABS -->
<nav class="tabbar">
<button class="tabBtn active" data-tab="oasis" onclick="switchTab('oasis')">OASIS</button>
<button class="tabBtn" data-tab="ecoin" onclick="switchTab('ecoin')">ECOIN</button>
<button class="tabBtn" data-tab="sistema" onclick="switchTab('sistema')">SISTEMA</button>
</nav>
<!-- CONTENIDO -->
<main>
<!-- ── OASIS ── -->
<section class="tab-panel active" id="tab-oasis">
<div class="status-card" id="oasisCard" data-state="unknown">
<div class="card-stripe"></div>
<div class="card-body">
<div class="card-state" id="oasisState">COMPROBANDO</div>
<div class="card-sub" id="oasisSub">iniciando...</div>
</div>
</div>
<div class="actions">
<div class="action-row">
<button class="btn primary" id="btnStart" onclick="send('oasis-start')" disabled>▶ INICIAR</button>
<button class="btn" id="btnStop" onclick="send('oasis-stop')" disabled>■ DETENER</button>
</div>
<div class="action-row">
<button class="btn" id="btnInstall" onclick="send('oasis-install')">⬇ INSTALAR</button>
<button class="btn" id="btnBrowser" onclick="send('oasis-browser')" disabled>◎ ABRIR WEB</button>
</div>
</div>
<div class="infobox">
<div class="info-row"><span class="ik">VERSION</span><span class="iv" id="iVer"></span></div>
<div class="info-row"><span class="ik">NODE.JS</span><span class="iv" id="iNode"></span></div>
<div class="info-row"><span class="ik">RUTA</span> <span class="iv" id="iDir"></span></div>
</div>
</section>
<!-- ── ECOIN ── -->
<section class="tab-panel" id="tab-ecoin">
<div class="status-card" id="ecoinCard" data-state="unknown">
<div class="card-stripe"></div>
<div class="card-body">
<div class="card-state" id="ecoinState">COMPROBANDO</div>
<div class="card-sub" id="ecoinSub">iniciando...</div>
</div>
</div>
<div class="actions">
<div class="action-row">
<button class="btn primary" id="btnEStart" onclick="send('ecoin-start')" disabled>▶ INICIAR</button>
<button class="btn" id="btnEStop" onclick="send('ecoin-stop')" disabled>■ DETENER</button>
</div>
<div class="action-row">
<button class="btn" id="btnEGui" onclick="send('ecoin-gui')" disabled>◈ ABRIR GUI</button>
<button class="btn" id="btnEInfo" onclick="send('ecoin-info')" disabled>≡ VER INFO</button>
</div>
</div>
<div class="infobox">
<div class="info-row"><span class="ik">BALANCE</span> <span class="iv" id="eBalance"></span></div>
<div class="info-row"><span class="ik">BLOQUES</span> <span class="iv" id="eBlocks"></span></div>
<div class="info-row"><span class="ik">CONEXIONES</span> <span class="iv" id="eConns"></span></div>
<div class="info-row"><span class="ik">WALLET</span> <span class="iv" id="eWallet"></span></div>
<div class="info-row"><span class="ik">ECOIND</span> <span class="iv" id="eDaemon"></span></div>
</div>
</section>
<!-- ── SISTEMA ── -->
<section class="tab-panel" id="tab-sistema">
<div class="log-header">LOG DE ACTIVIDAD</div>
<div class="log-area" id="logArea"></div>
<button class="btn btn-clear" onclick="clearLog()">LIMPIAR LOG</button>
</section>
</main>
<script src="app.js"></script>
</body>
</html>