mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
Merge branch 'dev' into analytics
This commit is contained in:
commit
c990f377ae
@ -22,20 +22,8 @@
|
||||
"plugins": ["@typescript-eslint", "prettier"],
|
||||
"settings": {
|
||||
"import/resolver": {
|
||||
"alias": {
|
||||
"map": [
|
||||
["assets", "./src/assets"],
|
||||
["components", "./src/components"],
|
||||
["db", "./db"],
|
||||
["hooks", "./src/components/hooks"],
|
||||
["lang", "./src/lang"],
|
||||
["lib", "./src/lib"],
|
||||
["public", "./public"],
|
||||
["queries", "./src/queries"],
|
||||
["store", "./src/store"],
|
||||
["styles", "./src/styles"]
|
||||
],
|
||||
"extensions": [".ts", ".tsx", ".js", ".jsx", ".json"]
|
||||
"node": {
|
||||
"moduleDirectory": ["node_modules", "src/"]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": "./src"
|
||||
}
|
||||
"baseUrl": "src"
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ const contentSecurityPolicy = [
|
||||
`img-src *`,
|
||||
`script-src 'self' 'unsafe-eval' 'unsafe-inline'`,
|
||||
`style-src 'self' 'unsafe-inline'`,
|
||||
`connect-src 'self' api.umami.is`,
|
||||
`connect-src 'self' api.umami.is cloud.umami.is`,
|
||||
`frame-ancestors 'self' ${process.env.ALLOWED_FRAME_URLS || ''}`,
|
||||
];
|
||||
|
||||
|
@ -63,7 +63,7 @@
|
||||
"dependencies": {
|
||||
"@clickhouse/client": "^0.2.2",
|
||||
"@fontsource/inter": "^4.5.15",
|
||||
"@prisma/client": "5.6.0",
|
||||
"@prisma/client": "5.7.0",
|
||||
"@prisma/extension-read-replicas": "^0.3.0",
|
||||
"@react-spring/web": "^9.7.3",
|
||||
"@tanstack/react-query": "^5.12.2",
|
||||
@ -97,7 +97,7 @@
|
||||
"next-basics": "^0.39.0",
|
||||
"node-fetch": "^3.2.8",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"prisma": "5.6.0",
|
||||
"prisma": "5.7.0",
|
||||
"react": "^18.2.0",
|
||||
"react-basics": "^0.114.0",
|
||||
"react-beautiful-dnd": "^13.1.0",
|
||||
@ -135,7 +135,7 @@
|
||||
"cross-env": "^7.0.3",
|
||||
"esbuild": "^0.17.17",
|
||||
"eslint": "^8.33.0",
|
||||
"eslint-config-next": "^12.2.4",
|
||||
"eslint-config-next": "^14.0.4",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-import-resolver-alias": "^1.1.2",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
|
@ -27,7 +27,7 @@ export function App({ children }) {
|
||||
{children}
|
||||
<UpdateNotice user={user} config={config} />
|
||||
{process.env.NODE_ENV === 'production' && !pathname.includes('/share/') && (
|
||||
<Script src={`telemetry.js`} />
|
||||
<Script src={`/telemetry.js`} />
|
||||
)}
|
||||
</>
|
||||
);
|
||||
|
@ -18,7 +18,7 @@ export function TeamJoinForm({ onSave, onClose }: { onSave: () => void; onClose:
|
||||
const { mutate, error } = useMutation({ mutationFn: (data: any) => post('/teams/join', data) });
|
||||
const ref = useRef(null);
|
||||
|
||||
const handleSubmit = async data => {
|
||||
const handleSubmit = async (data: any) => {
|
||||
mutate(data, {
|
||||
onSuccess: async () => {
|
||||
setValue('teams:members', Date.now());
|
||||
|
@ -7,7 +7,7 @@ import useMessages from 'components/hooks/useMessages';
|
||||
import TeamsJoinButton from './TeamsJoinButton';
|
||||
import TeamsAddButton from './TeamsAddButton';
|
||||
|
||||
export function TeamsHeader() {
|
||||
export function TeamsHeader({ allowCreate = true }: { allowCreate?: boolean }) {
|
||||
const { formatMessage, labels } = useMessages();
|
||||
const { user } = useUser();
|
||||
|
||||
@ -15,7 +15,7 @@ export function TeamsHeader() {
|
||||
<PageHeader title={formatMessage(labels.teams)}>
|
||||
<Flexbox gap={10}>
|
||||
<TeamsJoinButton />
|
||||
{user.role !== ROLES.viewOnly && <TeamsAddButton />}
|
||||
{allowCreate && user.role !== ROLES.viewOnly && <TeamsAddButton />}
|
||||
</Flexbox>
|
||||
</PageHeader>
|
||||
);
|
||||
|
@ -65,7 +65,7 @@ export function TeamWebsiteAddForm({
|
||||
</GridColumn>
|
||||
</WebsitesDataTable>
|
||||
<FormButtons flex>
|
||||
<SubmitButton disabled={selected?.length === 0}>
|
||||
<SubmitButton variant="primary" disabled={selected?.length === 0}>
|
||||
{formatMessage(labels.addWebsite)}
|
||||
</SubmitButton>
|
||||
<Button onClick={onClose}>{formatMessage(labels.cancel)}</Button>
|
||||
|
@ -2,7 +2,7 @@ import useMessages from './useMessages';
|
||||
import { BROWSERS } from 'lib/constants';
|
||||
import useLocale from './useLocale';
|
||||
import useCountryNames from './useCountryNames';
|
||||
import regions from 'public/iso-3166-2.json';
|
||||
import regions from '../../../public/iso-3166-2.json';
|
||||
|
||||
export function useFormat() {
|
||||
const { formatMessage, labels } = useMessages();
|
||||
@ -23,7 +23,7 @@ export function useFormat() {
|
||||
};
|
||||
|
||||
const formatCity = (value: string, country?: string): string => {
|
||||
return `${value}, ${countryNames[country]}`;
|
||||
return countryNames[country] ? `${value}, ${countryNames[country]}` : value;
|
||||
};
|
||||
|
||||
const formatDevice = (value: string): string => {
|
||||
|
@ -4,7 +4,7 @@ import useLocale from 'components/hooks/useLocale';
|
||||
import useMessages from 'components/hooks/useMessages';
|
||||
import useCountryNames from 'components/hooks/useCountryNames';
|
||||
import MetricsTable, { MetricsTableProps } from './MetricsTable';
|
||||
import regions from 'public/iso-3166-2.json';
|
||||
import regions from '../../../public/iso-3166-2.json';
|
||||
|
||||
export function RegionsTable(props: MetricsTableProps) {
|
||||
const { locale } = useLocale();
|
||||
|
1
src/declaration.d.ts
vendored
1
src/declaration.d.ts
vendored
@ -1,2 +1,3 @@
|
||||
declare module 'cors';
|
||||
declare module 'debug';
|
||||
declare module 'chartjs-adapter-date-fns';
|
||||
|
@ -1,217 +0,0 @@
|
||||
{
|
||||
"label.access-code": "Código de acceso",
|
||||
"label.actions": "Acciones",
|
||||
"label.activity-log": "Registro de actividad",
|
||||
"label.add": "Add",
|
||||
"label.add-description": "Add description",
|
||||
"label.add-website": "Nuevo sitio web",
|
||||
"label.admin": "Administrador",
|
||||
"label.after": "After",
|
||||
"label.all": "Todos",
|
||||
"label.all-time": "Todos los tiempos",
|
||||
"label.analytics": "Analíticas",
|
||||
"label.average": "Average",
|
||||
"label.average-visit-time": "Tiempo promedio de visita",
|
||||
"label.back": "Atrás",
|
||||
"label.before": "Before",
|
||||
"label.bounce-rate": "Porcentaje de rebote",
|
||||
"label.breakdown": "Breakdown",
|
||||
"label.browser": "Browser",
|
||||
"label.browsers": "Navegadores",
|
||||
"label.cancel": "Cancelar",
|
||||
"label.change-password": "Cambiar contraseña",
|
||||
"label.cities": "Ciudades",
|
||||
"label.city": "City",
|
||||
"label.clear-all": "Limpiar todo",
|
||||
"label.confirm": "Confirmar",
|
||||
"label.confirm-password": "Confirmar contraseña",
|
||||
"label.contains": "Contains",
|
||||
"label.continue": "Continuar",
|
||||
"label.countries": "Países",
|
||||
"label.country": "Country",
|
||||
"label.create": "Create",
|
||||
"label.create-report": "Create report",
|
||||
"label.create-team": "Crear equipo",
|
||||
"label.create-user": "Crear usuario",
|
||||
"label.created": "Creado",
|
||||
"label.current-password": "Contraseña actual",
|
||||
"label.custom-range": "Intervalo personalizado",
|
||||
"label.dashboard": "Panel de control",
|
||||
"label.data": "Datos",
|
||||
"label.date": "Date",
|
||||
"label.date-range": "Intervalo de fechas",
|
||||
"label.day": "Day",
|
||||
"label.default-date-range": "Intervalo por defecto",
|
||||
"label.delete": "Eliminar",
|
||||
"label.delete-team": "Eliminar team",
|
||||
"label.delete-user": "Eliminar usuario",
|
||||
"label.delete-website": "Eliminar sitio",
|
||||
"label.description": "Description",
|
||||
"label.desktop": "Escritorio",
|
||||
"label.details": "Detalles",
|
||||
"label.device": "Device",
|
||||
"label.devices": "Dispositivos",
|
||||
"label.dismiss": "Ignorar",
|
||||
"label.does-not-contain": "Does not contain",
|
||||
"label.domain": "Dominio",
|
||||
"label.dropoff": "Dropoff",
|
||||
"label.edit": "Editar",
|
||||
"label.edit-dashboard": "Editar panel",
|
||||
"label.enable-share-url": "Habilitar compartir URL",
|
||||
"label.event": "Evento",
|
||||
"label.event-data": "Event data",
|
||||
"label.events": "Eventos",
|
||||
"label.false": "False",
|
||||
"label.field": "Field",
|
||||
"label.fields": "Fields",
|
||||
"label.filter": "Filter",
|
||||
"label.filter-combined": "Combinado",
|
||||
"label.filter-raw": "Personalizado",
|
||||
"label.filters": "Filters",
|
||||
"label.funnel": "Funnel",
|
||||
"label.funnel-description": "Understand the conversion and drop-off rate of users.",
|
||||
"label.greater-than": "Greater than",
|
||||
"label.greater-than-equals": "Greater than or equals",
|
||||
"label.insights": "Insights",
|
||||
"label.insights-description": "Dive deeper into your data by using segments and filters.",
|
||||
"label.is": "Is",
|
||||
"label.is-not": "Is not",
|
||||
"label.is-not-set": "Is not set",
|
||||
"label.is-set": "Is set",
|
||||
"label.join": "Unir",
|
||||
"label.join-team": "Unir a equipo",
|
||||
"label.language": "Idioma",
|
||||
"label.languages": "Idiomas",
|
||||
"label.laptop": "Portátil",
|
||||
"label.last-days": "Últimos {x} días",
|
||||
"label.last-hours": "Últimas {x} horas",
|
||||
"label.leave": "Abandonar",
|
||||
"label.leave-team": "Abandonar equipo",
|
||||
"label.less-than": "Less than",
|
||||
"label.less-than-equals": "Less than or equals",
|
||||
"label.login": "Iniciar sesión",
|
||||
"label.logout": "Cerrar sesión",
|
||||
"label.max": "Max",
|
||||
"label.members": "Miembros",
|
||||
"label.min": "Min",
|
||||
"label.mobile": "Móvil",
|
||||
"label.more": "Más",
|
||||
"label.my-websites": "My websites",
|
||||
"label.name": "Nombre",
|
||||
"label.new-password": "Nueva contraseña",
|
||||
"label.none": "Ninguno",
|
||||
"label.os": "OS",
|
||||
"label.overview": "Overview",
|
||||
"label.owner": "Propietario",
|
||||
"label.page-of": "Page {current} of {total}",
|
||||
"label.page-views": "Vistas",
|
||||
"label.pageTitle": "Page title",
|
||||
"label.pages": "Páginas",
|
||||
"label.password": "Contraseña",
|
||||
"label.powered-by": "Analíticas de {name}",
|
||||
"label.profile": "Perfil",
|
||||
"label.queries": "Consultas",
|
||||
"label.query": "Query",
|
||||
"label.query-parameters": "Parámetros de petición",
|
||||
"label.realtime": "Tiempo real",
|
||||
"label.referrer": "Referrer",
|
||||
"label.referrers": "Referido desde",
|
||||
"label.refresh": "Actualizar",
|
||||
"label.regenerate": "Regenerar",
|
||||
"label.region": "Region",
|
||||
"label.regions": "Regiones",
|
||||
"label.remove": "Quitar",
|
||||
"label.reports": "Reports",
|
||||
"label.required": "Obligatorio",
|
||||
"label.reset": "Reiniciar",
|
||||
"label.reset-website": "Reiniciar estadísticas",
|
||||
"label.retention": "Retention",
|
||||
"label.retention-description": "Measure your website stickiness by tracking how often users return.",
|
||||
"label.role": "Rol",
|
||||
"label.run-query": "Run query",
|
||||
"label.save": "Guardar",
|
||||
"label.screens": "Pantallas",
|
||||
"label.search": "Search",
|
||||
"label.select-date": "Select date",
|
||||
"label.select-website": "Seleccionar sitio web",
|
||||
"label.sessions": "Sesiones",
|
||||
"label.settings": "Configuraciones",
|
||||
"label.share-url": "Compartir URL",
|
||||
"label.single-day": "Día",
|
||||
"label.sum": "Sum",
|
||||
"label.tablet": "Tableta",
|
||||
"label.team": "Equipo",
|
||||
"label.team-guest": "Invitado de equipo",
|
||||
"label.team-id": "ID de equipo",
|
||||
"label.team-member": "Miembro de equipo",
|
||||
"label.team-name": "Team name",
|
||||
"label.team-owner": "Admin. del equipo",
|
||||
"label.team-websites": "Team websites",
|
||||
"label.teams": "Equipos",
|
||||
"label.theme": "Tema",
|
||||
"label.this-month": "Este mes",
|
||||
"label.this-week": "Esta semana",
|
||||
"label.this-year": "Este año",
|
||||
"label.timezone": "Zona horaria",
|
||||
"label.title": "Título",
|
||||
"label.today": "Hoy",
|
||||
"label.toggle-charts": "Alternar gráficas",
|
||||
"label.total": "Total",
|
||||
"label.total-records": "Total records",
|
||||
"label.tracking-code": "Código de rastreo",
|
||||
"label.true": "True",
|
||||
"label.type": "Type",
|
||||
"label.unique": "Unique",
|
||||
"label.unique-visitors": "Visitantes únicos",
|
||||
"label.unknown": "Desconocida",
|
||||
"label.untitled": "Untitled",
|
||||
"label.url": "URL",
|
||||
"label.urls": "URLs",
|
||||
"label.user": "Usuario",
|
||||
"label.username": "Nombre de usuario",
|
||||
"label.users": "Usuarios",
|
||||
"label.value": "Value",
|
||||
"label.view": "Visualizar",
|
||||
"label.view-details": "Ver detalles",
|
||||
"label.view-only": "View only",
|
||||
"label.views": "Vistas",
|
||||
"label.visitors": "Visitantes",
|
||||
"label.website": "Website",
|
||||
"label.website-id": "ID del sitio web",
|
||||
"label.websites": "Sitios",
|
||||
"label.window": "Window",
|
||||
"label.yesterday": "Ayer",
|
||||
"message.active-users": "{x} {x, plural, one {activo} other {activos}}",
|
||||
"message.confirm-delete": "¿Seguro que quieres eliminar {target}?",
|
||||
"message.confirm-leave": "¿Seguro que quieres abandonar {target}?",
|
||||
"message.confirm-reset": "¿Seguro que quieres BORRAR las analíticas de {target}?",
|
||||
"message.delete-account": "To delete this account, type {confirmation} in the box below to confirm.",
|
||||
"message.delete-website": "To delete this website, type {confirmation} in the box below to confirm.",
|
||||
"message.delete-website-warning": "Toda la información relacionada será eliminada.",
|
||||
"message.error": "Algo falló.",
|
||||
"message.event-log": "{event} en {url}",
|
||||
"message.go-to-settings": "Ir a la configuración",
|
||||
"message.incorrect-username-password": "Nombre de usuario o contraseña incorrectos.",
|
||||
"message.invalid-domain": "Dominio inválido",
|
||||
"message.min-password-length": "Longitud mínima de {n} caracteres",
|
||||
"message.new-version-available": "A new version of Umami {version} is available!",
|
||||
"message.no-data-available": "No hay información disponible.",
|
||||
"message.no-event-data": "No event data is available.",
|
||||
"message.no-match-password": "Las contraseñas no coinciden",
|
||||
"message.no-results-found": "No results were found.",
|
||||
"message.no-team-websites": "Este equipo no tiene ningún sitio web configurado.",
|
||||
"message.no-teams": "No has creado ningún equipo.",
|
||||
"message.no-users": "No hay usuarios.",
|
||||
"message.no-websites-configured": "No tienes ningún sitio configurado.",
|
||||
"message.page-not-found": "Página no encontrada",
|
||||
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
|
||||
"message.reset-website-warning": "Todas las estadísticas de esta página serán eliminadas, pero el código de rastreo permanecerá intacto.",
|
||||
"message.saved": "Guardado.",
|
||||
"message.share-url": "Esta es la URL compartida públicamente para {target}.",
|
||||
"message.team-already-member": "Ya eres miembro de este equipo.",
|
||||
"message.team-not-found": "Equipo no encontrado.",
|
||||
"message.team-websites-info": "Las analíticas de tus sitios pueden verse por cualquier miembro del equipo.",
|
||||
"message.tracking-code": "Código de rastreo",
|
||||
"message.user-deleted": "Usuario eliminado.",
|
||||
"message.visitor-log": "Visitante desde {country} usando {browser} en {os} {device}"
|
||||
}
|
@ -56,7 +56,7 @@ export const languages = {
|
||||
'el-GR': { label: 'Ελληνικά', dateLocale: el },
|
||||
'en-GB': { label: 'English (UK)', dateLocale: enGB },
|
||||
'en-US': { label: 'English (US)', dateLocale: enUS },
|
||||
'es-MX': { label: 'Español', dateLocale: es },
|
||||
'es-ES': { label: 'Español', dateLocale: es },
|
||||
'fa-IR': { label: 'فارسی', dateLocale: faIR, dir: 'rtl' },
|
||||
'fi-FI': { label: 'Suomi', dateLocale: fi },
|
||||
'fo-FO': { label: 'Føroyskt' },
|
||||
|
Loading…
x
Reference in New Issue
Block a user