Display asset circulating amount more nicely fixing overflow
fixes #1264
This commit is contained in:
		
							parent
							
								
									dd42f39ef6
								
							
						
					
					
						commit
						b61450995a
					
				@ -73,6 +73,7 @@ import { MiningDashboardComponent } from './components/mining-dashboard/mining-d
 | 
			
		||||
import { DifficultyChartComponent } from './components/difficulty-chart/difficulty-chart.component';
 | 
			
		||||
import { HashrateChartComponent } from './components/hashrate-chart/hashrate-chart.component';
 | 
			
		||||
import { MiningStartComponent } from './components/mining-start/mining-start.component';
 | 
			
		||||
import { AmountShortenerPipe } from './shared/pipes/amount-shortener.pipe';
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  declarations: [
 | 
			
		||||
@ -128,6 +129,7 @@ import { MiningStartComponent } from './components/mining-start/mining-start.com
 | 
			
		||||
    DifficultyChartComponent,
 | 
			
		||||
    HashrateChartComponent,
 | 
			
		||||
    MiningStartComponent,
 | 
			
		||||
    AmountShortenerPipe,
 | 
			
		||||
  ],
 | 
			
		||||
  imports: [
 | 
			
		||||
    BrowserModule.withServerTransition({ appId: 'serverApp' }),
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,6 @@
 | 
			
		||||
<ng-container *ngIf="(circulatingAmount$ | async) as circulating">
 | 
			
		||||
  {{ circulating.amount }} <span class="ticker">{{ circulating.ticker }}</span>
 | 
			
		||||
  <ng-template [ngIf]="circulating.amount === -1" [ngIfElse]="default" i18n="shared.confidential">Confidential</ng-template>
 | 
			
		||||
  <ng-template #default>
 | 
			
		||||
    <span class="d-inline-block d-md-none">{{ circulating.amount | amountShortener }}</span>
 | 
			
		||||
    <span class="d-none d-md-inline-block">{{ circulating.amount | number: '1.2-2' }}</span> <span class="ticker">{{ circulating.ticker }}</span></ng-template>
 | 
			
		||||
</ng-container>
 | 
			
		||||
@ -16,7 +16,7 @@ import { environment } from 'src/environments/environment';
 | 
			
		||||
export class AssetCirculationComponent implements OnInit {
 | 
			
		||||
  @Input() assetId: string;
 | 
			
		||||
 | 
			
		||||
  circulatingAmount$: Observable<{ amount: string, ticker: string}>;
 | 
			
		||||
  circulatingAmount$: Observable<{ amount: number, ticker: string}>;
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
    private electrsApiService: ElectrsApiService,
 | 
			
		||||
@ -35,20 +35,18 @@ export class AssetCirculationComponent implements OnInit {
 | 
			
		||||
        if (!asset.chain_stats.has_blinded_issuances) {
 | 
			
		||||
          if (asset.asset_id === environment.nativeAssetId) {
 | 
			
		||||
            return {
 | 
			
		||||
              amount: formatNumber(this.formatAmount(asset.chain_stats.peg_in_amount - asset.chain_stats.burned_amount
 | 
			
		||||
              - asset.chain_stats.peg_out_amount, assetData[3]), this.locale, '1.2-2'),
 | 
			
		||||
              amount: this.formatAmount(asset.chain_stats.peg_in_amount - asset.chain_stats.burned_amount - asset.chain_stats.peg_out_amount, assetData[3]),
 | 
			
		||||
              ticker: assetData[1]
 | 
			
		||||
            };
 | 
			
		||||
          } else {
 | 
			
		||||
            return {
 | 
			
		||||
              amount: formatNumber(this.formatAmount(asset.chain_stats.issued_amount
 | 
			
		||||
              - asset.chain_stats.burned_amount, assetData[3]), this.locale, '1.2-2'),
 | 
			
		||||
              amount: this.formatAmount(asset.chain_stats.issued_amount - asset.chain_stats.burned_amount, assetData[3]),
 | 
			
		||||
              ticker: assetData[1]
 | 
			
		||||
            };
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          return {
 | 
			
		||||
            amount: $localize`:@@shared.confidential:Confidential`,
 | 
			
		||||
            amount: -1,
 | 
			
		||||
            ticker: '',
 | 
			
		||||
          };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								frontend/src/app/shared/pipes/amount-shortener.pipe.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								frontend/src/app/shared/pipes/amount-shortener.pipe.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
import { Pipe, PipeTransform } from '@angular/core';
 | 
			
		||||
 | 
			
		||||
@Pipe({
 | 
			
		||||
  name: 'amountShortener'
 | 
			
		||||
})
 | 
			
		||||
export class AmountShortenerPipe implements PipeTransform {
 | 
			
		||||
  transform(num: number, ...args: number[]): unknown {
 | 
			
		||||
    const digits = args[0] || 1;
 | 
			
		||||
    const lookup = [
 | 
			
		||||
      { value: 1, symbol: '' },
 | 
			
		||||
      { value: 1e3, symbol: 'k' },
 | 
			
		||||
      { value: 1e6, symbol: 'M' },
 | 
			
		||||
      { value: 1e9, symbol: 'G' },
 | 
			
		||||
      { value: 1e12, symbol: 'T' },
 | 
			
		||||
      { value: 1e15, symbol: 'P' },
 | 
			
		||||
      { value: 1e18, symbol: 'E' }
 | 
			
		||||
    ];
 | 
			
		||||
    const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
 | 
			
		||||
    var item = lookup.slice().reverse().find((item) => num >= item.value);
 | 
			
		||||
    return item ? (num / item.value).toFixed(digits).replace(rx, '$1') + item.symbol : '0';
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user