Browse Source

Add Observation shortcut to My Active Jobs (#160)

* observations

* dashboard
Bernt Christian Egeland 5 months ago
parent
commit
4212d2e916

+ 5 - 1
messages/de/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Statusbericht erstellt",
     "statusReport_send": "Statusbericht gesendet",
     "statusReport_delete": "Statusbericht gelöscht",
-    "telegram_send": "Telegram-Nachricht gesendet"
+    "telegram_send": "Telegram-Nachricht gesendet",
+    "webhook_create": "Webhook erstellt",
+    "webhook_update": "Webhook aktualisiert",
+    "webhook_delete": "Webhook gelöscht",
+    "webhook_rotateSecret": "Webhook-Schlüssel rotiert"
   }
 }

+ 2 - 1
messages/de/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Menge",
     "addToJob": "{qty} zum Auftrag hinzufügen",
     "statusReport": "Statusbericht",
-    "report": "Bericht"
+    "report": "Bericht",
+    "observation": "Beobachtung"
   },
   "recentActivity": "Letzte Aktivitäten",
   "noRecentActivity": "Keine aktuellen Aktivitäten",

+ 5 - 1
messages/en/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Created Status Report",
     "statusReport_send": "Sent Status Report",
     "statusReport_delete": "Deleted Status Report",
-    "telegram_send": "Sent Telegram Message"
+    "telegram_send": "Sent Telegram Message",
+    "webhook_create": "Created Webhook",
+    "webhook_update": "Updated Webhook",
+    "webhook_delete": "Deleted Webhook",
+    "webhook_rotateSecret": "Rotated Webhook Secret"
   }
 }

+ 2 - 1
messages/en/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Quantity",
     "addToJob": "Add {qty} to job",
     "statusReport": "Status Report",
-    "report": "Report"
+    "report": "Report",
+    "observation": "Observation"
   },
   "recentActivity": "Recent Activity",
   "noRecentActivity": "No recent activity",

+ 5 - 1
messages/es/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Informe de estado creado",
     "statusReport_send": "Informe de estado enviado",
     "statusReport_delete": "Informe de estado eliminado",
-    "telegram_send": "Mensaje de Telegram enviado"
+    "telegram_send": "Mensaje de Telegram enviado",
+    "webhook_create": "Webhook creado",
+    "webhook_update": "Webhook actualizado",
+    "webhook_delete": "Webhook eliminado",
+    "webhook_rotateSecret": "Secreto de webhook rotado"
   }
 }

+ 2 - 1
messages/es/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Cantidad",
     "addToJob": "Añadir {qty} al trabajo",
     "statusReport": "Informe de estado",
-    "report": "Informe"
+    "report": "Informe",
+    "observation": "Observación"
   },
   "recentActivity": "Actividad reciente",
   "noRecentActivity": "Sin actividad reciente",

+ 5 - 1
messages/fr/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Rapport d'état créé",
     "statusReport_send": "Rapport d'état envoyé",
     "statusReport_delete": "Rapport d'état supprimé",
-    "telegram_send": "Message Telegram envoyé"
+    "telegram_send": "Message Telegram envoyé",
+    "webhook_create": "Webhook créé",
+    "webhook_update": "Webhook mis à jour",
+    "webhook_delete": "Webhook supprimé",
+    "webhook_rotateSecret": "Secret du webhook renouvelé"
   }
 }

+ 2 - 1
messages/fr/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Quantité",
     "addToJob": "Ajouter {qty} au travail",
     "statusReport": "Rapport d'état",
-    "report": "Rapport"
+    "report": "Rapport",
+    "observation": "Observation"
   },
   "recentActivity": "Activité récente",
   "noRecentActivity": "Aucune activité récente",

+ 5 - 1
messages/it/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Rapporto di stato creato",
     "statusReport_send": "Rapporto di stato inviato",
     "statusReport_delete": "Rapporto di stato eliminato",
-    "telegram_send": "Messaggio Telegram inviato"
+    "telegram_send": "Messaggio Telegram inviato",
+    "webhook_create": "Webhook creato",
+    "webhook_update": "Webhook aggiornato",
+    "webhook_delete": "Webhook eliminato",
+    "webhook_rotateSecret": "Segreto webhook ruotato"
   }
 }

+ 2 - 1
messages/it/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Quantità",
     "addToJob": "Aggiungi {qty} al lavoro",
     "statusReport": "Rapporto di stato",
-    "report": "Rapporto"
+    "report": "Rapporto",
+    "observation": "Osservazione"
   },
   "recentActivity": "Attività recente",
   "noRecentActivity": "Nessuna attività recente",

+ 5 - 1
messages/lt/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Sukurta būsenos ataskaita",
     "statusReport_send": "Išsiųsta būsenos ataskaita",
     "statusReport_delete": "Ištrinta būsenos ataskaita",
