diff --git a/src/app/project-tasks/page.js b/src/app/project-tasks/page.js index f261315..4d4838a 100644 --- a/src/app/project-tasks/page.js +++ b/src/app/project-tasks/page.js @@ -6,8 +6,8 @@ export default function ProjectTasksPage() { return ( diff --git a/src/components/ProjectTasksList.js b/src/components/ProjectTasksList.js index 6c22fbf..d4f6a98 100644 --- a/src/components/ProjectTasksList.js +++ b/src/components/ProjectTasksList.js @@ -15,8 +15,10 @@ import { formatDistanceToNow, } from "date-fns"; import { formatDate } from "@/lib/utils"; +import { useTranslation } from "@/lib/i18n"; export default function ProjectTasksList() { + const { t } = useTranslation(); const [allTasks, setAllTasks] = useState([]); const [loading, setLoading] = useState(true); const [searchTerm, setSearchTerm] = useState(""); @@ -210,7 +212,7 @@ export default function ProjectTasksList() { // Group tasks by task name when groupBy is set to "task_name" const groupTasksByName = (tasks) => { - if (groupBy !== "task_name") return { "All Tasks": tasks }; + if (groupBy !== "task_name") return { [t("tasks.allTasks")]: tasks }; const groups = {}; tasks.forEach((task) => { @@ -238,10 +240,10 @@ export default function ProjectTasksList() { const tasks = await res2.json(); setAllTasks(tasks); } else { - alert("Failed to update task status"); + alert(t("errors.generic")); } } catch (error) { - alert("Error updating task status"); + alert(t("errors.generic")); } }; @@ -281,7 +283,7 @@ export default function ProjectTasksList() {
{task.task_name} - {task.priority} + {t(`tasks.${task.priority}`)}
@@ -307,7 +309,7 @@ export default function ProjectTasksList() { ) : ( - Unassigned + {t("projects.unassigned")} )} {showTimeLeft && ( @@ -322,9 +324,9 @@ export default function ProjectTasksList() { > {!isNaN(task.statusInfo.daysRemaining) ? task.statusInfo.daysRemaining > 0 - ? `${task.statusInfo.daysRemaining}d left` - : `${Math.abs(task.statusInfo.daysRemaining)}d overdue` - : "Calculating..."} + ? `${task.statusInfo.daysRemaining}${t("tasks.daysLeft")}` + : `${Math.abs(task.statusInfo.daysRemaining)}${t("tasks.daysOverdue")}` + : t("common.loading")} )} {task.statusInfo && @@ -332,8 +334,8 @@ export default function ProjectTasksList() { task.status === "in_progress" && ( {!isNaN(task.statusInfo.daysRemaining) - ? `${Math.abs(task.statusInfo.daysRemaining)}d overdue` - : "Overdue"} + ? `${Math.abs(task.statusInfo.daysRemaining)}${t("tasks.daysOverdue")}` + : t("tasks.overdue")} )} @@ -343,7 +345,7 @@ export default function ProjectTasksList() { {task.status === "completed" && task.date_completed ? (
- Completed:{" "} + {t("taskStatus.completed")}:{" "} {(() => { try { const completedDate = new Date(task.date_completed); @@ -359,7 +361,7 @@ export default function ProjectTasksList() { ) : task.status === "in_progress" && task.date_started ? (
- Started:{" "} + {t("tasks.dateStarted")}:{" "} {(() => { try { const startedDate = new Date(task.date_started); @@ -385,7 +387,7 @@ export default function ProjectTasksList() { {showMaxWait && ( - {task.max_wait_days} days + {task.max_wait_days} {t("tasks.days")} )} @@ -399,7 +401,7 @@ export default function ProjectTasksList() { variant="secondary" size="sm" onClick={() => handleShowComments(task)} - title="View comments" + title={t("tasks.comments")} > 💬 @@ -418,48 +420,48 @@ export default function ProjectTasksList() { - Task Name + {t("tasks.taskName")} {" "} - Project + {t("tasks.project")} - City + {t("projects.city")} - Address + {t("projects.address")} - Assigned To + {t("tasks.assignedTo")} {showTimeLeft && ( - Time Left + {t("tasks.daysLeft")} )} - Date Info + {t("tasks.dateCreated")} {showMaxWait && ( - Max Wait + {t("tasks.maxWait")} )}{" "} - Actions + {t("tasks.actions")} {Object.entries(groupedTasks).map(([groupName, groupTasks]) => ( - {showGrouped && groupName !== "All Tasks" && ( + {showGrouped && groupName !== t("tasks.allTasks") && ( - {groupName} ({groupTasks.length} tasks) + {groupName} ({groupTasks.length} {t("tasks.tasks")}) )} @@ -477,7 +479,7 @@ export default function ProjectTasksList() { {filteredTasks.length === 0 && (
-

No tasks found

+

{t("tasks.noTasks")}

)}
@@ -503,7 +505,7 @@ export default function ProjectTasksList() {
{taskGroups.pending.length}
-
Pending
+
{t("taskStatus.pending")}
@@ -511,7 +513,7 @@ export default function ProjectTasksList() {
{taskGroups.in_progress.length}
-
In Progress
+
{t("taskStatus.in_progress")}
@@ -519,7 +521,7 @@ export default function ProjectTasksList() {
{taskGroups.completed.length}
-
Completed
+
{t("taskStatus.completed")}
{" "} @@ -527,26 +529,26 @@ export default function ProjectTasksList() { setSearchTerm(e.target.value)} - placeholder="Search tasks, projects, city, or address..." + placeholder={t("tasks.searchPlaceholder")} resultsCount={ filterTasks(taskGroups.pending).length + filterTasks(taskGroups.in_progress).length + filterTasks(taskGroups.completed).length } - resultsText="tasks" + resultsText={t("tasks.tasks")} filters={
@@ -558,13 +560,13 @@ export default function ProjectTasksList() {

- Pending Tasks + {t("taskStatus.pending")} {t("tasks.tasks")} {taskGroups.pending.length}

- Tasks waiting to be started + {t("tasks.noTasksMessage")}

- In Progress Tasks + {t("taskStatus.in_progress")} {t("tasks.tasks")} {taskGroups.in_progress.length}

- Tasks currently being worked on - showing time left for completion + Zadania aktualnie w trakcie realizacji - pokazujący pozostały czas do ukończenia

- Completed Tasks + {t("taskStatus.completed")} {t("tasks.tasks")} {taskGroups.completed.length}

- Recently completed and cancelled tasks + Ostatnio ukończone i anulowane zadania

-
- - {/* Comments Modal */} +
{/* Comments Modal */} - {task?.priority} + {t(`tasks.${task?.priority}`)} - {task?.status?.replace('_', ' ')} + {t(`taskStatus.${task?.status}`)}

- Project: {task?.project_name} + {t("tasks.project")}: {task?.project_name}

@@ -327,13 +329,13 @@ export default function TaskCommentsModal({ task, isOpen, onClose }) {
💬