diff --git a/components/metrics/BarChart.js b/components/metrics/BarChart.js index 24f642c1..f32691fa 100644 --- a/components/metrics/BarChart.js +++ b/components/metrics/BarChart.js @@ -40,7 +40,7 @@ export default function BarChart({ switch (unit) { case 'minute': - return dateFormat(d, 'h:mm', locale); + return index % 2 === 0 ? dateFormat(d, 'h:mm', locale) : ''; case 'hour': return dateFormat(d, 'ha', locale); case 'day': diff --git a/components/metrics/RealtimeChart.js b/components/metrics/RealtimeChart.js index b27322ca..b4703036 100644 --- a/components/metrics/RealtimeChart.js +++ b/components/metrics/RealtimeChart.js @@ -1,5 +1,5 @@ -import React, { useMemo } from 'react'; -import { format, parseISO, startOfMinute, subMinutes } from 'date-fns'; +import React, { useMemo, useRef } from 'react'; +import { format, parseISO, startOfMinute, subMinutes, isBefore } from 'date-fns'; import PageviewsChart from './PageviewsChart'; import { getDateArray } from 'lib/date'; @@ -23,13 +23,13 @@ function mapData(data) { return arr; } -export default function RealtimeChart({ data, ...props }) { +export default function RealtimeChart({ data, unit, ...props }) { + const endDate = startOfMinute(new Date()); + const startDate = subMinutes(endDate, 30); + const prevEndDate = useRef(endDate); + const chartData = useMemo(() => { if (data) { - const endDate = startOfMinute(new Date()); - const startDate = subMinutes(endDate, 30); - const unit = 'minute'; - return { pageviews: getDateArray(mapData(data.pageviews), startDate, endDate, unit), sessions: getDateArray(mapData(data.sessions), startDate, endDate, unit), @@ -38,5 +38,16 @@ export default function RealtimeChart({ data, ...props }) { return { pageviews: [], sessions: [] }; }, [data]); - return ; + // Don't animate the bars shifting over because it looks weird + const animationDuration = useMemo(() => { + if (isBefore(prevEndDate.current, endDate)) { + prevEndDate.current = endDate; + return 0; + } + return 300; + }, [data]); + + return ( + + ); }