-    "telegram_send": "Išsiųsta Telegram žinutė"
+    "telegram_send": "Išsiųsta Telegram žinutė",
+    "webhook_create": "Sukurtas webhook’as",
+    "webhook_update": "Atnaujintas webhook’as",
+    "webhook_delete": "Ištrintas webhook’as",
+    "webhook_rotateSecret": "Atnaujintas webhook’o slaptasis raktas"
   }
 }

+ 2 - 1
messages/lt/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Kiekis",
     "addToJob": "Pridėti {qty} prie darbo",
     "statusReport": "Būsenos ataskaita",
-    "report": "Ataskaita"
+    "report": "Ataskaita",
+    "observation": "Pastebėjimas"
   },
   "recentActivity": "Naujausios veiklos",
   "noRecentActivity": "Naujausių veiklų nėra",

+ 5 - 1
messages/nb/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Opprettet statusrapport",
     "statusReport_send": "Sendt statusrapport",
     "statusReport_delete": "Slettet statusrapport",
-    "telegram_send": "Sendt Telegram-melding"
+    "telegram_send": "Sendt Telegram-melding",
+    "webhook_create": "Opprettet webhook",
+    "webhook_update": "Oppdatert webhook",
+    "webhook_delete": "Slettet webhook",
+    "webhook_rotateSecret": "Roterte webhook-hemmelighet"
   }
 }

+ 2 - 1
messages/nb/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Antall",
     "addToJob": "Legg til {qty} i jobb",
     "statusReport": "Statusrapport",
-    "report": "Rapport"
+    "report": "Rapport",
+    "observation": "Observasjon"
   },
   "recentActivity": "Nylig aktivitet",
   "noRecentActivity": "Ingen nylig aktivitet",

+ 5 - 1
messages/nl/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Statusrapport aangemaakt",
     "statusReport_send": "Statusrapport verzonden",
     "statusReport_delete": "Statusrapport verwijderd",
-    "telegram_send": "Telegram-bericht verzonden"
+    "telegram_send": "Telegram-bericht verzonden",
+    "webhook_create": "Webhook aangemaakt",
+    "webhook_update": "Webhook bijgewerkt",
+    "webhook_delete": "Webhook verwijderd",
+    "webhook_rotateSecret": "Webhook-geheim geroteerd"
   }
 }

+ 2 - 1
messages/nl/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Aantal",
     "addToJob": "{qty} toevoegen aan klus",
     "statusReport": "Statusrapport",
-    "report": "Rapport"
+    "report": "Rapport",
+    "observation": "Observatie"
   },
   "recentActivity": "Recente activiteit",
   "noRecentActivity": "Geen recente activiteit",

+ 5 - 1
messages/pl/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Utworzono raport statusu",
     "statusReport_send": "Wysłano raport statusu",
     "statusReport_delete": "Usunięto raport statusu",
-    "telegram_send": "Wysłano wiadomość Telegram"
+    "telegram_send": "Wysłano wiadomość Telegram",
+    "webhook_create": "Utworzono webhook",
+    "webhook_update": "Zaktualizowano webhook",
+    "webhook_delete": "Usunięto webhook",
+    "webhook_rotateSecret": "Zrotowano sekret webhooka"
   }
 }

+ 2 - 1
messages/pl/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Ilość",
     "addToJob": "Dodaj {qty} do zlecenia",
     "statusReport": "Raport statusu",
-    "report": "Raport"
+    "report": "Raport",
+    "observation": "Obserwacja"
   },
   "recentActivity": "Ostatnia aktywność",
   "noRecentActivity": "Brak ostatniej aktywności",

+ 5 - 1
messages/pt-BR/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Relatório de status criado",
     "statusReport_send": "Relatório de status enviado",
     "statusReport_delete": "Relatório de status excluído",
-    "telegram_send": "Mensagem do Telegram enviada"
+    "telegram_send": "Mensagem do Telegram enviada",
+    "webhook_create": "Webhook criado",
+    "webhook_update": "Webhook atualizado",
+    "webhook_delete": "Webhook excluído",
+    "webhook_rotateSecret": "Segredo do webhook rotacionado"
   }
 }

+ 2 - 1
messages/pt-BR/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Quantidade",
     "addToJob": "Adicionar {qty} ao serviço",
     "statusReport": "Relatório de Status",
-    "report": "Relatório"
+    "report": "Relatório",
+    "observation": "Observação"
   },
   "recentActivity": "Atividade recente",
   "noRecentActivity": "Nenhuma atividade recente",

+ 5 - 1
messages/ru/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Создан отчёт о состоянии",
     "statusReport_send": "Отправлен отчёт о состоянии",
     "statusReport_delete": "Удалён отчёт о состоянии",
