From 52437616f2f1b45ee934e56e6d05262a42a21e08 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 24 Jan 2022 17:39:41 +0000 Subject: [PATCH] add volume graph --- .../Asset/AssetActions/Pool/Graph.tsx | 50 +++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/src/components/Asset/AssetActions/Pool/Graph.tsx b/src/components/Asset/AssetActions/Pool/Graph.tsx index 1db7ac9e1..d62e73d11 100644 --- a/src/components/Asset/AssetActions/Pool/Graph.tsx +++ b/src/components/Asset/AssetActions/Pool/Graph.tsx @@ -6,7 +6,7 @@ import React, { useEffect, useState } from 'react' -import { Line, defaults } from 'react-chartjs-2' +import { Line, defaults, Bar } from 'react-chartjs-2' import { ChartData, ChartDataSets, @@ -28,7 +28,7 @@ import { fetchData, getQueryContext } from '@utils/subgraph' import styles from './Graph.module.css' import Decimal from 'decimal.js' -declare type GraphType = 'liquidity' | 'price' +declare type GraphType = 'liquidity' | 'price' | 'volume' // Chart.js global defaults defaults.global.defaultFontFamily = `'Sharp Sans', -apple-system, BlinkMacSystemFont, @@ -108,7 +108,7 @@ function getOptions(locale: string, isDarkMode: boolean): ChartOptions { } } -const graphTypes = ['Liquidity', 'Price'] +const graphTypes = ['Liquidity', 'Price', 'Volume'] const poolHistoryQuery = gql` query PoolHistory($id: String!) { @@ -117,6 +117,7 @@ const poolHistoryQuery = gql` spotPrice baseTokenLiquidity datatokenLiquidity + swapVolume } } ` @@ -168,35 +169,51 @@ export default function Graph(): ReactElement { } LoggerInstance.log('Fired GraphData!') - const latestTimestamps = dataHistory.poolSnapshots.map((item) => { + const timestamps = dataHistory.poolSnapshots.map((item) => { const date = new Date(item.date * 1000) return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}` }) let baseTokenLiquidityCumulative = '0' - - const latestLiquidityHistory = dataHistory.poolSnapshots.map((item) => { + const liquidityHistory = dataHistory.poolSnapshots.map((item) => { baseTokenLiquidityCumulative = new Decimal(baseTokenLiquidityCumulative) .add(item.baseTokenLiquidity) .toString() - return baseTokenLiquidityCumulative }) - const latestPriceHistory = dataHistory.poolSnapshots.map( + const priceHistory = dataHistory.poolSnapshots.map( (item) => item.spotPrice ) + let volumeCumulative = '0' + const volumeHistory = dataHistory.poolSnapshots.map((item) => { + volumeCumulative = new Decimal(volumeCumulative) + .add(item.swapVolume) + .toString() + return baseTokenLiquidityCumulative + }) + + let data + switch (graphType) { + case 'price': + data = priceHistory.slice(0) + break + case 'volume': + data = volumeHistory.slice(0) + break + default: + data = liquidityHistory.slice(0) + break + } + setGraphData({ - labels: latestTimestamps.slice(0), + labels: timestamps.slice(0), datasets: [ { ...lineStyle, label: 'Liquidity (OCEAN)', - data: - graphType === 'liquidity' - ? latestLiquidityHistory.slice(0) - : latestPriceHistory.slice(0), + data, borderColor: `#8b98a9`, pointBackgroundColor: `#8b98a9` } @@ -238,7 +255,12 @@ export default function Graph(): ReactElement { ))} - + + {graphType === 'volume' ? ( + + ) : ( + + )} )}