Merge pull request #1281 from mempool/simon/footer-transactions-bar-fix
This commit is contained in:
		
						commit
						b2d591b5bd
					
				@ -2,15 +2,18 @@
 | 
				
			|||||||
  <div class="container-xl">
 | 
					  <div class="container-xl">
 | 
				
			||||||
    <div class="row text-center" *ngIf="mempoolInfoData$ | async as mempoolInfoData">
 | 
					    <div class="row text-center" *ngIf="mempoolInfoData$ | async as mempoolInfoData">
 | 
				
			||||||
      <div class="col d-none d-sm-block">
 | 
					      <div class="col d-none d-sm-block">
 | 
				
			||||||
        <span class="txPerSecond" i18n="footer.tx-vbytes-per-second">Tx vBytes per second:</span>
 | 
					        <span class="txPerSecond" i18n="dashboard.incoming-transactions">Incoming transactions</span> 
 | 
				
			||||||
        <span *ngIf="mempoolInfoData.vBytesPerSecond === 0; else inSync">
 | 
					        <ng-template [ngIf]="(isLoadingWebSocket$ | async) === false && mempoolInfoData" [ngIfElse]="loadingTransactions">
 | 
				
			||||||
           <span class="badge badge-pill badge-warning" i18n="dashboard.backend-is-synchronizing">Backend is synchronizing</span>
 | 
					          <span *ngIf="(mempoolLoadingStatus$ | async) !== 100; else inSync">
 | 
				
			||||||
 | 
					             <span class="badge badge-pill badge-warning"><ng-container i18n="dashboard.backend-is-synchronizing">Backend is synchronizing</ng-container> ({{ mempoolLoadingStatus$ | async }}%)</span>
 | 
				
			||||||
          </span>
 | 
					          </span>
 | 
				
			||||||
          <ng-template #inSync>
 | 
					          <ng-template #inSync>
 | 
				
			||||||
          <div class="progress sub-text">
 | 
					            <div class="progress inc-tx-progress-bar">
 | 
				
			||||||
            <div class="progress-bar {{ mempoolInfoData.progressClass }}" role="progressbar" [ngStyle]="{'width': mempoolInfoData.progressWidth}">{{ mempoolInfoData.vBytesPerSecond | ceil | number }} <ng-container i18n="shared.vbytes-per-second|vB/s">vB/s</ng-container></div>
 | 
					              <div class="progress-bar" role="progressbar" [ngStyle]="{'width': mempoolInfoData.progressWidth, 'background-color': mempoolInfoData.progressColor}"> </div>
 | 
				
			||||||
 | 
					              <div class="progress-text">‎{{ mempoolInfoData.vBytesPerSecond | ceil | number }} <ng-container i18n="shared.vbytes-per-second|vB/s">vB/s</ng-container></div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
          </ng-template>
 | 
					          </ng-template>
 | 
				
			||||||
 | 
					        </ng-template>  
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <div class="col">
 | 
					      <div class="col">
 | 
				
			||||||
        <span class="unconfirmedTx"><ng-container i18n="dashboard.unconfirmed|Unconfirmed count">Unconfirmed</ng-container>:</span>
 | 
					        <span class="unconfirmedTx"><ng-container i18n="dashboard.unconfirmed|Unconfirmed count">Unconfirmed</ng-container>:</span>
 | 
				
			||||||
@ -25,3 +28,7 @@
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</footer>
 | 
					</footer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<ng-template #loadingTransactions>
 | 
				
			||||||
 | 
					  <div class="skeleton-loader skeleton-loader-transactions"></div>
 | 
				
			||||||
 | 
					</ng-template>
 | 
				
			||||||
