Compare commits

..

3 Commits

Author SHA1 Message Date
c63adf557b
🚀Bumped version to v0.7.11
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-02 00:15:58 +01:00
077b33f031
Profile: improved mobile responsiveness/ design + toast clear
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-02 00:15:12 +01:00
52a6b3dc77
fix: registration code download button style
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-02 00:10:48 +01:00
5 changed files with 382 additions and 187 deletions

View File

@ -2,10 +2,18 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC. All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [0.7.11](https://git.odit.services/lfk/selfservice/compare/0.7.10...0.7.11)
- Profile: improved mobile responsiveness/ design + toast clear [`077b33f`](https://git.odit.services/lfk/selfservice/commit/077b33f03180d0bd6c45becaaa63d3408c645deb)
- fix: registration code download button style [`52a6b3d`](https://git.odit.services/lfk/selfservice/commit/52a6b3dc776b806eaa8fee058a1c381ab63a8ea5)
#### [0.7.10](https://git.odit.services/lfk/selfservice/compare/0.7.9...0.7.10) #### [0.7.10](https://git.odit.services/lfk/selfservice/compare/0.7.9...0.7.10)
> 1 February 2023
- Configureable barcode format via bwp-js [`9e06c46`](https://git.odit.services/lfk/selfservice/commit/9e06c464118c5b5d0cd78c8b8379523bf3bfdbd4) - Configureable barcode format via bwp-js [`9e06c46`](https://git.odit.services/lfk/selfservice/commit/9e06c464118c5b5d0cd78c8b8379523bf3bfdbd4)
- Added download for registration code [`53800b4`](https://git.odit.services/lfk/selfservice/commit/53800b4fa355bb972e51e71b5b1f98772deed114) - Added download for registration code [`53800b4`](https://git.odit.services/lfk/selfservice/commit/53800b4fa355bb972e51e71b5b1f98772deed114)
- 🚀Bumped version to v0.7.10 [`8b5e1ca`](https://git.odit.services/lfk/selfservice/commit/8b5e1cac1353373b13cf9d570deb7cadcd437247)
- Pinned version [`6438288`](https://git.odit.services/lfk/selfservice/commit/64382880c40ba5c1e3c9004ce7fc65099849cd44) - Pinned version [`6438288`](https://git.odit.services/lfk/selfservice/commit/64382880c40ba5c1e3c9004ce7fc65099849cd44)
#### [0.7.9](https://git.odit.services/lfk/selfservice/compare/0.7.8...0.7.9) #### [0.7.9](https://git.odit.services/lfk/selfservice/compare/0.7.8...0.7.9)

View File

@ -1,6 +1,6 @@
{ {
"name": "@odit/lfk-selfservice", "name": "@odit/lfk-selfservice",
"version": "0.7.10", "version": "0.7.11",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",

View File

@ -12,8 +12,8 @@
"delete_my_data": "Meine Daten löschen", "delete_my_data": "Meine Daten löschen",
"deletion_in_progress": "Daten werden gelöscht...", "deletion_in_progress": "Daten werden gelöscht...",
"distance": "Distanz", "distance": "Distanz",
"download registrationcode": "Registrierungscode herunterladen",
"download_certificate": "Urkunde herunterladen", "download_certificate": "Urkunde herunterladen",
"download_registrationcode": "Registrierungscode herunterladen",
"e_mail_adress": "E-Mail Adresse", "e_mail_adress": "E-Mail Adresse",
"go_to_login": "Zum Login", "go_to_login": "Zum Login",
"i_accept": "Ich habe die ", "i_accept": "Ich habe die ",

View File

@ -12,8 +12,8 @@
"delete_my_data": "Delete my data", "delete_my_data": "Delete my data",
"deletion_in_progress": "Deletion in progress...", "deletion_in_progress": "Deletion in progress...",
"distance": "Distance", "distance": "Distance",
"download registrationcode": "Download registrationcode",
"download_certificate": "Download certificate", "download_certificate": "Download certificate",
"download_registrationcode": "Download registrationcode",
"e_mail_adress": "mail address", "e_mail_adress": "mail address",
"go_to_login": "Go To Login", "go_to_login": "Go To Login",
"i_accept": "I have read and accepted the ", "i_accept": "I have read and accepted the ",

View File

@ -2,7 +2,8 @@
<div class="min-h-screen w-full p-4"> <div class="min-h-screen w-full p-4">
<section class="text-white body-font"> <section class="text-white body-font">
<div class="container mx-auto flex items-center md:flex-row flex-col"> <div class="container mx-auto flex items-center md:flex-row flex-col">
<div class=" <div
class="
flex flex-col flex flex-col
md:pr-10 md:mb-0 md:pr-10 md:mb-0
mb-6 mb-6
@ -11,68 +12,25 @@
md:w-auto md:text-left md:w-auto md:text-left
text-center text-black text-center text-black
dark:text-gray-200 dark:text-gray-200
"> "
<p class="text-3xl font-bold whitespace-nowrap" v-text=" >
(state.firstname || '') + <p
' ' + class="text-3xl font-bold whitespace-nowrap"
(state.middlename || '') + v-text="
' ' + (state.firstname || '') +
(state.lastname || '') ' ' +
"></p> (state.middlename || '') +
' ' +
(state.lastname || '')
"
></p>
<p class="text-md whitespace-nowrap">{{ state.group }}</p> <p class="text-md whitespace-nowrap">{{ state.group }}</p>
</div> </div>
<div class="inline-flex md:ml-auto md:mr-0 mx-auto items-center"> <div class="inline-flex md:ml-auto md:mr-0 mx-auto items-center">
<div v-if="state.delete_active === false"> <div v-if="state.delete_active === false">
<button type="button" <button
class="focus:border-black focus:ring-2 focus:ring-black text-white text-sm py-2.5 px-5 rounded-md bg-blue-500 hover:bg-blue-600 hover:shadow-lg" type="button"
@click="get_registration"> class="
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather feather-download" style="display: inline;height: 1rem;vertical-align: sub;">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<polyline points="7 10 12 15 17 10" />
<line x1="12" y1="15" x2="12" y2="3" />
</svg>
{{ $t('download registrationcode') }}
</button>
<button type="button"
class="focus:border-black focus:ring-2 focus:ring-black text-white text-sm py-2.5 px-5 rounded-md bg-blue-500 hover:bg-blue-600 hover:shadow-lg"
@click="get_certificate">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather feather-download" style="display: inline; height: 1rem; vertical-align: sub">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<polyline points="7 10 12 15 17 10" />
<line x1="12" y1="15" x2="12" y2="3" />
</svg>
{{ $t("download_certificate") }}
</button>
<button type="button" class="
focus:border-black focus:ring-2 focus:ring-black
text-white text-sm
py-2.5
px-5
rounded-md
bg-red-600
hover:bg-red-700 hover:shadow-lg
ml-1
" @click="
() => {
state.delete_active = true;
}
">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather feather-download" style="display: inline; height: 1rem; vertical-align: sub">
<path d="M0 0h24v24H0z" />
<path fill="currentColor"
d="M17 6h5v2h-2v13a1 1 0 01-1 1H5a1 1 0 01-1-1V8H2V6h5V3a1 1 0 011-1h8a1 1 0 011 1v3zm1 2H6v12h12V8zm-5 6l2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2 1 1-2 2zM9 4v2h6V4H9z" />
</svg>
{{ $t("delete_my_data") }}
</button>
</div>
<div v-if="state.delete_active === true">
<button type="button" class="
focus:border-black focus:ring-2 focus:ring-black focus:border-black focus:ring-2 focus:ring-black
text-white text-sm text-white text-sm
py-2.5 py-2.5
@ -80,20 +38,151 @@
rounded-md rounded-md
bg-blue-500 bg-blue-500
hover:bg-blue-600 hover:shadow-lg hover:bg-blue-600 hover:shadow-lg
" @click=" w-full
md:w-auto
mb-1
md:mr-1
"
@click="get_registration"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-download"
style="display: inline; height: 1rem; vertical-align: sub"
>
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<polyline points="7 10 12 15 17 10" />
<line x1="12" y1="15" x2="12" y2="3" />
</svg>
{{ $t("download_registrationcode") }}
</button>
<button
type="button"
class="
focus:border-black focus:ring-2 focus:ring-black
text-white text-sm
py-2.5
px-5
rounded-md
bg-blue-500
hover:bg-blue-600 hover:shadow-lg
w-full
md:w-auto
mb-1
md:mr-1
"
@click="get_certificate"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-download"
style="display: inline; height: 1rem; vertical-align: sub"
>
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<polyline points="7 10 12 15 17 10" />
<line x1="12" y1="15" x2="12" y2="3" />
</svg>
{{ $t("download_certificate") }}
</button>
<button
type="button"
class="
focus:border-black focus:ring-2 focus:ring-black
text-white text-sm
py-2.5
px-5
rounded-md
bg-red-600
hover:bg-red-700 hover:shadow-lg
w-full
md:w-auto
"
@click="
() => {
state.delete_active = true;
}
"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="none"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-download"
style="display: inline; height: 1rem; vertical-align: sub"
>
<path d="M0 0h24v24H0z" />
<path
fill="currentColor"
d="M17 6h5v2h-2v13a1 1 0 01-1 1H5a1 1 0 01-1-1V8H2V6h5V3a1 1 0 011-1h8a1 1 0 011 1v3zm1 2H6v12h12V8zm-5 6l2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2 1 1-2 2zM9 4v2h6V4H9z"
/>
</svg>
{{ $t("delete_my_data") }}
</button>
</div>
<div v-if="state.delete_active === true">
<button
type="button"
class="
focus:border-black focus:ring-2 focus:ring-black
text-white text-sm
py-2.5
px-5
rounded-md
bg-blue-500
hover:bg-blue-600 hover:shadow-lg
"
@click="
() => { () => {
state.delete_active = false; state.delete_active = false;
} }
"> "
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" >
stroke="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" <svg
class="feather feather-download" style="display: inline; height: 1rem; vertical-align: sub"> xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="none"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-download"
style="display: inline; height: 1rem; vertical-align: sub"
>
<path fill="none" d="M0 0h24v24H0z" /> <path fill="none" d="M0 0h24v24H0z" />
<path fill="currentColor" d="M12 11l5-5 1 1-5 5 5 5-1 1-5-5-5 5-1-1 5-5-5-5 1-1z" /> <path
fill="currentColor"
d="M12 11l5-5 1 1-5 5 5 5-1 1-5-5-5 5-1-1 5-5-5-5 1-1z"
/>
</svg> </svg>
{{ $t("cancel_keep_my_data") }} {{ $t("cancel_keep_my_data") }}
</button> </button>
<button type="button" class=" <button
type="button"
class="
focus:border-black focus:ring-2 focus:ring-black focus:border-black focus:ring-2 focus:ring-black
text-white text-sm text-white text-sm
py-2.5 py-2.5
@ -102,13 +191,27 @@
bg-red-600 bg-red-600
hover:bg-red-700 hover:shadow-lg hover:bg-red-700 hover:shadow-lg
ml-1 ml-1
" @click="delete_me"> "
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" @click="delete_me"
stroke="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" >
class="feather feather-download" style="display: inline; height: 1rem; vertical-align: sub"> <svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="none"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-download"
style="display: inline; height: 1rem; vertical-align: sub"
>
<path d="M0 0h24v24H0z" /> <path d="M0 0h24v24H0z" />
<path fill="currentColor" <path
d="M17 6h5v2h-2v13a1 1 0 01-1 1H5a1 1 0 01-1-1V8H2V6h5V3a1 1 0 011-1h8a1 1 0 011 1v3zm1 2H6v12h12V8zm-5 6l2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2 1 1-2 2zM9 4v2h6V4H9z" /> fill="currentColor"
d="M17 6h5v2h-2v13a1 1 0 01-1 1H5a1 1 0 01-1-1V8H2V6h5V3a1 1 0 011-1h8a1 1 0 011 1v3zm1 2H6v12h12V8zm-5 6l2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2 1 1-2 2zM9 4v2h6V4H9z"
/>
</svg> </svg>
{{ $t("confirm_delete_all_of_my_data") }} {{ $t("confirm_delete_all_of_my_data") }}
</button> </button>
@ -121,38 +224,53 @@
<div class="flex flex-wrap flex-col w-full tabs"> <div class="flex flex-wrap flex-col w-full tabs">
<div class="flex lg:flex-wrap flex-row lg:space-x-2"> <div class="flex lg:flex-wrap flex-row lg:space-x-2">
<div class="flex-none"> <div class="flex-none">
<button @click=" <button
() => { @click="
state.activetab = 'profile'; () => {
} state.activetab = 'profile';
" :class="{ }
'tab-active border-b-2 font-medium border-blue-500': "
state.activetab === 'profile', :class="{
}" class="tab tab-underline py-4 px-6 block" type="button"> 'tab-active border-b-2 font-medium border-blue-500':
state.activetab === 'profile',
}"
class="tab tab-underline py-4 px-6 block"
type="button"
>
{{ $t("profile") }} {{ $t("profile") }}
</button> </button>
</div> </div>
<div class="flex-none"> <div class="flex-none">
<button @click=" <button
() => { @click="
state.activetab = 'laptimes'; () => {
} state.activetab = 'laptimes';
" :class="{ }
'tab-active border-b-2 font-medium border-blue-500': "
state.activetab === 'laptimes', :class="{
}" class="tab tab-underline py-4 px-6 block" type="button"> 'tab-active border-b-2 font-medium border-blue-500':
state.activetab === 'laptimes',
}"
class="tab tab-underline py-4 px-6 block"
type="button"
>
{{ $t("lap_times") }} {{ $t("lap_times") }}
</button> </button>
</div> </div>
<div class="flex-none"> <div class="flex-none">
<button @click=" <button
() => { @click="
state.activetab = 'sponsorings'; () => {
} state.activetab = 'sponsorings';
" :class="{ }
'tab-active border-b-2 font-medium border-blue-500': "
state.activetab === 'sponsorings', :class="{
}" class="tab tab-underline py-4 px-6 block" type="button"> 'tab-active border-b-2 font-medium border-blue-500':
state.activetab === 'sponsorings',
}"
class="tab tab-underline py-4 px-6 block"
type="button"
>
{{ $t("sponsoring") }} {{ $t("sponsoring") }}
</button> </button>
</div> </div>
@ -166,7 +284,8 @@
<div class="text-lg">{{ $t("registrierungscode") }}</div> <div class="text-lg">{{ $t("registrierungscode") }}</div>
<img alt="Registrierungscode" :src="state.barcode" /> <img alt="Registrierungscode" :src="state.barcode" />
<div class="text-lg">{{ $t("vorname") }}</div> <div class="text-lg">{{ $t("vorname") }}</div>
<p class=" <p
class="
h-10 h-10
w-full w-full
dark:bg-gray-800 dark:bg-gray-800
@ -181,11 +300,14 @@
transition-colors transition-colors
duration-200 duration-200
ease-in-out ease-in-out
" v-text="state.firstname" /> "
v-text="state.firstname"
/>
</div> </div>
<div class="form-element"> <div class="form-element">
<div class="text-lg">{{ $t("mittelname") }}</div> <div class="text-lg">{{ $t("mittelname") }}</div>
<p class=" <p
class="
h-10 h-10
w-full w-full
dark:bg-gray-800 dark:bg-gray-800
@ -200,11 +322,14 @@
transition-colors transition-colors
duration-200 duration-200
ease-in-out ease-in-out
" v-text="state.middlename" /> "
v-text="state.middlename"
/>
</div> </div>
<div class="form-element"> <div class="form-element">
<div class="text-lg">{{ $t("nachname") }}</div> <div class="text-lg">{{ $t("nachname") }}</div>
<p class=" <p
class="
h-10 h-10
w-full w-full
dark:bg-gray-800 dark:bg-gray-800
@ -219,11 +344,14 @@
transition-colors transition-colors
duration-200 duration-200
ease-in-out ease-in-out
" v-text="state.lastname" /> "
v-text="state.lastname"
/>
</div> </div>
<div class="form-element"> <div class="form-element">
<div class="text-lg">{{ $t("e_mail_adress") }}</div> <div class="text-lg">{{ $t("e_mail_adress") }}</div>
<p class=" <p
class="
h-10 h-10
w-full w-full
dark:bg-gray-800 dark:bg-gray-800
@ -238,11 +366,14 @@
transition-colors transition-colors
duration-200 duration-200
ease-in-out ease-in-out
" v-text="state.email" /> "
v-text="state.email"
/>
</div> </div>
<div class="form-element"> <div class="form-element">
<div class="text-lg">{{ $t("phone_number") }}</div> <div class="text-lg">{{ $t("phone_number") }}</div>
<p class=" <p
class="
h-10 h-10
w-full w-full
dark:bg-gray-800 dark:bg-gray-800
@ -257,7 +388,9 @@
transition-colors transition-colors
duration-200 duration-200
ease-in-out ease-in-out
" v-text="state.phone" /> "
v-text="state.phone"
/>
</div> </div>
</div> </div>
</form> </form>
@ -269,31 +402,40 @@
<section class="text-gray-400 dark:bg-gray-900 body-font"> <section class="text-gray-400 dark:bg-gray-900 body-font">
<div class="container mx-auto"> <div class="container mx-auto">
<div class="lg:w-2/3 w-full mx-auto overflow-auto"> <div class="lg:w-2/3 w-full mx-auto overflow-auto">
<table v-if="state.scans.length > 0" class="table-auto w-full text-left whitespace-no-wrap"> <table
<thead class=" v-if="state.scans.length > 0"
class="table-auto w-full text-left whitespace-no-wrap"
>
<thead
class="
text-black text-black
bg-gray-300 bg-gray-300
dark:text-white dark:text-white
text-sm text-sm
dark:bg-gray-800 dark:bg-gray-800
"> "
>
<tr> <tr>
<th class=" <th
class="
px-4 px-4
py-3 py-3
title-font title-font
tracking-wider tracking-wider
font-medium font-medium
"> "
>
{{ $t("distance") }} {{ $t("distance") }}
</th> </th>
<th class=" <th
class="
px-4 px-4
py-3 py-3
title-font title-font
tracking-wider tracking-wider
font-medium font-medium
"> "
>
{{ $t("lap_time") }} {{ $t("lap_time") }}
</th> </th>
</tr> </tr>
@ -307,15 +449,21 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div v-else class=" <div
v-else
class="
text-center text-center
font-bold font-bold
text-black text-black
dark:text-white dark:text-white
text-2xl text-2xl
"> "
<img src="../assets/empty_laps.svg" style="height: 25rem; margin: 0 auto" >
:alt="[[$t('no_laps_scans_were_recorded_yet')]]" /> <img
src="../assets/empty_laps.svg"
style="height: 25rem; margin: 0 auto"
:alt="[[$t('no_laps_scans_were_recorded_yet')]]"
/>
{{ $t("no_laps_scans_were_recorded_yet") }} {{ $t("no_laps_scans_were_recorded_yet") }}
</div> </div>
</div> </div>
@ -323,45 +471,59 @@
</section> </section>
</div> </div>
</div> </div>
<div v-if="state.activetab === 'sponsorings'" class="tab-content block"> <div
v-if="state.activetab === 'sponsorings'"
class="tab-content block"
>
<div class="py-4 w-full"> <div class="py-4 w-full">
<section class="text-gray-400 dark:bg-gray-900 body-font"> <section class="text-gray-400 dark:bg-gray-900 body-font">
<div class="container mx-auto"> <div class="container mx-auto">
<div class="lg:w-2/3 w-full mx-auto overflow-auto"> <div class="lg:w-2/3 w-full mx-auto overflow-auto">
<table v-if="state.sponsorings.length > 0" class="table-auto w-full text-left whitespace-no-wrap"> <table
<thead class=" v-if="state.sponsorings.length > 0"
class="table-auto w-full text-left whitespace-no-wrap"
>
<thead
class="
text-black text-black
bg-gray-300 bg-gray-300
dark:text-white dark:text-white
text-sm text-sm
dark:bg-gray-800 dark:bg-gray-800
"> "
>
<tr> <tr>
<th class=" <th
class="
px-4 px-4
py-3 py-3
title-font title-font
tracking-wider tracking-wider
font-medium font-medium
"> "
>
Name Name
</th> </th>
<th class=" <th
class="
px-4 px-4
py-3 py-3
title-font title-font
tracking-wider tracking-wider
font-medium font-medium
"> "
>
{{ $t("amount_per_kilometer_in_eur") }} {{ $t("amount_per_kilometer_in_eur") }}
</th> </th>
<th class=" <th
class="
px-4 px-4
py-3 py-3
title-font title-font
tracking-wider tracking-wider
font-medium font-medium
"> "
>
{{ $t("current_total_amount_in_eur") }} {{ $t("current_total_amount_in_eur") }}
</th> </th>
</tr> </tr>
@ -376,18 +538,24 @@
<span v-text="s.donor.lastname"></span> <span v-text="s.donor.lastname"></span>
</td> </td>
<td class="px-4 py-3"> <td class="px-4 py-3">
<span v-text=" <span
(s.amountPerDistance / 100) v-text="
.toFixed(2) (s.amountPerDistance / 100)
.toLocaleString('de-DE', { valute: 'EUR' }) .toFixed(2)
"></span> .toLocaleString('de-DE', { valute: 'EUR' })
"
></span
>
</td> </td>
<td class="px-4 py-3"> <td class="px-4 py-3">
<span v-text=" <span
(s.amount / 100) v-text="
.toFixed(2) (s.amount / 100)
.toLocaleString('de-DE', { valute: 'EUR' }) .toFixed(2)
"></span> .toLocaleString('de-DE', { valute: 'EUR' })
"
></span
>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -395,48 +563,61 @@
<tr> <tr>
<td class="px-4 py-3">{{ $t("total") }}</td> <td class="px-4 py-3">{{ $t("total") }}</td>
<td class="px-4 py-3"> <td class="px-4 py-3">
<span v-text=" <span
( v-text="
state.sponsorings.reduce(function ( (
sum, state.sponsorings.reduce(function (
current sum,
) { current
return sum + current.amountPerDistance; ) {
}, return sum + current.amountPerDistance;
},
0) / 100 0) / 100
) )
.toFixed(2) .toFixed(2)
.toLocaleString('de-DE', { valute: 'EUR' }) .toLocaleString('de-DE', { valute: 'EUR' })
"></span> "
></span
>
</td> </td>
<td class="px-4 py-3"> <td class="px-4 py-3">
<span v-text=" <span
( v-text="
state.sponsorings.reduce(function ( (
sum, state.sponsorings.reduce(function (
current sum,
) { current
return sum + current.amount; ) {
}, return sum + current.amount;
},
0) / 100 0) / 100
) )
.toFixed(2) .toFixed(2)
.toLocaleString('de-DE', { valute: 'EUR' }) .toLocaleString('de-DE', { valute: 'EUR' })
"></span> "
></span
>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
<div v-else class=" <div
v-else
class="
text-center text-center
font-bold font-bold
text-black text-black
dark:text-white dark:text-white
text-2xl text-2xl
"> "
<img src="../assets/empty_laps.svg" style="height: 25rem; margin: 0 auto" :alt="[ >
[$t('no_sponsorings_for_you_were_recorded_yet')], <img
]" /> src="../assets/empty_laps.svg"
style="height: 25rem; margin: 0 auto"
:alt="[
[$t('no_sponsorings_for_you_were_recorded_yet')],
]"
/>
{{ $t("no_sponsorings_for_you_were_recorded_yet") }} {{ $t("no_sponsorings_for_you_were_recorded_yet") }}
</div> </div>
</div> </div>
@ -458,18 +639,16 @@ import bwipjs from "bwip-js";
function textToBase64Barcode(text) { function textToBase64Barcode(text) {
var canvas = document.createElement("canvas"); var canvas = document.createElement("canvas");
bwipjs.toCanvas(canvas, bwipjs.toCanvas(canvas, {
{ bcid: config.codeformat || "code39",
bcid: config.codeformat || 'code39', text: text,
text: text, scale: 3,
scale: 3, height: 10,
height: 10, // width: 10,
// width: 10, includetext: true,
includetext: true, textxalign: "center",
textxalign: 'center', backgroundcolor: "ffffff",
backgroundcolor: 'ffffff' });
}
)
return canvas.toDataURL("image/png"); return canvas.toDataURL("image/png");
} }
@ -485,8 +664,8 @@ const state = reactive({
group: "", group: "",
activetab: "profile", activetab: "profile",
delete_active: false, delete_active: false,
fullobject: {} fullobject: {},
}) });
const toast = useToast(); const toast = useToast();
const props = defineProps({ const props = defineProps({
token: String, token: String,
@ -503,9 +682,10 @@ axios
state.group = data.group; state.group = data.group;
state.sponsorings = data.distanceDonations; state.sponsorings = data.distanceDonations;
state.fullobject = data; state.fullobject = data;
state.barcode = textToBase64Barcode(data.id); state.barcode = textToBase64Barcode(data.id ?? "???");
}) })
.catch((error) => { .catch((error) => {
toast.clear();
toast.error("Profil konnte nicht geladen werden..."); toast.error("Profil konnte nicht geladen werden...");
}); });
axios axios
@ -531,15 +711,18 @@ axios
toast.error("Profil konnte nicht geladen werden..."); toast.error("Profil konnte nicht geladen werden...");
}); });
function delete_me() { function delete_me() {
toast.clear();
toast("Profil wird gelöscht..."); toast("Profil wird gelöscht...");
let url = `${config.baseurl}api/runners/me/${accesstoken}?force=true`; let url = `${config.baseurl}api/runners/me/${accesstoken}?force=true`;
axios axios
.delete(url) .delete(url)
.then(() => { .then(() => {
toast.clear();
toast("Alle Daten gelöscht!"); toast("Alle Daten gelöscht!");
location.replace(`${config.baseurl_selfservice}`); location.replace(`${config.baseurl_selfservice}`);
}) })
.catch((error) => { .catch((error) => {
toast.clear();
toast.error("Profil konnte nicht gelöscht werden..."); toast.error("Profil konnte nicht gelöscht werden...");
}); });
} }
@ -566,7 +749,7 @@ function get_certificate() {
} else { } else {
var fileURL = window.URL.createObjectURL( var fileURL = window.URL.createObjectURL(
new Blob([response.data], { type: "application/pdf" }) new Blob([response.data], { type: "application/pdf" })
); );
var fileLink = document.createElement("a"); var fileLink = document.createElement("a");
fileLink.href = fileURL; fileLink.href = fileURL;
@ -575,20 +758,24 @@ function get_certificate() {
fileLink.click(); fileLink.click();
fileLink.remove(); fileLink.remove();
toast.clear();
toast("Urkunde generiert!", { type: TYPE.SUCCESS }); toast("Urkunde generiert!", { type: TYPE.SUCCESS });
} }
}) })
.catch((err) => { .catch((err) => {
console.error(err); console.error(err);
toast.error("An error occured while generating your certificate"); toast.clear();
toast.error("Urkunde konnte nicht generiert werden...");
}); });
} }
function get_registration() { function get_registration() {
toast.clear();
toast("Registrierungscode wird generiert..."); toast("Registrierungscode wird generiert...");
var a = document.createElement("a"); var a = document.createElement("a");
a.href = state.barcode; a.href = state.barcode;
a.download = "LfK23_Registrierungscode.png"; a.download = "LfK23_Registrierungscode.png";
a.click(); a.click();
toast.clear();
toast("Registrierungscode generiert!", { type: TYPE.SUCCESS }); toast("Registrierungscode generiert!", { type: TYPE.SUCCESS });
} }
</script> </script>