diff --git a/src/components/WorksheetList.jsx b/src/components/WorksheetList.jsx
index 7db90f5..0107114 100644
--- a/src/components/WorksheetList.jsx
+++ b/src/components/WorksheetList.jsx
@@ -2,7 +2,7 @@ import { useState } from 'react'
import { FaClock, FaUser, FaExchangeAlt, FaComment, FaChevronDown, FaChevronUp, FaPen, FaCheck, FaHandsHelping } from 'react-icons/fa'
import { serviceTypeLabel, needsTimeEntry, worksheetTone } from '../lib/ticketForm'
import { statusLabel } from '../lib/ticketStatus'
-import { parseSupporters } from '../lib/support'
+import { parseSupporters, supportMinutes, firstName } from '../lib/support'
// Kopffarbe je Zustand (worksheetTone): orange = Git-Zeit fehlt, gruen = Git-Zeit eingetragen
const TONES = {
@@ -76,6 +76,7 @@ export default function WorksheetList({ worksheets, totalTime, loading, onToggle
const isGit = ws.serviceType === 'GIT'
const tone = worksheetTone(ws)
const colors = TONES[tone]
+ const supporters = ws.isComment ? [] : parseSupporters(ws.supporters)
return (
Zeit eingetragen
)}
+ {supporters.length > 0 && (
+
+ +{supporters.length} Unterstützung
+
+ )}
{ws.countsToPlan && !ws.isComment && (
Abo-Stunden
@@ -255,6 +261,17 @@ export default function WorksheetList({ worksheets, totalTime, loading, onToggle
+ {/* Unterstuetzung: je Person die Haelfte der Arbeitszeit, aufgerundet auf 15 Minuten */}
+ {supporters.length > 0 && (
+
+ {supporters.map((sup) => (
+
+ ↳ Unterstützung {firstName(sup.name)} · {sup.task} · {formatTime(supportMinutes(ws.totalTime))}
+
+ ))}
+
+ )}
+
{/* Service Type */}
{
const hours = Math.floor(minutes / 60)
@@ -6,12 +7,12 @@ const formatTime = (minutes) => {
return hours > 0 ? `${hours}h ${mins}min` : `${mins}min`
}
-// Eine Zeile ueber der Arbeitsblatt-Liste: Arbeitszeit, Anzahl, offene Git-Zeiten
+// Eine Zeile ueber der Arbeitsblatt-Liste: Arbeitszeit (inkl. Unterstuetzung), Anzahl, offene Git-Zeiten
export default function WorksheetSummary({ worksheets }) {
if (!worksheets || worksheets.length === 0) return null
const minutes = worksheets
.filter((ws) => !ws.isComment)
- .reduce((sum, ws) => sum + (Number(ws.totalTime) || 0), 0)
+ .reduce((sum, ws) => sum + worksheetMinutes(ws), 0)
const open = worksheets.filter(needsTimeEntry).length
return (
diff --git a/src/hooks/useWorksheets.js b/src/hooks/useWorksheets.js
index 0548228..ea266e0 100644
--- a/src/hooks/useWorksheets.js
+++ b/src/hooks/useWorksheets.js
@@ -2,7 +2,7 @@ import { useState, useEffect, useCallback } from 'react'
import { databases, DATABASE_ID, COLLECTIONS, Query, ID } from '../lib/appwrite'
import { canEditWorksheetTimes, isGitWorksheet } from '../lib/ticketForm'
import { roundUpToStep, isValidStep } from '../lib/timeSteps'
-import { parseSupporters, serializeSupporters, canAddOwnSupport, upsertSupporter, removeSupporter } from '../lib/support'
+import { parseSupporters, serializeSupporters, canAddOwnSupport, upsertSupporter, removeSupporter, worksheetMinutes } from '../lib/support'
const STEP_ERROR = 'Die Arbeitszeit muss in 15-Minuten-Schritten angegeben werden.'
@@ -307,7 +307,7 @@ export function useWorksheets(woid = null) {
const getTotalTime = useCallback(() => {
return worksheets
.filter(ws => !ws.isComment)
- .reduce((sum, ws) => sum + (ws.totalTime || 0), 0)
+ .reduce((sum, ws) => sum + worksheetMinutes(ws), 0)
}, [worksheets])
return {