diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61707399d..ef343700c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -367,8 +367,6 @@ importers: specifier: ^5.9.2 version: 5.9.2 - dist: {} - packages: '@ampproject/remapping@2.3.0': diff --git a/src/app/(main)/websites/[websiteId]/(reports)/revenue/Revenue.tsx b/src/app/(main)/websites/[websiteId]/(reports)/revenue/Revenue.tsx index 420c94fec..c56eca68d 100644 --- a/src/app/(main)/websites/[websiteId]/(reports)/revenue/Revenue.tsx +++ b/src/app/(main)/websites/[websiteId]/(reports)/revenue/Revenue.tsx @@ -1,35 +1,33 @@ -import { useState } from 'react'; -import { Grid, Row, Text } from '@umami/react-zen'; -import classNames from 'classnames'; -import { colord } from 'colord'; import { BarChart } from '@/components/charts/BarChart'; +import { LoadingPanel } from '@/components/common/LoadingPanel'; +import { Panel } from '@/components/common/Panel'; import { TypeIcon } from '@/components/common/TypeIcon'; import { useCountryNames, useLocale, useMessages, useResultQuery } from '@/components/hooks'; +import { CurrencySelect } from '@/components/input/CurrencySelect'; import { ListTable } from '@/components/metrics/ListTable'; import { MetricCard } from '@/components/metrics/MetricCard'; import { MetricsBar } from '@/components/metrics/MetricsBar'; import { renderDateLabels } from '@/lib/charts'; import { CHART_COLORS } from '@/lib/constants'; +import { generateTimeSeries } from '@/lib/date'; import { formatLongCurrency, formatLongNumber } from '@/lib/format'; -import { useCallback, useMemo } from 'react'; -import { Panel } from '@/components/common/Panel'; -import { Column } from '@umami/react-zen'; -import { LoadingPanel } from '@/components/common/LoadingPanel'; -import { getMinimumUnit } from '@/lib/date'; -import { CurrencySelect } from '@/components/input/CurrencySelect'; +import { Column, Grid, Row, Text } from '@umami/react-zen'; +import classNames from 'classnames'; +import { colord } from 'colord'; +import { useCallback, useMemo, useState } from 'react'; export interface RevenueProps { websiteId: string; startDate: Date; endDate: Date; + unit: string; } -export function Revenue({ websiteId, startDate, endDate }: RevenueProps) { +export function Revenue({ websiteId, startDate, endDate, unit }: RevenueProps) { const [currency, setCurrency] = useState('USD'); const { formatMessage, labels } = useMessages(); - const { locale } = useLocale(); + const { locale, dateLocale } = useLocale(); const { countryNames } = useCountryNames(locale); - const unit = getMinimumUnit(startDate, endDate); const { data, error, isLoading } = useResultQuery('revenue', { websiteId, startDate, @@ -65,7 +63,7 @@ export function Revenue({ websiteId, startDate, endDate }: RevenueProps) { const color = colord(CHART_COLORS[index % CHART_COLORS.length]); return { label: key, - data: map[key], + data: generateTimeSeries(map[key], startDate, endDate, unit, dateLocale), lineTension: 0, backgroundColor: color.alpha(0.6).toRgbString(), borderColor: color.alpha(0.7).toRgbString(), @@ -104,6 +102,8 @@ export function Revenue({ websiteId, startDate, endDate }: RevenueProps) { ] as any; }, [data, locale]); + const renderXLabel = useCallback(renderDateLabels(unit, locale), [unit, locale]); + return ( @@ -127,7 +127,7 @@ export function Revenue({ websiteId, startDate, endDate }: RevenueProps) { unit={unit} stacked={true} currency={currency} - renderXLabel={renderDateLabels(unit, locale)} + renderXLabel={renderXLabel} height="400px" /> diff --git a/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx b/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx index 19ac89dba..0d74c38e9 100644 --- a/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx +++ b/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx @@ -6,13 +6,13 @@ import { useDateRange } from '@/components/hooks'; export function RevenuePage({ websiteId }: { websiteId: string }) { const { - dateRange: { startDate, endDate }, + dateRange: { startDate, endDate, unit }, } = useDateRange(websiteId); return ( - + ); } diff --git a/src/app/(main)/websites/[websiteId]/settings/WebsiteTransferForm.tsx b/src/app/(main)/websites/[websiteId]/settings/WebsiteTransferForm.tsx index 9752a48e5..f16ab93c0 100644 --- a/src/app/(main)/websites/[websiteId]/settings/WebsiteTransferForm.tsx +++ b/src/app/(main)/websites/[websiteId]/settings/WebsiteTransferForm.tsx @@ -37,8 +37,8 @@ export function WebsiteTransferForm({ const isTeamWebsite = !!website?.teamId; const items = - teams?.data?.filter(({ teamUser }) => - teamUser.find( + teams?.data?.filter(({ members }) => + members.some( ({ role, userId }) => [ROLES.teamOwner, ROLES.teamManager].includes(role) && userId === user.id, ), @@ -79,7 +79,7 @@ export function WebsiteTransferForm({