Add 2y and 3y statistics time span.
This commit is contained in:
		
							parent
							
								
									231e169c66
								
							
						
					
					
						commit
						b6c4a6dfc3
					
				@ -9,7 +9,7 @@ class Statistics {
 | 
			
		||||
  protected newStatisticsEntryCallback: ((stats: OptimizedStatistic) => void) | undefined;
 | 
			
		||||
  protected queryTimeout = 120000;
 | 
			
		||||
  protected cache: { [date: string]: OptimizedStatistic[] } = {
 | 
			
		||||
    '24h': [], '1w': [], '1m': [], '3m': [], '6m': [], '1y': [],
 | 
			
		||||
    '24h': [], '1w': [], '1m': [], '3m': [], '6m': [], '1y': [], '2y': [], '3y': []
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  public setNewStatisticsEntryCallback(fn: (stats: OptimizedStatistic) => void) {
 | 
			
		||||
@ -48,6 +48,8 @@ class Statistics {
 | 
			
		||||
    this.cache['3m'] = await this.$list3M();
 | 
			
		||||
    this.cache['6m'] = await this.$list6M();
 | 
			
		||||
    this.cache['1y'] = await this.$list1Y();
 | 
			
		||||
    this.cache['2y'] = await this.$list2Y();
 | 
			
		||||
    this.cache['3y'] = await this.$list3Y();
 | 
			
		||||
    logger.debug('Statistics cache created');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -403,10 +405,37 @@ class Statistics {
 | 
			
		||||
      connection.release();
 | 
			
		||||
      return this.mapStatisticToOptimizedStatistic(rows);
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      logger.err('$list6M() error' + (e instanceof Error ? e.message : e));
 | 
			
		||||
      logger.err('$list1Y() error' + (e instanceof Error ? e.message : e));
 | 
			
		||||
      return [];
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async $list2Y(): Promise<OptimizedStatistic[]> {
 | 
			
		||||
    try {
 | 
			
		||||
      const connection = await DB.pool.getConnection();
 | 
			
		||||
      const query = this.getQueryForDays(120960);
 | 
			
		||||
      const [rows] = await connection.query<any>({ sql: query, timeout: this.queryTimeout });
 | 
			
		||||
      connection.release();
 | 
			
		||||
      return this.mapStatisticToOptimizedStatistic(rows);
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      logger.err('$list2Y() error' + (e instanceof Error ? e.message : e));
 | 
			
		||||
      return [];
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async $list3Y(): Promise<OptimizedStatistic[]> {
 | 
			
		||||
    try {
 | 
			
		||||
      const connection = await DB.pool.getConnection();
 | 
			
		||||
      const query = this.getQueryForDays(181440);
 | 
			
		||||
      const [rows] = await connection.query<any>({ sql: query, timeout: this.queryTimeout });
 | 
			
		||||
      connection.release();
 | 
			
		||||
      return this.mapStatisticToOptimizedStatistic(rows);
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      logger.err('$list3Y() error' + (e instanceof Error ? e.message : e));
 | 
			
		||||
      return [];
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private mapStatisticToOptimizedStatistic(statistic: Statistic[]): OptimizedStatistic[] {
 | 
			
		||||
    return statistic.map((s) => {
 | 
			
		||||
      return {
 | 
			
		||||
 | 
			
		||||
@ -217,6 +217,8 @@ class Server {
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'statistics/3m', routes.get3MStatistics.bind(routes))
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'statistics/6m', routes.get6MStatistics.bind(routes))
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'statistics/1y', routes.get1YStatistics.bind(routes))
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'statistics/2y', routes.get2YStatistics.bind(routes))
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'statistics/3y', routes.get3YStatistics.bind(routes))
 | 
			
		||||
        ;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -52,6 +52,14 @@ class Routes {
 | 
			
		||||
    res.json(statistics.getCache()['1y']);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public get2YStatistics(req: Request, res: Response) {
 | 
			
		||||
    res.json(statistics.getCache()['2y']);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  public get3YStatistics(req: Request, res: Response) {
 | 
			
		||||
    res.json(statistics.getCache()['3y']);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public getInitData(req: Request, res: Response) {
 | 
			
		||||
    try {
 | 
			
		||||
      const result = websocketHandler.getInitData();
 | 
			
		||||
 | 
			
		||||
@ -35,6 +35,12 @@
 | 
			
		||||
              <label ngbButtonLabel class="btn-primary btn-sm">
 | 
			
		||||
                <input ngbButton type="radio" [value]="'1y'" [routerLink]="['/graphs' | relativeUrl]" fragment="1y"> 1Y
 | 
			
		||||
              </label>
 | 
			
		||||
              <label ngbButtonLabel class="btn-primary btn-sm">
 | 
			
		||||
                <input ngbButton type="radio" [value]="'2y'" [routerLink]="['/graphs' | relativeUrl]" fragment="2y"> 2Y
 | 
			
		||||
              </label>
 | 
			
		||||
              <label ngbButtonLabel class="btn-primary btn-sm">
 | 
			
		||||
                <input ngbButton type="radio" [value]="'3y'" [routerLink]="['/graphs' | relativeUrl]" fragment="3y"> 3Y
 | 
			
		||||
              </label>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <div class="d-inline-block" ngbDropdown #myDrop="ngbDropdown">
 | 
			
		||||
 | 
			
		||||
@ -72,7 +72,7 @@ export class StatisticsComponent implements OnInit {
 | 
			
		||||
    this.route
 | 
			
		||||
      .fragment
 | 
			
		||||
      .subscribe((fragment) => {
 | 
			
		||||
        if (['2h', '24h', '1w', '1m', '3m', '6m', '1y'].indexOf(fragment) > -1) {
 | 
			
		||||
        if (['2h', '24h', '1w', '1m', '3m', '6m', '1y', '2y', '3y'].indexOf(fragment) > -1) {
 | 
			
		||||
          this.radioGroupForm.controls.dateSpan.setValue(fragment, { emitEvent: false });
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
@ -104,7 +104,13 @@ export class StatisticsComponent implements OnInit {
 | 
			
		||||
        if (this.radioGroupForm.controls.dateSpan.value === '6m') {
 | 
			
		||||
          return this.apiService.list6MStatistics$();
 | 
			
		||||
        }
 | 
			
		||||
        return this.apiService.list1YStatistics$();
 | 
			
		||||
        if (this.radioGroupForm.controls.dateSpan.value === '1y') {
 | 
			
		||||
          return this.apiService.list1YStatistics$();
 | 
			
		||||
        }
 | 
			
		||||
        if (this.radioGroupForm.controls.dateSpan.value === '2y') {
 | 
			
		||||
          return this.apiService.list2YStatistics$();
 | 
			
		||||
        }
 | 
			
		||||
        return this.apiService.list3YStatistics$();
 | 
			
		||||
      })
 | 
			
		||||
    )
 | 
			
		||||
    .subscribe((mempoolStats: any) => {
 | 
			
		||||
 | 
			
		||||
@ -57,6 +57,14 @@ export class ApiService {
 | 
			
		||||
    return this.httpClient.get<OptimizedMempoolStats[]>(this.apiBaseUrl + this.apiBasePath + '/api/v1/statistics/1y');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  list2YStatistics$(): Observable<OptimizedMempoolStats[]> {
 | 
			
		||||
    return this.httpClient.get<OptimizedMempoolStats[]>(this.apiBaseUrl + this.apiBasePath + '/api/v1/statistics/2y');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  list3YStatistics$(): Observable<OptimizedMempoolStats[]> {
 | 
			
		||||
    return this.httpClient.get<OptimizedMempoolStats[]>(this.apiBaseUrl + this.apiBasePath + '/api/v1/statistics/3y');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getTransactionTimes$(txIds: string[]): Observable<number[]> {
 | 
			
		||||
    let params = new HttpParams();
 | 
			
		||||
    txIds.forEach((txId: string) => {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user