Skip to content

Commit 0d16fd6

Browse files
committed
fixed miner modal popup
1 parent a09b056 commit 0d16fd6

2 files changed

Lines changed: 38 additions & 26 deletions

File tree

static/js/dashboard.js

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function showView(view) {
3232
}
3333

3434
function setCurrentAndOpen(ip) {
35+
console.log("Opening miner:", ip); // Debug log
3536
currentMinerIP = ip;
3637
openDetail(ip);
3738
}
@@ -52,15 +53,16 @@ function renderMiners(data) {
5253
if(hrVal > 1000) { hrVal = hrVal/1000; hrUnit = 'TH/s'; }
5354
const dName = miner.display_name || miner.name;
5455
const statusBadge = isOnline ? '<span class="bg-green-900/30 text-green-400 px-2 py-0.5 rounded text-[10px] font-bold">LIVE</span>' : '<span class="bg-red-900/30 text-red-400 px-2 py-0.5 rounded text-[10px] font-bold">OFFLINE</span>';
55-
const cardHTML = `<div class="theme-card p-5 rounded-xl shadow-sm border border-slate-700/50 hover:border-indigo-500/50 transition relative overflow-hidden group cursor-pointer" onclick="setCurrentAndOpen('${miner.ip}')">
56-
<div class="flex justify-between items-start mb-4 relative z-10">
56+
// Updated HTML with z-index fixes
57+
const cardHTML = `<div class="theme-card p-5 rounded-xl shadow-sm border border-slate-700/50 hover:border-indigo-500/50 transition relative overflow-hidden group cursor-pointer z-10" onclick="setCurrentAndOpen('${miner.ip}')">
58+
<div class="flex justify-between items-start mb-4 relative z-20">
5759
<div class="flex items-center gap-3">
5860
<div class="w-2.5 h-2.5 rounded-full ${isOnline ? 'bg-green-500 shadow-[0_0_8px_rgba(34,197,94,0.6)]' : 'bg-red-500'}"></div>
5961
<div><h3 class="font-bold text-sm text-slate-200">${dName}</h3><div class="flex items-center gap-2 mt-1"><p class="text-xs text-slate-500 font-mono">${miner.ip}</p>${statusBadge}</div></div>
6062
</div>
61-
<button onclick="event.stopPropagation(); removeMiner('${miner.ip}')" class="text-slate-500 hover:text-red-400 transition z-20 p-2 rounded-full hover:bg-slate-800"><i class="ph-bold ph-trash"></i></button>
63+
<button onclick="event.stopPropagation(); removeMiner('${miner.ip}')" class="text-slate-500 hover:text-red-400 transition z-30 p-2 rounded-full hover:bg-slate-800"><i class="ph-bold ph-trash"></i></button>
6264
</div>
63-
<div class="flex justify-between items-end relative z-10">
65+
<div class="flex justify-between items-end relative z-20">
6466
<div><p class="text-[10px] font-bold uppercase tracking-wider text-slate-500 mb-0.5">Hashrate</p><p class="text-2xl font-bold text-white">${hrVal.toFixed(2)} <span class="text-sm font-normal text-slate-400">${hrUnit}</span></p></div>
6567
<div class="text-right"><p class="text-[10px] font-bold uppercase tracking-wider text-slate-500 mb-0.5">Temp</p><p class="text-lg font-bold text-white">${(s.temp || 0).toFixed(0)}°C</p></div>
6668
</div>
@@ -106,13 +108,11 @@ function updateStats(data) {
106108

107109
const headerEl = document.getElementById('app-header-subtitle');
108110
if(headerEl) {
109-
// Dynamic Header
110111
let editionText = "Mining Edition";
111112
if(coinSymbol === 'BC2') editionText = "BlockHunters Edition";
112113
if(coinSymbol === 'BTC') editionText = "Mainnet Edition";
113114
if(coinSymbol === 'DGB') editionText = "DigiByte Edition";
114-
if(coinSymbol === 'FB') editionText = "Fractal Edition";
115-
115+
if(coinSymbol === 'XEC') editionText = "eCash Edition";
116116
headerEl.innerHTML = `${coinSymbol} <span class="text-yellow-500">${editionText}</span>`;
117117
}
118118

@@ -170,27 +170,39 @@ function openDetail(ip) {
170170
const miner = allMiners.find(m => m.ip === ip);
171171
if(!miner) return;
172172
const s = miner.stats || {};
173-
document.getElementById('detailName').innerText = miner.display_name || miner.name;
174-
document.getElementById('detailIP').innerText = miner.ip;
175-
document.getElementById('detailVer').innerText = s.version || "Unknown";
173+
174+
// Safely update elements only if they exist
175+
const setText = (id, val) => { const el = document.getElementById(id); if(el) el.innerText = val; };
176+
const setHtml = (id, val) => { const el = document.getElementById(id); if(el) el.innerHTML = val; };
177+
const setVal = (id, val) => { const el = document.getElementById(id); if(el) el.value = val; };
178+
179+
setText('detailName', miner.display_name || miner.name);
180+
setText('detailIP', miner.ip);
181+
setText('detailVer', s.version || "Unknown");
182+
176183
let hr = s.hashrate_10m || 0; let hrUnit = "GH/s"; if(hr > 1000) { hr = hr/1000; hrUnit = "TH/s"; }
177-
document.getElementById('detailHash').innerHTML = `${hr.toFixed(2)} <span class="text-base font-normal text-slate-400">${hrUnit}</span>`;
178-
document.getElementById('detailHashRaw').innerText = (s.hashrate_raw || 0).toFixed(0) + " GH/s";
184+
setHtml('detailHash', `${hr.toFixed(2)} <span class="text-base font-normal text-slate-400">${hrUnit}</span>`);
185+
setText('detailHashRaw', (s.hashrate_raw || 0).toFixed(0) + " GH/s");
186+
179187
let tStr = `${(s.temp || 0).toFixed(1)} <span class="text-lg font-normal opacity-70">°C</span>`;
180188
if(s.vrTemp && s.vrTemp > 0) tStr += ` <span class="text-sm opacity-50 ml-2 font-mono">VR:${s.vrTemp.toFixed(0)}°</span>`;
181-
document.getElementById('detailTemp').innerHTML = tStr;
182-
document.getElementById('detailWatts').innerText = (s.power || 0).toFixed(0) + " W";
189+
setHtml('detailTemp', tStr);
190+
191+
setText('detailWatts', (s.power || 0).toFixed(0) + " W");
183192
let eff = hr > 0 ? (s.power || 0) / (hrUnit === "TH/s" ? hr : hr/1000) : 0;
184-
document.getElementById('detailEff').innerText = eff.toFixed(2) + " J/TH";
185-
document.getElementById('detailBestDiff').innerText = formatBigNum(s.bestDiff || 0);
186-
document.getElementById('detailUptime').innerText = "Uptime: " + formatUptime(s.uptime || 0);
187-
document.getElementById('inputFreq').value = s.frequency || 485;
188-
document.getElementById('valFreq').innerText = s.frequency || 485;
189-
document.getElementById('inputVolt').value = s.voltage || 1200;
190-
document.getElementById('valVolt').innerText = s.voltage || 1200;
191-
document.getElementById('poolURL').value = s.stratumURL || "";
192-
document.getElementById('poolUser').value = s.stratumUser || "";
193-
document.getElementById('poolPass').value = "";
193+
setText('detailEff', eff.toFixed(2) + " J/TH");
194+
setText('detailBestDiff', formatBigNum(s.bestDiff || 0));
195+
setText('detailUptime', "Uptime: " + formatUptime(s.uptime || 0));
196+
197+
setVal('inputFreq', s.frequency || 485);
198+
setText('valFreq', s.frequency || 485);
199+
setVal('inputVolt', s.voltage || 1200);
200+
setText('valVolt', s.voltage || 1200);
201+
202+
setVal('poolURL', s.stratumURL || "");
203+
setVal('poolUser', s.stratumUser || "");
204+
setVal('poolPass', "");
205+
194206
resetRebootBtn();
195207
document.getElementById('detailModal').classList.remove('hidden');
196208
document.getElementById('detailModal').classList.add('flex');

templates/dashboard.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ <h2 class="text-xl font-bold flex items-center gap-2 text-white"><i class="ph-fi
158158
</div>
159159
</main>
160160

161-
<div id="detailModal" class="fixed inset-0 z-50 hidden items-center justify-center bg-slate-900/80 backdrop-blur-sm p-4 transition-opacity duration-300" data-ip="">
161+
<div id="detailModal" class="fixed inset-0 z-[100] hidden items-center justify-center bg-slate-900/80 backdrop-blur-sm p-4 transition-opacity duration-300" data-ip="">
162162
<div class="theme-card w-full max-w-2xl rounded-2xl shadow-2xl overflow-hidden max-h-[95vh] flex flex-col border border-slate-700">
163163
<div class="px-6 py-4 border-b border-slate-700/50 flex justify-between items-center bg-slate-800/50">
164164
<div>
@@ -203,7 +203,7 @@ <h3 class="text-xs font-bold uppercase tracking-wider text-slate-500 mb-4"><i cl
203203
</div>
204204
</div>
205205

206-
<div id="renameModal" class="fixed inset-0 z-[60] hidden items-center justify-center bg-slate-900/90 backdrop-blur-md p-4">
206+
<div id="renameModal" class="fixed inset-0 z-[110] hidden items-center justify-center bg-slate-900/90 backdrop-blur-md p-4">
207207
<div class="theme-card w-full max-w-sm rounded-xl shadow-2xl p-6 border border-slate-700">
208208
<h2 class="text-lg font-bold text-white mb-4">Rename Device</h2>
209209
<input type="text" id="newNameInput" class="w-full bg-slate-900 border border-slate-600 rounded-lg p-3 text-white mb-3 outline-none">

0 commit comments

Comments
 (0)