@ossy/analytics 1.9.6 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/Definition.js +1 -7
- package/src/analytics.page.jsx +16 -19
- package/src/en.translations.json +15 -0
- package/src/sv.translations.json +15 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ossy/analytics",
|
|
3
3
|
"description": "Analytics module — workspace analytics for website traffic",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.10.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.js",
|
|
7
7
|
"module": "./src/index.js",
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
"@ossy/sdk-react": "*",
|
|
27
27
|
"react": "*"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "d9d31182be64a448d575da432af2830d909ad4b9"
|
|
30
30
|
}
|
package/src/Definition.js
CHANGED
|
@@ -2,12 +2,6 @@ export const Definition = {
|
|
|
2
2
|
id: 'analytics',
|
|
3
3
|
title: 'Analytics',
|
|
4
4
|
description: 'Workspace analytics for website traffic and top performing pages.',
|
|
5
|
-
|
|
6
|
-
id: 'analytics',
|
|
7
|
-
enabled: true,
|
|
8
|
-
},
|
|
5
|
+
icon: 'chart',
|
|
9
6
|
statuses: ['beta'],
|
|
10
|
-
actions: ['analytics.read'],
|
|
11
|
-
views: ['home.page'],
|
|
12
|
-
tasks: [],
|
|
13
7
|
}
|
package/src/analytics.page.jsx
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import React, { useMemo } from 'react'
|
|
2
2
|
import { useWorkspace } from '@ossy/sdk-react'
|
|
3
|
-
import {
|
|
4
|
-
import { Text, Title, View } from '@ossy/design-system'
|
|
3
|
+
import { Text, Title, View, useLocale } from '@ossy/design-system'
|
|
5
4
|
import { usePageViewStats } from './usePageViewStats.js'
|
|
6
5
|
|
|
7
6
|
export const metadata = {
|
|
8
7
|
id: 'analytics/home',
|
|
9
|
-
title: 'Analytics',
|
|
10
8
|
path: {
|
|
11
9
|
sv: '/analys',
|
|
12
10
|
en: '/analytics',
|
|
@@ -28,12 +26,11 @@ function SummaryCard({ label, value }) {
|
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
export default function AnalyticsPage() {
|
|
29
|
+
const { t } = useLocale()
|
|
31
30
|
const { workspace } = useWorkspace()
|
|
32
|
-
// Snapshot once per mount: Date.now() on every render changed `from`/`to` every tick and
|
|
33
|
-
// retriggered usePageViewStats (params → useEffect) in a fetch/setState loop.
|
|
34
31
|
const { from, to } = useMemo(() => {
|
|
35
|
-
const
|
|
36
|
-
return { from:
|
|
32
|
+
const now = Date.now()
|
|
33
|
+
return { from: now - 30 * 24 * 60 * 60 * 1000, to: now }
|
|
37
34
|
}, [])
|
|
38
35
|
|
|
39
36
|
const { status, totalViews, dailyViews, topPaths } = usePageViewStats({
|
|
@@ -46,28 +43,28 @@ export default function AnalyticsPage() {
|
|
|
46
43
|
return (
|
|
47
44
|
<View inset="l" gap="l" style={{ width: '100%', boxSizing: 'border-box' }}>
|
|
48
45
|
<View gap="s">
|
|
49
|
-
<Title>{
|
|
50
|
-
<Text>{
|
|
46
|
+
<Title>{t('analytics.home.title')}</Title>
|
|
47
|
+
<Text>{t('analytics.home.description')}</Text>
|
|
51
48
|
</View>
|
|
52
49
|
|
|
53
50
|
{status === 'loading' && (
|
|
54
51
|
<View surface="primary" roundness="m" inset="m">
|
|
55
|
-
<Text>
|
|
52
|
+
<Text>{t('analytics.home.loading')}</Text>
|
|
56
53
|
</View>
|
|
57
54
|
)}
|
|
58
55
|
|
|
59
56
|
{status === 'error' && (
|
|
60
57
|
<View surface="primary" roundness="m" inset="m">
|
|
61
|
-
<Text>
|
|
58
|
+
<Text>{t('analytics.home.error')}</Text>
|
|
62
59
|
</View>
|
|
63
60
|
)}
|
|
64
61
|
|
|
65
62
|
{status === 'success' && (
|
|
66
63
|
<>
|
|
67
64
|
<View layout="row" gap="m">
|
|
68
|
-
<SummaryCard label=
|
|
69
|
-
<SummaryCard label=
|
|
70
|
-
<SummaryCard label=
|
|
65
|
+
<SummaryCard label={t('analytics.home.totalPageViews')} value={`${totalViews}`} />
|
|
66
|
+
<SummaryCard label={t('analytics.home.trackedPages')} value={`${topPaths.length}`} />
|
|
67
|
+
<SummaryCard label={t('analytics.home.daysWithTraffic')} value={`${dailyViews.length}`} />
|
|
71
68
|
</View>
|
|
72
69
|
|
|
73
70
|
<View layout="row" gap="m" style={{ alignItems: 'flex-start' }}>
|
|
@@ -78,11 +75,11 @@ export default function AnalyticsPage() {
|
|
|
78
75
|
gap="s"
|
|
79
76
|
style={{ border: '1px solid var(--separator)', flex: 1 }}
|
|
80
77
|
>
|
|
81
|
-
<Title variant="secondary">
|
|
82
|
-
{topPaths.length === 0 && <Text variant="small">
|
|
78
|
+
<Title variant="secondary">{t('analytics.home.topPaths')}</Title>
|
|
79
|
+
{topPaths.length === 0 && <Text variant="small">{t('analytics.home.noPageViews')}</Text>}
|
|
83
80
|
{topPaths.map((item) => (
|
|
84
81
|
<View key={item.path || 'unknown'} layout="row" justifyContent="space-between">
|
|
85
|
-
<Text variant="small">{item.path || '
|
|
82
|
+
<Text variant="small">{item.path || t('analytics.home.unknownPath')}</Text>
|
|
86
83
|
<Text variant="small">{item.views}</Text>
|
|
87
84
|
</View>
|
|
88
85
|
))}
|
|
@@ -95,8 +92,8 @@ export default function AnalyticsPage() {
|
|
|
95
92
|
gap="s"
|
|
96
93
|
style={{ border: '1px solid var(--separator)', flex: 1 }}
|
|
97
94
|
>
|
|
98
|
-
<Title variant="secondary">
|
|
99
|
-
{dailyViews.length === 0 && <Text variant="small">
|
|
95
|
+
<Title variant="secondary">{t('analytics.home.dailyPageViews')}</Title>
|
|
96
|
+
{dailyViews.length === 0 && <Text variant="small">{t('analytics.home.noDailyData')}</Text>}
|
|
100
97
|
{dailyViews.map((item) => (
|
|
101
98
|
<View key={item.date} layout="row" justifyContent="space-between">
|
|
102
99
|
<Text variant="small">{item.date}</Text>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"analytics.home.documentTitle": "Analytics",
|
|
3
|
+
"analytics.home.title": "Analytics",
|
|
4
|
+
"analytics.home.description": "Workspace analytics for website traffic and top performing pages.",
|
|
5
|
+
"analytics.home.loading": "Loading analytics...",
|
|
6
|
+
"analytics.home.error": "Could not load analytics data.",
|
|
7
|
+
"analytics.home.totalPageViews": "Total page views (30 days)",
|
|
8
|
+
"analytics.home.trackedPages": "Tracked pages (30 days)",
|
|
9
|
+
"analytics.home.daysWithTraffic": "Days with traffic",
|
|
10
|
+
"analytics.home.topPaths": "Top paths",
|
|
11
|
+
"analytics.home.noPageViews": "No page views yet.",
|
|
12
|
+
"analytics.home.unknownPath": "(unknown path)",
|
|
13
|
+
"analytics.home.dailyPageViews": "Daily page views",
|
|
14
|
+
"analytics.home.noDailyData": "No daily data yet."
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"analytics.home.documentTitle": "Analys",
|
|
3
|
+
"analytics.home.title": "Analys",
|
|
4
|
+
"analytics.home.description": "Workspace-analys för webbtrafik och mest besökta sidor.",
|
|
5
|
+
"analytics.home.loading": "Laddar analys...",
|
|
6
|
+
"analytics.home.error": "Kunde inte ladda analysdata.",
|
|
7
|
+
"analytics.home.totalPageViews": "Totala sidvisningar (30 dagar)",
|
|
8
|
+
"analytics.home.trackedPages": "Spårade sidor (30 dagar)",
|
|
9
|
+
"analytics.home.daysWithTraffic": "Dagar med trafik",
|
|
10
|
+
"analytics.home.topPaths": "Topp-sökvägar",
|
|
11
|
+
"analytics.home.noPageViews": "Inga sidvisningar ännu.",
|
|
12
|
+
"analytics.home.unknownPath": "(okänd sökväg)",
|
|
13
|
+
"analytics.home.dailyPageViews": "Dagliga sidvisningar",
|
|
14
|
+
"analytics.home.noDailyData": "Ingen daglig data ännu."
|
|
15
|
+
}
|