diff --git a/src/app/(main)/reports/retention/RetentionTable.tsx b/src/app/(main)/reports/retention/RetentionTable.tsx index 1770a764..acc9c052 100644 --- a/src/app/(main)/reports/retention/RetentionTable.tsx +++ b/src/app/(main)/reports/retention/RetentionTable.tsx @@ -64,7 +64,7 @@ export function RetentionTable({ days = DAYS }) { key={day} className={classNames(styles.cell, { [styles.empty]: !percentage })} > - {percentage ? `${percentage.toFixed(2)}%` : ''} + {percentage ? `${Number(percentage).toFixed(2)}%` : ''} ); })} diff --git a/src/components/charts/BarChart.tsx b/src/components/charts/BarChart.tsx index 7a8dcbed..7624ba1c 100644 --- a/src/components/charts/BarChart.tsx +++ b/src/components/charts/BarChart.tsx @@ -1,9 +1,8 @@ -import { useMemo } from 'react'; -import { useTheme } from 'components/hooks'; -import Chart, { ChartProps } from 'components/charts/Chart'; -import { renderNumberLabels } from 'lib/charts'; -import { useState } from 'react'; import BarChartTooltip from 'components/charts/BarChartTooltip'; +import Chart, { ChartProps } from 'components/charts/Chart'; +import { useTheme } from 'components/hooks'; +import { renderNumberLabels } from 'lib/charts'; +import { useMemo, useState } from 'react'; export interface BarChartProps extends ChartProps { unit: string; @@ -36,7 +35,7 @@ export function BarChart(props: BarChartProps) { x: { type: XAxisType, stacked: true, - min: unit === 'minute' ? minDate : '', + min: minDate && new Date(minDate).getSeconds() === 0 ? minDate : '', max: maxDate, time: { unit, diff --git a/src/components/metrics/EventsChart.tsx b/src/components/metrics/EventsChart.tsx index ee7f866c..f5b28344 100644 --- a/src/components/metrics/EventsChart.tsx +++ b/src/components/metrics/EventsChart.tsx @@ -47,6 +47,8 @@ export function EventsChart({ websiteId, className }: EventsChartProps) { return ( ... 섹션에 추가하십시오.", + "message.team-websites-info": "웹사이트는 팀 멤버 누구나 볼 수 있습니다.", + "message.tracking-code": "이 웹사이트의 통계를 추적하려면 다음 코드를 HTML의 ... 부분에 추가하세요.", "message.transfer-team-website-to-user": "이 웹사이트를 당신의 계정으로 전송하시겠습니까?", - "message.transfer-user-website-to-team": "이 웹사이트를 전송받을 팀을 선택하십시오.", + "message.transfer-user-website-to-team": "이 웹사이트를 전송받을 팀을 선택하세요.", "message.transfer-website": "웹사이트 소유권을 계정이나 다른 팀으로 전송합니다.", "message.triggered-event": "트리거된 이벤트", - "message.user-deleted": "사용자가 삭제되었습니다.", - "message.viewed-page": "페이지 조회", - "message.visitor-log": "{country}의 {browser} 브라우저를 사용하는 {os} {device} 방문자", - "message.visitors-dropped-off": "방문자가 이탈했습니다" + "message.user-deleted": "사용자를 삭제했습니다.", + "message.viewed-page": "조회한 페이지", + "message.visitor-log": "{os} {device}에서 {browser}을(를) 사용하는 {country}의 방문자", + "message.visitors-dropped-off": "방문자 이탈함" } diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index f0f071bc..32ac65eb 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -14,17 +14,17 @@ const log = debug('umami:prisma'); const MYSQL_DATE_FORMATS = { minute: '%Y-%m-%dT%H:%i:00', hour: '%Y-%m-%d %H:00:00', - day: '%Y-%m-%d', - month: '%Y-%m-01', - year: '%Y-01-01', + day: '%Y-%m-%d 00:00:00', + month: '%Y-%m-01 00:00:00', + year: '%Y-01-01 00:00:00', }; const POSTGRESQL_DATE_FORMATS = { minute: 'YYYY-MM-DD HH24:MI:00', hour: 'YYYY-MM-DD HH24:00:00', - day: 'YYYY-MM-DD', - month: 'YYYY-MM-01', - year: 'YYYY-01-01', + day: 'YYYY-MM-DD HH24:00:00', + month: 'YYYY-MM-01 HH24:00:00', + year: 'YYYY-01-01 HH24:00:00', }; function getAddIntervalQuery(field: string, interval: string): string {