Development #24

Merged
kyle merged 35 commits from development into main 2026-08-28 10:40:10 -05:00
8 changed files with 370 additions and 89 deletions
Showing only changes of commit 8171354e2a - Show all commits
@@ -11,6 +11,8 @@ import {
} from "@mantine/core"; } from "@mantine/core";
import { ListSkeleton, StatTileSkeleton } from "@/components/skeletons"; import { ListSkeleton, StatTileSkeleton } from "@/components/skeletons";
import { useRollupRange } from "../queries"; import { useRollupRange } from "../queries";
import type { RollupRow } from "../types";
import { DatePickerInput } from "@mantine/dates";
import { fillDailySeries, lastNDays, latestValue, listDays, sumByDim } from "../range"; import { fillDailySeries, lastNDays, latestValue, listDays, sumByDim } from "../range";
import { BarList, Sparkline, StatTile } from "./charts"; import { BarList, Sparkline, StatTile } from "./charts";
import { DetailSheet } from "./shared"; import { DetailSheet } from "./shared";
@@ -25,6 +27,8 @@ export const USAGE_METRICS = [
"server_fn.count", "server_fn.count",
"client_error.count", "client_error.count",
"vital.p75", "vital.p75",
"event.count",
"event.detail.count",
]; ];
const TOP_LIST_SIZE = 8; const TOP_LIST_SIZE = 8;
@@ -122,10 +126,37 @@ const FnDurationDetail = ({ fn, from, to }: { fn: string; from: string; to: stri
); );
}; };
const EventBreakdown = ({ name, rows }: { name: string; rows: RollupRow[] }) => {
const items = useMemo(() => {
const totals = new Map<string, number>();
const prefix = `${name}|`;
for (const row of rows) {
if (row.metric !== "event.detail.count" || !row.dim.startsWith(prefix)) continue;
const detail = row.dim.slice(prefix.length);
totals.set(detail, (totals.get(detail) ?? 0) + row.value);
}
return [...totals.entries()]
.sort((a, b) => b[1] - a[1])
.map(([label, value]) => ({ label, value }));
}, [name, rows]);
if (items.length === 0) {
return (
<Text size="sm" c="dimmed">
<Trans>No breakdown recorded</Trans>
</Text>
);
}
return <BarList items={items} />;
};
const UsageSections = ({ from, to }: { from: string; to: string }) => { const UsageSections = ({ from, to }: { from: string; to: string }) => {
const { t, i18n } = useLingui(); const { t, i18n } = useLingui();
const [selectedFn, setSelectedFn] = useState<string | null>(null); const [selectedFn, setSelectedFn] = useState<string | null>(null);
const { isOpen: fnDetailOpened, open: openFnDetail, close: closeFnDetail } = useSheet(); const { isOpen: fnDetailOpened, open: openFnDetail, close: closeFnDetail } = useSheet();
const [selectedEvent, setSelectedEvent] = useState<string | null>(null);
const { isOpen: eventDetailOpened, open: openEventDetail, close: closeEventDetail } = useSheet();
const { data: rows } = useRollupRange({ metrics: USAGE_METRICS, from, to }); const { data: rows } = useRollupRange({ metrics: USAGE_METRICS, from, to });
@@ -142,6 +173,10 @@ const UsageSections = ({ from, to }: { from: string; to: string }) => {
setSelectedFn(dim); setSelectedFn(dim);
openFnDetail(); openFnDetail();
}); });
const eventItems = topItems(sumByDim(rows, "event.count"), (dim) => {
setSelectedEvent(dim);
openEventDetail();
});
const vitals = (["LCP", "INP", "CLS"] as VitalName[]).map((name) => ({ const vitals = (["LCP", "INP", "CLS"] as VitalName[]).map((name) => ({
name, name,
@@ -186,6 +221,26 @@ const UsageSections = ({ from, to }: { from: string; to: string }) => {
<Divider /> <Divider />
<Stack gap="sm">
<Title order={4}>
<Trans>Events</Trans>
</Title>
{eventItems.length > 0 ? (
<Stack gap="xs">
<Text size="xs" c="dimmed">
<Trans>Top interactions, tap for breakdown</Trans>
</Text>
<BarList items={eventItems} />
</Stack>
) : (
<Text size="sm" c="dimmed">
<Trans>No events recorded in this range</Trans>
</Text>
)}
</Stack>
<Divider />
<Stack gap="sm"> <Stack gap="sm">
<Title order={4}> <Title order={4}>
<Trans>Server functions</Trans> <Trans>Server functions</Trans>
@@ -230,6 +285,25 @@ const UsageSections = ({ from, to }: { from: string; to: string }) => {
</SimpleGrid> </SimpleGrid>
</Stack> </Stack>
<DetailSheet
title={selectedEvent ?? t`Event`}
opened={eventDetailOpened}
onClose={() => {
setSelectedEvent(null);
closeEventDetail();
}}
fields={
selectedEvent
? [
{
label: <Trans>Breakdown</Trans>,
value: <EventBreakdown name={selectedEvent} rows={rows} />,
},
]
: []
}
/>
<DetailSheet <DetailSheet
title={selectedFn ?? t`Function`} title={selectedFn ?? t`Function`}
opened={fnDetailOpened} opened={fnDetailOpened}
@@ -251,36 +325,61 @@ const UsageSections = ({ from, to }: { from: string; to: string }) => {
export const UsageScreen = () => { export const UsageScreen = () => {
const { t } = useLingui(); const { t } = useLingui();
const [rangeDays, setRangeDays] = useState<"7" | "30">("7"); const [preset, setPreset] = useState<"7" | "30" | "180" | "custom">("7");
const range = useMemo(() => lastNDays(Number(rangeDays)), [rangeDays]); const [customRange, setCustomRange] = useState<[string | null, string | null]>([null, null]);
const range = useMemo(() => {
if (preset !== "custom") return lastNDays(Number(preset));
const [start, end] = customRange;
if (!start || !end) return null;
return { from: start, to: end };
}, [preset, customRange]);
return ( return (
<Stack gap="md" px="md" pb="md"> <Stack gap="md" px="md" pb="md">
<SegmentedControl <SegmentedControl
value={rangeDays} value={preset}
onChange={(value) => setRangeDays(value as "7" | "30")} onChange={(value) => setPreset(value as typeof preset)}
data={[ data={[
{ value: "7", label: t`7d` }, { value: "7", label: t`7d` },
{ value: "30", label: t`30d` }, { value: "30", label: t`30d` },
{ value: "180", label: t`180d` },
{ value: "custom", label: t`Custom` },
]} ]}
fullWidth fullWidth
/> />
<Suspense {preset === "custom" && (
fallback={ <DatePickerInput
<Stack gap="lg"> type="range"
<StatTileSkeleton align="row" /> value={customRange}
<SimpleGrid cols={3} spacing="sm"> onChange={setCustomRange}
<StatTileSkeleton /> maxDate={new Date()}
<StatTileSkeleton /> placeholder={t`Pick a date range`}
<StatTileSkeleton /> />
</SimpleGrid> )}
<ListSkeleton rows={6} withTrailing="text" />
</Stack> {range ? (
} <Suspense
> fallback={
<UsageSections from={range.from} to={range.to} /> <Stack gap="lg">
</Suspense> <StatTileSkeleton align="row" />
<SimpleGrid cols={3} spacing="sm">
<StatTileSkeleton />
<StatTileSkeleton />
<StatTileSkeleton />
</SimpleGrid>
<ListSkeleton rows={6} withTrailing="text" />
</Stack>
}
>
<UsageSections from={range.from} to={range.to} />
</Suspense>
) : (
<Text size="sm" c="dimmed" ta="center" py="xl">
<Trans>Pick a date range to see usage</Trans>
</Text>
)}
</Stack> </Stack>
); );
}; };
+1 -1
View File
@@ -134,7 +134,7 @@ export const resolveClientErrorGroup = createServerFn({ method: "POST" })
); );
const rollupRangeSchema = z.object({ const rollupRangeSchema = z.object({
metrics: z.array(z.string()).min(1).max(8), metrics: z.array(z.string()).min(1).max(12),
from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/), from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/), to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
dim: z.string().optional(), dim: z.string().optional(),
+22
View File
@@ -14,6 +14,7 @@ export interface ClientEventRow {
session_id?: string; session_id?: string;
route_id?: string; route_id?: string;
value?: number; value?: number;
props?: { source?: string; emoji?: string; tournament?: string } | null;
} }
export interface ClientErrorRow { export interface ClientErrorRow {
@@ -64,6 +65,8 @@ export interface ClientEventAccumulator {
sessions: Set<string>; sessions: Set<string>;
pageViewsByRoute: Map<string, number>; pageViewsByRoute: Map<string, number>;
vitals: Map<string, number[]>; vitals: Map<string, number[]>;
eventCounts: Map<string, number>;
eventDetails: Map<string, number>;
} }
export const newClientEventAccumulator = (): ClientEventAccumulator => ({ export const newClientEventAccumulator = (): ClientEventAccumulator => ({
@@ -71,8 +74,13 @@ export const newClientEventAccumulator = (): ClientEventAccumulator => ({
sessions: new Set(), sessions: new Set(),
pageViewsByRoute: new Map(), pageViewsByRoute: new Map(),
vitals: new Map(), vitals: new Map(),
eventCounts: new Map(),
eventDetails: new Map(),
}); });
const eventDetail = (row: ClientEventRow): string | undefined =>
row.props?.source ?? row.props?.emoji ?? row.props?.tournament;
export const accumulateClientEvents = (acc: ClientEventAccumulator, rows: ClientEventRow[]) => { export const accumulateClientEvents = (acc: ClientEventAccumulator, rows: ClientEventRow[]) => {
for (const row of rows) { for (const row of rows) {
if (row.player) acc.players.add(row.player); if (row.player) acc.players.add(row.player);
@@ -86,6 +94,13 @@ export const accumulateClientEvents = (acc: ClientEventAccumulator, rows: Client
const values = acc.vitals.get(metric) ?? []; const values = acc.vitals.get(metric) ?? [];
values.push(row.value); values.push(row.value);
acc.vitals.set(metric, values); acc.vitals.set(metric, values);
} else {
acc.eventCounts.set(row.name, (acc.eventCounts.get(row.name) ?? 0) + 1);
const detail = eventDetail(row);
if (detail) {
const key = `${row.name}|${detail}`;
acc.eventDetails.set(key, (acc.eventDetails.get(key) ?? 0) + 1);
}
} }
} }
}; };
@@ -157,6 +172,13 @@ export const buildDayRollups = (
push("page_view.count", "", totalPageViews); push("page_view.count", "", totalPageViews);
push("page_view.sessions", "", clientEvents.sessions.size); push("page_view.sessions", "", clientEvents.sessions.size);
for (const [name, count] of clientEvents.eventCounts) {
push("event.count", name, count);
}
for (const [key, count] of clientEvents.eventDetails) {
push("event.detail.count", key, count);
}
push("client_error.count", "", clientErrors.total); push("client_error.count", "", clientErrors.total);
for (const [group, count] of clientErrors.byGroup) { for (const [group, count] of clientErrors.byGroup) {
push("client_error.count", group, count); push("client_error.count", group, count);
+1 -1
View File
@@ -59,7 +59,7 @@ export const runRollups = async (
); );
await pbAdmin.pageCollection<ClientEventRow>( await pbAdmin.pageCollection<ClientEventRow>(
"client_events", "client_events",
{ filter: dayFilter(dateStr), fields: "name,player,session_id,route_id,value,created" }, { filter: dayFilter(dateStr), fields: "name,player,session_id,route_id,value,props,created" },
(rows) => accumulateClientEvents(clientEvents, rows) (rows) => accumulateClientEvents(clientEvents, rows)
); );
await pbAdmin.pageCollection<ClientErrorRow>( await pbAdmin.pageCollection<ClientErrorRow>(
+57 -17
View File
@@ -346,6 +346,10 @@ msgstr "✓ Als Free Agent angemeldet"
msgid "1. Correct champion pick" msgid "1. Correct champion pick"
msgstr "1. Richtiger Meister-Tipp" msgstr "1. Richtiger Meister-Tipp"
#: src/features/telemetry/components/usage-screen.tsx:346
msgid "180d"
msgstr "180T"
#: src/features/teams/components/team-form/duration-picker.tsx:22 #: src/features/teams/components/team-form/duration-picker.tsx:22
msgid "1m" msgid "1m"
msgstr "1 min" msgstr "1 min"
@@ -362,7 +366,7 @@ msgstr "2. Frühere Abgabe"
msgid "2nd place" msgid "2nd place"
msgstr "2. Platz" msgstr "2. Platz"
#: src/features/telemetry/components/usage-screen.tsx:264 #: src/features/telemetry/components/usage-screen.tsx:345
msgid "30d" msgid "30d"
msgstr "30 T" msgstr "30 T"
@@ -378,7 +382,7 @@ msgstr "3. Platz"
msgid "5s" msgid "5s"
msgstr "5 s" msgstr "5 s"
#: src/features/telemetry/components/usage-screen.tsx:263 #: src/features/telemetry/components/usage-screen.tsx:344
msgid "7d" msgid "7d"
msgstr "7 T" msgstr "7 T"
@@ -649,6 +653,10 @@ msgstr "Turnierbaum-Vorschau"
msgid "Bracket Reset" msgid "Bracket Reset"
msgstr "Bracket-Reset" msgstr "Bracket-Reset"
#: src/features/telemetry/components/usage-screen.tsx:299
msgid "Breakdown"
msgstr "Aufschlüsselung"
#: src/themes/brutal/manifest.ts:6 #: src/themes/brutal/manifest.ts:6
msgid "Brutal" msgid "Brutal"
msgstr "Brutal" msgstr "Brutal"
@@ -720,7 +728,7 @@ msgstr "Ausgewählten Spieler entfernen"
msgid "Client error spike" msgid "Client error spike"
msgstr "Anstieg von Client-Fehlern" msgstr "Anstieg von Client-Fehlern"
#: src/features/telemetry/components/usage-screen.tsx:208 #: src/features/telemetry/components/usage-screen.tsx:263
msgid "Client errors" msgid "Client errors"
msgstr "Client-Fehler" msgstr "Client-Fehler"
@@ -878,11 +886,15 @@ msgstr "Becher kassiert"
msgid "Cups Made" msgid "Cups Made"
msgstr "Becher erzielt" msgstr "Becher erzielt"
#: src/features/telemetry/components/usage-screen.tsx:347
msgid "Custom"
msgstr "Benutzerdefiniert"
#: src/features/teams/components/team-form/color-picker.tsx:63 #: src/features/teams/components/team-form/color-picker.tsx:63
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "Benutzerdefinierter Hex-Code" msgstr "Benutzerdefinierter Hex-Code"
#: src/features/telemetry/components/usage-screen.tsx:163 #: src/features/telemetry/components/usage-screen.tsx:198
msgid "Daily active players" msgid "Daily active players"
msgstr "Täglich aktive Spieler" msgstr "Täglich aktive Spieler"
@@ -941,7 +953,7 @@ msgstr "Nachfolgende Matches wurden zurückgesetzt, da sich durch die Korrektur
msgid "Duration" msgid "Duration"
msgstr "Dauer" msgstr "Dauer"
#: src/features/telemetry/components/usage-screen.tsx:241 #: src/features/telemetry/components/usage-screen.tsx:315
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "Dauer p50 / p95" msgstr "Dauer p50 / p95"
@@ -1003,7 +1015,7 @@ msgstr "Enddatum (optional)"
msgid "End Match" msgid "End Match"
msgstr "Match beenden" msgstr "Match beenden"
#: src/features/telemetry/components/usage-screen.tsx:160 #: src/features/telemetry/components/usage-screen.tsx:195
msgid "Engagement" msgid "Engagement"
msgstr "Engagement" msgstr "Engagement"
@@ -1107,10 +1119,18 @@ msgid "Error: {errorMessage}"
msgstr "Fehler: {errorMessage}" msgstr "Fehler: {errorMessage}"
#: src/app/routes/_authed/admin/telemetry.tsx:57 #: src/app/routes/_authed/admin/telemetry.tsx:57
#: src/features/telemetry/components/usage-screen.tsx:205 #: src/features/telemetry/components/usage-screen.tsx:260
msgid "Errors" msgid "Errors"
msgstr "Fehler" msgstr "Fehler"
#: src/features/telemetry/components/usage-screen.tsx:289
msgid "Event"
msgstr "Ereignis"
#: src/features/telemetry/components/usage-screen.tsx:226
msgid "Events"
msgstr "Ereignisse"
#: src/features/tournaments/components/group-stage-view.tsx:368 #: src/features/tournaments/components/group-stage-view.tsx:368
msgid "Expand standings" msgid "Expand standings"
msgstr "Tabelle erweitern" msgstr "Tabelle erweitern"
@@ -1236,7 +1256,7 @@ msgstr "Free-Agent-Anmeldung"
msgid "Free Agents" msgid "Free Agents"
msgstr "Free Agents" msgstr "Free Agents"
#: src/features/telemetry/components/usage-screen.tsx:234 #: src/features/telemetry/components/usage-screen.tsx:308
msgid "Function" msgid "Function"
msgstr "Funktion" msgstr "Funktion"
@@ -1618,7 +1638,7 @@ msgstr "Matchup"
msgid "Matchup details" msgid "Matchup details"
msgstr "Matchup-Details" msgstr "Matchup-Details"
#: src/features/telemetry/components/usage-screen.tsx:174 #: src/features/telemetry/components/usage-screen.tsx:209
msgid "MAU" msgid "MAU"
msgstr "MAU" msgstr "MAU"
@@ -1731,10 +1751,18 @@ msgstr "Keine Aktivitäten gefunden"
msgid "No Badges Available" msgid "No Badges Available"
msgstr "Keine Abzeichen verfügbar" msgstr "Keine Abzeichen verfügbar"
#: src/features/telemetry/components/usage-screen.tsx:146
msgid "No breakdown recorded"
msgstr "Keine Aufschlüsselung vorhanden"
#: src/features/spotify/components/spotify-sheet.tsx:154 #: src/features/spotify/components/spotify-sheet.tsx:154
msgid "No devices found." msgid "No devices found."
msgstr "Keine Geräte gefunden." msgstr "Keine Geräte gefunden."
#: src/features/telemetry/components/usage-screen.tsx:237
msgid "No events recorded in this range"
msgstr "Keine Ereignisse in diesem Zeitraum"
#: src/features/tournaments/components/group-stage-view.tsx:294 #: src/features/tournaments/components/group-stage-view.tsx:294
msgid "No groups have been created yet" msgid "No groups have been created yet"
msgstr "Es wurden noch keine Gruppen erstellt" msgstr "Es wurden noch keine Gruppen erstellt"
@@ -1922,15 +1950,15 @@ msgstr "Übersicht"
msgid "owo" msgid "owo"
msgstr "owo" msgstr "owo"
#: src/features/telemetry/components/usage-screen.tsx:101 #: src/features/telemetry/components/usage-screen.tsx:105
msgid "p50" msgid "p50"
msgstr "p50" msgstr "p50"
#: src/features/telemetry/components/usage-screen.tsx:117 #: src/features/telemetry/components/usage-screen.tsx:121
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/telemetry/components/usage-screen.tsx:181 #: src/features/telemetry/components/usage-screen.tsx:216
msgid "Page views by route" msgid "Page views by route"
msgstr "Seitenaufrufe nach Route" msgstr "Seitenaufrufe nach Route"
@@ -1964,6 +1992,14 @@ msgstr "Telefonnummer ist erforderlich"
msgid "Phone number must be 10 digits" msgid "Phone number must be 10 digits"
msgstr "Telefonnummer muss 10 Ziffern haben" msgstr "Telefonnummer muss 10 Ziffern haben"
#: src/features/telemetry/components/usage-screen.tsx:358
msgid "Pick a date range"
msgstr "Zeitraum auswählen"
#: src/features/telemetry/components/usage-screen.tsx:380
msgid "Pick a date range to see usage"
msgstr "Zeitraum auswählen, um die Nutzung zu sehen"
#: src/features/predictions/components/matchup-sheet.tsx:49 #: src/features/predictions/components/matchup-sheet.tsx:49
msgid "Pick the earlier matches first — these teams aren't decided yet." msgid "Pick the earlier matches first — these teams aren't decided yet."
msgstr "Wähle zuerst die früheren Spiele — diese Teams stehen noch nicht fest." msgstr "Wähle zuerst die früheren Spiele — diese Teams stehen noch nicht fest."
@@ -2322,7 +2358,7 @@ msgstr "Serie steht unentschieden"
msgid "Server function failing" msgid "Server function failing"
msgstr "Serverfunktion schlägt fehl" msgstr "Serverfunktion schlägt fehl"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:246
msgid "Server functions" msgid "Server functions"
msgstr "Serverfunktionen" msgstr "Serverfunktionen"
@@ -2331,7 +2367,7 @@ msgid "serverFn name"
msgstr "serverFn-Name" msgstr "serverFn-Name"
#: src/app/routes/_authed/admin/telemetry.tsx:54 #: src/app/routes/_authed/admin/telemetry.tsx:54
#: src/features/telemetry/components/usage-screen.tsx:177 #: src/features/telemetry/components/usage-screen.tsx:212
msgid "Sessions" msgid "Sessions"
msgstr "Sitzungen" msgstr "Sitzungen"
@@ -2667,10 +2703,14 @@ msgstr "Die besten {0, plural, one {# Team} other {# Teams}} aus jeder Gruppe ko
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "Top {n} kommen weiter" msgstr "Top {n} kommen weiter"
#: src/features/telemetry/components/usage-screen.tsx:195 #: src/features/telemetry/components/usage-screen.tsx:250
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "Top-Funktionen nach Aufrufanzahl" msgstr "Top-Funktionen nach Aufrufanzahl"
#: src/features/telemetry/components/usage-screen.tsx:231
msgid "Top interactions, tap for breakdown"
msgstr "Top-Interaktionen, tippen für Details"
#: src/features/matches/components/team-head-to-head-sheet.tsx:158 #: src/features/matches/components/team-head-to-head-sheet.tsx:158
#: src/features/players/components/player-head-to-head-sheet.tsx:193 #: src/features/players/components/player-head-to-head-sheet.tsx:193
msgid "Total Cups" msgid "Total Cups"
@@ -2826,7 +2866,7 @@ msgstr "Tipps ansehen"
msgid "Viewport" msgid "Viewport"
msgstr "Viewport" msgstr "Viewport"
#: src/features/telemetry/components/usage-screen.tsx:219 #: src/features/telemetry/components/usage-screen.tsx:274
msgid "Vitals" msgid "Vitals"
msgstr "Vitals" msgstr "Vitals"
@@ -2865,7 +2905,7 @@ msgstr "Walkout-Segment ({segmentDuration}s)"
msgid "Walkout Song" msgid "Walkout Song"
msgstr "Walkout-Song" msgstr "Walkout-Song"
#: src/features/telemetry/components/usage-screen.tsx:170 #: src/features/telemetry/components/usage-screen.tsx:205
msgid "WAU" msgid "WAU"
msgstr "WAU" msgstr "WAU"
+57 -17
View File
@@ -346,6 +346,10 @@ msgstr "✓ Enrolled as Free Agent"
msgid "1. Correct champion pick" msgid "1. Correct champion pick"
msgstr "1. Correct champion pick" msgstr "1. Correct champion pick"
#: src/features/telemetry/components/usage-screen.tsx:346
msgid "180d"
msgstr "180d"
#: src/features/teams/components/team-form/duration-picker.tsx:22 #: src/features/teams/components/team-form/duration-picker.tsx:22
msgid "1m" msgid "1m"
msgstr "1m" msgstr "1m"
@@ -362,7 +366,7 @@ msgstr "2. Earlier submission"
msgid "2nd place" msgid "2nd place"
msgstr "2nd place" msgstr "2nd place"
#: src/features/telemetry/components/usage-screen.tsx:264 #: src/features/telemetry/components/usage-screen.tsx:345
msgid "30d" msgid "30d"
msgstr "30d" msgstr "30d"
@@ -378,7 +382,7 @@ msgstr "3rd place"
msgid "5s" msgid "5s"
msgstr "5s" msgstr "5s"
#: src/features/telemetry/components/usage-screen.tsx:263 #: src/features/telemetry/components/usage-screen.tsx:344
msgid "7d" msgid "7d"
msgstr "7d" msgstr "7d"
@@ -649,6 +653,10 @@ msgstr "Bracket Preview"
msgid "Bracket Reset" msgid "Bracket Reset"
msgstr "Bracket Reset" msgstr "Bracket Reset"
#: src/features/telemetry/components/usage-screen.tsx:299
msgid "Breakdown"
msgstr "Breakdown"
#: src/themes/brutal/manifest.ts:6 #: src/themes/brutal/manifest.ts:6
msgid "Brutal" msgid "Brutal"
msgstr "Brutal" msgstr "Brutal"
@@ -720,7 +728,7 @@ msgstr "Clear selected player"
msgid "Client error spike" msgid "Client error spike"
msgstr "Client error spike" msgstr "Client error spike"
#: src/features/telemetry/components/usage-screen.tsx:208 #: src/features/telemetry/components/usage-screen.tsx:263
msgid "Client errors" msgid "Client errors"
msgstr "Client errors" msgstr "Client errors"
@@ -878,11 +886,15 @@ msgstr "Cups Against"
msgid "Cups Made" msgid "Cups Made"
msgstr "Cups Made" msgstr "Cups Made"
#: src/features/telemetry/components/usage-screen.tsx:347
msgid "Custom"
msgstr "Custom"
#: src/features/teams/components/team-form/color-picker.tsx:63 #: src/features/teams/components/team-form/color-picker.tsx:63
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "Custom Hex Code" msgstr "Custom Hex Code"
#: src/features/telemetry/components/usage-screen.tsx:163 #: src/features/telemetry/components/usage-screen.tsx:198
msgid "Daily active players" msgid "Daily active players"
msgstr "Daily active players" msgstr "Daily active players"
@@ -941,7 +953,7 @@ msgstr "Downstream matches were reset because the correction changed who advance
msgid "Duration" msgid "Duration"
msgstr "Duration" msgstr "Duration"
#: src/features/telemetry/components/usage-screen.tsx:241 #: src/features/telemetry/components/usage-screen.tsx:315
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "Duration p50 / p95" msgstr "Duration p50 / p95"
@@ -1003,7 +1015,7 @@ msgstr "End Date (Optional)"
msgid "End Match" msgid "End Match"
msgstr "End Match" msgstr "End Match"
#: src/features/telemetry/components/usage-screen.tsx:160 #: src/features/telemetry/components/usage-screen.tsx:195
msgid "Engagement" msgid "Engagement"
msgstr "Engagement" msgstr "Engagement"
@@ -1107,10 +1119,18 @@ msgid "Error: {errorMessage}"
msgstr "Error: {errorMessage}" msgstr "Error: {errorMessage}"
#: src/app/routes/_authed/admin/telemetry.tsx:57 #: src/app/routes/_authed/admin/telemetry.tsx:57
#: src/features/telemetry/components/usage-screen.tsx:205 #: src/features/telemetry/components/usage-screen.tsx:260
msgid "Errors" msgid "Errors"
msgstr "Errors" msgstr "Errors"
#: src/features/telemetry/components/usage-screen.tsx:289
msgid "Event"
msgstr "Event"
#: src/features/telemetry/components/usage-screen.tsx:226
msgid "Events"
msgstr "Events"
#: src/features/tournaments/components/group-stage-view.tsx:368 #: src/features/tournaments/components/group-stage-view.tsx:368
msgid "Expand standings" msgid "Expand standings"
msgstr "Expand standings" msgstr "Expand standings"
@@ -1236,7 +1256,7 @@ msgstr "Free Agent Enrollment"
msgid "Free Agents" msgid "Free Agents"
msgstr "Free Agents" msgstr "Free Agents"
#: src/features/telemetry/components/usage-screen.tsx:234 #: src/features/telemetry/components/usage-screen.tsx:308
msgid "Function" msgid "Function"
msgstr "Function" msgstr "Function"
@@ -1618,7 +1638,7 @@ msgstr "Matchup"
msgid "Matchup details" msgid "Matchup details"
msgstr "Matchup details" msgstr "Matchup details"
#: src/features/telemetry/components/usage-screen.tsx:174 #: src/features/telemetry/components/usage-screen.tsx:209
msgid "MAU" msgid "MAU"
msgstr "MAU" msgstr "MAU"
@@ -1731,10 +1751,18 @@ msgstr "No Activities Found"
msgid "No Badges Available" msgid "No Badges Available"
msgstr "No Badges Available" msgstr "No Badges Available"
#: src/features/telemetry/components/usage-screen.tsx:146
msgid "No breakdown recorded"
msgstr "No breakdown recorded"
#: src/features/spotify/components/spotify-sheet.tsx:154 #: src/features/spotify/components/spotify-sheet.tsx:154
msgid "No devices found." msgid "No devices found."
msgstr "No devices found." msgstr "No devices found."
#: src/features/telemetry/components/usage-screen.tsx:237
msgid "No events recorded in this range"
msgstr "No events recorded in this range"
#: src/features/tournaments/components/group-stage-view.tsx:294 #: src/features/tournaments/components/group-stage-view.tsx:294
msgid "No groups have been created yet" msgid "No groups have been created yet"
msgstr "No groups have been created yet" msgstr "No groups have been created yet"
@@ -1922,15 +1950,15 @@ msgstr "Overview"
msgid "owo" msgid "owo"
msgstr "owo" msgstr "owo"
#: src/features/telemetry/components/usage-screen.tsx:101 #: src/features/telemetry/components/usage-screen.tsx:105
msgid "p50" msgid "p50"
msgstr "p50" msgstr "p50"
#: src/features/telemetry/components/usage-screen.tsx:117 #: src/features/telemetry/components/usage-screen.tsx:121
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/telemetry/components/usage-screen.tsx:181 #: src/features/telemetry/components/usage-screen.tsx:216
msgid "Page views by route" msgid "Page views by route"
msgstr "Page views by route" msgstr "Page views by route"
@@ -1964,6 +1992,14 @@ msgstr "Phone number is required"
msgid "Phone number must be 10 digits" msgid "Phone number must be 10 digits"
msgstr "Phone number must be 10 digits" msgstr "Phone number must be 10 digits"
#: src/features/telemetry/components/usage-screen.tsx:358
msgid "Pick a date range"
msgstr "Pick a date range"
#: src/features/telemetry/components/usage-screen.tsx:380
msgid "Pick a date range to see usage"
msgstr "Pick a date range to see usage"
#: src/features/predictions/components/matchup-sheet.tsx:49 #: src/features/predictions/components/matchup-sheet.tsx:49
msgid "Pick the earlier matches first — these teams aren't decided yet." msgid "Pick the earlier matches first — these teams aren't decided yet."
msgstr "Pick the earlier matches first — these teams aren't decided yet." msgstr "Pick the earlier matches first — these teams aren't decided yet."
@@ -2322,7 +2358,7 @@ msgstr "Series is tied"
msgid "Server function failing" msgid "Server function failing"
msgstr "Server function failing" msgstr "Server function failing"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:246
msgid "Server functions" msgid "Server functions"
msgstr "Server functions" msgstr "Server functions"
@@ -2331,7 +2367,7 @@ msgid "serverFn name"
msgstr "serverFn name" msgstr "serverFn name"
#: src/app/routes/_authed/admin/telemetry.tsx:54 #: src/app/routes/_authed/admin/telemetry.tsx:54
#: src/features/telemetry/components/usage-screen.tsx:177 #: src/features/telemetry/components/usage-screen.tsx:212
msgid "Sessions" msgid "Sessions"
msgstr "Sessions" msgstr "Sessions"
@@ -2667,10 +2703,14 @@ msgstr "Top {0, plural, one {# team} other {# teams}} from each group will advan
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "Top {n} advance" msgstr "Top {n} advance"
#: src/features/telemetry/components/usage-screen.tsx:195 #: src/features/telemetry/components/usage-screen.tsx:250
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "Top functions by call count" msgstr "Top functions by call count"
#: src/features/telemetry/components/usage-screen.tsx:231
msgid "Top interactions, tap for breakdown"
msgstr "Top interactions, tap for breakdown"
#: src/features/matches/components/team-head-to-head-sheet.tsx:158 #: src/features/matches/components/team-head-to-head-sheet.tsx:158
#: src/features/players/components/player-head-to-head-sheet.tsx:193 #: src/features/players/components/player-head-to-head-sheet.tsx:193
msgid "Total Cups" msgid "Total Cups"
@@ -2826,7 +2866,7 @@ msgstr "View Predictions"
msgid "Viewport" msgid "Viewport"
msgstr "Viewport" msgstr "Viewport"
#: src/features/telemetry/components/usage-screen.tsx:219 #: src/features/telemetry/components/usage-screen.tsx:274
msgid "Vitals" msgid "Vitals"
msgstr "Vitals" msgstr "Vitals"
@@ -2865,7 +2905,7 @@ msgstr "Walkout Segment ({segmentDuration}s)"
msgid "Walkout Song" msgid "Walkout Song"
msgstr "Walkout Song" msgstr "Walkout Song"
#: src/features/telemetry/components/usage-screen.tsx:170 #: src/features/telemetry/components/usage-screen.tsx:205
msgid "WAU" msgid "WAU"
msgstr "WAU" msgstr "WAU"
+57 -17
View File
@@ -346,6 +346,10 @@ msgstr "✓ Inscrito como agente libre"
msgid "1. Correct champion pick" msgid "1. Correct champion pick"
msgstr "1. Acierto del campeón" msgstr "1. Acierto del campeón"
#: src/features/telemetry/components/usage-screen.tsx:346
msgid "180d"
msgstr "180d"
#: src/features/teams/components/team-form/duration-picker.tsx:22 #: src/features/teams/components/team-form/duration-picker.tsx:22
msgid "1m" msgid "1m"
msgstr "1m" msgstr "1m"
@@ -362,7 +366,7 @@ msgstr "2. Envío más temprano"
msgid "2nd place" msgid "2nd place"
msgstr "2do lugar" msgstr "2do lugar"
#: src/features/telemetry/components/usage-screen.tsx:264 #: src/features/telemetry/components/usage-screen.tsx:345
msgid "30d" msgid "30d"
msgstr "30d" msgstr "30d"
@@ -378,7 +382,7 @@ msgstr "3er lugar"
msgid "5s" msgid "5s"
msgstr "5s" msgstr "5s"
#: src/features/telemetry/components/usage-screen.tsx:263 #: src/features/telemetry/components/usage-screen.tsx:344
msgid "7d" msgid "7d"
msgstr "7d" msgstr "7d"
@@ -649,6 +653,10 @@ msgstr "Vista previa del bracket"
msgid "Bracket Reset" msgid "Bracket Reset"
msgstr "Reinicio del bracket" msgstr "Reinicio del bracket"
#: src/features/telemetry/components/usage-screen.tsx:299
msgid "Breakdown"
msgstr "Desglose"
#: src/themes/brutal/manifest.ts:6 #: src/themes/brutal/manifest.ts:6
msgid "Brutal" msgid "Brutal"
msgstr "Brutal" msgstr "Brutal"
@@ -720,7 +728,7 @@ msgstr "Quitar jugador seleccionado"
msgid "Client error spike" msgid "Client error spike"
msgstr "Aumento de errores de cliente" msgstr "Aumento de errores de cliente"
#: src/features/telemetry/components/usage-screen.tsx:208 #: src/features/telemetry/components/usage-screen.tsx:263
msgid "Client errors" msgid "Client errors"
msgstr "Errores de cliente" msgstr "Errores de cliente"
@@ -878,11 +886,15 @@ msgstr "Vasos en contra"
msgid "Cups Made" msgid "Cups Made"
msgstr "Vasos anotados" msgstr "Vasos anotados"
#: src/features/telemetry/components/usage-screen.tsx:347
msgid "Custom"
msgstr "Personalizado"
#: src/features/teams/components/team-form/color-picker.tsx:63 #: src/features/teams/components/team-form/color-picker.tsx:63
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "Código hex personalizado" msgstr "Código hex personalizado"
#: src/features/telemetry/components/usage-screen.tsx:163 #: src/features/telemetry/components/usage-screen.tsx:198
msgid "Daily active players" msgid "Daily active players"
msgstr "Jugadores activos diarios" msgstr "Jugadores activos diarios"
@@ -941,7 +953,7 @@ msgstr "Los partidos posteriores se reiniciaron porque la corrección cambió qu
msgid "Duration" msgid "Duration"
msgstr "Duración" msgstr "Duración"
#: src/features/telemetry/components/usage-screen.tsx:241 #: src/features/telemetry/components/usage-screen.tsx:315
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "Duración p50 / p95" msgstr "Duración p50 / p95"
@@ -1003,7 +1015,7 @@ msgstr "Fecha de fin (opcional)"
msgid "End Match" msgid "End Match"
msgstr "Terminar partido" msgstr "Terminar partido"
#: src/features/telemetry/components/usage-screen.tsx:160 #: src/features/telemetry/components/usage-screen.tsx:195
msgid "Engagement" msgid "Engagement"
msgstr "Interacción" msgstr "Interacción"
@@ -1107,10 +1119,18 @@ msgid "Error: {errorMessage}"
msgstr "Error: {errorMessage}" msgstr "Error: {errorMessage}"
#: src/app/routes/_authed/admin/telemetry.tsx:57 #: src/app/routes/_authed/admin/telemetry.tsx:57
#: src/features/telemetry/components/usage-screen.tsx:205 #: src/features/telemetry/components/usage-screen.tsx:260
msgid "Errors" msgid "Errors"
msgstr "Errores" msgstr "Errores"
#: src/features/telemetry/components/usage-screen.tsx:289
msgid "Event"
msgstr "Evento"
#: src/features/telemetry/components/usage-screen.tsx:226
msgid "Events"
msgstr "Eventos"
#: src/features/tournaments/components/group-stage-view.tsx:368 #: src/features/tournaments/components/group-stage-view.tsx:368
msgid "Expand standings" msgid "Expand standings"
msgstr "Expandir tabla de posiciones" msgstr "Expandir tabla de posiciones"
@@ -1236,7 +1256,7 @@ msgstr "Inscripción de agente libre"
msgid "Free Agents" msgid "Free Agents"
msgstr "Agentes libres" msgstr "Agentes libres"
#: src/features/telemetry/components/usage-screen.tsx:234 #: src/features/telemetry/components/usage-screen.tsx:308
msgid "Function" msgid "Function"
msgstr "Función" msgstr "Función"
@@ -1618,7 +1638,7 @@ msgstr "Enfrentamiento"
msgid "Matchup details" msgid "Matchup details"
msgstr "Detalles del enfrentamiento" msgstr "Detalles del enfrentamiento"
#: src/features/telemetry/components/usage-screen.tsx:174 #: src/features/telemetry/components/usage-screen.tsx:209
msgid "MAU" msgid "MAU"
msgstr "MAU" msgstr "MAU"
@@ -1731,10 +1751,18 @@ msgstr "No se encontraron actividades"
msgid "No Badges Available" msgid "No Badges Available"
msgstr "No hay insignias disponibles" msgstr "No hay insignias disponibles"
#: src/features/telemetry/components/usage-screen.tsx:146
msgid "No breakdown recorded"
msgstr "Sin desglose registrado"
#: src/features/spotify/components/spotify-sheet.tsx:154 #: src/features/spotify/components/spotify-sheet.tsx:154
msgid "No devices found." msgid "No devices found."
msgstr "No se encontraron dispositivos." msgstr "No se encontraron dispositivos."
#: src/features/telemetry/components/usage-screen.tsx:237
msgid "No events recorded in this range"
msgstr "No hay eventos en este rango"
#: src/features/tournaments/components/group-stage-view.tsx:294 #: src/features/tournaments/components/group-stage-view.tsx:294
msgid "No groups have been created yet" msgid "No groups have been created yet"
msgstr "Aún no se han creado grupos" msgstr "Aún no se han creado grupos"
@@ -1922,15 +1950,15 @@ msgstr "Resumen"
msgid "owo" msgid "owo"
msgstr "owo" msgstr "owo"
#: src/features/telemetry/components/usage-screen.tsx:101 #: src/features/telemetry/components/usage-screen.tsx:105
msgid "p50" msgid "p50"
msgstr "p50" msgstr "p50"
#: src/features/telemetry/components/usage-screen.tsx:117 #: src/features/telemetry/components/usage-screen.tsx:121
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/telemetry/components/usage-screen.tsx:181 #: src/features/telemetry/components/usage-screen.tsx:216
msgid "Page views by route" msgid "Page views by route"
msgstr "Vistas de página por ruta" msgstr "Vistas de página por ruta"
@@ -1964,6 +1992,14 @@ msgstr "El número de teléfono es obligatorio"
msgid "Phone number must be 10 digits" msgid "Phone number must be 10 digits"
msgstr "El número de teléfono debe tener 10 dígitos" msgstr "El número de teléfono debe tener 10 dígitos"
#: src/features/telemetry/components/usage-screen.tsx:358
msgid "Pick a date range"
msgstr "Elige un rango de fechas"
#: src/features/telemetry/components/usage-screen.tsx:380
msgid "Pick a date range to see usage"
msgstr "Elige un rango de fechas para ver el uso"
#: src/features/predictions/components/matchup-sheet.tsx:49 #: src/features/predictions/components/matchup-sheet.tsx:49
msgid "Pick the earlier matches first — these teams aren't decided yet." msgid "Pick the earlier matches first — these teams aren't decided yet."
msgstr "Elige primero los partidos anteriores — estos equipos todavía no están decididos." msgstr "Elige primero los partidos anteriores — estos equipos todavía no están decididos."
@@ -2322,7 +2358,7 @@ msgstr "La serie está empatada"
msgid "Server function failing" msgid "Server function failing"
msgstr "Función del servidor fallando" msgstr "Función del servidor fallando"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:246
msgid "Server functions" msgid "Server functions"
msgstr "Funciones del servidor" msgstr "Funciones del servidor"
@@ -2331,7 +2367,7 @@ msgid "serverFn name"
msgstr "nombre de serverFn" msgstr "nombre de serverFn"
#: src/app/routes/_authed/admin/telemetry.tsx:54 #: src/app/routes/_authed/admin/telemetry.tsx:54
#: src/features/telemetry/components/usage-screen.tsx:177 #: src/features/telemetry/components/usage-screen.tsx:212
msgid "Sessions" msgid "Sessions"
msgstr "Sesiones" msgstr "Sesiones"
@@ -2667,10 +2703,14 @@ msgstr "{0, plural, one {El mejor equipo de cada grupo avanzará} other {Los mej
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "Los mejores {n} avanzan" msgstr "Los mejores {n} avanzan"
#: src/features/telemetry/components/usage-screen.tsx:195 #: src/features/telemetry/components/usage-screen.tsx:250
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "Funciones principales por cantidad de llamadas" msgstr "Funciones principales por cantidad de llamadas"
#: src/features/telemetry/components/usage-screen.tsx:231
msgid "Top interactions, tap for breakdown"
msgstr "Interacciones principales, toca para ver el desglose"
#: src/features/matches/components/team-head-to-head-sheet.tsx:158 #: src/features/matches/components/team-head-to-head-sheet.tsx:158
#: src/features/players/components/player-head-to-head-sheet.tsx:193 #: src/features/players/components/player-head-to-head-sheet.tsx:193
msgid "Total Cups" msgid "Total Cups"
@@ -2826,7 +2866,7 @@ msgstr "Ver predicciones"
msgid "Viewport" msgid "Viewport"
msgstr "Viewport" msgstr "Viewport"
#: src/features/telemetry/components/usage-screen.tsx:219 #: src/features/telemetry/components/usage-screen.tsx:274
msgid "Vitals" msgid "Vitals"
msgstr "Vitales" msgstr "Vitales"
@@ -2865,7 +2905,7 @@ msgstr "Segmento de entrada ({segmentDuration}s)"
msgid "Walkout Song" msgid "Walkout Song"
msgstr "Canción de entrada" msgstr "Canción de entrada"
#: src/features/telemetry/components/usage-screen.tsx:170 #: src/features/telemetry/components/usage-screen.tsx:205
msgid "WAU" msgid "WAU"
msgstr "WAU" msgstr "WAU"
+57 -17
View File
@@ -346,6 +346,10 @@ msgstr "✓ フリーエージェントとして登録済み"
msgid "1. Correct champion pick" msgid "1. Correct champion pick"
msgstr "1. 優勝チーム予想が的中" msgstr "1. 優勝チーム予想が的中"
#: src/features/telemetry/components/usage-screen.tsx:346
msgid "180d"
msgstr "180日"
#: src/features/teams/components/team-form/duration-picker.tsx:22 #: src/features/teams/components/team-form/duration-picker.tsx:22
msgid "1m" msgid "1m"
msgstr "1分" msgstr "1分"
@@ -362,7 +366,7 @@ msgstr "2. 早い提出"
msgid "2nd place" msgid "2nd place"
msgstr "2位" msgstr "2位"
#: src/features/telemetry/components/usage-screen.tsx:264 #: src/features/telemetry/components/usage-screen.tsx:345
msgid "30d" msgid "30d"
msgstr "30日" msgstr "30日"
@@ -378,7 +382,7 @@ msgstr "3位"
msgid "5s" msgid "5s"
msgstr "5秒" msgstr "5秒"
#: src/features/telemetry/components/usage-screen.tsx:263 #: src/features/telemetry/components/usage-screen.tsx:344
msgid "7d" msgid "7d"
msgstr "7日" msgstr "7日"
@@ -649,6 +653,10 @@ msgstr "ブラケットプレビュー"
msgid "Bracket Reset" msgid "Bracket Reset"
msgstr "ブラケットリセット" msgstr "ブラケットリセット"
#: src/features/telemetry/components/usage-screen.tsx:299
msgid "Breakdown"
msgstr "内訳"
#: src/themes/brutal/manifest.ts:6 #: src/themes/brutal/manifest.ts:6
msgid "Brutal" msgid "Brutal"
msgstr "ブルータル" msgstr "ブルータル"
@@ -720,7 +728,7 @@ msgstr "選択したプレイヤーを解除"
msgid "Client error spike" msgid "Client error spike"
msgstr "クライアントエラー急増" msgstr "クライアントエラー急増"
#: src/features/telemetry/components/usage-screen.tsx:208 #: src/features/telemetry/components/usage-screen.tsx:263
msgid "Client errors" msgid "Client errors"
msgstr "クライアントエラー" msgstr "クライアントエラー"
@@ -878,11 +886,15 @@ msgstr "失カップ"
msgid "Cups Made" msgid "Cups Made"
msgstr "決めたカップ" msgstr "決めたカップ"
#: src/features/telemetry/components/usage-screen.tsx:347
msgid "Custom"
msgstr "カスタム"
#: src/features/teams/components/team-form/color-picker.tsx:63 #: src/features/teams/components/team-form/color-picker.tsx:63
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "カスタムHEXコード" msgstr "カスタムHEXコード"
#: src/features/telemetry/components/usage-screen.tsx:163 #: src/features/telemetry/components/usage-screen.tsx:198
msgid "Daily active players" msgid "Daily active players"
msgstr "デイリーアクティブプレイヤー数" msgstr "デイリーアクティブプレイヤー数"
@@ -941,7 +953,7 @@ msgstr "修正により勝ち上がりの相手が変わったため、以降の
msgid "Duration" msgid "Duration"
msgstr "所要時間" msgstr "所要時間"
#: src/features/telemetry/components/usage-screen.tsx:241 #: src/features/telemetry/components/usage-screen.tsx:315
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "所要時間 p50 / p95" msgstr "所要時間 p50 / p95"
@@ -1003,7 +1015,7 @@ msgstr "終了日(任意)"
msgid "End Match" msgid "End Match"
msgstr "試合を終了" msgstr "試合を終了"
#: src/features/telemetry/components/usage-screen.tsx:160 #: src/features/telemetry/components/usage-screen.tsx:195
msgid "Engagement" msgid "Engagement"
msgstr "エンゲージメント" msgstr "エンゲージメント"
@@ -1107,10 +1119,18 @@ msgid "Error: {errorMessage}"
msgstr "エラー: {errorMessage}" msgstr "エラー: {errorMessage}"
#: src/app/routes/_authed/admin/telemetry.tsx:57 #: src/app/routes/_authed/admin/telemetry.tsx:57
#: src/features/telemetry/components/usage-screen.tsx:205 #: src/features/telemetry/components/usage-screen.tsx:260
msgid "Errors" msgid "Errors"
msgstr "エラー" msgstr "エラー"
#: src/features/telemetry/components/usage-screen.tsx:289
msgid "Event"
msgstr "イベント"
#: src/features/telemetry/components/usage-screen.tsx:226
msgid "Events"
msgstr "イベント"
#: src/features/tournaments/components/group-stage-view.tsx:368 #: src/features/tournaments/components/group-stage-view.tsx:368
msgid "Expand standings" msgid "Expand standings"
msgstr "順位表を展開" msgstr "順位表を展開"
@@ -1236,7 +1256,7 @@ msgstr "フリーエージェント登録"
msgid "Free Agents" msgid "Free Agents"
msgstr "フリーエージェント" msgstr "フリーエージェント"
#: src/features/telemetry/components/usage-screen.tsx:234 #: src/features/telemetry/components/usage-screen.tsx:308
msgid "Function" msgid "Function"
msgstr "関数" msgstr "関数"
@@ -1618,7 +1638,7 @@ msgstr "対戦カード"
msgid "Matchup details" msgid "Matchup details"
msgstr "対戦カードの詳細" msgstr "対戦カードの詳細"
#: src/features/telemetry/components/usage-screen.tsx:174 #: src/features/telemetry/components/usage-screen.tsx:209
msgid "MAU" msgid "MAU"
msgstr "MAU" msgstr "MAU"
@@ -1731,10 +1751,18 @@ msgstr "アクティビティが見つかりません"
msgid "No Badges Available" msgid "No Badges Available"
msgstr "利用可能なバッジがありません" msgstr "利用可能なバッジがありません"
#: src/features/telemetry/components/usage-screen.tsx:146
msgid "No breakdown recorded"
msgstr "内訳の記録はありません"
#: src/features/spotify/components/spotify-sheet.tsx:154 #: src/features/spotify/components/spotify-sheet.tsx:154
msgid "No devices found." msgid "No devices found."
msgstr "デバイスが見つかりません。" msgstr "デバイスが見つかりません。"
#: src/features/telemetry/components/usage-screen.tsx:237
msgid "No events recorded in this range"
msgstr "この期間のイベントはありません"
#: src/features/tournaments/components/group-stage-view.tsx:294 #: src/features/tournaments/components/group-stage-view.tsx:294
msgid "No groups have been created yet" msgid "No groups have been created yet"
msgstr "まだグループが作成されていません" msgstr "まだグループが作成されていません"
@@ -1922,15 +1950,15 @@ msgstr "概要"
msgid "owo" msgid "owo"
msgstr "owo" msgstr "owo"
#: src/features/telemetry/components/usage-screen.tsx:101 #: src/features/telemetry/components/usage-screen.tsx:105
msgid "p50" msgid "p50"
msgstr "p50" msgstr "p50"
#: src/features/telemetry/components/usage-screen.tsx:117 #: src/features/telemetry/components/usage-screen.tsx:121
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/telemetry/components/usage-screen.tsx:181 #: src/features/telemetry/components/usage-screen.tsx:216
msgid "Page views by route" msgid "Page views by route"
msgstr "ルート別ページビュー数" msgstr "ルート別ページビュー数"
@@ -1964,6 +1992,14 @@ msgstr "電話番号の入力が必要です"
msgid "Phone number must be 10 digits" msgid "Phone number must be 10 digits"
msgstr "電話番号は10桁で入力してください" msgstr "電話番号は10桁で入力してください"
#: src/features/telemetry/components/usage-screen.tsx:358
msgid "Pick a date range"
msgstr "期間を選択"
#: src/features/telemetry/components/usage-screen.tsx:380
msgid "Pick a date range to see usage"
msgstr "期間を選択すると利用状況が表示されます"
#: src/features/predictions/components/matchup-sheet.tsx:49 #: src/features/predictions/components/matchup-sheet.tsx:49
msgid "Pick the earlier matches first — these teams aren't decided yet." msgid "Pick the earlier matches first — these teams aren't decided yet."
msgstr "先に前の試合を選んでください — これらのチームはまだ決まっていません。" msgstr "先に前の試合を選んでください — これらのチームはまだ決まっていません。"
@@ -2322,7 +2358,7 @@ msgstr "シリーズはタイです"
msgid "Server function failing" msgid "Server function failing"
msgstr "サーバー関数が失敗しています" msgstr "サーバー関数が失敗しています"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:246
msgid "Server functions" msgid "Server functions"
msgstr "サーバー関数" msgstr "サーバー関数"
@@ -2331,7 +2367,7 @@ msgid "serverFn name"
msgstr "serverFn名" msgstr "serverFn名"
#: src/app/routes/_authed/admin/telemetry.tsx:54 #: src/app/routes/_authed/admin/telemetry.tsx:54
#: src/features/telemetry/components/usage-screen.tsx:177 #: src/features/telemetry/components/usage-screen.tsx:212
msgid "Sessions" msgid "Sessions"
msgstr "セッション数" msgstr "セッション数"
@@ -2667,10 +2703,14 @@ msgstr "各グループの上位{0, plural, one {#チーム} other {#チーム}}
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "上位{n}チームが勝ち上がり" msgstr "上位{n}チームが勝ち上がり"
#: src/features/telemetry/components/usage-screen.tsx:195 #: src/features/telemetry/components/usage-screen.tsx:250
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "呼び出し数の多い関数" msgstr "呼び出し数の多い関数"
#: src/features/telemetry/components/usage-screen.tsx:231
msgid "Top interactions, tap for breakdown"
msgstr "上位のインタラクション、タップで内訳を表示"
#: src/features/matches/components/team-head-to-head-sheet.tsx:158 #: src/features/matches/components/team-head-to-head-sheet.tsx:158
#: src/features/players/components/player-head-to-head-sheet.tsx:193 #: src/features/players/components/player-head-to-head-sheet.tsx:193
msgid "Total Cups" msgid "Total Cups"
@@ -2826,7 +2866,7 @@ msgstr "予想を見る"
msgid "Viewport" msgid "Viewport"
msgstr "ビューポート" msgstr "ビューポート"
#: src/features/telemetry/components/usage-screen.tsx:219 #: src/features/telemetry/components/usage-screen.tsx:274
msgid "Vitals" msgid "Vitals"
msgstr "バイタル" msgstr "バイタル"
@@ -2865,7 +2905,7 @@ msgstr "ウォークアウト区間({segmentDuration}秒)"
msgid "Walkout Song" msgid "Walkout Song"
msgstr "ウォークアウトソング" msgstr "ウォークアウトソング"
#: src/features/telemetry/components/usage-screen.tsx:170 #: src/features/telemetry/components/usage-screen.tsx:205
msgid "WAU" msgid "WAU"
msgstr "WAU" msgstr "WAU"