Skip to content

Commit 20be9af

Browse files
authored
Merge pull request #9 from mikecao/master
Update
2 parents b35a3eb + 30ebf7b commit 20be9af

33 files changed

+1947
-2913
lines changed

components/common/DropDown.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default function DropDown({
2929
}
3030

3131
useDocumentClick(e => {
32-
if (!ref.current.contains(e.target)) {
32+
if (!ref.current?.contains(e.target)) {
3333
setShowMenu(false);
3434
}
3535
});

components/common/MenuButton.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default function MenuButton({
3030
}
3131

3232
useDocumentClick(e => {
33-
if (!ref.current.contains(e.target)) {
33+
if (!ref.current?.contains(e.target)) {
3434
setShowMenu(false);
3535
}
3636
});

components/forms/ShareUrlForm.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import React, { useRef } from 'react';
22
import { FormattedMessage } from 'react-intl';
3+
import { useRouter } from 'next/router';
34
import Button from 'components/common/Button';
45
import FormLayout, { FormButtons, FormRow } from 'components/layout/FormLayout';
56
import CopyButton from 'components/common/CopyButton';
67

78
export default function TrackingCodeForm({ values, onClose }) {
89
const ref = useRef();
10+
const { basePath } = useRouter();
911
const { name, share_id } = values;
1012

1113
return (
@@ -23,7 +25,9 @@ export default function TrackingCodeForm({ values, onClose }) {
2325
rows={3}
2426
cols={60}
2527
spellCheck={false}
26-
defaultValue={`${document.location.origin}/share/${share_id}/${encodeURIComponent(name)}`}
28+
defaultValue={`${
29+
document.location.origin
30+
}${basePath}/share/${share_id}/${encodeURIComponent(name)}`}
2731
readOnly
2832
/>
2933
</FormRow>

components/forms/TrackingCodeForm.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import React, { useRef } from 'react';
22
import { FormattedMessage } from 'react-intl';
3+
import { useRouter } from 'next/router';
34
import Button from 'components/common/Button';
45
import FormLayout, { FormButtons, FormRow } from 'components/layout/FormLayout';
56
import CopyButton from 'components/common/CopyButton';
67

78
export default function TrackingCodeForm({ values, onClose }) {
89
const ref = useRef();
10+
const { basePath } = useRouter();
911

1012
return (
1113
<FormLayout>
@@ -22,7 +24,7 @@ export default function TrackingCodeForm({ values, onClose }) {
2224
rows={3}
2325
cols={60}
2426
spellCheck={false}
25-
defaultValue={`<script async defer data-website-id="${values.website_uuid}" src="${document.location.origin}/umami.js"></script>`}
27+
defaultValue={`<script async defer data-website-id="${values.website_uuid}" src="${document.location.origin}${basePath}/umami.js"></script>`}
2628
readOnly
2729
/>
2830
</FormRow>

components/layout/Header.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ export default function Header() {
1818
<header className="container">
1919
{user?.is_admin && <UpdateNotice />}
2020
<div className={classNames(styles.header, 'row align-items-center')}>
21-
<div className="col-12 col-md-12 col-lg-3">
21+
<div className="col-6 col-lg-3 order-1 order-lg-1">
2222
<div className={styles.title}>
2323
<Icon icon={<Logo />} size="large" className={styles.logo} />
2424
<Link href={user ? '/' : 'https://umami.is'}>umami</Link>
2525
</div>
2626
</div>
27-
<div className="col-12 col-md-12 col-lg-6">
27+
<div className="col-12 col-lg-6 order-3 order-lg-2">
2828
{user && (
2929
<div className={styles.nav}>
3030
<Link href="/dashboard">
@@ -39,7 +39,7 @@ export default function Header() {
3939
</div>
4040
)}
4141
</div>
42-
<div className="col-12 col-md-12 col-lg-3">
42+
<div className="col-6 col-lg-3 order-2 order-lg-3">
4343
<div className={styles.buttons}>
4444
<ThemeButton />
4545
<LanguageButton menuAlign="right" />

components/layout/Header.module.css

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,15 @@
3333
}
3434

3535
@media only screen and (max-width: 992px) {
36-
.title {
37-
justify-content: center;
38-
}
39-
4036
.nav {
4137
font-size: var(--font-size-large);
4238
justify-content: center;
4339
padding: 20px 0;
4440
}
41+
}
4542

46-
.buttons {
47-
justify-content: center;
43+
@media only screen and (max-width: 576px) {
44+
.header {
45+
padding: 0 15px;
4846
}
4947
}

components/layout/Layout.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default function Layout({ title, children, header = true, footer = true }
88
<>
99
<Head>
1010
<title>umami{title && ` - ${title}`}</title>
11-
<link rel="icon" href="/favicon.ico" />
11+
<link rel="icon" href="favicon.ico" />
1212
<link
1313
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap"
1414
rel="stylesheet"

components/metrics/EventsTable.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default function EventsTable({ websiteId, ...props }) {
1717
}
1818

1919
const Label = ({ value }) => {
20-
const [event, label] = value.split(':');
20+
const [event, label] = value.split('\t');
2121
return (
2222
<>
2323
<Tag>{event}</Tag>

components/metrics/WebsiteHeader.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,23 @@ import Arrow from 'assets/arrow-right.svg';
1010
import styles from './WebsiteHeader.module.css';
1111

1212
export default function WebsiteHeader({ websiteId, title, domain, showLink = false }) {
13+
const header = showLink ? (
14+
<>
15+
<Favicon domain={domain} />
16+
<Link href="/website/[...id]" as={`/website/${websiteId}/${title}`}>
17+
{title}
18+
</Link>
19+
</>
20+
) : (
21+
<div>
22+
<Favicon domain={domain} />
23+
{title}
24+
</div>
25+
);
26+
1327
return (
1428
<PageHeader>
15-
<div className={styles.title}>
16-
<Favicon domain={domain} />
17-
{title}
18-
</div>
29+
<div className={styles.title}>{header}</div>
1930
<ActiveUsers className={styles.active} websiteId={websiteId} />
2031
<ButtonLayout align="right">
2132
<RefreshButton websiteId={websiteId} />

components/settings/AccountSettings.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,13 @@ export default function AccountSettings() {
2929

3030
const Checkmark = ({ is_admin }) => (is_admin ? <Icon icon={<Check />} size="medium" /> : null);
3131

32-
const DashboardLink = row =>
33-
row.is_admin ? null : (
34-
<Link href={`/dashboard/${row.user_id}/${row.username}`}>
35-
<a>
36-
<Icon icon={<LinkIcon />} />
37-
</a>
38-
</Link>
39-
);
32+
const DashboardLink = row => (
33+
<Link href={`/dashboard/${row.user_id}/${row.username}`}>
34+
<a>
35+
<Icon icon={<LinkIcon />} />
36+
</a>
37+
</Link>
38+
);
4039

4140
const Buttons = row =>
4241
row.username !== 'admin' ? (

components/settings/LanguageButton.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.menu {
22
display: flex;
33
flex-flow: row wrap;
4-
min-width: 500px;
4+
min-width: 560px;
55
max-width: 100vw;
66
padding: 10px;
77
}

hooks/useShareToken.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import { useEffect } from 'react';
22
import { useDispatch, useSelector } from 'react-redux';
3+
import { useRouter } from 'next/router';
34
import { get } from 'lib/web';
45
import { setShareToken } from 'redux/actions/app';
56

67
export default function useShareToken(shareId) {
8+
const { basePath } = useRouter();
79
const dispatch = useDispatch();
810
const shareToken = useSelector(state => state.app.shareToken);
911

1012
async function loadToken(id) {
11-
const { data } = await get(`/api/share/${id}`);
13+
const { data } = await get(`${basePath}/api/share/${id}`);
1214

1315
if (data) {
1416
dispatch(setShareToken(data));

lang/de-DE.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
"message.confirm-delete": "Sind sie sich sicher {target} zu löschen?",
6161
"message.copied": "In Zwischenablage kopiert!",
6262
"message.delete-warning": "Alle zugehörigen Daten werden auch gelöscht.",
63-
"message.failure": "Es it ein Fehler aufgetreten.",
63+
"message.failure": "Es ist ein Fehler aufgetreten.",
6464
"message.get-share-url": "Freigabe-URL abrufen",
6565
"message.get-tracking-code": "Erstelle Tracking Kennung",
6666
"message.go-to-settings": "Zu den Einstellungen",
@@ -72,7 +72,7 @@
7272
"message.page-not-found": "Seite nicht gefunden.",
7373
"message.powered-by": "Ermöglicht durch {name}",
7474
"message.save-success": "Erfolgreich gespeichert.",
75-
"message.share-url": "Dies ist der öffentliche URL zum Teilen für {target}.",
75+
"message.share-url": "Dies ist die öffentliche URL zum Teilen für {target}.",
7676
"message.track-stats": "Um die Statistiken für {target} zu übermitteln, platzieren Sie bitte den folgenden Quelltext im {head} ihrer Homepage.",
7777
"message.type-delete": "Geben Sie {delete} in das Feld unten ein um zu bestätigen.",
7878
"metrics.actions": "Aktionen",

lang/he-IL.json

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
{
2+
"label.accounts": "חשבונות",
3+
"label.add-account": "הוספה",
4+
"label.add-website": "הוספת אתר",
5+
"label.administrator": "מנהל",
6+
"label.all": "הכל",
7+
"label.all-websites": "כל האתרים",
8+
"label.back": "חזרה",
9+
"label.cancel": "ביטול",
10+
"label.change-password": "שינוי סיסמה",
11+
"label.confirm-password": "אישור סיסמה",
12+
"label.copy-to-clipboard": "העתקה",
13+
"label.current-password": "סיסמה נוכחית",
14+
"label.custom-range": "טווח מותאם",
15+
"label.dashboard": "דשבורד",
16+
"label.date-range": "טווח תאריכים",
17+
"label.default-date-range": "טווח תאריכים בברירת מחדל",
18+
"label.delete": "הסרה",
19+
"label.delete-account": "הסרת חשבון",
20+
"label.delete-website": "הסרת אתר",
21+
"label.dismiss": "שיחרור",
22+
"label.domain": "דומיין",
23+
"label.edit": "עריכה",
24+
"label.edit-account": "עריכת חשבון",
25+
"label.edit-website": "עריכת אתר",
26+
"label.enable-share-url": "הפעלת URL שיתוף",
27+
"label.invalid": "לא תקין",
28+
"label.invalid-domain": "דומיין לא תקין",
29+
"label.last-days": "{x} ימים אחרונים",
30+
"label.last-hours": "{x} שעות אחרונות",
31+
"label.logged-in-as": "מחובר כ-{username}",
32+
"label.login": "התחברות",
33+
"label.logout": "התנתקות",
34+
"label.more": "עוד",
35+
"label.name": "שם",
36+
"label.new-password": "סיסמה חדשה",
37+
"label.password": "סיסמה",
38+
"label.passwords-dont-match": "סיסמאות לא תואמות",
39+
"label.profile": "פרופיל",
40+
"label.realtime": "זמן אמת",
41+
"label.realtime-logs": "לוגים - זמן אמת",
42+
"label.refresh": "רענון",
43+
"label.required": "נדרש",
44+
"label.reset": "איפוס",
45+
"label.save": "שמירה",
46+
"label.settings": "הגדרות",
47+
"label.share-url": "שיתוף URL",
48+
"label.single-day": "יום בודד",
49+
"label.this-month": "החודש",
50+
"label.this-week": "השבוע",
51+
"label.this-year": "השנה",
52+
"label.timezone": "אזור זמן",
53+
"label.today": "היום",
54+
"label.tracking-code": "קוד מעקב",
55+
"label.unknown": "לא ידוע",
56+
"label.username": "שם משתמש",
57+
"label.view-details": "פרטים נוספים",
58+
"label.websites": "אתרים",
59+
"message.active-users": "{x} נוכחיים {x, plural, one {מבקר} other {מבקרים}}",
60+
"message.confirm-delete": "האם באמת למחוק את {target}?",
61+
"message.copied": "הועתק!",
62+
"message.delete-warning": "כל המידע המקושר יימחק",
63+
"message.failure": "משהו השתבש",
64+
"message.get-share-url": "קבלת URL שיתוף",
65+
"message.get-tracking-code": "קבלת קוד מעקב",
66+
"message.go-to-settings": "להדרותג",
67+
"message.incorrect-username-password": "שם משתמש או סיסמה לא נכונים",
68+
"message.log.visitor": "מבקר ממדינת {country} משתמבש בדפדפן {browser} ב-{os} {device}",
69+
"message.new-version-available": "גרסה חדשה של Umami {version} זמינה!",
70+
"message.no-data-available": "אין מידע זמין",
71+
"message.no-websites-configured": "לא מוגדרים אתרים",
72+
"message.page-not-found": "דף לא נמצא",
73+
"message.powered-by": "Powered by {name}",
74+
"message.save-success": "נשמר בהצלחה",
75+
"message.share-url": "זהו URL ציבורי עבור {target}",
76+
"message.track-stats": "יש להוסיף את הקוד הבא לאזור ה-{head} של האתר",
77+
"message.type-delete": "הקלידו {delete} בתיבה על מנת לאשר",
78+
"metrics.actions": "פעולות",
79+
"metrics.average-visit-time": "זמן ביקור ממוצע",
80+
"metrics.bounce-rate": "Bounce rate",
81+
"metrics.browsers": "דפדפנים",
82+
"metrics.countries": "מדינות",
83+
"metrics.device.desktop": "דסקטופ",
84+
"metrics.device.laptop": "לפטופ",
85+
"metrics.device.mobile": "מובייל",
86+
"metrics.device.tablet": "טאבלט",
87+
"metrics.devices": "מכשירים",
88+
"metrics.events": "אירועים",
89+
"metrics.filter.combined": "משותף",
90+
"metrics.filter.domain-only": "דומיין בלבד",
91+
"metrics.filter.raw": "גולמי",
92+
"metrics.operating-systems": "מערכות הפעלה",
93+
"metrics.page-views": "צפיות בדפים",
94+
"metrics.pages": "דפים",
95+
"metrics.referrers": "מפנים",
96+
"metrics.unique-visitors": "מבקרים ייחודיים",
97+
"metrics.views": "צפיות",
98+
"metrics.visitors": "מבקרים"
99+
}

0 commit comments

Comments
 (0)