template improvements & handlebars helpers

This commit is contained in:
Julian Krauser 2025-03-18 10:26:05 +01:00
parent de5e4afffb
commit 14957c2abc
3 changed files with 41 additions and 16 deletions

View file

@ -138,12 +138,7 @@ export async function getMemberPrintoutById(req: Request, res: Response): Promis
template: "member", template: "member",
saveToDisk: false, saveToDisk: false,
data: { data: {
today: new Date().toLocaleDateString("de-DE", { today: new Date(),
weekday: "long",
day: "2-digit",
month: "2-digit",
year: "numeric",
}),
member, member,
memberships, memberships,
awards, awards,

View file

@ -4,6 +4,33 @@ import TemplateUsageService from "../service/configuration/templateUsageService"
import Handlebars, { template } from "handlebars"; import Handlebars, { template } from "handlebars";
import { FileSystemHelper } from "./fileSystemHelper"; 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 { export abstract class TemplateHelper {
static getTemplateFromFile(template: string) { static getTemplateFromFile(template: string) {
return FileSystemHelper.readTemplateFile(`/src/templates/${template}.template.html`); return FileSystemHelper.readTemplateFile(`/src/templates/${template}.template.html`);

View file

@ -6,33 +6,36 @@
</head> </head>
<body> <body>
<h1> <h1>
{{member.salutation.salutation}} {{member.lastname}} {{member.firstname}}{{#if member.nameaffix}} - {{member.salutation.salutation}} {{member.lastname}}, {{member.firstname}}{{#if member.nameaffix}} -
{{member.nameaffix}}{{/if}} {{member.nameaffix}}{{/if}}
</h1> </h1>
<p>Mitglieds-Ausdruck Stand {{today}}</p> <p>Mitglieds-Ausdruck Stand {{longdate today}}</p>
<br /> <br />
<p>geboren: {{member.birthdate}}</p> <p>geboren: {{date member.birthdate}}</p>
<p>eingetreten: {{member.firstMembershipEntry.start}}</p> <p>eingetreten: {{date member.firstMembershipEntry.start}}</p>
{{#if member.lastMembershipEntry?.end}} {{#if member.lastMembershipEntry?.end}}
<p>ausgetreten: {{member.lastMembershipEntry.end}}</p> <p>ausgetreten: {{date member.lastMembershipEntry.end}}</p>
{{/if}} {{#if memberships.length}} {{/if}} {{#if memberships.length}}
<br /> <br />
<h2>Mitgliedschaften</h2> <h2>Mitgliedschaften</h2>
{{#each memberships}} {{#each memberships}}
<div> <div>
<h3>{{this.status.status}}: {{this.start}} - {{#if this.end}}{{this.end}}{{else}}heute{{/if}}</h3> <h3>{{this.status.status}}: {{date this.start}} bis {{#if this.end}}{{date this.end}}{{else}}heute{{/if}}</h3>
{{#if this.terminationReason}} {{#if this.terminationReason}}
<p>beendet, weil:{{this.terminationReason}}</p> <p>beendet, weil:{{this.terminationReason}}</p>
{{/if}} {{/if}}
</div> </div>
<br /> <br />
{{/each}} {{/if}} {{#if memberships.length}} {{/each}} {{/if}} {{#if positions.length}}
<br /> <br />
<h2>Vereinsämter</h2> <h2>Vereinsämter</h2>
{{#each positions}} {{#each positions}}
<div> <div>
<h3>{{this.executivePosition.position}}: {{this.start}} - {{#if this.end}}{{this.end}}{{else}}heute{{/if}}</h3> <h3>
{{this.executivePosition.position}}: {{date this.start}} bis {{#if this.end}}{{date
this.end}}{{else}}heute{{/if}}
</h3>
{{#if this.note}} {{#if this.note}}
<p>Notiz: {{this.note}}</p> <p>Notiz: {{this.note}}</p>
{{/if}} {{/if}}
@ -43,7 +46,7 @@
<h2>Auszeichnungen</h2> <h2>Auszeichnungen</h2>
{{#each awards}} {{#each awards}}
<div> <div>
<h3>{{this.award.award}}: {{this.date}}</h3> <h3>{{this.award.award}}: {{date this.date}}</h3>
{{#if this.given}} {{#if this.given}}
<p>wurde vergeben</p> <p>wurde vergeben</p>
{{else}} {{else}}
@ -58,7 +61,7 @@
<h2>Qualifikationen</h2> <h2>Qualifikationen</h2>
{{#each qualifications}} {{#each qualifications}}
<div> <div>
<h3>{{this.qualification.qualification}}: {{this.date}}</h3> <h3>{{this.qualification.qualification}}: {{date this.date}}</h3>
{{#if this.terminationReason}} {{#if this.terminationReason}}
<p>beendet, weil:{{this.terminationReason}}</p> <p>beendet, weil:{{this.terminationReason}}</p>
{{/if}} {{#if this.note}} {{/if}} {{#if this.note}}