Disable timespan controls while isLoading
This commit is contained in:
		
							parent
							
								
									cf1bf9f0c5
								
							
						
					
					
						commit
						05594675c0
					
				@ -10,7 +10,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
				
			||||||
          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan"> 24h
 | 
					          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan"> 24h
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -78,3 +78,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -10,7 +10,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 4320" [class.active]="radioGroupForm.get('dateSpan').value === '1m'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 4320" [class.active]="radioGroupForm.get('dateSpan').value === '1m'">
 | 
				
			||||||
          <input type="radio" [value]="'1m'" fragment="1m" [routerLink]="['/graphs/mining/block-fees' | relativeUrl]" formControlName="dateSpan"> 1M
 | 
					          <input type="radio" [value]="'1m'" fragment="1m" [routerLink]="['/graphs/mining/block-fees' | relativeUrl]" formControlName="dateSpan"> 1M
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -78,3 +78,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -4,9 +4,9 @@ import { Observable, Subscription } from 'rxjs';
 | 
				
			|||||||
import { map, share, startWith, switchMap, tap } from 'rxjs/operators';
 | 
					import { map, share, startWith, switchMap, tap } from 'rxjs/operators';
 | 
				
			||||||
import { ApiService } from '../../services/api.service';
 | 
					import { ApiService } from '../../services/api.service';
 | 
				
			||||||
import { SeoService } from '../../services/seo.service';
 | 
					import { SeoService } from '../../services/seo.service';
 | 
				
			||||||
import { formatCurrency, formatNumber, getCurrencySymbol } from '@angular/common';
 | 
					import { formatNumber } from '@angular/common';
 | 
				
			||||||
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
 | 
					import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
 | 
				
			||||||
import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from '../../shared/graphs.utils';
 | 
					import { download, formatterXAxis } from '../../shared/graphs.utils';
 | 
				
			||||||
import { StateService } from '../../services/state.service';
 | 
					import { StateService } from '../../services/state.service';
 | 
				
			||||||
import { StorageService } from '../../services/storage.service';
 | 
					import { StorageService } from '../../services/storage.service';
 | 
				
			||||||
import { MiningService } from '../../services/mining.service';
 | 
					import { MiningService } from '../../services/mining.service';
 | 
				
			||||||
