diff --git a/frontend/components/Maintenance/EditModal.vue b/frontend/components/Maintenance/EditModal.vue index ce917dc8..8176bbe5 100644 --- a/frontend/components/Maintenance/EditModal.vue +++ b/frontend/components/Maintenance/EditModal.vue @@ -135,5 +135,34 @@ emit("changed"); } - defineExpose({ openCreateModal, openUpdateModal, deleteEntry }); + async function complete(maintenanceEntry: MaintenanceEntry) { + const { error } = await api.maintenances.update(maintenanceEntry.id, { + name: maintenanceEntry.name, + completedDate: new Date(Date.now()), + scheduledDate: maintenanceEntry.scheduledDate ?? "null", + description: maintenanceEntry.description, + cost: maintenanceEntry.cost, + }); + if (error) { + toast.error(t("maintenances.toast.failed_to_update")); + } + emit("changed"); + } + + async function completeAndDuplicate( + maintenanceEntry: MaintenanceEntry | MaintenanceEntryWithDetails, + itemId: string + ) { + await complete(maintenanceEntry); + entry.id = null; + entry.name = maintenanceEntry.name; + entry.completedDate = null; + entry.scheduledDate = null; + entry.description = maintenanceEntry.description; + entry.cost = maintenanceEntry.cost; + entry.itemId = itemId; + visible.value = true; + } + + defineExpose({ openCreateModal, openUpdateModal, deleteEntry, complete, completeAndDuplicate }); diff --git a/frontend/locales/en.json b/frontend/locales/en.json index 08b93a2f..19b1150f 100644 --- a/frontend/locales/en.json +++ b/frontend/locales/en.json @@ -140,7 +140,9 @@ "create_first": "Create Your First Entry", "delete": "Delete", "edit": "Edit", - "new": "New" + "new": "New", + "complete": "Complete", + "complete_and_duplicate" : "Complete and Duplicate" }, "modal": { "completed_date": "Completed Date", diff --git a/frontend/locales/fr.json b/frontend/locales/fr.json index 5680edde..a89047d0 100644 --- a/frontend/locales/fr.json +++ b/frontend/locales/fr.json @@ -140,7 +140,9 @@ "create_first": "Créer votre première entrée", "delete": "Supprimer", "edit": "Modifier", - "new": "Ajouter" + "new": "Ajouter", + "complete": "Terminer", + "complete_and_duplicate" : "Terminer et dupliquer" }, "modal": { "completed_date": "Date d'achèvement", diff --git a/frontend/pages/maintenance.vue b/frontend/pages/maintenance.vue index 41759f2c..60b05169 100644 --- a/frontend/pages/maintenance.vue +++ b/frontend/pages/maintenance.vue @@ -6,6 +6,7 @@ import MdiDelete from "~icons/mdi/delete"; import MdiEdit from "~icons/mdi/edit"; import MdiCalendar from "~icons/mdi/calendar"; + import MdiContentDuplicate from "~icons/mdi/content-duplicate"; import MaintenanceEditModal from "~~/components/Maintenance/EditModal.vue"; const { t } = useI18n(); @@ -122,6 +123,22 @@ {{ $t("maintenance.list.edit") }} + + + {{ $t("maintenances.list.complete") }} + + + + {{ $t("maintenances.list.complete_and_duplicate") }} +