feat: Full printing support
This commit is contained in:
		@@ -24,12 +24,12 @@
 | 
				
			|||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div
 | 
					<div
 | 
				
			||||||
	class="text-neutral-800 flex flex-col h-screen"
 | 
						class="text-neutral-800 flex flex-col h-screen print:h-full"
 | 
				
			||||||
	style="background: url({lfkbackground});background-position: center center!important;background-size: contain!important;background-repeat: no-repeat!important;"
 | 
						style="background: url({lfkbackground});background-position: center center!important;background-size: contain!important;background-repeat: no-repeat!important;"
 | 
				
			||||||
>
 | 
					>
 | 
				
			||||||
	<main class="flex-grow">
 | 
						<main class="flex-grow">
 | 
				
			||||||
		<div
 | 
							<div
 | 
				
			||||||
			class="text-6xl font-semibold text-right text-gray-900 font-mono top-2 w-full fixed pr-4 xl:top-6 xl:pr-8"
 | 
								class="text-6xl font-semibold text-right text-gray-900 font-mono top-2 w-full fixed pr-4 xl:top-6 xl:pr-8 print:hidden"
 | 
				
			||||||
		>
 | 
							>
 | 
				
			||||||
			{hours}:{minutes}:{seconds}
 | 
								{hours}:{minutes}:{seconds}
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
{:else}
 | 
					{:else}
 | 
				
			||||||
	<Login />
 | 
						<Login />
 | 
				
			||||||
{/if}
 | 
					{/if}
 | 
				
			||||||
