Refactor power of ten conversion into one wrapper
This commit is contained in:
		
							parent
							
								
									6927ea09e7
								
							
						
					
					
						commit
						ba1fd78f09
					
				@ -130,3 +130,32 @@ export const formatNumber = (s, precision = null) => {
 | 
			
		||||
// Utilities for segwitFeeGains
 | 
			
		||||
const witnessSize = (vin: Vin) => vin.witness.reduce((S, w) => S + (w.length / 2), 0);
 | 
			
		||||
const scriptSigSize = (vin: Vin) => vin.scriptsig ? vin.scriptsig.length / 2 : 0;
 | 
			
		||||
 | 
			
		||||
// Power of ten wrapper
 | 
			
		||||
export function selectPowerOfTen(val: number) {
 | 
			
		||||
  const powerOfTen = {
 | 
			
		||||
    exa: Math.pow(10, 18),
 | 
			
		||||
    peta: Math.pow(10, 15),
 | 
			
		||||
    terra: Math.pow(10, 12),
 | 
			
		||||
    giga: Math.pow(10, 9),
 | 
			
		||||
    mega: Math.pow(10, 6),
 | 
			
		||||
    kilo: Math.pow(10, 3),
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  let selectedPowerOfTen;
 | 
			
		||||
  if (val < powerOfTen.mega) {
 | 
			
		||||
    selectedPowerOfTen = { divider: 1, unit: '' }; // no scaling
 | 
			
		||||
  } else if (val < powerOfTen.giga) {
 | 
			
		||||
    selectedPowerOfTen = { divider: powerOfTen.mega, unit: 'M' };
 | 
			
		||||
  } else if (val < powerOfTen.terra) {
 | 
			
		||||
    selectedPowerOfTen = { divider: powerOfTen.giga, unit: 'G' };
 | 
			
		||||
  } else if (val < powerOfTen.peta) {
 | 
			
		||||
    selectedPowerOfTen = { divider: powerOfTen.terra, unit: 'T' };
 | 
			
		||||
  } else if (val < powerOfTen.exa) {
 | 
			
		||||
    selectedPowerOfTen = { divider: powerOfTen.peta, unit: 'P' };
 | 
			
		||||
  } else {
 | 
			
		||||
    selectedPowerOfTen = { divider: powerOfTen.exa, unit: 'E' };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return selectedPowerOfTen;
 | 
			
		||||
}
 | 
			
		||||
@ -6,6 +6,7 @@ import { ApiService } from 'src/app/services/api.service';
 | 
			
		||||
import { SeoService } from 'src/app/services/seo.service';
 | 
			
		||||
import { formatNumber } from '@angular/common';
 | 
			
		||||
import { FormBuilder, FormGroup } from '@angular/forms';
 | 
			
		||||
import { selectPowerOfTen } from 'src/app/bitcoin.utils';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-difficulty-chart',
 | 
			
		||||
@ -70,15 +71,8 @@ export class DifficultyChartComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
                const tableData = [];
 | 
			
		||||
                for (let i = 0; i < data.adjustments.length - 1; ++i) {
 | 
			
		||||
                  const selectedPowerOfTen: any = selectPowerOfTen(data.adjustments[i].difficulty);
 | 
			
		||||
                  const change = (data.adjustments[i].difficulty / data.adjustments[i + 1].difficulty - 1) * 100;
 | 
			
		||||
                  let selectedPowerOfTen = { divider: powerOfTen.terra, unit: 'T' };
 | 
			
		||||
                  if (data.adjustments[i].difficulty < powerOfTen.mega) {
 | 
			
		||||
                    selectedPowerOfTen = { divider: 1, unit: '' }; // no scaling
 | 
			
		||||
                  } else if (data.adjustments[i].difficulty < powerOfTen.giga) {
 | 
			
		||||
                    selectedPowerOfTen = { divider: powerOfTen.mega, unit: 'M' };
 | 
			
		||||
                  } else if (data.adjustments[i].difficulty < powerOfTen.terra) {
 | 
			
		||||
                    selectedPowerOfTen = { divider: powerOfTen.giga, unit: 'G' };
 | 
			
		||||
                  }
 | 
			
		||||
 | 
			
		||||
                  tableData.push(Object.assign(data.adjustments[i], {
 | 
			
		||||
                    change: change,
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ import { ApiService } from 'src/app/services/api.service';
 | 
			
		||||
import { SeoService } from 'src/app/services/seo.service';
 | 
			
		||||
import { formatNumber } from '@angular/common';
 | 
			
		||||
import { FormBuilder, FormGroup } from '@angular/forms';
 | 
			
		||||
import { selectPowerOfTen } from 'src/app/bitcoin.utils';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-hashrate-chart',
 | 
			
		||||
@ -103,28 +104,7 @@ export class HashrateChartComponent implements OnInit {
 | 
			
		||||
        type: 'value',
 | 
			
		||||
        axisLabel: {
 | 
			
		||||
          formatter: (val) => {
 | 
			
		||||
            const powerOfTen = {
 | 
			
		||||
              exa: Math.pow(10, 18),
 | 
			
		||||
              peta: Math.pow(10, 15),
 | 
			
		||||
              terra: Math.pow(10, 12),
 | 
			
		||||
              giga: Math.pow(10, 9),
 | 
			
		||||
              mega: Math.pow(10, 6),
 | 
			
		||||
              kilo: Math.pow(10, 3),
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            let selectedPowerOfTen = { divider: powerOfTen.exa, unit: 'E' };
 | 
			
		||||
            if (val < powerOfTen.mega) {
 | 
			
		||||
              selectedPowerOfTen = { divider: 1, unit: '' }; // no scaling
 | 
			
		||||
            } else if (val < powerOfTen.giga) {
 | 
			
		||||
              selectedPowerOfTen = { divider: powerOfTen.mega, unit: 'M' };
 | 
			
		||||
            } else if (val < powerOfTen.terra) {
 | 
			
		||||
              selectedPowerOfTen = { divider: powerOfTen.giga, unit: 'G' };
 | 
			
		||||
            } else if (val < powerOfTen.peta) {
 | 
			
		||||
              selectedPowerOfTen = { divider: powerOfTen.terra, unit: 'T' };
 | 
			
		||||
            } else if (val < powerOfTen.exa) {
 | 
			
		||||
              selectedPowerOfTen = { divider: powerOfTen.peta, unit: 'P' };
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            const selectedPowerOfTen: any = selectPowerOfTen(val);
 | 
			
		||||
            const newVal = val / selectedPowerOfTen.divider;
 | 
			
		||||
            return `${newVal} ${selectedPowerOfTen.unit}`
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user