-    "telegram_send": "Отправлено сообщение в Telegram"
+    "telegram_send": "Отправлено сообщение в Telegram",
+    "webhook_create": "Создан вебхук",
+    "webhook_update": "Обновлён вебхук",
+    "webhook_delete": "Удалён вебхук",
+    "webhook_rotateSecret": "Обновлён секрет вебхука"
   }
 }

+ 2 - 1
messages/ru/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Количество",
     "addToJob": "Добавить {qty} к заказу",
     "statusReport": "Отчёт о состоянии",
-    "report": "Отчёт"
+    "report": "Отчёт",
+    "observation": "Наблюдение"
   },
   "recentActivity": "Последняя активность",
   "noRecentActivity": "Нет недавней активности",

+ 5 - 1
messages/tr/audit.json

@@ -93,6 +93,10 @@
     "statusReport_create": "Durum raporu oluşturuldu",
     "statusReport_send": "Durum raporu gönderildi",
     "statusReport_delete": "Durum raporu silindi",
-    "telegram_send": "Telegram mesajı gönderildi"
+    "telegram_send": "Telegram mesajı gönderildi",
+    "webhook_create": "Webhook oluşturuldu",
+    "webhook_update": "Webhook güncellendi",
+    "webhook_delete": "Webhook silindi",
+    "webhook_rotateSecret": "Webhook gizli anahtarı yenilendi"
   }
 }

+ 2 - 1
messages/tr/dashboard.json

@@ -18,7 +18,8 @@
     "quantity": "Miktar",
     "addToJob": "{qty} işe ekle",
     "statusReport": "Durum Raporu",
-    "report": "Rapor"
+    "report": "Rapor",
+    "observation": "Gözlem"
   },
   "recentActivity": "Son aktivite",
   "noRecentActivity": "Son aktivite yok",

+ 36 - 0
src/features/vehicles/Components/MyActiveJobs.tsx

@@ -5,6 +5,7 @@ import { useRouter } from 'next/navigation'
 import { useTranslations } from 'next-intl'
 import {
   Camera,
+  ClipboardCheck,
   FileVideo,
   ImageIcon,
   Loader2,
@@ -16,6 +17,7 @@ import {
   ScanBarcode,
   Package,
 } from 'lucide-react'
+import { FindingForm } from '@/features/vehicles/Components/FindingForm'
 import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
 import { Button } from '@/components/ui/button'
 import { ButtonGroup } from '@/components/ui/button-group'
@@ -108,6 +110,7 @@ export function MyActiveJobs({
   const [statusReportJobId, setStatusReportJobId] = useState<string | null>(null)
   const [sendReportId, setSendReportId] = useState<string | null>(null)
   const [sendReportJobId, setSendReportJobId] = useState<string | null>(null)
+  const [observationTarget, setObservationTarget] = useState<{ vehicleId: string; serviceRecordId: string } | null>(null)
 
   if (jobs.length === 0) return null
 
@@ -421,6 +424,17 @@ export function MyActiveJobs({
                         <FileVideo className="mr-1.5 h-4 w-4" />
                         {t('statusReport')}
                       </Button>
+                      <Button
+                        variant="outline"
+                        size="sm"
+                        className="h-9"
+                        onClick={() =>
+                          setObservationTarget({ vehicleId: job.vehicleId, serviceRecordId: job.id })
+                        }
+                      >
+                        <ClipboardCheck className="mr-1.5 h-4 w-4" />
+                        {t('observation')}
+                      </Button>
                     </div>
                     {/* Mobile: counters only */}
                     <div className="shrink-0 ml-3 flex sm:hidden items-center gap-1.5 text-xs text-muted-foreground">
@@ -510,6 +524,17 @@ export function MyActiveJobs({
                         <FileVideo className="mr-1 h-3.5 w-3.5" />
                         {t('report')}
                       </Button>
+                      <Button
+                        variant="outline"
+                        size="sm"
+                        className="flex-1 h-9"
+                        onClick={() =>
+                          setObservationTarget({ vehicleId: job.vehicleId, serviceRecordId: job.id })
+                        }
+                      >
+                        <ClipboardCheck className="mr-1 h-3.5 w-3.5" />
+                        {t('observation')}
+                      </Button>
                     </ButtonGroup>
                   </div>
                   <input
@@ -677,6 +702,17 @@ export function MyActiveJobs({
             />
           )
         })()}
+
+      {observationTarget && (
+        <FindingForm
+          open={true}
+          onOpenChange={(open) => {
+            if (!open) setObservationTarget(null)
+          }}
+          vehicleId={observationTarget.vehicleId}
+          serviceRecordId={observationTarget.serviceRecordId}
+        />
+      )}
     </TooltipProvider>
   )
 }