diff --git a/components/layout/GridLayout.js b/components/layout/GridLayout.js
index 01ec1e8f..1d3170d6 100644
--- a/components/layout/GridLayout.js
+++ b/components/layout/GridLayout.js
@@ -13,7 +13,7 @@ export const GridRow = ({ className, children }) => {
export const GridColumn = ({ xs, sm, md, lg, xl, className, children }) => {
const classes = [];
- classes.push(xs ? `col-${xs}` : 'col');
+ classes.push(xs ? `col-${xs}` : 'col-12');
if (sm) {
classes.push(`col-sm-${sm}`);
diff --git a/components/metrics/DataTable.js b/components/metrics/DataTable.js
new file mode 100644
index 00000000..9e12d887
--- /dev/null
+++ b/components/metrics/DataTable.js
@@ -0,0 +1,91 @@
+import React, { useState } from 'react';
+import { FixedSizeList } from 'react-window';
+import { useSpring, animated, config } from 'react-spring';
+import classNames from 'classnames';
+import NoData from 'components/common/NoData';
+import { formatNumber, formatLongNumber } from 'lib/format';
+import styles from './DataTable.module.css';
+
+export default function DataTable({
+ data,
+ title,
+ metric,
+ className,
+ limit,
+ renderLabel,
+ height = 400,
+ animate = true,
+}) {
+ const [format, setFormat] = useState(true);
+ const formatFunc = format ? formatLongNumber : formatNumber;
+
+ const handleSetFormat = () => setFormat(state => !state);
+
+ const getRow = row => {
+ const { x: label, y: value, z: percent } = row;
+
+ return (
+
+ );
+ };
+
+ const Row = ({ index, style }) => {
+ return
@@ -101,15 +155,26 @@ export default function RealtimeDashboard() {
- x
+ }
+ metric={}
+ data={referrers}
+ animate={false}
+ />
- x
+ }
+ metric={}
+ data={countries}
+ renderLabel={renderCountryName}
+ animate={false}
+ />
- x
+
diff --git a/lang/da-DK.json b/lang/da-DK.json
index 5532bf69..b66b513d 100644
--- a/lang/da-DK.json
+++ b/lang/da-DK.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Adgangskoder matcher ikke",
"label.profile": "Profil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Påkrævet",
"label.settings": "Indstillinger",
"label.this-month": "Denne måned",
diff --git a/lang/de-DE.json b/lang/de-DE.json
index df5e6dd1..4447f98b 100644
--- a/lang/de-DE.json
+++ b/lang/de-DE.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Passwörter stimmen nicht überein",
"label.profile": "Profil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Erforderlich",
"label.settings": "Einstellungen",
"label.this-month": "Diesen Monat",
diff --git a/lang/el-GR.json b/lang/el-GR.json
index 7fbdbfbf..978de681 100644
--- a/lang/el-GR.json
+++ b/lang/el-GR.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Οι κωδικοί πρόσβασης δεν ταιριάζουν",
"label.profile": "Προφίλ",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Απαιτείται",
"label.settings": "Ρυθμίσεις",
"label.this-month": "Αυτο το μήνα",
diff --git a/lang/en-US.json b/lang/en-US.json
index 07670232..12231157 100644
--- a/lang/en-US.json
+++ b/lang/en-US.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Passwords don't match",
"label.profile": "Profile",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Required",
"label.settings": "Settings",
"label.this-month": "This month",
diff --git a/lang/es-MX.json b/lang/es-MX.json
index 61395fcf..eaf92db6 100644
--- a/lang/es-MX.json
+++ b/lang/es-MX.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Las contraseñas no coinciden",
"label.profile": "Perfil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Requerido",
"label.settings": "Configuraciones",
"label.this-month": "Este mes",
diff --git a/lang/fi-FI.json b/lang/fi-FI.json
index 9f0c930b..fa808980 100644
--- a/lang/fi-FI.json
+++ b/lang/fi-FI.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Salasanat eivät täsmää",
"label.profile": "Profiili",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Vaaditaan",
"label.settings": "Asetukset",
"label.this-month": "Tämä kuukausi",
diff --git a/lang/fo-FO.json b/lang/fo-FO.json
index ee5ab8cb..8cedbcdb 100644
--- a/lang/fo-FO.json
+++ b/lang/fo-FO.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Loyniorðini eru ikki eins",
"label.profile": "Brúkari",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Krav",
"label.settings": "Stillingar",
"label.this-month": "Hendan mánan",
diff --git a/lang/fr-FR.json b/lang/fr-FR.json
index cb2cc103..ff00653d 100644
--- a/lang/fr-FR.json
+++ b/lang/fr-FR.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Les mots de passe ne correspondent pas",
"label.profile": "Profile",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Requis",
"label.settings": "Paramètres",
"label.this-month": "Ce mois ci",
diff --git a/lang/id-ID.json b/lang/id-ID.json
index 7c7db298..9c05cf80 100644
--- a/lang/id-ID.json
+++ b/lang/id-ID.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Kata sandi tidak cocok",
"label.profile": "Profil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Wajib",
"label.settings": "Pengaturan",
"label.this-month": "Bulan ini",
diff --git a/lang/ja-JP.json b/lang/ja-JP.json
index 09458224..3a019f27 100644
--- a/lang/ja-JP.json
+++ b/lang/ja-JP.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "パスワードが一致しません",
"label.profile": "プロファイル",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "必須",
"label.settings": "設定",
"label.this-month": "今月",
diff --git a/lang/mn-MN.json b/lang/mn-MN.json
index 5e92c9c7..6a9a0c0b 100644
--- a/lang/mn-MN.json
+++ b/lang/mn-MN.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Нууц үг тохирохгүй байна",
"label.profile": "Бүртгэл",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Шаардлагатай",
"label.settings": "Тохиргоо",
"label.this-month": "Энэ сар",
diff --git a/lang/nb-NO.json b/lang/nb-NO.json
index 0af11471..0988f361 100644
--- a/lang/nb-NO.json
+++ b/lang/nb-NO.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Passordene er ikke like",
"label.profile": "Profil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Påkrevd",
"label.settings": "Innstillinger",
"label.this-month": "Denne måneden",
diff --git a/lang/nl-NL.json b/lang/nl-NL.json
index 4613ed33..f36289cc 100644
--- a/lang/nl-NL.json
+++ b/lang/nl-NL.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Wachtwoorden komen niet overeen",
"label.profile": "Profiel",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Verplicht",
"label.settings": "Instellingen",
"label.this-month": "Deze maand",
diff --git a/lang/pt-PT.json b/lang/pt-PT.json
index 81e3a334..d1f7ee3c 100644
--- a/lang/pt-PT.json
+++ b/lang/pt-PT.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Palavra-passes não correspondem",
"label.profile": "Perfil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Obrigatório",
"label.settings": "Definições",
"label.this-month": "Este mês",
diff --git a/lang/ro-RO.json b/lang/ro-RO.json
index 7e2f4800..3fe2fb92 100644
--- a/lang/ro-RO.json
+++ b/lang/ro-RO.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Parolele nu se potrivesc",
"label.profile": "Profil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Obligatoriu",
"label.settings": "Setări",
"label.this-month": "Această lună",
diff --git a/lang/ru-RU.json b/lang/ru-RU.json
index 8a1ffb1d..4b0ff88b 100644
--- a/lang/ru-RU.json
+++ b/lang/ru-RU.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Пароли не совпадают",
"label.profile": "Профиль",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Обязательное",
"label.settings": "Настройки",
"label.this-month": "Этот месяц",
diff --git a/lang/sv-SE.json b/lang/sv-SE.json
index 7153a449..6133383b 100644
--- a/lang/sv-SE.json
+++ b/lang/sv-SE.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Lösenorden är inte samma",
"label.profile": "Profil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Krävs",
"label.settings": "Inställningar",
"label.this-month": "Denna månad",
diff --git a/lang/tr-TR.json b/lang/tr-TR.json
index 8448303a..1aff9d2e 100644
--- a/lang/tr-TR.json
+++ b/lang/tr-TR.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Parolalar uyuşmuyor",
"label.profile": "Profil",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Zorunlu alan",
"label.settings": "Ayarlar",
"label.this-month": "Bu ay",
diff --git a/lang/uk-UA.json b/lang/uk-UA.json
index ce87cf68..27d04279 100644
--- a/lang/uk-UA.json
+++ b/lang/uk-UA.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "Паролі не співпадають",
"label.profile": "Профіль",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "Обов'язкове",
"label.settings": "Налаштування",
"label.this-month": "Поточний місяць",
diff --git a/lang/zh-CN.json b/lang/zh-CN.json
index 5b5653c5..18a82ac4 100644
--- a/lang/zh-CN.json
+++ b/lang/zh-CN.json
@@ -38,6 +38,7 @@
"label.passwords-dont-match": "密码不一致",
"label.profile": "个人资料",
"label.realtime": "Realtime",
+ "label.realtime-logs": "Realtime logs",
"label.required": "必填",
"label.settings": "设置",
"label.this-month": "本月",
diff --git a/package.json b/package.json
index 3e2c5c15..1398c724 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "umami",
- "version": "0.90.0",
+ "version": "0.91.0",
"description": "A simple, fast, website analytics alternative to Google Analytics. ",
"author": "Mike Cao ",
"license": "MIT",