Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Move avg hash to card & add eff avg #643

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 30 additions & 17 deletions main/http_server/axe-os/src/app/components/home/home.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,44 +19,57 @@ <h4>Loading...</h4>
<div class="flex justify-content-between mb-3">
<div>
<span class="block text-500 font-medium mb-3">Hash Rate</span>
<div class="text-900 font-medium text-xl">{{info.hashRate * 1000000000 | hashSuffix}}
<div class="text-900 font-medium text-2xl flex align-items-center gap-2">
<span>
{{info.hashRate * 1000000000 | hashSuffix}}
</span>
</div>
</div>
</div>
<ng-container *ngIf="expectedHashRate$ | async as expectedHashRate">
<span class="text-green-500 font-medium">{{expectedHashRate * 1000000000 |
hashSuffix}}</span>
<span class="text-500"> expected</span>

<ng-container>
Average:
<span class="text-green-500 font-medium">
{{calculateAverage(hashrateData) | hashSuffix}}
</span>
</ng-container>

<div class="text-500 text-xs" *ngIf="expectedHashRate$ | async as expectedHashRate">
Expected: {{expectedHashRate * 1000000000 | hashSuffix}}
</div>
</div>
</div>
<div class="col-12 md:col-6 xl:col-3">
<div class="card mb-0">
<div class="flex justify-content-between mb-3">
<div>
<span class="block text-500 font-medium mb-3">Efficiency</span>
<div class="text-900 font-medium text-xl">
<td>{{info.power / (info.hashRate/1000) | number: '1.2-2'}} <small>J/TH</small>
</td>
<div class="text-900 font-medium text-2xl flex align-items-center gap-2">
<span>
{{info.power / (info.hashRate/1000) | number: '1.2-2'}} <small>J/TH</small>
</span>
</div>
</div>
</div>
<ng-container *ngIf="expectedHashRate$ | async as expectedHashRate">
<span class="text-green-500 font-medium">{{info.power / (expectedHashRate/1000) | number:
'1.2-2'}} <small>J/TH</small>

<ng-container>
Average:
<span class="text-green-500 font-medium">
{{calculateEfficiencyAverage(hashrateData, powerData) | number: '1.2-2'}} <small>J/TH</small>
</span>
<span class="text-500"> expected</span>
</ng-container>
<!-- <span class="text-green-500 font-medium">%52+ </span>
<span class="text-500">since last week</span> -->

<div class="text-500 text-xs " *ngIf="expectedHashRate$ | async as expectedHashRate" >
Expected: {{info.power / (expectedHashRate/1000) | number: '1.2-2'}} J/TH
</div>
</div>
</div>
<div class="col-12 md:col-6 xl:col-3">
<div class="card mb-0">
<div class="flex justify-content-between mb-3">
<div>
<span class="block text-500 font-medium mb-3">Shares</span>
<div class="text-900 font-medium text-xl">{{info.sharesAccepted | number: '1.0-0'}}
<div class="text-900 font-medium text-2xl">{{info.sharesAccepted | number: '1.0-0'}}
</div>
</div>
</div>
Expand All @@ -70,8 +83,8 @@ <h4>Loading...</h4>
<div class="flex justify-content-between mb-3">
<div>
<span class="block text-500 font-medium mb-3">Best Difficulty</span>
<div class="text-900 font-medium text-xl">{{info.bestDiff}}
<span class="text-500">all-time best</span>
<div class="text-900 font-medium text-2xl">{{info.bestDiff}}
<span class="text-500 text-lg">all-time best</span>
</div>
</div>
</div>
Expand Down
38 changes: 18 additions & 20 deletions main/http_server/axe-os/src/app/components/home/home.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export class HomeComponent {
public dataLabel: number[] = [];
public hashrateData: number[] = [];
public temperatureData: number[] = [];
public dataDataAverage: number[] = [];
public powerData: number[] = [];
public chartData?: any;

public maxPower: number = 50;
Expand Down Expand Up @@ -97,19 +97,6 @@ export class HomeComponent {
yAxisID: 'y',
fill: true,
},
{
type: 'line',
label: 'Average Hashrate',
data: [],
fill: false,
backgroundColor: primaryColor + '30',
borderColor: primaryColor + '60',
tension: 0,
pointRadius: 0,
borderWidth: 2,
borderDash: [5, 5],
yAxisID: 'y',
},
{
type: 'line',
label: 'ASIC Temp',
Expand Down Expand Up @@ -203,21 +190,20 @@ export class HomeComponent {
tap(info => {
this.hashrateData.push(info.hashRate * 1000000000);
this.temperatureData.push(info.temp);
this.powerData.push(info.power);

this.dataLabel.push(new Date().getTime());

if (this.hashrateData.length >= 720) {
this.hashrateData.shift();
this.temperatureData.shift();
this.powerData.shift();
this.dataLabel.shift();
}

this.chartData.labels = this.dataLabel;
this.chartData.datasets[0].data = this.hashrateData;
this.chartData.datasets[2].data = this.temperatureData;

// Calculate average hashrate and fill the array with the same value for the average line
const averageHashrate = this.calculateAverage(this.hashrateData);
this.chartData.datasets[1].data = Array(this.hashrateData.length).fill(averageHashrate);
this.chartData.datasets[1].data = this.temperatureData;

this.chartData = {
...this.chartData
Expand Down Expand Up @@ -255,7 +241,7 @@ export class HomeComponent {

}

private calculateAverage(data: number[]): number {
public calculateAverage(data: number[]): number {
if (data.length === 0) return 0;
const sum = data.reduce((sum, value) => sum + value, 0);
return sum / data.length;
Expand Down Expand Up @@ -283,4 +269,16 @@ export class HomeComponent {
}
return stratumURL.startsWith('http') ? stratumURL : `http://${stratumURL}`;
}

public calculateEfficiencyAverage(hashrateData: number[], powerData: number[]): number {
if (hashrateData.length === 0 || powerData.length === 0) return 0;

// Calculate efficiency for each data point and average them
const efficiencies = hashrateData.map((hashrate, index) => {
const power = powerData[index] || 0;
return power / (hashrate/1000000000000); // Convert to J/TH
});

return this.calculateAverage(efficiencies);
}
}
Loading