Hey zusammen,
ich hab den Termindetails-Bericht heute erweitert. Hintergrund bei uns: Wir wollen am Ende des Jahres nachvollziehen können, wer bei welcher Veranstaltung dabei war. Vergangene Termine in der App waren nicht einsehbar, somit war diese Möglichkeit verschwunden. Die Auswertungen wollte man für Stundenauswertungen, Qualifikationsnachweise und ähnliches. Bisher musste man das manuell irgendwo festhalten, jetzt kann man den Bericht einfach ausdrucken, beim Termin rumgehen lassen und abheften.
Ich habe auch in einigen Beiträgen hier (unter anderem auch meinem zu Beginn meiner Zeit mit dem Alarmiator) gesehen, dass das fehlte.
Was hat sich geändert:
Unterhalb der Termin-Informationen wird eine Tabelle mit allen Mitgliedern angezeigt, die auf „Zugesagt" geklickt haben. Jede Zeile hat eine leere Unterschriften-Spalte, damit die Anwesenheit physisch bestätigt werden kann.
Geänderte Dateien:
routes/reports/reports.js — in getReportCalendarDetails, direkt nach calendar.getCalendarEvent():
calendar.getCalendarEvent(eventId, (rowEvent) => {
const CalendarFeedbackStore = require('../../models/calendarfeedbackstore');
let feedbackStore = new CalendarFeedbackStore(req.app.logger);
feedbackStore.getFeedbackForEventWithId(eventId, (rowFeedback) => {
const participants = rowFeedback ? rowFeedback.filter(p => p.feedback === 1) : [];
res.render('reports/reports_calendar_details', {
// ... alle bisherigen Parameter ...
event: rowEvent,
participants: participants // neu
});
});
})
views/partials/reports/calendar/content_reports_calendar_details.ejs — direkt vor dem <% } else { %> (Kein-Termin-Block):
<% if (participants && participants.length > 0) { %>
<table cellspacing="0" cellpadding="0" style="table-layout: auto; width: 100%; margin-top: 2cm;">
<tr>
<td colspan="4" style="padding: 0.5cm 0;">
<h2>Zugesagte Teilnehmer (<%=participants.length%>)</h2>
</td>
</tr>
<tr style="background-color: #eee;">
<td style="padding: 4px 8px;"><strong>Nr.</strong></td>
<td style="padding: 4px 8px;"><strong>Name</strong></td>
<td style="padding: 4px 8px;"><strong>Vorname</strong></td>
<td style="padding: 4px 8px;"><strong>Unterschrift</strong></td>
</tr>
<% participants.forEach((p, i) => { %>
<tr style="border-bottom: 1px solid #ccc; height: 1.2cm;">
<td style="padding: 4px 8px;"><%=i+1%></td>
<td style="padding: 4px 8px;"><%=p.lastname%></td>
<td style="padding: 4px 8px;"><%=p.firstname%></td>
<td style="padding: 4px 8px;"> </td>
</tr>
<% }) %>
</table>
<% } else if (eventId != null) { %>
<p style="margin-top: 1cm;"><em>Keine Zusagen vorhanden.</em></p>
<% } %>
Ich hatte bei der ersten Version auch das Problem, dass in der Beschreibung die Zeilenumbrüche nicht sauber gerendert wurden. Das war mein Fix:
<!-- vorher -->
<h4><%=event[0].description%></h4>
<!-- nachher -->
<h4><%- (event[0].description || "").replace(/\r\n|\r|\n/g, "<br>") %></h4>
Die Änderungen haben keine neuen Abhängigkeiten und keine DB-Änderungen, da getFeedbackForEventWithId() bereits im Model existiert.
Wäre schön, wenn ihr mir dazu euer Feedback gebt.
Grüße
Armin