Merge pull request #3919 from joostjager/pool-fees
Add average fee delta to pool ranking
This commit is contained in:
		
						commit
						7b01f54fc6
					
				@ -106,6 +106,7 @@ class Mining {
 | 
			
		||||
        emptyBlocks: emptyBlocksCount.length > 0 ? emptyBlocksCount[0]['count'] : 0,
 | 
			
		||||
        slug: poolInfo.slug,
 | 
			
		||||
        avgMatchRate: poolInfo.avgMatchRate !== null ? Math.round(100 * poolInfo.avgMatchRate) / 100 : null,
 | 
			
		||||
        avgFeeDelta: poolInfo.avgFeeDelta,
 | 
			
		||||
      };
 | 
			
		||||
      poolsStats.push(poolStat);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
@ -19,6 +19,7 @@ export interface PoolInfo {
 | 
			
		||||
  blockCount: number;
 | 
			
		||||
  slug: string;
 | 
			
		||||
  avgMatchRate: number | null;
 | 
			
		||||
  avgFeeDelta: number | null;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface PoolStats extends PoolInfo {
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,8 @@ class PoolsRepository {
 | 
			
		||||
          pools.name AS name,
 | 
			
		||||
          pools.link AS link,
 | 
			
		||||
          slug,
 | 
			
		||||
          AVG(blocks_audits.match_rate) AS avgMatchRate
 | 
			
		||||
          AVG(blocks_audits.match_rate) AS avgMatchRate,
 | 
			
		||||
          AVG((CAST(blocks.fees as SIGNED) - CAST(blocks_audits.expected_fees as SIGNED)) / NULLIF(CAST(blocks_audits.expected_fees as SIGNED), 0)) AS avgFeeDelta
 | 
			
		||||
      FROM blocks
 | 
			
		||||
      JOIN pools on pools.id = pool_id
 | 
			
		||||
      LEFT JOIN blocks_audits ON blocks_audits.height = blocks.height
 | 
			
		||||
 | 
			
		||||
@ -94,7 +94,8 @@
 | 
			
		||||
          <th class="" i18n="master-page.blocks">Blocks</th>
 | 
			
		||||
          <th *ngIf="auditAvailable" class="health text-right widget" i18n="latest-blocks.avg_health"
 | 
			
		||||
            i18n-ngbTooltip="latest-blocks.avg_health" ngbTooltip="Avg Health" placement="bottom" #health [disableTooltip]="!isEllipsisActive(health)">Avg Health</th>
 | 
			
		||||
          <th class="d-none d-md-table-cell" i18n="mining.empty-blocks">Empty blocks</th>
 | 
			
		||||
          <th *ngIf="auditAvailable" class="d-none d-sm-table-cell" i18n="mining.fees-per-block">Avg Block Fees</th>
 | 
			
		||||
          <th class="d-none d-lg-table-cell" i18n="mining.empty-blocks">Empty blocks</th>
 | 
			
		||||
        </tr>
 | 
			
		||||
      </thead>
 | 
			
		||||
      <tbody [attr.data-cy]="'pools-table'" *ngIf="(miningStatsObservable$ | async) as miningStats">
 | 
			
		||||
@ -121,7 +122,15 @@
 | 
			
		||||
              <span class="health-badge badge badge-secondary" i18n="unknown">Unknown</span>
 | 
			
		||||
            </ng-template>
 | 
			
		||||
          </td>
 | 
			
		||||
          <td class="d-none d-md-table-cell">{{ pool.emptyBlocks }} ({{ pool.emptyBlockRatio }}%)</td>
 | 
			
		||||
          <td *ngIf="auditAvailable" class="d-none d-sm-table-cell">
 | 
			
		||||
            <span *ngIf="pool.avgFeeDelta != null; else nullFeeDelta" class="difference" [class.positive]="pool.avgFeeDelta >= 0" [class.negative]="pool.avgFeeDelta < 0">
 | 
			
		||||
              {{ pool.avgFeeDelta > 0 ? '+' : '' }}{{ (pool.avgFeeDelta * 100) | amountShortener: 2 }}%
 | 
			
		||||
            </span>
 | 
			
		||||
            <ng-template #nullFeeDelta>
 | 
			
		||||
              -
 | 
			
		||||
            </ng-template>
 | 
			
		||||
          </td>        
 | 
			
		||||
          <td class="d-none d-lg-table-cell">{{ pool.emptyBlocks }} ({{ pool.emptyBlockRatio }}%)</td>
 | 
			
		||||
        </tr>
 | 
			
		||||
        <tr style="border-top: 1px solid #555">
 | 
			
		||||
          <td class="d-none d-md-table-cell"></td>
 | 
			
		||||
 | 
			
		||||
@ -111,3 +111,14 @@
 | 
			
		||||
  pointer-events: none;
 | 
			
		||||
  opacity: 0.5;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
td {
 | 
			
		||||
  .difference {
 | 
			
		||||
    &.positive {
 | 
			
		||||
      color: rgb(66, 183, 71);
 | 
			
		||||
    }
 | 
			
		||||
    &.negative {
 | 
			
		||||
      color: rgb(183, 66, 66);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -91,6 +91,7 @@ export interface SinglePoolStats {
 | 
			
		||||
  logo: string;
 | 
			
		||||
  slug: string;
 | 
			
		||||
  avgMatchRate: number;
 | 
			
		||||
  avgFeeDelta: number;
 | 
			
		||||
}
 | 
			
		||||
export interface PoolsStats {
 | 
			
		||||
  blockCount: number;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user