From 14957c2abc24bb1caec43c63852dda56c2b71d0c Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Tue, 18 Mar 2025 10:26:05 +0100 Subject: [PATCH] template improvements & handlebars helpers --- src/controller/admin/club/memberController.ts | 7 +---- src/helpers/templateHelper.ts | 27 +++++++++++++++++++ src/templates/member.body.template.html | 23 +++++++++------- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/src/controller/admin/club/memberController.ts b/src/controller/admin/club/memberController.ts index b44f690..a31e514 100644 --- a/src/controller/admin/club/memberController.ts +++ b/src/controller/admin/club/memberController.ts @@ -138,12 +138,7 @@ export async function getMemberPrintoutById(req: Request, res: Response): Promis template: "member", saveToDisk: false, data: { - today: new Date().toLocaleDateString("de-DE", { - weekday: "long", - day: "2-digit", - month: "2-digit", - year: "numeric", - }), + today: new Date(), member, memberships, awards, diff --git a/src/helpers/templateHelper.ts b/src/helpers/templateHelper.ts index a8a14b1..af1c832 100644 --- a/src/helpers/templateHelper.ts +++ b/src/helpers/templateHelper.ts @@ -4,6 +4,33 @@ import TemplateUsageService from "../service/configuration/templateUsageService" import Handlebars, { template } from "handlebars"; import { FileSystemHelper } from "./fileSystemHelper"; +Handlebars.registerHelper("date", function (aString) { + return new Date(aString).toLocaleDateString("de-DE", { + day: "2-digit", + month: "2-digit", + year: "numeric", + }); +}); + +Handlebars.registerHelper("longdate", function (aString) { + return new Date(aString).toLocaleDateString("de-DE", { + weekday: "long", + day: "2-digit", + month: "2-digit", + year: "numeric", + }); +}); + +Handlebars.registerHelper("datetime", function (aString) { + return new Date(aString).toLocaleDateString("de-DE", { + day: "2-digit", + month: "2-digit", + year: "numeric", + hour: "2-digit", + minute: "2-digit", + }); +}); + export abstract class TemplateHelper { static getTemplateFromFile(template: string) { return FileSystemHelper.readTemplateFile(`/src/templates/${template}.template.html`); diff --git a/src/templates/member.body.template.html b/src/templates/member.body.template.html index 5d499ae..67f8821 100644 --- a/src/templates/member.body.template.html +++ b/src/templates/member.body.template.html @@ -6,33 +6,36 @@

- {{member.salutation.salutation}} {{member.lastname}} {{member.firstname}}{{#if member.nameaffix}} - + {{member.salutation.salutation}} {{member.lastname}}, {{member.firstname}}{{#if member.nameaffix}} - {{member.nameaffix}}{{/if}}

-

Mitglieds-Ausdruck Stand {{today}}

+

Mitglieds-Ausdruck Stand {{longdate today}}


-

geboren: {{member.birthdate}}

-

eingetreten: {{member.firstMembershipEntry.start}}

+

geboren: {{date member.birthdate}}

+

eingetreten: {{date member.firstMembershipEntry.start}}

{{#if member.lastMembershipEntry?.end}} -

ausgetreten: {{member.lastMembershipEntry.end}}

+

ausgetreten: {{date member.lastMembershipEntry.end}}

{{/if}} {{#if memberships.length}}

Mitgliedschaften

{{#each memberships}}
-

{{this.status.status}}: {{this.start}} - {{#if this.end}}{{this.end}}{{else}}heute{{/if}}

+

{{this.status.status}}: {{date this.start}} bis {{#if this.end}}{{date this.end}}{{else}}heute{{/if}}

{{#if this.terminationReason}}

beendet, weil:{{this.terminationReason}}

{{/if}}

- {{/each}} {{/if}} {{#if memberships.length}} + {{/each}} {{/if}} {{#if positions.length}}

Vereinsämter

{{#each positions}}
-

{{this.executivePosition.position}}: {{this.start}} - {{#if this.end}}{{this.end}}{{else}}heute{{/if}}

+

+ {{this.executivePosition.position}}: {{date this.start}} bis {{#if this.end}}{{date + this.end}}{{else}}heute{{/if}} +

{{#if this.note}}

Notiz: {{this.note}}

{{/if}} @@ -43,7 +46,7 @@

Auszeichnungen

{{#each awards}}
-

{{this.award.award}}: {{this.date}}

+

{{this.award.award}}: {{date this.date}}

{{#if this.given}}

wurde vergeben

{{else}} @@ -58,7 +61,7 @@

Qualifikationen

{{#each qualifications}}
-

{{this.qualification.qualification}}: {{this.date}}

+

{{this.qualification.qualification}}: {{date this.date}}

{{#if this.terminationReason}}

beendet, weil:{{this.terminationReason}}

{{/if}} {{#if this.note}}