Add missing keys

This commit is contained in:
Nicolas Mowen 2025-08-20 07:15:14 -06:00
parent a289ed1f90
commit 8c1ba16df2
4 changed files with 30 additions and 22 deletions

View File

@ -34,5 +34,7 @@
"selected_one": "{{count}} selected",
"selected_other": "{{count}} selected",
"camera": "Camera",
"detected": "detected"
"detected": "detected",
"suspiciousActivity": "Suspicious Activity",
"threateningActivity": "Threatening Activity"
}

View File

@ -132,6 +132,9 @@
"label": "Top Score",
"info": "The top score is the highest median score for the tracked object, so this may differ from the score shown on the search result thumbnail."
},
"score": {
"label": "Score"
},
"recognizedLicensePlate": "Recognized License Plate",
"estimatedSpeed": "Estimated Speed",
"objects": "Objects",
@ -213,5 +216,11 @@
"error": "Failed to delete tracked object: {{errorMessage}}"
}
}
},
"aiAnalysis": {
"title": "AI Analysis"
},
"concerns": {
"label": "Concerns"
}
}

View File

@ -86,10 +86,10 @@ export default function ReviewDetailDialog({
let concerns = "";
switch (aiAnalysis.potential_threat_level) {
case ThreatLevel.SUSPICIOUS:
concerns = "• Suspicious Activity\n";
concerns = `${t("suspiciousActivity", { ns: "views/events" })}\n`;
break;
case ThreatLevel.DANGER:
concerns = "• Danger\n";
concerns = `${t("threateningActivity", { ns: "views/events" })}\n`;
break;
}
@ -98,7 +98,7 @@ export default function ReviewDetailDialog({
});
return concerns || "None";
}, [aiAnalysis]);
}, [aiAnalysis, t]);
const hasMismatch = useMemo(() => {
if (!review || !events) {
@ -270,12 +270,18 @@ export default function ReviewDetailDialog({
isDesktop && "m-2 w-[90%]",
)}
>
AI Analysis
<div className="text-sm text-primary/40">Description</div>
{t("aiAnalysis.title")}
<div className="text-sm text-primary/40">
{t("description.label")}
</div>
<div className="text-sm">{aiAnalysis.scene}</div>
<div className="text-sm text-primary/40">Score</div>
<div className="text-sm text-primary/40">
{t("score.label")}
</div>
<div className="text-sm">{aiAnalysis.confidence * 100}%</div>
<div className="text-sm text-primary/40">Concerns</div>
<div className="text-sm text-primary/40">
{t("concerns.label")}
</div>
<div className="text-sm">{aiThreatLevel}</div>
</div>
)}

View File

@ -317,20 +317,11 @@ export default function PreviewThumbnailPlayer({
</TooltipTrigger>
</div>
<TooltipContent className="smart-capitalize">
{[
...new Set([
...(review.data.objects || []),
...(review.data.sub_labels || []),
...(review.data.audio || []),
]),
]
.filter(
(item) => item !== undefined && !item.includes("-verified"),
)
.map((text) => capitalizeFirstLetter(text))
.sort()
.join(", ")
.replaceAll("-verified", "")}
{review.data.metadata.potential_threat_level == 1 ? (
<>{t("suspiciousActivity", { ns: "views/events" })}</>
) : (
<>{t("threateningActivity", { ns: "views/events" })}</>
)}
</TooltipContent>
</Tooltip>
)}