Expand timeSpent choices for evaluation document and translate them to user locale or fallback 'fr'

This commit is contained in:
2025-11-05 09:29:50 +00:00
committed by Julien Fastré
parent 4b9db6ceb6
commit 671ed21d59
4 changed files with 153 additions and 33 deletions

View File

@@ -67,37 +67,117 @@ const store = useStore();
const $toast = useToast();
const timeSpentChoices = [
{ text: "1 minute", value: 60 },
{ text: "2 minutes", value: 120 },
{ text: "3 minutes", value: 180 },
{ text: "4 minutes", value: 240 },
{ text: "5 minutes", value: 300 },
{ text: "10 minutes", value: 600 },
{ text: "15 minutes", value: 900 },
{ text: "20 minutes", value: 1200 },
{ text: "25 minutes", value: 1500 },
{ text: "30 minutes", value: 1800 },
{ text: "45 minutes", value: 2700 },
{ text: "1 hour", value: 3600 },
{ text: "1 hour 15 minutes", value: 4500 },
{ text: "1 hour 30 minutes", value: 5400 },
{ text: "1 hour 45 minutes", value: 6300 },
{ text: "2 hours", value: 7200 },
{ text: "2 hours 30 minutes", value: 9000 },
{ text: "3 hours", value: 10800 },
{ text: "3 hours 30 minutes", value: 12600 },
{ text: "4 hours", value: 14400 },
{ text: "4 hours 30 minutes", value: 16200 },
{ text: "5 hours", value: 18000 },
{ text: "5 hours 30 minutes", value: 19800 },
{ text: "6 hours", value: 21600 },
{ text: "6 hours 30 minutes", value: 23400 },
{ text: "7 hours", value: 25200 },
{ text: "7 hours 30 minutes", value: 27000 },
{ text: "8 hours", value: 28800 },
const timeSpentValues = [
60,
120,
180,
240,
300,
600,
900,
1200,
1500,
1800,
2700,
3600,
4500,
5400,
6300,
7200,
9000,
10800,
12600,
14400,
16200,
18000,
19800,
21600,
23400,
25200,
27000,
28800,
43200,
57600,
72000,
86400,
100800,
115200,
129600,
144000, // goes from 1 minute to 40 hours
];
const formatDuration = (seconds, locale) => {
const currentLocale = locale || navigator.language || "fr";
const totalHours = Math.floor(seconds / 3600);
const remainingMinutes = Math.floor((seconds % 3600) / 60);
if (totalHours >= 8) {
const days = Math.floor(totalHours / 8);
const remainingHours = totalHours % 8;
const parts = [];
if (days > 0) {
parts.push(
new Intl.NumberFormat(currentLocale, {
style: "unit",
unit: "day",
unitDisplay: "long",
}).format(days),
);
}
if (remainingHours > 0) {
parts.push(
new Intl.NumberFormat(currentLocale, {
style: "unit",
unit: "hour",
unitDisplay: "long",
}).format(remainingHours),
);
}
return parts.join(" ");
}
// For less than 8 hours, use hour and minute format
const parts = [];
if (totalHours > 0) {
parts.push(
new Intl.NumberFormat(currentLocale, {
style: "unit",
unit: "hour",
unitDisplay: "long",
}).format(totalHours),
);
}
if (remainingMinutes > 0) {
parts.push(
new Intl.NumberFormat(currentLocale, {
style: "unit",
unit: "minute",
unitDisplay: "long",
}).format(remainingMinutes),
);
}
console.log(parts);
console.log(parts.join(" "));
return parts.join(" ");
};
const timeSpentChoices = computed(() => {
const locale = "fr";
return timeSpentValues.map((value) => ({
text: formatDuration(value, locale),
value: parseInt(value),
}));
});
const startDate = computed({
get() {
return props.evaluation.startDate;
@@ -194,7 +274,7 @@ function updateWarningInterval(value) {
}
function updateTimeSpent(value) {
timeSpent.value = value;
timeSpent.value = parseInt(value);
}
function updateComment(value) {