Merge branch 'master' into nymkappa/bugfix/optimize-price-frontend
This commit is contained in:
		
						commit
						d2ea9215f0
					
				@ -27,7 +27,7 @@
 | 
			
		||||
    "package": "npm run build && rm -rf package && mv dist package && mv node_modules package && npm run package-rm-build-deps",
 | 
			
		||||
    "package-rm-build-deps": "(cd package/node_modules; rm -r typescript @typescript-eslint)",
 | 
			
		||||
    "start": "node --max-old-space-size=2048 dist/index.js",
 | 
			
		||||
    "start-production": "node --max-old-space-size=4096 dist/index.js",
 | 
			
		||||
    "start-production": "node --max-old-space-size=16384 dist/index.js",
 | 
			
		||||
    "test": "./node_modules/.bin/jest --coverage",
 | 
			
		||||
    "lint": "./node_modules/.bin/eslint . --ext .ts",
 | 
			
		||||
    "lint:fix": "./node_modules/.bin/eslint . --ext .ts --fix",
 | 
			
		||||
 | 
			
		||||
@ -521,7 +521,7 @@ class BlocksRepository {
 | 
			
		||||
        CAST(AVG(blocks.height) as INT) as avgHeight,
 | 
			
		||||
        CAST(AVG(UNIX_TIMESTAMP(blockTimestamp)) as INT) as timestamp,
 | 
			
		||||
        CAST(AVG(fees) as INT) as avgFees,
 | 
			
		||||
        prices.*
 | 
			
		||||
        prices.USD
 | 
			
		||||
        FROM blocks
 | 
			
		||||
        JOIN blocks_prices on blocks_prices.height = blocks.height
 | 
			
		||||
        JOIN prices on prices.id = blocks_prices.price_id
 | 
			
		||||
@ -550,7 +550,7 @@ class BlocksRepository {
 | 
			
		||||
        CAST(AVG(blocks.height) as INT) as avgHeight,
 | 
			
		||||
        CAST(AVG(UNIX_TIMESTAMP(blockTimestamp)) as INT) as timestamp,
 | 
			
		||||
        CAST(AVG(reward) as INT) as avgRewards,
 | 
			
		||||
        prices.*
 | 
			
		||||
        prices.USD
 | 
			
		||||
        FROM blocks
 | 
			
		||||
        JOIN blocks_prices on blocks_prices.height = blocks.height
 | 
			
		||||
        JOIN prices on prices.id = blocks_prices.price_id
 | 
			
		||||
 | 
			
		||||
@ -1,19 +1,17 @@
 | 
			
		||||
import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';
 | 
			
		||||
import { EChartsOption, graphic } from 'echarts';
 | 
			
		||||
import { Observable, Subscription } from 'rxjs';
 | 
			
		||||
import { Observable } from 'rxjs';
 | 
			
		||||
import { map, share, startWith, switchMap, tap } from 'rxjs/operators';
 | 
			
		||||
import { ApiService } from '../../services/api.service';
 | 
			
		||||
import { SeoService } from '../../services/seo.service';
 | 
			
		||||
import { formatNumber } from '@angular/common';
 | 
			
		||||
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
 | 
			
		||||
import { download, formatterXAxis } from '../../shared/graphs.utils';
 | 
			
		||||
import { StateService } from '../../services/state.service';
 | 
			
		||||
import { StorageService } from '../../services/storage.service';
 | 
			
		||||
import { MiningService } from '../../services/mining.service';
 | 
			
		||||
import { ActivatedRoute } from '@angular/router';
 | 
			
		||||
import { FiatShortenerPipe } from '../../shared/pipes/fiat-shortener.pipe';
 | 
			
		||||
import { FiatCurrencyPipe } from '../../shared/pipes/fiat-currency.pipe';
 | 
			
		||||
import { fiatCurrencies } from '../../app.constants';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-block-fees-graph',
 | 
			
		||||
@ -47,7 +45,6 @@ export class BlockFeesGraphComponent implements OnInit {
 | 
			
		||||
  timespan = '';
 | 
			
		||||
  chartInstance: any = undefined;
 | 
			
		||||
 | 
			
		||||
  currencySubscription: Subscription;
 | 
			
		||||
  currency: string;
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
@ -57,21 +54,13 @@ export class BlockFeesGraphComponent implements OnInit {
 | 
			
		||||
    private formBuilder: UntypedFormBuilder,
 | 
			
		||||
    private storageService: StorageService,
 | 
			
		||||
    private miningService: MiningService,
 | 
			
		||||
    private stateService: StateService,
 | 
			
		||||
    private route: ActivatedRoute,
 | 
			
		||||
    private fiatShortenerPipe: FiatShortenerPipe,
 | 
			
		||||
    private fiatCurrencyPipe: FiatCurrencyPipe,
 | 
			
		||||
  ) {
 | 
			
		||||
    this.radioGroupForm = this.formBuilder.group({ dateSpan: '1y' });
 | 
			
		||||
    this.radioGroupForm.controls.dateSpan.setValue('1y');
 | 
			
		||||
 | 
			
		||||
    this.currencySubscription = this.stateService.fiatCurrency$.subscribe((fiat) => {
 | 
			
		||||
      if (fiat && fiatCurrencies[fiat]?.indexed) {
 | 
			
		||||
        this.currency = fiat;
 | 
			
		||||
      } else {
 | 
			
		||||
        this.currency = 'USD';
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    this.currency = 'USD';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
 | 
			
		||||
@ -1,19 +1,17 @@
 | 
			
		||||
import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';
 | 
			
		||||
import { EChartsOption, graphic } from 'echarts';
 | 
			
		||||
import { Observable, Subscription } from 'rxjs';
 | 
			
		||||
import { Observable } from 'rxjs';
 | 
			
		||||
import { map, share, startWith, switchMap, tap } from 'rxjs/operators';
 | 
			
		||||
import { ApiService } from '../../services/api.service';
 | 
			
		||||
import { SeoService } from '../../services/seo.service';
 | 
			
		||||
import { formatNumber } from '@angular/common';
 | 
			
		||||
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
 | 
			
		||||
import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from '../../shared/graphs.utils';
 | 
			
		||||
import { download, formatterXAxis } from '../../shared/graphs.utils';
 | 
			
		||||
import { MiningService } from '../../services/mining.service';
 | 
			
		||||
import { StateService } from '../../services/state.service';
 | 
			
		||||
import { StorageService } from '../../services/storage.service';
 | 
			
		||||
import { ActivatedRoute } from '@angular/router';
 | 
			
		||||
import { FiatShortenerPipe } from '../../shared/pipes/fiat-shortener.pipe';
 | 
			
		||||
import { FiatCurrencyPipe } from '../../shared/pipes/fiat-currency.pipe';
 | 
			
		||||
import { fiatCurrencies } from '../../app.constants';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-block-rewards-graph',
 | 
			
		||||
@ -47,7 +45,6 @@ export class BlockRewardsGraphComponent implements OnInit {
 | 
			
		||||
  timespan = '';
 | 
			
		||||
  chartInstance: any = undefined;
 | 
			
		||||
 | 
			
		||||
  currencySubscription: Subscription;
 | 
			
		||||
  currency: string;
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
@ -56,19 +53,12 @@ export class BlockRewardsGraphComponent implements OnInit {
 | 
			
		||||
    private apiService: ApiService,
 | 
			
		||||
    private formBuilder: UntypedFormBuilder,
 | 
			
		||||
    private miningService: MiningService,
 | 
			
		||||
    private stateService: StateService,
 | 
			
		||||
    private storageService: StorageService,
 | 
			
		||||
    private route: ActivatedRoute,
 | 
			
		||||
    private fiatShortenerPipe: FiatShortenerPipe,
 | 
			
		||||
    private fiatCurrencyPipe: FiatCurrencyPipe,
 | 
			
		||||
  ) {
 | 
			
		||||
    this.currencySubscription = this.stateService.fiatCurrency$.subscribe((fiat) => {
 | 
			
		||||
      if (fiat && fiatCurrencies[fiat]?.indexed) {
 | 
			
		||||
        this.currency = fiat;
 | 
			
		||||
      } else {
 | 
			
		||||
        this.currency = 'USD';
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    this.currency = 'USD';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
 | 
			
		||||
@ -123,7 +123,7 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
    this.minScrollWidth = this.firstPageWidth + (this.pageWidth * 2);
 | 
			
		||||
 | 
			
		||||
    if (firstVisibleBlock != null) {
 | 
			
		||||
      this.scrollToBlock(firstVisibleBlock, offset);
 | 
			
		||||
      this.scrollToBlock(firstVisibleBlock, offset + (this.isMobile ? this.blockWidth : 0));
 | 
			
		||||
    } else {
 | 
			
		||||
      this.updatePages();
 | 
			
		||||
    }
 | 
			
		||||
@ -178,8 +178,10 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
      setTimeout(() => { this.scrollToBlock(height, blockOffset); }, 50);
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    const targetHeight = this.isMobile ? height - 1 : height;
 | 
			
		||||
    const viewingPageIndex = this.getPageIndexOf(targetHeight);
 | 
			
		||||
    if (this.isMobile) {
 | 
			
		||||
      blockOffset -= this.blockWidth;
 | 
			
		||||
    }
 | 
			
		||||
    const viewingPageIndex = this.getPageIndexOf(height);
 | 
			
		||||
    const pages = [];
 | 
			
		||||
    this.pageIndex = Math.max(viewingPageIndex - 1, 0);
 | 
			
		||||
    let viewingPage = this.getPageAt(viewingPageIndex);
 | 
			
		||||
@ -189,7 +191,7 @@ export class StartComponent implements OnInit, OnDestroy {
 | 
			
		||||
      viewingPage = this.getPageAt(viewingPageIndex);
 | 
			
		||||
    }
 | 
			
		||||
    const left = viewingPage.offset - this.getConvertedScrollOffset();
 | 
			
		||||
    const blockIndex = viewingPage.height - targetHeight;
 | 
			
		||||
    const blockIndex = viewingPage.height - height;
 | 
			
		||||
    const targetOffset = (this.blockWidth * blockIndex) + left;
 | 
			
		||||
    let deltaOffset = targetOffset - blockOffset;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -199,8 +199,8 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
    this.outputs = this.initLines('out', voutWithFee, totalValue, this.maxStrands);
 | 
			
		||||
 | 
			
		||||
    this.middle = {
 | 
			
		||||
      path: `M ${(this.width / 2) - this.midWidth} ${(this.height / 2) + 0.5} L ${(this.width / 2) + this.midWidth} ${(this.height / 2) + 0.5}`,
 | 
			
		||||
      style: `stroke-width: ${this.combinedWeight + 1}; stroke: ${this.gradient[1]}`
 | 
			
		||||
      path: `M ${(this.width / 2) - this.midWidth} ${(this.height / 2) + 0.25} L ${(this.width / 2) + this.midWidth} ${(this.height / 2) + 0.25}`,
 | 
			
		||||
      style: `stroke-width: ${this.combinedWeight + 0.5}; stroke: ${this.gradient[1]}`
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.hasLine = this.inputs.reduce((line, put) => line || !put.zeroValue, false)
 | 
			
		||||
@ -257,7 +257,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
    const lineParams = weights.map((w, i) => {
 | 
			
		||||
      return {
 | 
			
		||||
        weight: w,
 | 
			
		||||
        thickness: xputs[i].value === 0 ? this.zeroValueThickness : Math.max(this.minWeight - 1, w) + 1,
 | 
			
		||||
        thickness: xputs[i].value === 0 ? this.zeroValueThickness : Math.min(this.combinedWeight + 0.5, Math.max(this.minWeight - 1, w) + 1),
 | 
			
		||||
        offset: 0,
 | 
			
		||||
        innerY: 0,
 | 
			
		||||
        outerY: 0,
 | 
			
		||||
@ -269,7 +269,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
 | 
			
		||||
    // bounds of the middle segment
 | 
			
		||||
    const innerTop = (this.height / 2) - (this.combinedWeight / 2);
 | 
			
		||||
    const innerBottom = innerTop + this.combinedWeight;
 | 
			
		||||
    const innerBottom = innerTop + this.combinedWeight + 0.5;
 | 
			
		||||
    // tracks the visual bottom of the endpoints of the previous line
 | 
			
		||||
    let lastOuter = 0;
 | 
			
		||||
    let lastInner = innerTop;
 | 
			
		||||
@ -294,7 +294,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
 | 
			
		||||
 | 
			
		||||
      // set the vertical position of the (center of the) outer side of the line
 | 
			
		||||
      line.outerY = lastOuter + (line.thickness / 2);
 | 
			
		||||
      line.innerY = Math.min(innerBottom + (line.thickness / 2), Math.max(innerTop + (line.thickness / 2), lastInner + (line.weight / 2)));
 | 
			
		||||
      line.innerY = Math.min(innerBottom - (line.thickness / 2), Math.max(innerTop + (line.thickness / 2), lastInner + (line.weight / 2)));
 | 
			
		||||
 | 
			
		||||
      // special case to center single input/outputs
 | 
			
		||||
      if (xputs.length === 1) {
 | 
			
		||||
 | 
			
		||||
@ -130,7 +130,7 @@ export class NodesNetworksChartComponent implements OnInit {
 | 
			
		||||
        },
 | 
			
		||||
        text: $localize`:@@b420668a91f8ebaf6e6409c4ba87f1d45961d2bd:Lightning Nodes Per Network`,
 | 
			
		||||
        left: 'center',
 | 
			
		||||
        top: 11,
 | 
			
		||||
        top: 0,
 | 
			
		||||
        zlevel: 10,
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
@ -227,8 +227,8 @@ export class NodesNetworksChartComponent implements OnInit {
 | 
			
		||||
      title: title,
 | 
			
		||||
      animation: false,
 | 
			
		||||
      grid: {
 | 
			
		||||
        height: this.widget ? 100 : undefined,
 | 
			
		||||
        top: this.widget ? 10 : 40,
 | 
			
		||||
        height: this.widget ? 90 : undefined,
 | 
			
		||||
        top: this.widget ? 20 : 40,
 | 
			
		||||
        bottom: this.widget ? 0 : 70,
 | 
			
		||||
        right: (isMobile() && this.widget) ? 35 : this.right,
 | 
			
		||||
        left: (isMobile() && this.widget) ? 40 :this.left,
 | 
			
		||||
 | 
			
		||||
@ -121,7 +121,7 @@ export class LightningStatisticsChartComponent implements OnInit {
 | 
			
		||||
        },
 | 
			
		||||
        text: $localize`:@@ea8db27e6db64f8b940711948c001a1100e5fe9f:Lightning Network Capacity`,
 | 
			
		||||
        left: 'center',
 | 
			
		||||
        top: 11,
 | 
			
		||||
        top: 0,
 | 
			
		||||
        zlevel: 10,
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
@ -137,8 +137,8 @@ export class LightningStatisticsChartComponent implements OnInit {
 | 
			
		||||
        ]),
 | 
			
		||||
      ],
 | 
			
		||||
      grid: {
 | 
			
		||||
        height: this.widget ? 100 : undefined,
 | 
			
		||||
        top: this.widget ? 10 : 40,
 | 
			
		||||
        height: this.widget ? 90 : undefined,
 | 
			
		||||
        top: this.widget ? 20 : 40,
 | 
			
		||||
        bottom: this.widget ? 0 : 70,
 | 
			
		||||
        right: (isMobile() && this.widget) ? 35 : this.right,
 | 
			
		||||
        left: (isMobile() && this.widget) ? 40 :this.left,
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ listen=1
 | 
			
		||||
discover=1
 | 
			
		||||
par=16
 | 
			
		||||
dbcache=8192
 | 
			
		||||
maxmempool=1337
 | 
			
		||||
maxmempool=4096
 | 
			
		||||
mempoolexpiry=999999
 | 
			
		||||
maxconnections=42
 | 
			
		||||
onion=127.0.0.1:9050
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user