Refactor power of ten conversion into one wrapper
This commit is contained in:
		
							parent
							
								
									e4721e8574
								
							
						
					
					
						commit
						e5907159b8
					
				@ -130,3 +130,32 @@ export const formatNumber = (s, precision = null) => {
 | 
				
			|||||||
// Utilities for segwitFeeGains
 | 
					// Utilities for segwitFeeGains
 | 
				
			||||||
const witnessSize = (vin: Vin) => vin.witness.reduce((S, w) => S + (w.length / 2), 0);
 | 
					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;
 | 
					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 { SeoService } from 'src/app/services/seo.service';
 | 
				
			||||||
import { formatNumber } from '@angular/common';
 | 
					import { formatNumber } from '@angular/common';
 | 
				
			||||||
import { FormBuilder, FormGroup } from '@angular/forms';
 | 
					import { FormBuilder, FormGroup } from '@angular/forms';
 | 
				
			||||||
 | 
					import { selectPowerOfTen } from 'src/app/bitcoin.utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'app-difficulty-chart',
 | 
					  selector: 'app-difficulty-chart',
 | 
				
			||||||
@ -70,15 +71,8 @@ export class DifficultyChartComponent implements OnInit {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                const tableData = [];
 | 
					                const tableData = [];
 | 
				
			||||||
                for (let i = 0; i < data.adjustments.length - 1; ++i) {
 | 
					                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;
 | 
					                  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], {
 | 
					                  tableData.push(Object.assign(data.adjustments[i], {
 | 
				
			||||||
                    change: change,
 | 
					                    change: change,
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,7 @@ import { ApiService } from 'src/app/services/api.service';
 | 
				
			|||||||
import { SeoService } from 'src/app/services/seo.service';
 | 
					import { SeoService } from 'src/app/services/seo.service';
 | 
				
			||||||
import { formatNumber } from '@angular/common';
 | 
					import { formatNumber } from '@angular/common';
 | 
				
			||||||
import { FormBuilder, FormGroup } from '@angular/forms';
 | 
					import { FormBuilder, FormGroup } from '@angular/forms';
 | 
				
			||||||
 | 
					import { selectPowerOfTen } from 'src/app/bitcoin.utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'app-hashrate-chart',
 | 
					  selector: 'app-hashrate-chart',
 | 
				
			||||||
@ -103,28 +104,7 @@ export class HashrateChartComponent implements OnInit {
 | 
				
			|||||||
        type: 'value',
 | 
					        type: 'value',
 | 
				
			||||||
        axisLabel: {
 | 
					        axisLabel: {
 | 
				
			||||||
          formatter: (val) => {
 | 
					          formatter: (val) => {
 | 
				
			||||||
            const powerOfTen = {
 | 
					            const selectedPowerOfTen: any = selectPowerOfTen(val);
 | 
				
			||||||
              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 newVal = val / selectedPowerOfTen.divider;
 | 
					            const newVal = val / selectedPowerOfTen.divider;
 | 
				
			||||||
            return `${newVal} ${selectedPowerOfTen.unit}`
 | 
					            return `${newVal} ${selectedPowerOfTen.unit}`
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user