@ -92,6 +92,7 @@ export class BlockFeesGraphComponent implements OnInit {
 | 
				
			|||||||
      .pipe(
 | 
					      .pipe(
 | 
				
			||||||
        startWith(this.radioGroupForm.controls.dateSpan.value),
 | 
					        startWith(this.radioGroupForm.controls.dateSpan.value),
 | 
				
			||||||
        switchMap((timespan) => {
 | 
					        switchMap((timespan) => {
 | 
				
			||||||
 | 
					          this.isLoading = true;
 | 
				
			||||||
          this.storageService.setValue('miningWindowPreference', timespan);
 | 
					          this.storageService.setValue('miningWindowPreference', timespan);
 | 
				
			||||||
          this.timespan = timespan;
 | 
					          this.timespan = timespan;
 | 
				
			||||||
          this.isLoading = true;
 | 
					          this.isLoading = true;
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
				
			||||||
          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/block-prediction' | relativeUrl]" formControlName="dateSpan"> 24h
 | 
					          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/block-prediction' | relativeUrl]" formControlName="dateSpan"> 24h
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -78,3 +78,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -11,7 +11,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 4320" [class.active]="radioGroupForm.get('dateSpan').value === '1m'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 4320" [class.active]="radioGroupForm.get('dateSpan').value === '1m'">
 | 
				
			||||||
          <input type="radio" [value]="'1m'" fragment="1m" [routerLink]="['/graphs/mining/block-rewards' | relativeUrl]" formControlName="dateSpan"> 1M
 | 
					          <input type="radio" [value]="'1m'" fragment="1m" [routerLink]="['/graphs/mining/block-rewards' | relativeUrl]" formControlName="dateSpan"> 1M
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -78,3 +78,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -80,7 +80,7 @@ export class BlockRewardsGraphComponent implements OnInit {
 | 
				
			|||||||
    this.route
 | 
					    this.route
 | 
				
			||||||
      .fragment
 | 
					      .fragment
 | 
				
			||||||
      .subscribe((fragment) => {
 | 
					      .subscribe((fragment) => {
 | 
				
			||||||
        if (['3m', '6m', '1y', '2y', '3y', 'all'].indexOf(fragment) > -1) {
 | 
					        if (['1m', '3m', '6m', '1y', '2y', '3y', 'all'].indexOf(fragment) > -1) {
 | 
				
			||||||
          this.radioGroupForm.controls.dateSpan.setValue(fragment, { emitEvent: false });
 | 
					          this.radioGroupForm.controls.dateSpan.setValue(fragment, { emitEvent: false });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(blockSizesWeightsObservable$ | async) as stats">
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(blockSizesWeightsObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
				
			||||||
          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/block-sizes-weights' | relativeUrl]" formControlName="dateSpan"> 24h
 | 
					          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/block-sizes-weights' | relativeUrl]" formControlName="dateSpan"> 24h
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -78,3 +78,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -31,7 +31,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(hashrateObservable$ | async) as stats">
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(hashrateObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 12960" [class.active]="radioGroupForm.get('dateSpan').value === '3m'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 12960" [class.active]="radioGroupForm.get('dateSpan').value === '3m'">
 | 
				
			||||||
          <input type="radio" [value]="'3m'" fragment="3m" [routerLink]="['/graphs/mining/hashrate-difficulty' | relativeUrl]" [attr.data-cy]="'3m'" formControlName="dateSpan"> 3M
 | 
					          <input type="radio" [value]="'3m'" fragment="3m" [routerLink]="['/graphs/mining/hashrate-difficulty' | relativeUrl]" [attr.data-cy]="'3m'" formControlName="dateSpan"> 3M
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -131,4 +131,9 @@
 | 
				
			|||||||
  display: block;
 | 
					  display: block;
 | 
				
			||||||
  max-width: 80px;
 | 
					  max-width: 80px;
 | 
				
			||||||
  margin: 15px auto 3px;
 | 
					  margin: 15px auto 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -11,7 +11,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(hashrateObservable$ | async) as stats">
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(hashrateObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 25920" [class.active]="radioGroupForm.get('dateSpan').value === '6m'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.blockCount >= 25920" [class.active]="radioGroupForm.get('dateSpan').value === '6m'">
 | 
				
			||||||
          <input type="radio" [value]="'6m'" fragment="6m" [routerLink]="['/graphs/mining/pools-dominance' | relativeUrl]" [attr.data-cy]="'6m'" formControlName="dateSpan"> 6M
 | 
					          <input type="radio" [value]="'6m'" fragment="6m" [routerLink]="['/graphs/mining/pools-dominance' | relativeUrl]" [attr.data-cy]="'6m'" formControlName="dateSpan"> 6M
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -82,3 +82,8 @@
 | 
				
			|||||||
.loadingGraphs.widget {
 | 
					.loadingGraphs.widget {
 | 
				
			||||||
  top: 75%;
 | 
					  top: 75%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -40,7 +40,7 @@
 | 
				
			|||||||
    </div>  
 | 
					    </div>  
 | 
				
			||||||
    <form [formGroup]="radioGroupForm" class="formRadioGroup"
 | 
					    <form [formGroup]="radioGroupForm" class="formRadioGroup"
 | 
				
			||||||
      *ngIf="!widget && (miningStatsObservable$ | async) as stats">
 | 
					      *ngIf="!widget && (miningStatsObservable$ | async) as stats">
 | 
				
			||||||
      <div class="btn-group btn-group-toggle" name="radioBasic">
 | 
					      <div class="btn-group btn-group-toggle" name="radioBasic" [class]="{'disabled': isLoading}">
 | 
				
			||||||
        <label class="btn btn-primary btn-sm" *ngIf="stats.totalBlockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
					        <label class="btn btn-primary btn-sm" *ngIf="stats.totalBlockCount >= 144" [class.active]="radioGroupForm.get('dateSpan').value === '24h'">
 | 
				
			||||||
          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/pools' | relativeUrl]" [attr.data-cy]="'24h'" formControlName="dateSpan"> 24h
 | 
					          <input type="radio" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/pools' | relativeUrl]" [attr.data-cy]="'24h'" formControlName="dateSpan"> 24h
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
@ -104,7 +104,7 @@
 | 
				
			|||||||
            <img width="25" height="25" src="{{ pool.logo }}" [alt]="pool.name + ' mining pool logo'" onError="this.src = '/resources/mining-pools/default.svg'">
 | 
					            <img width="25" height="25" src="{{ pool.logo }}" [alt]="pool.name + ' mining pool logo'" onError="this.src = '/resources/mining-pools/default.svg'">
 | 
				
			||||||
          </td>
 | 
					          </td>
 | 
				
			||||||
          <td class=""><a [routerLink]="[('/mining/pool/' + pool.slug) | relativeUrl]">{{ pool.name }}</a></td>
 | 
					          <td class=""><a [routerLink]="[('/mining/pool/' + pool.slug) | relativeUrl]">{{ pool.name }}</a></td>
 | 
				
			||||||
          <td class="" *ngIf="this.miningWindowPreference === '24h' && !isLoading">{{ pool.lastEstimatedHashrate }} {{
 | 
					          <td class="" *ngIf="this.miningWindowPreference === '24h'">{{ pool.lastEstimatedHashrate }} {{
 | 
				
			||||||
            miningStats.miningUnits.hashrateUnit }}</td>
 | 
					            miningStats.miningUnits.hashrateUnit }}</td>
 | 
				
			||||||
          <td class="d-flex justify-content-center">
 | 
					          <td class="d-flex justify-content-center">
 | 
				
			||||||
            {{ pool.blockCount }}<span class="d-none d-md-block"> ({{ pool.share }}%)</span>
 | 
					            {{ pool.blockCount }}<span class="d-none d-md-block"> ({{ pool.share }}%)</span>
 | 
				
			||||||
 | 
				
			|||||||
@ -139,3 +139,8 @@
 | 
				
			|||||||
  max-width: 80px;
 | 
					  max-width: 80px;
 | 
				
			||||||
  margin: 15px auto 3px;
 | 
					  margin: 15px auto 3px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.disabled {
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -79,6 +79,7 @@ export class PoolRankingComponent implements OnInit {
 | 
				
			|||||||
        .pipe(
 | 
					        .pipe(
 | 
				
			||||||
          startWith(this.radioGroupForm.controls.dateSpan.value), // (trigger when the page loads)
 | 
					          startWith(this.radioGroupForm.controls.dateSpan.value), // (trigger when the page loads)
 | 
				
			||||||
          tap((value) => {
 | 
					          tap((value) => {
 | 
				
			||||||
 | 
					            this.isLoading = true;
 | 
				
			||||||
            this.timespan = value;
 | 
					            this.timespan = value;
 | 
				
			||||||
            if (!this.widget) {
 | 
					            if (!this.widget) {
 | 
				
			||||||
              this.storageService.setValue('miningWindowPreference', value);
 | 
					              this.storageService.setValue('miningWindowPreference', value);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user