diff --git a/src/Charts.tsx b/src/Charts.tsx index c68b761..e17319a 100644 --- a/src/Charts.tsx +++ b/src/Charts.tsx @@ -32,13 +32,17 @@ export const Charts: FunctionComponent = ({ const [latencyEu, setLatencyEu] = useState(0); const [latencyAu, setLatencyAu] = useState(0); - const [totalPurchases, setTotalPurchases] = useState(0); - const [totalRevenue, setTotalRevenue] = useState(0); - const [totalAddToCarts, setTotalAddToCarts] = useState(0); + const [purchasesPerMinute, setPurchasesPerMinute] = useState(0); + const [revenuePerMinute, setRevenuePerMinute] = useState(0); + const [addToCartsPerMinute, setAddToCartsPerMinute] = useState(0); - const [prevTotalRevenueAccumulator, setPrevTotalRevenueAccumulator] = useState(0); - const [totalRevenueAccumulator, setTotalRevenueAccumulator] = useState(0); + const [purchasesPerDay, setPurchasesPerDay] = useState(0); + const [revenuePerDay, setRevenuePerDay] = useState(0); + const [addToCartsPerDay, setAddToCartsPerDay] = useState(0); + const [prevPurchasesPerDay, setPrevPurchasesPerDay] = useState(0); + const [prevRevenuePerDay, setPrevRevenuePerDay] = useState(0); + const [prevAddToCartsPerDay, setPrevAddToCartsPerDay] = useState(0); const [latency, setLatency] = useState>({}); @@ -66,46 +70,66 @@ export const Charts: FunctionComponent = ({ const getMetrics = async () => { if (query.env) { - var purchases = 0; - var revenue = 0; - var addToCarts = 0; + var purchasesPerMinuteAcrossRegions = 0; + var revenuePerMinuteAcrossRegions = 0; + var addToCartsPerMinuteAcrossRegions = 0; + + var purchasesPerDayAcrossRegions = 0; + var revenuePerDayAcrossRegions = 0; + var addToCartsPerDayAcrossRegions = 0; + var arrayPromises = []; for (const regionConfig of envRegionMapping[query.env]) { var currentdate = new Date(); var currentMinute = currentdate.getMinutes(); - currentdate.setMilliseconds(0) - currentdate.setSeconds(0) - currentdate.setMinutes(currentMinute - 1) + currentdate.setMilliseconds(0); + currentdate.setSeconds(0); + currentdate.setMinutes(currentMinute - 1); + var currentDay = currentdate.toISOString().split('T')[0]; arrayPromises.push(await client - .get(`${regionConfig.lambdaEndpoint}&metrics=${currentdate.toISOString()}`)); + .get(`${regionConfig.lambdaEndpoint}&timeBucket=${currentdate.toISOString()}&timeBucketType=minutely`)); + arrayPromises.push(await client + .get(`${regionConfig.lambdaEndpoint}&timeBucket=${currentDay}&timeBucketType=daily`)); } await Promise.all(arrayPromises); for (const promise of arrayPromises) { if (Array.isArray(promise.data)) { const metrics = promise.data; metrics.forEach((metric: TimeBucketMetric) => { - if (metric.type === 'purchases') { - console.log(`Purchases from region`, metric.count) - purchases += Number(metric.count); - } - if (metric.type === 'revenue') { - console.log(`revenue from region`, metric.count) - revenue += Number(metric.count); - } - if (metric.type === 'addToCart') { - console.log(`addToCart from region`, metric.count) - addToCarts += Number(metric.count); + if (metric.timeBucketType === 'minutely') { + if (metric.type === 'purchases') { + purchasesPerMinuteAcrossRegions += Number(metric.count); + } + if (metric.type === 'revenue') { + revenuePerMinuteAcrossRegions += Number(metric.count); + } + if (metric.type === 'addToCart') { + addToCartsPerMinuteAcrossRegions += Number(metric.count); + } + } else if (metric.timeBucketType === 'daily') { + if (metric.type === 'purchases') { + purchasesPerDayAcrossRegions += Number(metric.count); + } + if (metric.type === 'revenue') { + revenuePerDayAcrossRegions += Number(metric.count); + } + if (metric.type === 'addToCart') { + addToCartsPerDayAcrossRegions += Number(metric.count); + } } }) } - setTotalPurchases(purchases); - setTotalRevenue(revenue); - setTotalAddToCarts(addToCarts); - const previousRevenue = totalRevenueAccumulator; - setPrevTotalRevenueAccumulator(previousRevenue); - const currentTotalRevenue = totalRevenueAccumulator + revenue; - console.log("current total", currentTotalRevenue) - setTotalRevenueAccumulator(currentTotalRevenue); + setPurchasesPerMinute(purchasesPerMinuteAcrossRegions); + setRevenuePerMinute(revenuePerMinuteAcrossRegions); + setAddToCartsPerMinute(addToCartsPerMinuteAcrossRegions); + + setPrevPurchasesPerDay(purchasesPerDay); + setPrevRevenuePerDay(revenuePerDay); + setPrevAddToCartsPerDay(addToCartsPerDay); + + setPurchasesPerDay(purchasesPerDayAcrossRegions); + setRevenuePerDay(revenuePerDayAcrossRegions); + setAddToCartsPerDay(addToCartsPerDayAcrossRegions); } } }; @@ -245,11 +269,11 @@ export const Charts: FunctionComponent = ({ left: "20%" }}> - Total Sales (USD) + Total sales today (USD) = ({ /> + + Total add to cart today + + + + + + Total transactions today + + + + = ({ }}> Sales per minute (USD) - {USDollar.format(totalRevenue)} + {USDollar.format(revenuePerMinute)} Add to cart per minute - {totalAddToCarts} + {addToCartsPerMinute} Transactions per minute - {totalPurchases} + {purchasesPerMinute} diff --git a/src/Events.ts b/src/Events.ts index 81e2ce2..9f1fbbb 100644 --- a/src/Events.ts +++ b/src/Events.ts @@ -13,7 +13,7 @@ export interface LiveEvent { export interface TimeBucketMetric { type: string; - bucketTimestamp: string; + timeBucketType: string; count: string; } diff --git a/src/index.css b/src/index.css index 9c654b8..787a8fc 100644 --- a/src/index.css +++ b/src/index.css @@ -7,5 +7,4 @@ body { code { font-family: canada-type-gibson, sans-serif; -} - +} \ No newline at end of file