<div class="fixed bottom-0 w-full text-center text-xl p-4 dark:text-white select-none">
 | 
					<div class="fixed bottom-0 w-full text-center text-xl p-4 dark:text-white select-none print:absolute print:bottom-auto">
 | 
				
			||||||
	{#if $userState.isLoggedIn}
 | 
						{#if $userState.isLoggedIn}
 | 
				
			||||||
		<b class="font-bold">LfK!2025</b> powered by
 | 
							<b class="font-bold">LfK!2025</b> powered by
 | 
				
			||||||
		<b class="font-bold">ODIT.Services</b>
 | 
							<b class="font-bold">ODIT.Services</b>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,16 +64,16 @@
 | 
				
			|||||||
		const canvas = document.createElement('canvas');
 | 
							const canvas = document.createElement('canvas');
 | 
				
			||||||
		if (is_qrcode) {
 | 
							if (is_qrcode) {
 | 
				
			||||||
			bwipjs.toCanvas(canvas, {
 | 
								bwipjs.toCanvas(canvas, {
 | 
				
			||||||
				bcid: "qrcode",
 | 
									bcid: 'qrcode',
 | 
				
			||||||
				text: `${text}`,
 | 
									text: `${text}`,
 | 
				
			||||||
				scale: 10,
 | 
									scale: 10,
 | 
				
			||||||
				includetext: false,
 | 
									includetext: false,
 | 
				
			||||||
				textxalign: 'center',
 | 
									textxalign: 'center',
 | 
				
			||||||
				backgroundcolor: 'ffffff',
 | 
									backgroundcolor: 'ffffff'
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			bwipjs.toCanvas(canvas, {
 | 
								bwipjs.toCanvas(canvas, {
 | 
				
			||||||
				bcid: "code128",
 | 
									bcid: 'code128',
 | 
				
			||||||
				text: `${text}`,
 | 
									text: `${text}`,
 | 
				
			||||||
				scale: 10,
 | 
									scale: 10,
 | 
				
			||||||
				includetext: true,
 | 
									includetext: true,
 | 
				
			||||||
@@ -90,13 +90,13 @@
 | 
				
			|||||||
	});
 | 
						});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class="flex h-full items-center py-16 select-none">
 | 
					<div class="flex h-full items-center py-16 select-none print:py-0 print:items-baseline">
 | 
				
			||||||
	<div class="w-full max-w-md mx-auto p-6">
 | 
						<div class="w-full max-w-md mx-auto p-6 print:p-0">
 | 
				
			||||||
		<!-- <div
 | 
							<!-- <div
 | 
				
			||||||
			class="mt-7 bg-white border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-200"
 | 
								class="mt-7 bg-white border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-200"
 | 
				
			||||||
		> -->
 | 
							> -->
 | 
				
			||||||
		<div class="p-4 sm:p-7">
 | 
							<div class="p-4 sm:p-7 print:p-0 print:sm:p-0">
 | 
				
			||||||
			<div class="mt-5">
 | 
								<div class="mt-5 print:mt-0">
 | 
				
			||||||
				<!-- Form -->
 | 
									<!-- Form -->
 | 
				
			||||||
				{#if !showResult}
 | 
									{#if !showResult}
 | 
				
			||||||
					<div class="text-center">
 | 
										<div class="text-center">
 | 
				
			||||||
@@ -311,19 +311,41 @@
 | 
				
			|||||||
							{response.lastname}
 | 
												{response.lastname}
 | 
				
			||||||
						</h3>
 | 
											</h3>
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
					
 | 
					
 | 
				
			||||||
					<div class="mb-2 text-center">
 | 
										<div class="mb-2 text-center hidden print:block">
 | 
				
			||||||
 | 
											<h3 class="text-4xl font-semibold dark:text-white">
 | 
				
			||||||
 | 
												Runner-ID
 | 
				
			||||||
 | 
											</h3>
 | 
				
			||||||
						<h3 class="text-2xl font-semibold dark:text-white">
 | 
											<h3 class="text-2xl font-semibold dark:text-white">
 | 
				
			||||||
							Hier direkt den Selfservice öffnen und deine Rundenzeiten anzeigen:
 | 
												Zeige diesen Code am Infozelt vor, um deine Läuferkarte zu erhalten
 | 
				
			||||||
 | 
											</h3>
 | 
				
			||||||
 | 
											<img
 | 
				
			||||||
 | 
												class="w-full md:w-auto mb-2 mx-auto bg-white p-4 print:hidden"
 | 
				
			||||||
 | 
												alt="runner id"
 | 
				
			||||||
 | 
												src={textToBase64Barcode(response.id.toString(), false)}
 | 
				
			||||||
 | 
											/>
 | 
				
			||||||
 | 
											<img
 | 
				
			||||||
 | 
												class="w-1/2 md:w-auto mb-2 mx-auto bg-white p-4 hidden print:block"
 | 
				
			||||||
 | 
												alt="runner id print only"
 | 
				
			||||||
 | 
												src={textToBase64Barcode(response.id.toString(), false)}
 | 
				
			||||||
 | 
											/>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										<div class="mb-2 text-center">
 | 
				
			||||||
 | 
											<h3 class="text-4xl font-semibold dark:text-white hidden print:block">
 | 
				
			||||||
 | 
												Selfservice
 | 
				
			||||||
 | 
											</h3>
 | 
				
			||||||
 | 
											<h3 class="text-xl font-semibold dark:text-white">
 | 
				
			||||||
 | 
												Scanne diesen QR-Code, um zu unserem Selfservice zu gelangen. Hier findest du deine Rundenzeiten, Spenden und Urkunden.
 | 
				
			||||||
						</h3>
 | 
											</h3>
 | 
				
			||||||
						<img
 | 
											<img
 | 
				
			||||||
							class="w-full md:w-auto mb-2 mx-auto bg-white p-4"
 | 
												class="w-full md:w-auto mb-2 mx-auto bg-white p-4"
 | 
				
			||||||
							alt="runner id"
 | 
												alt="runner selfservice"
 | 
				
			||||||
							src={textToBase64Barcode(response.selfserviceLink.toString(), true)}
 | 
												src={textToBase64Barcode(response.selfserviceLink.toString(), true)}
 | 
				
			||||||
						/>
 | 
											/>
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					<div class="mx-auto text-center items-center">
 | 
										<div class="mx-auto text-center items-center print:hidden">
 | 
				
			||||||
						<button
 | 
											<button
 | 
				
			||||||
							class:opacity-50={!doneButtonEnabled}
 | 
												class:opacity-50={!doneButtonEnabled}
 | 
				
			||||||
							disabled={!doneButtonEnabled}
 | 
												disabled={!doneButtonEnabled}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user