From df66acaacf7902e7ec88ad4fe58872ae1053603a Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 23 May 2024 00:17:20 -0700 Subject: [PATCH] Updated metrics components for compare mode. --- public/intl/messages/am-ET.json | 12 +- public/intl/messages/ar-SA.json | 12 +- public/intl/messages/be-BY.json | 12 +- public/intl/messages/bn-BD.json | 12 +- public/intl/messages/bs-BA.json | 12 +- public/intl/messages/ca-ES.json | 12 +- public/intl/messages/cs-CZ.json | 12 +- public/intl/messages/da-DK.json | 12 +- public/intl/messages/de-CH.json | 12 +- public/intl/messages/de-DE.json | 12 +- public/intl/messages/el-GR.json | 12 +- public/intl/messages/en-GB.json | 12 +- public/intl/messages/en-US.json | 12 +- public/intl/messages/es-ES.json | 12 +- public/intl/messages/es-MX.json | 2 +- public/intl/messages/fa-IR.json | 12 +- public/intl/messages/fi-FI.json | 12 +- public/intl/messages/fo-FO.json | 12 +- public/intl/messages/fr-FR.json | 12 +- public/intl/messages/ga-ES.json | 12 +- public/intl/messages/he-IL.json | 12 +- public/intl/messages/hi-IN.json | 12 +- public/intl/messages/hr-HR.json | 12 +- public/intl/messages/hu-HU.json | 12 +- public/intl/messages/id-ID.json | 12 +- public/intl/messages/it-IT.json | 12 +- public/intl/messages/ja-JP.json | 12 +- public/intl/messages/km-KH.json | 12 +- public/intl/messages/ko-KR.json | 12 +- public/intl/messages/lt-LT.json | 12 +- public/intl/messages/mn-MN.json | 12 +- public/intl/messages/ms-MY.json | 12 +- public/intl/messages/my-MM.json | 12 +- public/intl/messages/nb-NO.json | 12 +- public/intl/messages/nl-NL.json | 12 +- public/intl/messages/pl-PL.json | 12 +- public/intl/messages/pt-BR.json | 12 +- public/intl/messages/pt-PT.json | 12 +- public/intl/messages/ro-RO.json | 12 +- public/intl/messages/ru-RU.json | 12 +- public/intl/messages/si-LK.json | 12 +- public/intl/messages/sk-SK.json | 12 +- public/intl/messages/sl-SI.json | 12 +- public/intl/messages/sv-SE.json | 12 +- public/intl/messages/ta-IN.json | 12 +- public/intl/messages/th-TH.json | 12 +- public/intl/messages/tr-TR.json | 12 +- public/intl/messages/uk-UA.json | 12 +- public/intl/messages/ur-PK.json | 12 +- public/intl/messages/vi-VN.json | 12 +- public/intl/messages/zh-CN.json | 12 +- public/intl/messages/zh-TW.json | 12 +- .../[websiteId]/WebsiteMetricsBar.module.css | 15 +- .../[websiteId]/WebsiteMetricsBar.tsx | 149 +++++++++++------- .../compare/WebsiteComparePage.tsx | 16 +- .../[websiteId]/realtime/RealtimeHeader.tsx | 8 +- .../hooks/queries/useWebsiteStats.ts | 10 +- src/components/messages.ts | 4 +- src/components/metrics/MetricCard.module.css | 36 +++-- src/components/metrics/MetricCard.tsx | 53 ++++--- src/lang/am-ET.json | 2 +- src/lang/ar-SA.json | 2 +- src/lang/be-BY.json | 2 +- src/lang/bn-BD.json | 2 +- src/lang/bs-BA.json | 2 +- src/lang/ca-ES.json | 2 +- src/lang/cs-CZ.json | 2 +- src/lang/da-DK.json | 2 +- src/lang/de-CH.json | 2 +- src/lang/de-DE.json | 2 +- src/lang/el-GR.json | 2 +- src/lang/en-GB.json | 2 +- src/lang/en-US.json | 2 +- src/lang/es-ES.json | 2 +- src/lang/fa-IR.json | 2 +- src/lang/fi-FI.json | 2 +- src/lang/fo-FO.json | 2 +- src/lang/fr-FR.json | 2 +- src/lang/ga-ES.json | 2 +- src/lang/he-IL.json | 2 +- src/lang/hi-IN.json | 2 +- src/lang/hr-HR.json | 2 +- src/lang/hu-HU.json | 2 +- src/lang/id-ID.json | 2 +- src/lang/it-IT.json | 2 +- src/lang/ja-JP.json | 2 +- src/lang/km-KH.json | 2 +- src/lang/ko-KR.json | 2 +- src/lang/lt-LT.json | 2 +- src/lang/mn-MN.json | 2 +- src/lang/ms-MY.json | 2 +- src/lang/my-MM.json | 2 +- src/lang/nb-NO.json | 2 +- src/lang/nl-NL.json | 2 +- src/lang/pl-PL.json | 2 +- src/lang/pt-BR.json | 74 ++++----- src/lang/pt-PT.json | 2 +- src/lang/ro-RO.json | 2 +- src/lang/ru-RU.json | 2 +- src/lang/si-LK.json | 2 +- src/lang/sk-SK.json | 2 +- src/lang/sl-SI.json | 2 +- src/lang/sv-SE.json | 2 +- src/lang/ta-IN.json | 2 +- src/lang/th-TH.json | 2 +- src/lang/tr-TR.json | 2 +- src/lang/uk-UA.json | 2 +- src/lang/ur-PK.json | 2 +- src/lang/vi-VN.json | 2 +- src/lang/zh-CN.json | 2 +- src/lang/zh-TW.json | 2 +- src/pages/api/websites/[websiteId]/stats.ts | 4 +- .../analytics/eventData/getEventDataEvents.ts | 8 +- .../analytics/eventData/getEventDataFields.ts | 4 +- .../analytics/eventData/getEventDataStats.ts | 4 +- .../analytics/eventData/getEventDataUsage.ts | 4 +- src/queries/analytics/getWebsiteStats.ts | 12 +- 117 files changed, 602 insertions(+), 513 deletions(-) diff --git a/public/intl/messages/am-ET.json b/public/intl/messages/am-ET.json index 931935a2..a3b652bb 100644 --- a/public/intl/messages/am-ET.json +++ b/public/intl/messages/am-ET.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Average visit time" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Visit duration" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ar-SA.json b/public/intl/messages/ar-SA.json index 300d3e1a..15f9647c 100644 --- a/public/intl/messages/ar-SA.json +++ b/public/intl/messages/ar-SA.json @@ -83,12 +83,6 @@ "value": "المتوسط" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "متوسط وقت الزيارة" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "متوسط وقت الزيارة" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/be-BY.json b/public/intl/messages/be-BY.json index 4b8c964f..22557a24 100644 --- a/public/intl/messages/be-BY.json +++ b/public/intl/messages/be-BY.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Сярэдняя даўжыня наведвання" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Сярэдняя даўжыня наведвання" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/bn-BD.json b/public/intl/messages/bn-BD.json index 05de48d2..81661e3b 100644 --- a/public/intl/messages/bn-BD.json +++ b/public/intl/messages/bn-BD.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "গড় পরিদর্শনের সময়" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "গড় পরিদর্শনের সময়" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/bs-BA.json b/public/intl/messages/bs-BA.json index 1360efab..314e689e 100644 --- a/public/intl/messages/bs-BA.json +++ b/public/intl/messages/bs-BA.json @@ -83,12 +83,6 @@ "value": "Prosjek" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Prosječno vrijeme posjete" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Pregledi po posjeti" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Prosječno vrijeme posjete" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ca-ES.json b/public/intl/messages/ca-ES.json index e6cb4c5e..911dd04b 100644 --- a/public/intl/messages/ca-ES.json +++ b/public/intl/messages/ca-ES.json @@ -83,12 +83,6 @@ "value": "Mitjana" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Temps mitjà de visita" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Temps mitjà de visita" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/cs-CZ.json b/public/intl/messages/cs-CZ.json index f87ddeda..c329fa58 100644 --- a/public/intl/messages/cs-CZ.json +++ b/public/intl/messages/cs-CZ.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Průměrný čas návštěvy" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Průměrný čas návštěvy" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/da-DK.json b/public/intl/messages/da-DK.json index 332b98e8..c242aaf3 100644 --- a/public/intl/messages/da-DK.json +++ b/public/intl/messages/da-DK.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Gennemsnitlig besøgstid" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Gennemsnitlig besøgstid" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/de-CH.json b/public/intl/messages/de-CH.json index 9b913cea..69c48a1f 100644 --- a/public/intl/messages/de-CH.json +++ b/public/intl/messages/de-CH.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Durchschn. Bsuechsziit" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Durchschn. Bsuechsziit" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/de-DE.json b/public/intl/messages/de-DE.json index 9a21c400..2faf7770 100644 --- a/public/intl/messages/de-DE.json +++ b/public/intl/messages/de-DE.json @@ -83,12 +83,6 @@ "value": "Durchschnitt" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Durchschn. Besuchszeit" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Durchschn. Besuchszeit" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/el-GR.json b/public/intl/messages/el-GR.json index 7c58f14c..5c39e267 100644 --- a/public/intl/messages/el-GR.json +++ b/public/intl/messages/el-GR.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Μέσος χρόνος επίσκεψης" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Μέσος χρόνος επίσκεψης" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/en-GB.json b/public/intl/messages/en-GB.json index 43c9019e..b7beda36 100644 --- a/public/intl/messages/en-GB.json +++ b/public/intl/messages/en-GB.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Average visit time" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Visit duration" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/en-US.json b/public/intl/messages/en-US.json index 1cb11f91..42f3bbd9 100644 --- a/public/intl/messages/en-US.json +++ b/public/intl/messages/en-US.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Average visit time" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Visit duration" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/es-ES.json b/public/intl/messages/es-ES.json index 32b34940..be0835ae 100644 --- a/public/intl/messages/es-ES.json +++ b/public/intl/messages/es-ES.json @@ -83,12 +83,6 @@ "value": "Media" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Tiempo promedio de visita" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Tiempo promedio de visita" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/es-MX.json b/public/intl/messages/es-MX.json index c3ef099d..8051cde5 100644 --- a/public/intl/messages/es-MX.json +++ b/public/intl/messages/es-MX.json @@ -71,7 +71,7 @@ "value": "Average" } ], - "label.average-visit-time": [ + "label.visit-duration": [ { "type": 0, "value": "Tiempo promedio de visita" diff --git a/public/intl/messages/fa-IR.json b/public/intl/messages/fa-IR.json index 8c894c6a..cc0e81c0 100644 --- a/public/intl/messages/fa-IR.json +++ b/public/intl/messages/fa-IR.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "میانگین زمان بازدید" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "میانگین زمان بازدید" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/fi-FI.json b/public/intl/messages/fi-FI.json index f855dba3..13a597f4 100644 --- a/public/intl/messages/fi-FI.json +++ b/public/intl/messages/fi-FI.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Keskimääräinen vierailuaika" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Keskimääräinen vierailuaika" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/fo-FO.json b/public/intl/messages/fo-FO.json index be7442eb..b3d62589 100644 --- a/public/intl/messages/fo-FO.json +++ b/public/intl/messages/fo-FO.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Miðal vitjurnartíð " - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Miðal vitjurnartíð " + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/fr-FR.json b/public/intl/messages/fr-FR.json index e33b7bf2..4e5f3ed5 100644 --- a/public/intl/messages/fr-FR.json +++ b/public/intl/messages/fr-FR.json @@ -83,12 +83,6 @@ "value": "Moyenne" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Temps de visite moyen" - } - ], "label.back": [ { "type": 0, @@ -1237,6 +1231,12 @@ "value": "Vues par visite" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Temps de visite moyen" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ga-ES.json b/public/intl/messages/ga-ES.json index 4bc03ce0..1ce652f9 100644 --- a/public/intl/messages/ga-ES.json +++ b/public/intl/messages/ga-ES.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Tempo medio de visita" - } - ], "label.back": [ { "type": 0, @@ -1257,6 +1251,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Tempo medio de visita" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/he-IL.json b/public/intl/messages/he-IL.json index 92aef8a0..af8a6fb1 100644 --- a/public/intl/messages/he-IL.json +++ b/public/intl/messages/he-IL.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "זמן ביקור ממוצע" - } - ], "label.back": [ { "type": 0, @@ -1241,6 +1235,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "זמן ביקור ממוצע" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/hi-IN.json b/public/intl/messages/hi-IN.json index ec463181..e4c8a2ba 100644 --- a/public/intl/messages/hi-IN.json +++ b/public/intl/messages/hi-IN.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "औसत दृश्य समय" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "औसत दृश्य समय" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/hr-HR.json b/public/intl/messages/hr-HR.json index 032456f8..9933e840 100644 --- a/public/intl/messages/hr-HR.json +++ b/public/intl/messages/hr-HR.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Average visit time" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Visit duration" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/hu-HU.json b/public/intl/messages/hu-HU.json index 08fd319a..3fccf7a7 100644 --- a/public/intl/messages/hu-HU.json +++ b/public/intl/messages/hu-HU.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Átlagos látogatási idő" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Átlagos látogatási idő" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/id-ID.json b/public/intl/messages/id-ID.json index 8898f1ec..7dfe2e2f 100644 --- a/public/intl/messages/id-ID.json +++ b/public/intl/messages/id-ID.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Waktu kunjungan rata-rata" - } - ], "label.back": [ { "type": 0, @@ -1241,6 +1235,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Waktu kunjungan rata-rata" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/it-IT.json b/public/intl/messages/it-IT.json index 471cf31f..d1568bae 100644 --- a/public/intl/messages/it-IT.json +++ b/public/intl/messages/it-IT.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Tempo medio di visita" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Tempo medio di visita" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ja-JP.json b/public/intl/messages/ja-JP.json index ed869857..55c3cae0 100644 --- a/public/intl/messages/ja-JP.json +++ b/public/intl/messages/ja-JP.json @@ -83,12 +83,6 @@ "value": "平均" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "平均滞在時間" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "平均滞在時間" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/km-KH.json b/public/intl/messages/km-KH.json index 63ad4841..7ddac468 100644 --- a/public/intl/messages/km-KH.json +++ b/public/intl/messages/km-KH.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "មើលជាមធ្យម" - } - ], "label.back": [ { "type": 0, @@ -1241,6 +1235,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "មើលជាមធ្យម" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ko-KR.json b/public/intl/messages/ko-KR.json index e9fc0c0d..48dfbb3b 100644 --- a/public/intl/messages/ko-KR.json +++ b/public/intl/messages/ko-KR.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "평균 방문 시간" - } - ], "label.back": [ { "type": 0, @@ -1253,6 +1247,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "평균 방문 시간" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/lt-LT.json b/public/intl/messages/lt-LT.json index 261e2f94..727e0c51 100644 --- a/public/intl/messages/lt-LT.json +++ b/public/intl/messages/lt-LT.json @@ -83,12 +83,6 @@ "value": "Vidurkis" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Vidutinė vizito trukmė" - } - ], "label.back": [ { "type": 0, @@ -1354,6 +1348,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Vidutinė vizito trukmė" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/mn-MN.json b/public/intl/messages/mn-MN.json index 48334902..484b6752 100644 --- a/public/intl/messages/mn-MN.json +++ b/public/intl/messages/mn-MN.json @@ -83,12 +83,6 @@ "value": "Дундаж" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Зочилсон дундаж хугацаа" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Зочилсон дундаж хугацаа" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ms-MY.json b/public/intl/messages/ms-MY.json index 58034742..7d9b8369 100644 --- a/public/intl/messages/ms-MY.json +++ b/public/intl/messages/ms-MY.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Purata tempoh masa lawatan" - } - ], "label.back": [ { "type": 0, @@ -1241,6 +1235,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Purata tempoh masa lawatan" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/my-MM.json b/public/intl/messages/my-MM.json index 18c1a2b9..f56429aa 100644 --- a/public/intl/messages/my-MM.json +++ b/public/intl/messages/my-MM.json @@ -83,12 +83,6 @@ "value": "ပျမ်းမျှ" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "ဝဘက်ဘ်ဆိုဒ်တွင် ပျမ်းမျှကုန်ဆုံးချိန်" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "ဝဘက်ဘ်ဆိုဒ်တွင် ပျမ်းမျှကုန်ဆုံးချိန်" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/nb-NO.json b/public/intl/messages/nb-NO.json index 2f7132ef..7b110ee4 100644 --- a/public/intl/messages/nb-NO.json +++ b/public/intl/messages/nb-NO.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Gjennomsnittlig besøkstid" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Gjennomsnittlig besøkstid" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/nl-NL.json b/public/intl/messages/nl-NL.json index c0a3add4..5b0cfdbf 100644 --- a/public/intl/messages/nl-NL.json +++ b/public/intl/messages/nl-NL.json @@ -83,12 +83,6 @@ "value": "Gemiddelde" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Gemiddelde bezoektijd" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Gemiddelde bezoektijd" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/pl-PL.json b/public/intl/messages/pl-PL.json index 547a70a9..4a5a41ee 100644 --- a/public/intl/messages/pl-PL.json +++ b/public/intl/messages/pl-PL.json @@ -83,12 +83,6 @@ "value": "Średnia" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Średni czas wizyty" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Średni czas wizyty" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/pt-BR.json b/public/intl/messages/pt-BR.json index 7c41e5ef..6e3bb03e 100644 --- a/public/intl/messages/pt-BR.json +++ b/public/intl/messages/pt-BR.json @@ -83,12 +83,6 @@ "value": "Média" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Tempo médio de visita" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Visualizações por visita" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Tempo médio de visita" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/pt-PT.json b/public/intl/messages/pt-PT.json index 3e16a55e..1b19e8d3 100644 --- a/public/intl/messages/pt-PT.json +++ b/public/intl/messages/pt-PT.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Tempo médio de visita" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Tempo médio de visita" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ro-RO.json b/public/intl/messages/ro-RO.json index da1413f6..6a0b77fe 100644 --- a/public/intl/messages/ro-RO.json +++ b/public/intl/messages/ro-RO.json @@ -83,12 +83,6 @@ "value": "Mediu" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Timp mediu de vizitare" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Timp mediu de vizitare" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ru-RU.json b/public/intl/messages/ru-RU.json index 4b97f225..4f851f46 100644 --- a/public/intl/messages/ru-RU.json +++ b/public/intl/messages/ru-RU.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Среднее время посещения" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Среднее время посещения" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/si-LK.json b/public/intl/messages/si-LK.json index 67e32f90..749d830b 100644 --- a/public/intl/messages/si-LK.json +++ b/public/intl/messages/si-LK.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Average visit time" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Visit duration" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/sk-SK.json b/public/intl/messages/sk-SK.json index f4e8a5e4..ff9d4e65 100644 --- a/public/intl/messages/sk-SK.json +++ b/public/intl/messages/sk-SK.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Priemerný čas návštevy" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Priemerný čas návštevy" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/sl-SI.json b/public/intl/messages/sl-SI.json index e96723ae..b2091166 100644 --- a/public/intl/messages/sl-SI.json +++ b/public/intl/messages/sl-SI.json @@ -83,12 +83,6 @@ "value": "Povprečno" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Povprečni čas obiska" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Povprečni čas obiska" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/sv-SE.json b/public/intl/messages/sv-SE.json index 45dc754d..28992e10 100644 --- a/public/intl/messages/sv-SE.json +++ b/public/intl/messages/sv-SE.json @@ -83,12 +83,6 @@ "value": "Genomsnitt" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Genomsnittlig besökstid" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Genomsnittlig besökstid" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ta-IN.json b/public/intl/messages/ta-IN.json index b1fcd700..70d7b87e 100644 --- a/public/intl/messages/ta-IN.json +++ b/public/intl/messages/ta-IN.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "சராசரி வருகை நேரம்" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "சராசரி வருகை நேரம்" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/th-TH.json b/public/intl/messages/th-TH.json index 1206840b..351d30f8 100644 --- a/public/intl/messages/th-TH.json +++ b/public/intl/messages/th-TH.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "ระยะเวลาเข้าชมเฉลี่ย" - } - ], "label.back": [ { "type": 0, @@ -1241,6 +1235,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "ระยะเวลาเข้าชมเฉลี่ย" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/tr-TR.json b/public/intl/messages/tr-TR.json index 22442612..c0caf470 100644 --- a/public/intl/messages/tr-TR.json +++ b/public/intl/messages/tr-TR.json @@ -83,12 +83,6 @@ "value": "Ortalama" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Ortalama ziyaret süresi" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Ziyaret başına görüntüleme" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Ortalama ziyaret süresi" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/uk-UA.json b/public/intl/messages/uk-UA.json index ae947f9a..4d693756 100644 --- a/public/intl/messages/uk-UA.json +++ b/public/intl/messages/uk-UA.json @@ -83,12 +83,6 @@ "value": "Середнє" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Середній час візиту" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Перегляди за візит" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Середній час візиту" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/ur-PK.json b/public/intl/messages/ur-PK.json index 184043b4..0316d299 100644 --- a/public/intl/messages/ur-PK.json +++ b/public/intl/messages/ur-PK.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "وزٹ کا اوسط وقت" - } - ], "label.back": [ { "type": 0, @@ -1249,6 +1243,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "وزٹ کا اوسط وقت" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/vi-VN.json b/public/intl/messages/vi-VN.json index fe5943ac..0cc0c183 100644 --- a/public/intl/messages/vi-VN.json +++ b/public/intl/messages/vi-VN.json @@ -83,12 +83,6 @@ "value": "Average" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "Thời gian truy cập trung bình" - } - ], "label.back": [ { "type": 0, @@ -1241,6 +1235,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "Thời gian truy cập trung bình" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/zh-CN.json b/public/intl/messages/zh-CN.json index 144b4f17..e4240022 100644 --- a/public/intl/messages/zh-CN.json +++ b/public/intl/messages/zh-CN.json @@ -83,12 +83,6 @@ "value": "平均" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "平均访问时间" - } - ], "label.back": [ { "type": 0, @@ -1257,6 +1251,12 @@ "value": "每次访问的浏览量" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "平均访问时间" + } + ], "label.visitors": [ { "type": 0, diff --git a/public/intl/messages/zh-TW.json b/public/intl/messages/zh-TW.json index e703beb9..a39aea19 100644 --- a/public/intl/messages/zh-TW.json +++ b/public/intl/messages/zh-TW.json @@ -83,12 +83,6 @@ "value": "平均" } ], - "label.average-visit-time": [ - { - "type": 0, - "value": "平均造訪時間" - } - ], "label.back": [ { "type": 0, @@ -1253,6 +1247,12 @@ "value": "Views per visit" } ], + "label.visit-duration": [ + { + "type": 0, + "value": "平均造訪時間" + } + ], "label.visitors": [ { "type": 0, diff --git a/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.module.css b/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.module.css index e9863961..4d40edf8 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.module.css +++ b/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.module.css @@ -1,6 +1,6 @@ .container { display: grid; - grid-template-columns: 1fr max-content; + grid-template-columns: 2fr 1fr; justify-content: space-between; align-items: center; background: var(--base50); @@ -15,6 +15,19 @@ flex-direction: row; justify-content: flex-end; gap: 10px; + flex-wrap: wrap; +} + +.vs { + display: flex; + align-items: center; + justify-content: flex-end; + flex-basis: 100%; + gap: 10px; +} + +.dropdown { + min-width: 200px; } @media screen and (max-width: 1200px) { diff --git a/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.tsx b/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.tsx index 06947a51..11c85685 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.tsx @@ -1,3 +1,4 @@ +import { useState } from 'react'; import classNames from 'classnames'; import { useMessages, useSticky } from 'components/hooks'; import WebsiteDateFilter from 'components/input/WebsiteDateFilter'; @@ -7,21 +8,65 @@ import { formatShortTime } from 'lib/format'; import WebsiteFilterButton from './WebsiteFilterButton'; import useWebsiteStats from 'components/hooks/queries/useWebsiteStats'; import styles from './WebsiteMetricsBar.module.css'; +import { Dropdown, Item } from 'react-basics'; -export function WebsiteMetricsBar({ websiteId, sticky }: { websiteId: string; sticky?: boolean }) { +export function WebsiteMetricsBar({ + websiteId, + sticky, + compareMode = false, +}: { + websiteId: string; + sticky?: boolean; + compareMode?: boolean; +}) { const { formatMessage, labels } = useMessages(); + const [compare, setCompare] = useState('prev'); const { ref, isSticky } = useSticky({ enabled: sticky }); - const { data, isLoading, isFetched, error } = useWebsiteStats(websiteId); + const { data, isLoading, isFetched, error } = useWebsiteStats(websiteId, compare); const { pageviews, visitors, visits, bounces, totaltime } = data || {}; - const num = Math.min(data && visitors.value, data && bounces.value); - const diffs = data && { - pageviews: pageviews.value - pageviews.change, - visitors: visitors.value - visitors.change, - visits: visits.value - visits.change, - bounces: bounces.value - bounces.change, - totaltime: totaltime.value - totaltime.change, - }; + + const metrics = data + ? [ + { + ...pageviews, + label: formatMessage(labels.views), + change: pageviews.value - pageviews.prev, + }, + { + ...visits, + label: formatMessage(labels.visits), + change: visits.value - visits.prev, + }, + { + ...visitors, + label: formatMessage(labels.visitors), + change: visitors.value - visitors.prev, + }, + { + label: formatMessage(labels.bounceRate), + value: (Math.min(visitors.value, bounces.value) / visitors.value) * 100, + prev: (Math.min(visitors.prev, bounces.prev) / visitors.prev) * 100, + change: + (Math.min(visitors.value, bounces.value) / visitors.value) * 100 - + (Math.min(visitors.prev, bounces.prev) / visitors.prev) * 100, + format: n => Number(n).toFixed(0) + '%', + reverseColors: true, + }, + { + label: formatMessage(labels.visitDuration), + value: totaltime.value / visits.value, + prev: totaltime.prev / visits.prev, + change: totaltime.value / visits.value - totaltime.prev / visits.prev, + format: n => `${+n < 0 ? '-' : ''}${formatShortTime(Math.abs(~~n), ['m', 's'], ' ')}`, + }, + ] + : []; + + const items = [ + { label: formatMessage(labels.previousPeriod), value: 'prev' }, + { label: formatMessage(labels.yearOverYear), value: 'yoy' }, + ]; return (
- - {pageviews && visitors && ( - <> - - - - Number(n).toFixed(0) + '%'} - reverseColors - /> - `${+n < 0 ? '-' : ''}${formatShortTime(Math.abs(~~n), ['m', 's'], ' ')}`} - /> - - )} - +
+ + {metrics.map(({ label, value, prev, change, format, reverseColors }) => { + return ( + + ); + })} + +
+ {compareMode && ( +
+ VS + items.find(i => i.value === value)?.label} + alignment="end" + onChange={(e: any) => setCompare(e)} + > + {items.map(({ label, value }) => ( + {label} + ))} + +
+ )}
); diff --git a/src/app/(main)/websites/[websiteId]/compare/WebsiteComparePage.tsx b/src/app/(main)/websites/[websiteId]/compare/WebsiteComparePage.tsx index 2fe971ae..eb893a05 100644 --- a/src/app/(main)/websites/[websiteId]/compare/WebsiteComparePage.tsx +++ b/src/app/(main)/websites/[websiteId]/compare/WebsiteComparePage.tsx @@ -1,11 +1,25 @@ +'use client'; import WebsiteHeader from '../WebsiteHeader'; import WebsiteMetricsBar from '../WebsiteMetricsBar'; +import FilterTags from 'components/metrics/FilterTags'; +import { useNavigation } from 'components/hooks'; +import { FILTER_COLUMNS } from 'lib/constants'; export function WebsiteComparePage({ websiteId }) { + const { query } = useNavigation(); + + const params = Object.keys(query).reduce((obj, key) => { + if (FILTER_COLUMNS[key]) { + obj[key] = query[key]; + } + return obj; + }, {}); + return ( <> - + + ); } diff --git a/src/app/(main)/websites/[websiteId]/realtime/RealtimeHeader.tsx b/src/app/(main)/websites/[websiteId]/realtime/RealtimeHeader.tsx index 80d3d8c6..cef6e742 100644 --- a/src/app/(main)/websites/[websiteId]/realtime/RealtimeHeader.tsx +++ b/src/app/(main)/websites/[websiteId]/realtime/RealtimeHeader.tsx @@ -14,25 +14,25 @@ export function RealtimeHeader({ data }: { data: RealtimeData }) { className={styles.card} label={formatMessage(labels.views)} value={pageviews?.length} - hideComparison + showChange /> diff --git a/src/components/hooks/queries/useWebsiteStats.ts b/src/components/hooks/queries/useWebsiteStats.ts index c2c4b74f..b24399fa 100644 --- a/src/components/hooks/queries/useWebsiteStats.ts +++ b/src/components/hooks/queries/useWebsiteStats.ts @@ -1,13 +1,17 @@ import { useApi } from './useApi'; import { useFilterParams } from '../useFilterParams'; -export function useWebsiteStats(websiteId: string, options?: { [key: string]: string }) { +export function useWebsiteStats( + websiteId: string, + compare?: string, + options?: { [key: string]: string }, +) { const { get, useQuery } = useApi(); const params = useFilterParams(websiteId); return useQuery({ - queryKey: ['websites:stats', { websiteId, ...params }], - queryFn: () => get(`/websites/${websiteId}/stats`, params), + queryKey: ['websites:stats', { websiteId, ...params, compare }], + queryFn: () => get(`/websites/${websiteId}/stats`, { ...params, compare }), enabled: !!websiteId, ...options, }); diff --git a/src/components/messages.ts b/src/components/messages.ts index 17f7b035..f4d986ff 100644 --- a/src/components/messages.ts +++ b/src/components/messages.ts @@ -134,7 +134,7 @@ export const labels = defineMessages({ uniqueVisitors: { id: 'label.unique-visitors', defaultMessage: 'Unique visitors' }, bounceRate: { id: 'label.bounce-rate', defaultMessage: 'Bounce rate' }, viewsPerVisit: { id: 'label.views-per-visit', defaultMessage: 'Views per visit' }, - averageVisitTime: { id: 'label.average-visit-time', defaultMessage: 'Average visit time' }, + visitDuration: { id: 'label.visit-duration', defaultMessage: 'Visit duration' }, desktop: { id: 'label.desktop', defaultMessage: 'Desktop' }, laptop: { id: 'label.laptop', defaultMessage: 'Laptop' }, tablet: { id: 'label.tablet', defaultMessage: 'Tablet' }, @@ -253,6 +253,8 @@ export const labels = defineMessages({ defaultMessage: 'Understand how users nagivate through your website.', }, compare: { id: 'label.compare', defaultMessage: 'Compare' }, + previousPeriod: { id: 'label.previous-period', defaultMessage: 'Previous period' }, + yearOverYear: { id: 'label.year-over-year', defaultMessage: 'Year over year' }, }); export const messages = defineMessages({ diff --git a/src/components/metrics/MetricCard.module.css b/src/components/metrics/MetricCard.module.css index 03cddd38..92c5712c 100644 --- a/src/components/metrics/MetricCard.module.css +++ b/src/components/metrics/MetricCard.module.css @@ -2,7 +2,16 @@ display: flex; flex-direction: column; justify-content: center; - min-width: 140px; + min-width: 150px; +} + +.card.compare { + gap: 10px; +} + +.card.compare .change { + font-size: 16px; + padding: 5px 10px; } .card:first-child { @@ -14,30 +23,33 @@ } .value { - display: flex; - align-items: center; - font-size: 36px; + font-size: 40px; font-weight: 700; white-space: nowrap; - min-height: 60px; color: var(--base900); + line-height: 1.5; +} + +.value.prev { + color: var(--base800); } .label { - display: flex; - align-items: center; font-weight: 700; - gap: 10px; white-space: nowrap; - min-height: 30px; color: var(--base800); } .change { - font-size: 12px; + display: flex; + align-items: center; + gap: 5px; + font-size: 13px; + font-weight: 700; padding: 0 5px; border-radius: 5px; color: var(--base500); + align-self: flex-start; } .change.positive { @@ -49,7 +61,3 @@ color: var(--red700); background: var(--red100); } - -.change.plusSign::before { - content: '+'; -} diff --git a/src/components/metrics/MetricCard.tsx b/src/components/metrics/MetricCard.tsx index 0db164a2..2bb38fba 100644 --- a/src/components/metrics/MetricCard.tsx +++ b/src/components/metrics/MetricCard.tsx @@ -1,15 +1,19 @@ import classNames from 'classnames'; +import { Icon, Icons } from 'react-basics'; import { useSpring, animated } from '@react-spring/web'; import { formatNumber } from 'lib/format'; import styles from './MetricCard.module.css'; export interface MetricCardProps { value: number; + previousValue?: number; change?: number; - label: string; + label?: string; reverseColors?: boolean; format?: typeof formatNumber; - hideComparison?: boolean; + showLabel?: boolean; + showChange?: boolean; + showPrevious?: boolean; className?: string; } @@ -19,32 +23,43 @@ export const MetricCard = ({ label, reverseColors = false, format = formatNumber, - hideComparison = false, + showLabel = true, + showChange = true, + showPrevious = false, className, }: MetricCardProps) => { const props = useSpring({ x: Number(value) || 0, from: { x: 0 } }); const changeProps = useSpring({ x: Number(change) || 0, from: { x: 0 } }); + const prevProps = useSpring({ x: Number(value - change) || 0, from: { x: 0 } }); + const positive = change * (reverseColors ? -1 : 1) >= 0; + const negative = change * (reverseColors ? -1 : 1) < 0; return ( -
-
- {label} - {~~change !== 0 && !hideComparison && ( - = 0, - [styles.negative]: change * (reverseColors ? -1 : 1) < 0, - [styles.plusSign]: change > 0, - })} - title={changeProps?.x as any} - > - {changeProps?.x?.to(x => format(x))} - - )} -
+
+ {showLabel &&
{label}
} {props?.x?.to(x => format(x))} + {showChange && ( +
+ + + + + {changeProps?.x?.to(x => format(Math.abs(x)))} + +
+ )} + {showPrevious && ( + + {prevProps?.x?.to(x => format(x))} + + )}
); }; diff --git a/src/lang/am-ET.json b/src/lang/am-ET.json index e289ddc5..9546ffdd 100644 --- a/src/lang/am-ET.json +++ b/src/lang/am-ET.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Average visit time", + "label.visit-duration": "Average visit time", "label.back": "Back", "label.before": "Before", "label.bounce-rate": "Bounce rate", diff --git a/src/lang/ar-SA.json b/src/lang/ar-SA.json index d01ff65f..aff31f67 100644 --- a/src/lang/ar-SA.json +++ b/src/lang/ar-SA.json @@ -13,7 +13,7 @@ "label.all-time": "كل الوقت", "label.analytics": "تحليلات", "label.average": "المتوسط", - "label.average-visit-time": "متوسط وقت الزيارة", + "label.visit-duration": "متوسط وقت الزيارة", "label.back": "للخلف", "label.before": "قبل", "label.bounce-rate": "معدل الارتداد", diff --git a/src/lang/be-BY.json b/src/lang/be-BY.json index b68c8dab..a831fe0f 100644 --- a/src/lang/be-BY.json +++ b/src/lang/be-BY.json @@ -13,7 +13,7 @@ "label.all-time": "Увесь час", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Сярэдняя даўжыня наведвання", + "label.visit-duration": "Сярэдняя даўжыня наведвання", "label.back": "Назад", "label.before": "Before", "label.bounce-rate": "Паказчык адмоваў", diff --git a/src/lang/bn-BD.json b/src/lang/bn-BD.json index f9429215..7436a002 100644 --- a/src/lang/bn-BD.json +++ b/src/lang/bn-BD.json @@ -13,7 +13,7 @@ "label.all-time": "সব সময়", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "গড় পরিদর্শনের সময়", + "label.visit-duration": "গড় পরিদর্শনের সময়", "label.back": "পেছনে", "label.before": "Before", "label.bounce-rate": "বহিষ্কারের হার", diff --git a/src/lang/bs-BA.json b/src/lang/bs-BA.json index 27318df0..3eda0f85 100644 --- a/src/lang/bs-BA.json +++ b/src/lang/bs-BA.json @@ -13,7 +13,7 @@ "label.all-time": "Cijelo vrijeme", "label.analytics": "Analitike", "label.average": "Prosjek", - "label.average-visit-time": "Prosječno vrijeme posjete", + "label.visit-duration": "Prosječno vrijeme posjete", "label.back": "Nazad", "label.before": "Prije", "label.bounce-rate": "Bounce rate", diff --git a/src/lang/ca-ES.json b/src/lang/ca-ES.json index 4a1dee61..a12fd3c8 100644 --- a/src/lang/ca-ES.json +++ b/src/lang/ca-ES.json @@ -13,7 +13,7 @@ "label.all-time": "Sempre", "label.analytics": "Analítiques", "label.average": "Mitjana", - "label.average-visit-time": "Temps mitjà de visita", + "label.visit-duration": "Temps mitjà de visita", "label.back": "Enrere", "label.before": "Abans", "label.bounce-rate": "Percentatge de rebot", diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index 7f3599c9..64153d7d 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Průměrný čas návštěvy", + "label.visit-duration": "Průměrný čas návštěvy", "label.back": "Zpět", "label.before": "Before", "label.bounce-rate": "Okamžité opuštění", diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json index fe6d483f..d38d2a82 100644 --- a/src/lang/da-DK.json +++ b/src/lang/da-DK.json @@ -13,7 +13,7 @@ "label.all-time": "Altid", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Gennemsnitlig besøgstid", + "label.visit-duration": "Gennemsnitlig besøgstid", "label.back": "Tilbage", "label.before": "Before", "label.bounce-rate": "Afvisningsprocent", diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json index a9982631..dca1e351 100644 --- a/src/lang/de-CH.json +++ b/src/lang/de-CH.json @@ -13,7 +13,7 @@ "label.all-time": "Gesamte Zitruum", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Durchschn. Bsuechsziit", + "label.visit-duration": "Durchschn. Bsuechsziit", "label.back": "Zrugg", "label.before": "Before", "label.bounce-rate": "Absprungsrate", diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 3272abaf..b0a296b5 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -13,7 +13,7 @@ "label.all-time": "Gesamter Zeitraum", "label.analytics": "Analytics", "label.average": "Durchschnitt", - "label.average-visit-time": "Durchschn. Besuchszeit", + "label.visit-duration": "Durchschn. Besuchszeit", "label.back": "Zurück", "label.before": "Vor", "label.bounce-rate": "Absprungrate", diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json index 1c1fd1b2..3d44bd00 100644 --- a/src/lang/el-GR.json +++ b/src/lang/el-GR.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Μέσος χρόνος επίσκεψης", + "label.visit-duration": "Μέσος χρόνος επίσκεψης", "label.back": "Πίσω", "label.before": "Before", "label.bounce-rate": "Ποσοστό αναπήδησης", diff --git a/src/lang/en-GB.json b/src/lang/en-GB.json index 3df625f8..82e60c5e 100644 --- a/src/lang/en-GB.json +++ b/src/lang/en-GB.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Average visit time", + "label.visit-duration": "Average visit time", "label.back": "Back", "label.before": "Before", "label.bounce-rate": "Bounce rate", diff --git a/src/lang/en-US.json b/src/lang/en-US.json index 5ceb39d1..77e6daa1 100644 --- a/src/lang/en-US.json +++ b/src/lang/en-US.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Average visit time", + "label.visit-duration": "Average visit time", "label.back": "Back", "label.before": "Before", "label.bounce-rate": "Bounce rate", diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 43e74e21..85796f42 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -13,7 +13,7 @@ "label.all-time": "Todos los tiempos", "label.analytics": "Analíticas", "label.average": "Media", - "label.average-visit-time": "Tiempo promedio de visita", + "label.visit-duration": "Tiempo promedio de visita", "label.back": "Atrás", "label.before": "Antes", "label.bounce-rate": "Porcentaje de rebote", diff --git a/src/lang/fa-IR.json b/src/lang/fa-IR.json index 70c60f01..cab0ffa4 100644 --- a/src/lang/fa-IR.json +++ b/src/lang/fa-IR.json @@ -13,7 +13,7 @@ "label.all-time": "همه زمان", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "میانگین زمان بازدید", + "label.visit-duration": "میانگین زمان بازدید", "label.back": "برگشت", "label.before": "Before", "label.bounce-rate": "نرخ Bounce", diff --git a/src/lang/fi-FI.json b/src/lang/fi-FI.json index f827c482..0389cf82 100644 --- a/src/lang/fi-FI.json +++ b/src/lang/fi-FI.json @@ -13,7 +13,7 @@ "label.all-time": "Alusta lähtien", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Keskimääräinen vierailuaika", + "label.visit-duration": "Keskimääräinen vierailuaika", "label.back": "Takaisin", "label.before": "Before", "label.bounce-rate": "Välitön poistuminen", diff --git a/src/lang/fo-FO.json b/src/lang/fo-FO.json index 6b9e42d0..d13d40ec 100644 --- a/src/lang/fo-FO.json +++ b/src/lang/fo-FO.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Miðal vitjurnartíð ", + "label.visit-duration": "Miðal vitjurnartíð ", "label.back": "Aftur", "label.before": "Before", "label.bounce-rate": "Bounce prosenttal", diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index bd71a85f..b52ae875 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -13,7 +13,7 @@ "label.all-time": "Toutes les données", "label.analytics": "Analytics", "label.average": "Moyenne", - "label.average-visit-time": "Temps de visite moyen", + "label.visit-duration": "Temps de visite moyen", "label.back": "Retour", "label.before": "Avant", "label.bounce-rate": "Taux de rebond", diff --git a/src/lang/ga-ES.json b/src/lang/ga-ES.json index fa9a1cc5..cdf13932 100644 --- a/src/lang/ga-ES.json +++ b/src/lang/ga-ES.json @@ -13,7 +13,7 @@ "label.all-time": "Sempre", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Tempo medio de visita", + "label.visit-duration": "Tempo medio de visita", "label.back": "Atrás", "label.before": "Before", "label.bounce-rate": "Proporción de rebote", diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json index 3c422a76..f513c807 100644 --- a/src/lang/he-IL.json +++ b/src/lang/he-IL.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "זמן ביקור ממוצע", + "label.visit-duration": "זמן ביקור ממוצע", "label.back": "חזרה", "label.before": "Before", "label.bounce-rate": "Bounce rate", diff --git a/src/lang/hi-IN.json b/src/lang/hi-IN.json index 791111c8..2e2e79f7 100644 --- a/src/lang/hi-IN.json +++ b/src/lang/hi-IN.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "औसत दृश्य समय", + "label.visit-duration": "औसत दृश्य समय", "label.back": "पीछे", "label.before": "Before", "label.bounce-rate": "उछाल दर", diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json index 7ba496c7..ea488490 100644 --- a/src/lang/hr-HR.json +++ b/src/lang/hr-HR.json @@ -13,7 +13,7 @@ "label.all-time": "Svo vrijeme", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Average visit time", + "label.visit-duration": "Average visit time", "label.back": "Natrag ", "label.before": "Before", "label.bounce-rate": "Bounce rate", diff --git a/src/lang/hu-HU.json b/src/lang/hu-HU.json index b73b36a7..74f0ce6f 100644 --- a/src/lang/hu-HU.json +++ b/src/lang/hu-HU.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Átlagos látogatási idő", + "label.visit-duration": "Átlagos látogatási idő", "label.back": "Vissza", "label.before": "Before", "label.bounce-rate": "Visszafordulási arány", diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json index 64d17d9a..faf77315 100644 --- a/src/lang/id-ID.json +++ b/src/lang/id-ID.json @@ -13,7 +13,7 @@ "label.all-time": "Semua waktu", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Waktu kunjungan rata-rata", + "label.visit-duration": "Waktu kunjungan rata-rata", "label.back": "Kembali", "label.before": "Before", "label.bounce-rate": "Rasio pentalan", diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index 9425d5e6..084f86ee 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -13,7 +13,7 @@ "label.all-time": "Sempre", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Tempo medio di visita", + "label.visit-duration": "Tempo medio di visita", "label.back": "Indietro", "label.before": "Before", "label.bounce-rate": "Frequenza di rimbalzo", diff --git a/src/lang/ja-JP.json b/src/lang/ja-JP.json index b646bd51..5c8747ba 100644 --- a/src/lang/ja-JP.json +++ b/src/lang/ja-JP.json @@ -13,7 +13,7 @@ "label.all-time": "すべての時間帯", "label.analytics": "アナリティクス", "label.average": "平均", - "label.average-visit-time": "平均滞在時間", + "label.visit-duration": "平均滞在時間", "label.back": "戻る", "label.before": "直前", "label.bounce-rate": "直帰率", diff --git a/src/lang/km-KH.json b/src/lang/km-KH.json index 17ddd914..6bb9f476 100644 --- a/src/lang/km-KH.json +++ b/src/lang/km-KH.json @@ -13,7 +13,7 @@ "label.all-time": "គ្រប់ពេល", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "មើលជាមធ្យម", + "label.visit-duration": "មើលជាមធ្យម", "label.back": "ថយក្រោយ", "label.before": "Before", "label.bounce-rate": "ចំនួនវិលត្រឡប់", diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json index f64f03aa..1bfb9ca0 100644 --- a/src/lang/ko-KR.json +++ b/src/lang/ko-KR.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "평균 방문 시간", + "label.visit-duration": "평균 방문 시간", "label.back": "뒤로", "label.before": "Before", "label.bounce-rate": "이탈률", diff --git a/src/lang/lt-LT.json b/src/lang/lt-LT.json index 0d8f53e9..2fc0f5e1 100644 --- a/src/lang/lt-LT.json +++ b/src/lang/lt-LT.json @@ -13,7 +13,7 @@ "label.all-time": "Visas laikotarpis", "label.analytics": "Analytics", "label.average": "Vidurkis", - "label.average-visit-time": "Vidutinė vizito trukmė", + "label.visit-duration": "Vidutinė vizito trukmė", "label.back": "Atgal", "label.before": "Prieš", "label.bounce-rate": "Atmetimo rodiklis", diff --git a/src/lang/mn-MN.json b/src/lang/mn-MN.json index bd001add..340f4bcd 100644 --- a/src/lang/mn-MN.json +++ b/src/lang/mn-MN.json @@ -13,7 +13,7 @@ "label.all-time": "Бүх цаг үеийн", "label.analytics": "Analytics", "label.average": "Дундаж", - "label.average-visit-time": "Зочилсон дундаж хугацаа", + "label.visit-duration": "Зочилсон дундаж хугацаа", "label.back": "Буцах", "label.before": "Өмнө", "label.bounce-rate": "Нэг хуудас үзээд гарсан", diff --git a/src/lang/ms-MY.json b/src/lang/ms-MY.json index 6fef9931..73124486 100644 --- a/src/lang/ms-MY.json +++ b/src/lang/ms-MY.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Purata tempoh masa lawatan", + "label.visit-duration": "Purata tempoh masa lawatan", "label.back": "Kembali", "label.before": "Before", "label.bounce-rate": "Kadar lantunan", diff --git a/src/lang/my-MM.json b/src/lang/my-MM.json index bf8e0217..8883c71e 100644 --- a/src/lang/my-MM.json +++ b/src/lang/my-MM.json @@ -13,7 +13,7 @@ "label.all-time": "အချိန်အစမှအခုထိ", "label.analytics": "အန်နလစ်တစ်", "label.average": "ပျမ်းမျှ", - "label.average-visit-time": "ဝဘက်ဘ်ဆိုဒ်တွင် ပျမ်းမျှကုန်ဆုံးချိန်", + "label.visit-duration": "ဝဘက်ဘ်ဆိုဒ်တွင် ပျမ်းမျှကုန်ဆုံးချိန်", "label.back": "နောက်သို့", "label.before": "မတိုင်မီ", "label.bounce-rate": "Bounce နှုန်း", diff --git a/src/lang/nb-NO.json b/src/lang/nb-NO.json index a0fe6575..49159723 100644 --- a/src/lang/nb-NO.json +++ b/src/lang/nb-NO.json @@ -13,7 +13,7 @@ "label.all-time": "Noensinne", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Gjennomsnittlig besøkstid", + "label.visit-duration": "Gjennomsnittlig besøkstid", "label.back": "Tilbake", "label.before": "Before", "label.bounce-rate": "Avvisningsfrekvens", diff --git a/src/lang/nl-NL.json b/src/lang/nl-NL.json index 4335345a..1d11ed5a 100644 --- a/src/lang/nl-NL.json +++ b/src/lang/nl-NL.json @@ -13,7 +13,7 @@ "label.all-time": "Onbeperkt", "label.analytics": "Analytics", "label.average": "Gemiddelde", - "label.average-visit-time": "Gemiddelde bezoektijd", + "label.visit-duration": "Gemiddelde bezoektijd", "label.back": "Terug", "label.before": "Voor", "label.bounce-rate": "Bouncepercentage", diff --git a/src/lang/pl-PL.json b/src/lang/pl-PL.json index 7eae7baa..bd649cfd 100644 --- a/src/lang/pl-PL.json +++ b/src/lang/pl-PL.json @@ -13,7 +13,7 @@ "label.all-time": "Cały czas", "label.analytics": "Analityka", "label.average": "Średnia", - "label.average-visit-time": "Średni czas wizyty", + "label.visit-duration": "Średni czas wizyty", "label.back": "Powrót", "label.before": "Przed", "label.bounce-rate": "Współczynnik odrzuceń", diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index 5c0425ea..b84deb2d 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -13,7 +13,7 @@ "label.all-time": "Todos os períodos", "label.analytics": "Análise", "label.average": "Média", - "label.average-visit-time": "Tempo médio de visita", + "label.visit-duration": "Tempo médio de visita", "label.back": "Voltar", "label.before": "Antes", "label.bounce-rate": "Taxa de rejeição", @@ -78,31 +78,31 @@ "label.greater-than": "Maior que", "label.greater-than-equals": "Maior ou igual a", "label.insights": "Insights", - "label.insights-description": "Explore seus dados em mais detalhes usando filtros", + "label.insights-description": "Explore seus dados em mais detalhes usando filtros", "label.is": "É igual a", "label.is-not": "Não é igual a", "label.is-not-set": "Não definido", "label.is-set": "Definido", "label.join": "Participar", "label.join-team": "Participar da equipe", - "label.language": "Idioma", + "label.language": "Idioma", "label.languages": "Idiomas", "label.laptop": "Notebook", "label.last-days": "Últimos {x} dias", "label.last-hours": "Últimas {x} horas", "label.last-months": "Últimos {x} meses", - "label.leave": "Sair", + "label.leave": "Sair", "label.leave-team": "Sair da equipe", "label.less-than": "Menor que", "label.less-than-equals": "Menor ou igual a", - "label.login": "Entrar", + "label.login": "Entrar", "label.logout": "Sair", "label.manage": "Gerenciar", "label.max": "Máximo", "label.member": "Membro", "label.members": "Membros", "label.min": "Mínimo", - "label.mobile": "Celular", + "label.mobile": "Celular", "label.more": "Mais", "label.my-account": "Minha conta", "label.my-websites": "Meus sites", @@ -114,15 +114,15 @@ "label.os": "Sistema operacional", "label.overview": "Visão geral", "label.owner": "Proprietário", - "label.page-of": "Página {current} de {total}", + "label.page-of": "Página {current} de {total}", "label.page-views": "Visualizações de página", - "label.pageTitle": "Título", + "label.pageTitle": "Título", "label.pages": "Páginas", - "label.password": "Senha", - "label.powered-by": "Desenvolvido por {name}", + "label.password": "Senha", + "label.powered-by": "Desenvolvido por {name}", "label.profile": "Perfil", "label.queries": "Consultas", - "label.query": "Consulta", + "label.query": "Consulta", "label.query-parameters": "Parâmetros da consulta", "label.realtime": "Tempo real", "label.referrer": "Referência", @@ -132,17 +132,17 @@ "label.region": "Estado", "label.regions": "Estados", "label.remove": "Remover", - "label.remove-member": "Remover membro", + "label.remove-member": "Remover membro", "label.reports": "Relatórios", "label.required": "Obrigatório", "label.reset": "Redefinir", "label.reset-website": "Redefinir dados", "label.retention": "Retenção", "label.retention-description": "Avalie a fidelidade dos seus usuários medindo a frequência com que eles retornam.", - "label.role": "Função", - "label.run-query": "Executar consulta", + "label.role": "Função", + "label.run-query": "Executar consulta", "label.save": "Salvar", - "label.screens": "Tamanhos de tela", + "label.screens": "Tamanhos de tela", "label.search": "Pesquisar", "label.select": "Selecionar", "label.select-date": "Selecionar data", @@ -150,7 +150,7 @@ "label.select-website": "Selecionar site", "label.sessions": "Sessões", "label.settings": "Configurações", - "label.share-url": "Link para compartilhar", + "label.share-url": "Link para compartilhar", "label.single-day": "Apenas um dia", "label.steps": "Etapas", "label.sum": "Soma", @@ -158,56 +158,56 @@ "label.team": "Equipe", "label.team-id": "ID da equipe", "label.team-member": "Membro da equipe", - "label.team-name": "Nome da equipe", - "label.team-owner": "Proprietário da equipe", - "label.team-view-only": "Apenas visualização da equipe", + "label.team-name": "Nome da equipe", + "label.team-owner": "Proprietário da equipe", + "label.team-view-only": "Apenas visualização da equipe", "label.team-websites": "Sites da equipe", "label.teams": "Equipes", "label.theme": "Tema", - "label.this-month": "Este mês", - "label.this-week": "Esta semana", + "label.this-month": "Este mês", + "label.this-week": "Esta semana", "label.this-year": "Este ano", "label.timezone": "Fuso horário", "label.title": "Título", - "label.today": "Hoje", + "label.today": "Hoje", "label.toggle-charts": "Alternar gráficos", "label.total": "Total", - "label.total-records": "Total de registros", + "label.total-records": "Total de registros", "label.tracking-code": "Código de rastreamento", "label.transfer": "Transferir", "label.transfer-website": "Transferir site", "label.true": "Sim", - "label.type": "Tipo", - "label.unique": "Únicos", + "label.type": "Tipo", + "label.unique": "Únicos", "label.unique-visitors": "Visitantes únicos", "label.unknown": "Desconhecido", "label.untitled": "Sem título", - "label.update": "Atualizar", - "label.url": "URL", + "label.update": "Atualizar", + "label.url": "URL", "label.urls": "URLs", "label.user": "Usuário", - "label.username": "Nome de usuário", + "label.username": "Nome de usuário", "label.users": "Usuários", "label.utm": "UTM", "label.utm-description": "Acompanhe suas campanhas de publicidade através de parâmetros UTM.", - "label.value": "Valor", + "label.value": "Valor", "label.view": "Visualizar", "label.view-details": "Ver mais", "label.view-only": "Somente visualização", "label.views": "Visualizações", - "label.views-per-visit": "Visualizações por visita", - "label.visitors": "Visitantes", + "label.views-per-visit": "Visualizações por visita", + "label.visitors": "Visitantes", "label.visits": "Visitas", "label.website": "Site", - "label.website-id": "ID do site", + "label.website-id": "ID do site", "label.websites": "Sites", "label.window": "Janela", - "label.yesterday": "Ontem", - "message.action-confirmation": "Digite {confirmation} na caixa abaixo para confirmar.", + "label.yesterday": "Ontem", + "message.action-confirmation": "Digite {confirmation} na caixa abaixo para confirmar.", "message.active-users": " Atualmente {x} usuários ativos", "message.confirm-delete": "Tem certeza de que deseja excluir {target}?", - "message.confirm-leave": "Tem certeza de que deseja sair de {target}?", - "message.confirm-remove": "Tem certeza que deseja remover {target}?", + "message.confirm-leave": "Tem certeza de que deseja sair de {target}?", + "message.confirm-remove": "Tem certeza que deseja remover {target}?", "message.confirm-reset": "Tem certeza que deseja redefinir os dados de {target}?", "message.delete-team-warning": "Excluir a equipe também excluirá todos os sites da equipe.", "message.delete-website-warning": "Todos os dados relacionados serão excluídos.", @@ -243,4 +243,4 @@ "message.viewed-page": "Página visualizada", "message.visitor-log": "Visitante de {country} usando o navegador {browser} em um {device} com sistema operacional {os}.", "message.visitors-dropped-off": "Visitantes abandonados" - } +} diff --git a/src/lang/pt-PT.json b/src/lang/pt-PT.json index 36966c98..02504a9a 100644 --- a/src/lang/pt-PT.json +++ b/src/lang/pt-PT.json @@ -13,7 +13,7 @@ "label.all-time": "Todo o tempo", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Tempo médio de visita", + "label.visit-duration": "Tempo médio de visita", "label.back": "Voltar", "label.before": "Before", "label.bounce-rate": "Taxa de rejeição", diff --git a/src/lang/ro-RO.json b/src/lang/ro-RO.json index 296f51b7..e6c9cad4 100644 --- a/src/lang/ro-RO.json +++ b/src/lang/ro-RO.json @@ -13,7 +13,7 @@ "label.all-time": "Pentru tot timpul", "label.analytics": "Analytics", "label.average": "Mediu", - "label.average-visit-time": "Timp mediu de vizitare", + "label.visit-duration": "Timp mediu de vizitare", "label.back": "Înapoi", "label.before": "Înainte", "label.bounce-rate": "Rata de respingere", diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index 3d1d8e74..25065a4f 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -13,7 +13,7 @@ "label.all-time": "Все время", "label.analytics": "Аналитика", "label.average": "Average", - "label.average-visit-time": "Среднее время посещения", + "label.visit-duration": "Среднее время посещения", "label.back": "Назад", "label.before": "Before", "label.bounce-rate": "Отказы", diff --git a/src/lang/si-LK.json b/src/lang/si-LK.json index 6f672ab5..087efa56 100644 --- a/src/lang/si-LK.json +++ b/src/lang/si-LK.json @@ -13,7 +13,7 @@ "label.all-time": "හැම වෙලාවෙම", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Average visit time", + "label.visit-duration": "Average visit time", "label.back": "ආපසු", "label.before": "Before", "label.bounce-rate": "Bounce rate", diff --git a/src/lang/sk-SK.json b/src/lang/sk-SK.json index d978281a..10a547d1 100644 --- a/src/lang/sk-SK.json +++ b/src/lang/sk-SK.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Priemerný čas návštevy", + "label.visit-duration": "Priemerný čas návštevy", "label.back": "Späť", "label.before": "Before", "label.bounce-rate": "Okamžité opustenie", diff --git a/src/lang/sl-SI.json b/src/lang/sl-SI.json index 9ba94e3b..0b3761f5 100644 --- a/src/lang/sl-SI.json +++ b/src/lang/sl-SI.json @@ -13,7 +13,7 @@ "label.all-time": "Ves čas", "label.analytics": "Analitika", "label.average": "Povprečno", - "label.average-visit-time": "Povprečni čas obiska", + "label.visit-duration": "Povprečni čas obiska", "label.back": "Nazaj", "label.before": "Pred", "label.bounce-rate": "Odbojna stopnja", diff --git a/src/lang/sv-SE.json b/src/lang/sv-SE.json index 87e90942..8a72e3d6 100644 --- a/src/lang/sv-SE.json +++ b/src/lang/sv-SE.json @@ -13,7 +13,7 @@ "label.all-time": "Sedan början", "label.analytics": "Webbplats Analys", "label.average": "Genomsnitt", - "label.average-visit-time": "Genomsnittlig besökstid", + "label.visit-duration": "Genomsnittlig besökstid", "label.back": "Tillbaka", "label.before": "Före", "label.bounce-rate": "Avvisningsfrekvens", diff --git a/src/lang/ta-IN.json b/src/lang/ta-IN.json index 4e40c490..770bc272 100644 --- a/src/lang/ta-IN.json +++ b/src/lang/ta-IN.json @@ -13,7 +13,7 @@ "label.all-time": "All time", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "சராசரி வருகை நேரம்", + "label.visit-duration": "சராசரி வருகை நேரம்", "label.back": "பின்னால்", "label.before": "Before", "label.bounce-rate": "துள்ளல் விகிதம்", diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json index a5ebeefb..6f8b4a32 100644 --- a/src/lang/th-TH.json +++ b/src/lang/th-TH.json @@ -13,7 +13,7 @@ "label.all-time": "ทุกช่วงเวลา", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "ระยะเวลาเข้าชมเฉลี่ย", + "label.visit-duration": "ระยะเวลาเข้าชมเฉลี่ย", "label.back": "ย้อนกลับ", "label.before": "Before", "label.bounce-rate": "อัตราตีกลับ", diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index d4e46b63..28591052 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -13,7 +13,7 @@ "label.all-time": "Tüm zamanlar", "label.analytics": "Analitik", "label.average": "Ortalama", - "label.average-visit-time": "Ortalama ziyaret süresi", + "label.visit-duration": "Ortalama ziyaret süresi", "label.back": "Geri", "label.before": "Önce", "label.bounce-rate": "Tek sayfa ziyaret oranı", diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json index 1042f3b4..3d393d30 100644 --- a/src/lang/uk-UA.json +++ b/src/lang/uk-UA.json @@ -13,7 +13,7 @@ "label.all-time": "Весь час", "label.analytics": "Аналітика", "label.average": "Середнє", - "label.average-visit-time": "Середній час візиту", + "label.visit-duration": "Середній час візиту", "label.back": "Назад", "label.before": "Раніше", "label.bounce-rate": "Показник відмов", diff --git a/src/lang/ur-PK.json b/src/lang/ur-PK.json index 862971f5..b7f018c7 100644 --- a/src/lang/ur-PK.json +++ b/src/lang/ur-PK.json @@ -13,7 +13,7 @@ "label.all-time": "تمام وقت", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "وزٹ کا اوسط وقت", + "label.visit-duration": "وزٹ کا اوسط وقت", "label.back": "پیچھے", "label.before": "Before", "label.bounce-rate": "اچھال کی شرح", diff --git a/src/lang/vi-VN.json b/src/lang/vi-VN.json index e9a47c61..dbf3bf95 100644 --- a/src/lang/vi-VN.json +++ b/src/lang/vi-VN.json @@ -13,7 +13,7 @@ "label.all-time": "Toàn thời gian", "label.analytics": "Analytics", "label.average": "Average", - "label.average-visit-time": "Thời gian truy cập trung bình", + "label.visit-duration": "Thời gian truy cập trung bình", "label.back": "Quay về", "label.before": "Before", "label.bounce-rate": "Tỷ lệ thoát trang", diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index 4bf90fd1..62ab1aea 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -13,7 +13,7 @@ "label.all-time": "所有时间段", "label.analytics": "分析", "label.average": "平均", - "label.average-visit-time": "平均访问时间", + "label.visit-duration": "平均访问时间", "label.back": "返回", "label.before": "之前", "label.bounce-rate": "跳出率", diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json index 01c08b8b..edad4a5c 100644 --- a/src/lang/zh-TW.json +++ b/src/lang/zh-TW.json @@ -13,7 +13,7 @@ "label.all-time": "所有時間", "label.analytics": "分析", "label.average": "平均", - "label.average-visit-time": "平均造訪時間", + "label.visit-duration": "平均造訪時間", "label.back": "返回", "label.before": "之前", "label.bounce-rate": "跳出率", diff --git a/src/pages/api/websites/[websiteId]/stats.ts b/src/pages/api/websites/[websiteId]/stats.ts index 81a6d835..9108e062 100644 --- a/src/pages/api/websites/[websiteId]/stats.ts +++ b/src/pages/api/websites/[websiteId]/stats.ts @@ -22,6 +22,7 @@ export interface WebsiteStatsRequestQuery { country?: string; region?: string; city?: string; + compare?: string; } import * as yup from 'yup'; @@ -41,6 +42,7 @@ const schema = { country: yup.string(), region: yup.string(), city: yup.string(), + compare: yup.string(), }), }; @@ -77,7 +79,7 @@ export default async ( const stats = Object.keys(metrics[0]).reduce((obj, key) => { obj[key] = { value: Number(metrics[0][key]) || 0, - change: Number(metrics[0][key]) - Number(prevPeriod[0][key]) || 0, + prev: Number(prevPeriod[0][key]) || 0, }; return obj; }, {}); diff --git a/src/queries/analytics/eventData/getEventDataEvents.ts b/src/queries/analytics/eventData/getEventDataEvents.ts index 76ad3fce..e5647deb 100644 --- a/src/queries/analytics/eventData/getEventDataEvents.ts +++ b/src/queries/analytics/eventData/getEventDataEvents.ts @@ -85,8 +85,8 @@ async function clickhouseQuery( limit 500 `, params, - ).then(a => { - return Object.values(a).map(a => { + ).then(result => { + return Object.values(result).map((a: any) => { return { eventName: a.eventName, fieldName: a.fieldName, @@ -113,8 +113,8 @@ async function clickhouseQuery( limit 500 `, params, - ).then(a => { - return Object.values(a).map(a => { + ).then(result => { + return Object.values(result).map((a: any) => { return { eventName: a.eventName, fieldName: a.fieldName, diff --git a/src/queries/analytics/eventData/getEventDataFields.ts b/src/queries/analytics/eventData/getEventDataFields.ts index 6ec3b35a..f669ad39 100644 --- a/src/queries/analytics/eventData/getEventDataFields.ts +++ b/src/queries/analytics/eventData/getEventDataFields.ts @@ -62,8 +62,8 @@ async function clickhouseQuery( limit 500 `, params, - ).then(a => { - return Object.values(a).map(a => { + ).then(result => { + return Object.values(result).map((a: any) => { return { fieldName: a.fieldName, dataType: Number(a.dataType), diff --git a/src/queries/analytics/eventData/getEventDataStats.ts b/src/queries/analytics/eventData/getEventDataStats.ts index 978f561b..09bef107 100644 --- a/src/queries/analytics/eventData/getEventDataStats.ts +++ b/src/queries/analytics/eventData/getEventDataStats.ts @@ -68,8 +68,8 @@ async function clickhouseQuery( ) as t `, params, - ).then(a => { - return Object.values(a).map(a => { + ).then(result => { + return Object.values(result).map((a: any) => { return { events: Number(a.events), fields: Number(a.fields), diff --git a/src/queries/analytics/eventData/getEventDataUsage.ts b/src/queries/analytics/eventData/getEventDataUsage.ts index 7866a600..2a19f33e 100644 --- a/src/queries/analytics/eventData/getEventDataUsage.ts +++ b/src/queries/analytics/eventData/getEventDataUsage.ts @@ -30,8 +30,8 @@ function clickhouseQuery( startDate, endDate, }, - ).then(a => { - return Object.values(a).map(a => { + ).then(result => { + return Object.values(result).map((a: any) => { return { websiteId: a.websiteId, count: Number(a.count) }; }); }); diff --git a/src/queries/analytics/getWebsiteStats.ts b/src/queries/analytics/getWebsiteStats.ts index bc006a2e..6257e166 100644 --- a/src/queries/analytics/getWebsiteStats.ts +++ b/src/queries/analytics/getWebsiteStats.ts @@ -92,13 +92,13 @@ async function clickhouseQuery( `, params, ).then(result => { - return Object.values(result).map(n => { + return Object.values(result).map((a: any) => { return { - pageviews: Number(n.pageviews), - visitors: Number(n.visitors), - visits: Number(n.visits), - bounces: Number(n.bounces), - totaltime: Number(n.totaltime), + pageviews: Number(a.pageviews), + visitors: Number(a.visitors), + visits: Number(a.visits), + bounces: Number(a.bounces), + totaltime: Number(a.totaltime), }; }); });