restore incoming tx clearance line, smooth moving avg
This commit is contained in:
		
							parent
							
								
									3de779ea13
								
							
						
					
					
						commit
						fc52514c31
					
				@ -63,7 +63,8 @@ export class IncomingTransactionsGraphComponent implements OnInit, OnChanges, On
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    this.windowPreference = this.windowPreferenceOverride ? this.windowPreferenceOverride : this.storageService.getValue('graphWindowPreference');
 | 
					    this.windowPreference = this.windowPreferenceOverride ? this.windowPreferenceOverride : this.storageService.getValue('graphWindowPreference');
 | 
				
			||||||
    this.MA = this.calculateMA(this.data.series[0]);
 | 
					    const windowSize = Math.max(10, Math.floor(this.data.series[0].length / 8));
 | 
				
			||||||
 | 
					    this.MA = this.calculateMA(this.data.series[0], windowSize);
 | 
				
			||||||
    this.mountChart();
 | 
					    this.mountChart();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -74,33 +75,22 @@ export class IncomingTransactionsGraphComponent implements OnInit, OnChanges, On
 | 
				
			|||||||
    this.isLoading = false;
 | 
					    this.isLoading = false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// calculate the moving average of maData
 | 
					  /// calculate the moving average of the provided data based on windowSize
 | 
				
			||||||
  calculateMA(maData): number[][] {
 | 
					  calculateMA(data: number[][], windowSize: number = 100): number[][] {
 | 
				
			||||||
    //update const variables that are not changed
 | 
					    //update const variables that are not changed
 | 
				
			||||||
    const ma: number[][] = [];
 | 
					    const ma: number[][] = [];
 | 
				
			||||||
    let sum = 0;
 | 
					    let sum = 0;
 | 
				
			||||||
    let i = 0;
 | 
					    let i = 0;
 | 
				
			||||||
    const len = maData.length;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //Adjust window length based on the length of the data
 | 
					 | 
				
			||||||
    //5% appeared as a good amount from tests
 | 
					 | 
				
			||||||
    //TODO: make this a text box in the UI
 | 
					 | 
				
			||||||
    const maWindowLen = Math.ceil(len * 0.05);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //calculate the center of the moving average window
 | 
					 | 
				
			||||||
    const center = Math.floor(maWindowLen / 2);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //calculate the centered moving average
 | 
					    //calculate the centered moving average
 | 
				
			||||||
    for (i = center; i < len - center; i++) {
 | 
					    for (i = 0; i < data.length; i++) {
 | 
				
			||||||
      sum = 0;
 | 
					      sum += data[i][1];
 | 
				
			||||||
      //build out ma as we loop through the data
 | 
					      if (i >= windowSize) {
 | 
				
			||||||
      ma[i] = [];
 | 
					        sum -= data[i - windowSize][1];
 | 
				
			||||||
      ma[i].push(maData[i][0]);
 | 
					        const midpoint = i - Math.floor(windowSize / 2);
 | 
				
			||||||
      for (let j = i - center; j <= i + center; j++) {
 | 
					        const avg = sum / windowSize;
 | 
				
			||||||
        sum += maData[j][1];
 | 
					        ma.push([data[midpoint][0], avg]);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					 | 
				
			||||||
      ma[i].push(sum / maWindowLen);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //return the moving average array
 | 
					    //return the moving average array
 | 
				
			||||||
@ -138,36 +128,22 @@ export class IncomingTransactionsGraphComponent implements OnInit, OnChanges, On
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
        }],
 | 
					        }],
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    });
 | 
				
			||||||
    {
 | 
					    if (this.template !== 'widget') {
 | 
				
			||||||
      zlevel: 0,
 | 
					      seriesGraph.push({
 | 
				
			||||||
      name: 'MA',
 | 
					        zlevel: 0,
 | 
				
			||||||
      data: this.MA,
 | 
					        name: 'MA',
 | 
				
			||||||
      type: 'line',
 | 
					        data: this.MA,
 | 
				
			||||||
      smooth: false,
 | 
					        type: 'line',
 | 
				
			||||||
      showSymbol: false,
 | 
					        smooth: false,
 | 
				
			||||||
      symbol: 'none',
 | 
					        showSymbol: false,
 | 
				
			||||||
      lineStyle: {
 | 
					 | 
				
			||||||
        width: 1,
 | 
					 | 
				
			||||||
        color: "white",
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      markLine: {
 | 
					 | 
				
			||||||
        silent: true,
 | 
					 | 
				
			||||||
        symbol: 'none',
 | 
					        symbol: 'none',
 | 
				
			||||||
        lineStyle: {
 | 
					        lineStyle: {
 | 
				
			||||||
          color: '#fff',
 | 
					 | 
				
			||||||
          opacity: 1,
 | 
					 | 
				
			||||||
          width: 2,
 | 
					          width: 2,
 | 
				
			||||||
        },
 | 
					          color: "white",
 | 
				
			||||||
        data: [{
 | 
					        }
 | 
				
			||||||
          yAxis: 1667,
 | 
					      });
 | 
				
			||||||
          label: {
 | 
					    }
 | 
				
			||||||
            show: false,
 | 
					 | 
				
			||||||
            color: '#ffffff',
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }],
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.mempoolStatsChartOption = {
 | 
					    this.mempoolStatsChartOption = {
 | 
				
			||||||
      grid: {
 | 
					      grid: {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
// Import tree-shakeable echarts
 | 
					// Import tree-shakeable echarts
 | 
				
			||||||
import * as echarts from 'echarts/core';
 | 
					import * as echarts from 'echarts/core';
 | 
				
			||||||
import { LineChart, LinesChart, BarChart, TreemapChart, PieChart, ScatterChart } from 'echarts/charts';
 | 
					import { LineChart, LinesChart, BarChart, TreemapChart, PieChart, ScatterChart } from 'echarts/charts';
 | 
				
			||||||
import { TitleComponent, TooltipComponent, GridComponent, LegendComponent, GeoComponent, DataZoomComponent, VisualMapComponent } from 'echarts/components';
 | 
					import { TitleComponent, TooltipComponent, GridComponent, LegendComponent, GeoComponent, DataZoomComponent, VisualMapComponent, MarkLineComponent } from 'echarts/components';
 | 
				
			||||||
import { SVGRenderer, CanvasRenderer } from 'echarts/renderers';
 | 
					import { SVGRenderer, CanvasRenderer } from 'echarts/renderers';
 | 
				
			||||||
// Typescript interfaces
 | 
					// Typescript interfaces
 | 
				
			||||||
import { EChartsOption, TreemapSeriesOption, LineSeriesOption, PieSeriesOption } from 'echarts';
 | 
					import { EChartsOption, TreemapSeriesOption, LineSeriesOption, PieSeriesOption } from 'echarts';
 | 
				
			||||||
@ -11,7 +11,7 @@ echarts.use([
 | 
				
			|||||||
  SVGRenderer, CanvasRenderer,
 | 
					  SVGRenderer, CanvasRenderer,
 | 
				
			||||||
  TitleComponent, TooltipComponent, GridComponent,
 | 
					  TitleComponent, TooltipComponent, GridComponent,
 | 
				
			||||||
  LegendComponent, GeoComponent, DataZoomComponent,
 | 
					  LegendComponent, GeoComponent, DataZoomComponent,
 | 
				
			||||||
  VisualMapComponent,
 | 
					  VisualMapComponent, MarkLineComponent,
 | 
				
			||||||
  LineChart, LinesChart, BarChart, TreemapChart, PieChart, ScatterChart
 | 
					  LineChart, LinesChart, BarChart, TreemapChart, PieChart, ScatterChart
 | 
				
			||||||
]);
 | 
					]);
 | 
				
			||||||
export { echarts, EChartsOption, TreemapSeriesOption, LineSeriesOption, PieSeriesOption };
 | 
					export { echarts, EChartsOption, TreemapSeriesOption, LineSeriesOption, PieSeriesOption };
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user