Support dynamic hashrate units (GH/s) for SHA256 mining
This commit is contained in:
@@ -31,9 +31,9 @@ class ConfigManager:
|
|||||||
return {
|
return {
|
||||||
"pools": [
|
"pools": [
|
||||||
{
|
{
|
||||||
"url": "stratum+tcp://p2pool.org:9332",
|
"url": "stratum+tcp://solo.ckpool.org:3333",
|
||||||
"user": "user",
|
"user": "144N35t62x8qC21eQ8qW2q2q2q2q2q2q2q",
|
||||||
"pass": "password"
|
"pass": "x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"api-listen": True,
|
"api-listen": True,
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
// Helper to format hashrate
|
||||||
|
function formatHashrate(mhs) {
|
||||||
|
if (mhs >= 1000) {
|
||||||
|
return (mhs / 1000).toFixed(2) + ' GH/s';
|
||||||
|
}
|
||||||
|
return parseFloat(mhs).toFixed(2) + ' MH/s';
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize Chart
|
// Initialize Chart
|
||||||
const ctx = document.getElementById('hashrateChart').getContext('2d');
|
const ctx = document.getElementById('hashrateChart').getContext('2d');
|
||||||
const hashrateChart = new Chart(ctx, {
|
const hashrateChart = new Chart(ctx, {
|
||||||
@@ -6,7 +14,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
data: {
|
data: {
|
||||||
labels: [],
|
labels: [],
|
||||||
datasets: [{
|
datasets: [{
|
||||||
label: 'Hashrate (MH/s)',
|
label: 'Hashrate',
|
||||||
data: [],
|
data: [],
|
||||||
borderColor: '#0d6efd',
|
borderColor: '#0d6efd',
|
||||||
backgroundColor: 'rgba(13, 110, 253, 0.1)',
|
backgroundColor: 'rgba(13, 110, 253, 0.1)',
|
||||||
@@ -21,6 +29,13 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
plugins: {
|
plugins: {
|
||||||
legend: {
|
legend: {
|
||||||
display: false
|
display: false
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
callbacks: {
|
||||||
|
label: function(context) {
|
||||||
|
return formatHashrate(context.raw);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
scales: {
|
scales: {
|
||||||
@@ -53,7 +68,25 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
// Update Top Stats
|
// Update Top Stats
|
||||||
if (summary) {
|
if (summary) {
|
||||||
const mhs = summary['MHS 5s'] || summary['MHS av'] || 0;
|
const mhs = summary['MHS 5s'] || summary['MHS av'] || 0;
|
||||||
document.getElementById('stat-mhs').innerText = parseFloat(mhs).toFixed(2);
|
|
||||||
|
// Parse unit
|
||||||
|
const formatted = formatHashrate(mhs);
|
||||||
|
// Check if GH/s or MH/s
|
||||||
|
let unit = 'MH/s';
|
||||||
|
let val = mhs;
|
||||||
|
if (formatted.includes('GH/s')) {
|
||||||
|
unit = 'GH/s';
|
||||||
|
val = (mhs / 1000).toFixed(2);
|
||||||
|
} else {
|
||||||
|
val = parseFloat(mhs).toFixed(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('stat-mhs').innerText = val;
|
||||||
|
// Note: HTML might still say MH/s in static part, need to update ID or text node of <p>
|
||||||
|
// But simplified:
|
||||||
|
const unitElem = document.querySelector('#stat-mhs').nextElementSibling;
|
||||||
|
if(unitElem) unitElem.innerText = unit;
|
||||||
|
|
||||||
document.getElementById('stat-accepted').innerText = formatNumber(summary['Accepted'] || 0);
|
document.getElementById('stat-accepted').innerText = formatNumber(summary['Accepted'] || 0);
|
||||||
document.getElementById('stat-hw').innerText = formatNumber(summary['Hardware Errors'] || 0);
|
document.getElementById('stat-hw').innerText = formatNumber(summary['Hardware Errors'] || 0);
|
||||||
}
|
}
|
||||||
@@ -94,8 +127,8 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
<td>${dev['Enabled']}</td>
|
<td>${dev['Enabled']}</td>
|
||||||
<td>${dev['Status']}</td>
|
<td>${dev['Status']}</td>
|
||||||
<td class="${temp > 50 ? 'text-warning' : 'text-success'}">${temp > 0 ? temp.toFixed(1) : '-'}</td>
|
<td class="${temp > 50 ? 'text-warning' : 'text-success'}">${temp > 0 ? temp.toFixed(1) : '-'}</td>
|
||||||
<td>${parseFloat(dev['MHS 5s'] || 0).toFixed(2)}</td>
|
<td>${formatHashrate(dev['MHS 5s'] || 0)}</td>
|
||||||
<td>${parseFloat(dev['MHS av'] || 0).toFixed(2)}</td>
|
<td>${formatHashrate(dev['MHS av'] || 0)}</td>
|
||||||
<td>${dev['Accepted']}</td>
|
<td>${dev['Accepted']}</td>
|
||||||
<td>${dev['Rejected']}</td>
|
<td>${dev['Rejected']}</td>
|
||||||
<td>${dev['Hardware Errors']}</td>
|
<td>${dev['Hardware Errors']}</td>
|
||||||
|
|||||||
Reference in New Issue
Block a user