@ -13,7 +13,7 @@ interface MempoolInfoData {
 | 
				
			|||||||
  memPoolInfo: MempoolInfo;
 | 
					  memPoolInfo: MempoolInfo;
 | 
				
			||||||
  vBytesPerSecond: number;
 | 
					  vBytesPerSecond: number;
 | 
				
			||||||
  progressWidth: string;
 | 
					  progressWidth: string;
 | 
				
			||||||
  progressClass: string;
 | 
					  progressColor: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
@ -26,12 +26,20 @@ export class FooterComponent implements OnInit {
 | 
				
			|||||||
  mempoolBlocksData$: Observable<MempoolBlocksData>;
 | 
					  mempoolBlocksData$: Observable<MempoolBlocksData>;
 | 
				
			||||||
  mempoolInfoData$: Observable<MempoolInfoData>;
 | 
					  mempoolInfoData$: Observable<MempoolInfoData>;
 | 
				
			||||||
  vBytesPerSecondLimit = 1667;
 | 
					  vBytesPerSecondLimit = 1667;
 | 
				
			||||||
 | 
					  isLoadingWebSocket$: Observable<boolean>;
 | 
				
			||||||
 | 
					  mempoolLoadingStatus$: Observable<number>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(
 | 
					  constructor(
 | 
				
			||||||
    private stateService: StateService,
 | 
					    private stateService: StateService,
 | 
				
			||||||
  ) { }
 | 
					  ) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ngOnInit() {
 | 
					  ngOnInit() {
 | 
				
			||||||
 | 
					    this.isLoadingWebSocket$ = this.stateService.isLoadingWebSocket$;
 | 
				
			||||||
 | 
					    this.mempoolLoadingStatus$ = this.stateService.loadingIndicators$
 | 
				
			||||||
 | 
					      .pipe(
 | 
				
			||||||
 | 
					        map((indicators) => indicators.mempool !== undefined ? indicators.mempool : 100)
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      this.mempoolInfoData$ = combineLatest([
 | 
					      this.mempoolInfoData$ = combineLatest([
 | 
				
			||||||
        this.stateService.mempoolInfo$,
 | 
					        this.stateService.mempoolInfo$,
 | 
				
			||||||
        this.stateService.vbytesPerSecond$
 | 
					        this.stateService.vbytesPerSecond$
 | 
				
			||||||
@ -40,18 +48,37 @@ export class FooterComponent implements OnInit {
 | 
				
			|||||||
        map(([mempoolInfo, vbytesPerSecond]) => {
 | 
					        map(([mempoolInfo, vbytesPerSecond]) => {
 | 
				
			||||||
          const percent = Math.round((Math.min(vbytesPerSecond, this.vBytesPerSecondLimit) / this.vBytesPerSecondLimit) * 100);
 | 
					          const percent = Math.round((Math.min(vbytesPerSecond, this.vBytesPerSecondLimit) / this.vBytesPerSecondLimit) * 100);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
        let progressClass = 'bg-danger';
 | 
					          let progressColor = '#7CB342';
 | 
				
			||||||
        if (percent <= 75) {
 | 
					          if (vbytesPerSecond > 1667) {
 | 
				
			||||||
          progressClass = 'bg-success';
 | 
					            progressColor = '#FDD835';
 | 
				
			||||||
        } else if (percent <= 99) {
 | 
					          }
 | 
				
			||||||
          progressClass = 'bg-warning';
 | 
					          if (vbytesPerSecond > 2000) {
 | 
				
			||||||
 | 
					            progressColor = '#FFB300';
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          if (vbytesPerSecond > 2500) {
 | 
				
			||||||
 | 
					            progressColor = '#FB8C00';
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          if (vbytesPerSecond > 3000) {
 | 
				
			||||||
 | 
					            progressColor = '#F4511E';
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          if (vbytesPerSecond > 3500) {
 | 
				
			||||||
 | 
					            progressColor = '#D81B60';
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					          const mempoolSizePercentage = (mempoolInfo.usage / mempoolInfo.maxmempool * 100);
 | 
				
			||||||
 | 
					          let mempoolSizeProgress = 'bg-danger';
 | 
				
			||||||
 | 
					          if (mempoolSizePercentage <= 50) {
 | 
				
			||||||
 | 
					            mempoolSizeProgress = 'bg-success';
 | 
				
			||||||
 | 
					          } else if (mempoolSizePercentage <= 75) {
 | 
				
			||||||
 | 
					            mempoolSizeProgress = 'bg-warning';
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
          return {
 | 
					          return {
 | 
				
			||||||
            memPoolInfo: mempoolInfo,
 | 
					            memPoolInfo: mempoolInfo,
 | 
				
			||||||
            vBytesPerSecond: vbytesPerSecond,
 | 
					            vBytesPerSecond: vbytesPerSecond,
 | 
				
			||||||
            progressWidth: percent + '%',
 | 
					            progressWidth: percent + '%',
 | 
				
			||||||
          progressClass: progressClass,
 | 
					            progressColor: progressColor,
 | 
				
			||||||
 | 
					            mempoolSizeProgress: mempoolSizeProgress,
 | 
				
			||||||
          };
 | 
					          };
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user