diff --git a/CHANGELOG.md b/CHANGELOG.md index 32a6ed0..75ff2ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,18 @@ All notable changes to this project will be documented in this file. Dates are displayed in UTC. +#### [0.7.9](https://git.odit.services/lfk/selfservice/compare/0.7.8...0.7.9) + +- migrate to bwip-js [`8cfddb5`](https://git.odit.services/lfk/selfservice/commit/8cfddb502964be7edf45cdc524344ea2f7f20142) +- fix codeconfig.height [`9b261bf`](https://git.odit.services/lfk/selfservice/commit/9b261bf20023561a7c9691dff33c9a6d2b5c0cac) +- drop jsbarcode [`713dd15`](https://git.odit.services/lfk/selfservice/commit/713dd153126851e8cf1045bf5ba3ca702a39c738) + #### [0.7.8](https://git.odit.services/lfk/selfservice/compare/0.7.7...0.7.8) +> 1 February 2023 + - add barcode to profile [`851190e`](https://git.odit.services/lfk/selfservice/commit/851190e6a7f8b9cccbf05e60f9b50b96c196959c) +- 🚀Bumped version to v0.7.8 [`e5a01bc`](https://git.odit.services/lfk/selfservice/commit/e5a01bcd7629164655cacd10dd1f014260c67c4b) - certificate generation: success toast styling [`1603a09`](https://git.odit.services/lfk/selfservice/commit/1603a097f71ed85c901baf8da04cb06b86474649) #### [0.7.7](https://git.odit.services/lfk/selfservice/compare/0.7.6...0.7.7) diff --git a/package.json b/package.json index 270782d..18f2664 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@odit/lfk-selfservice", - "version": "0.7.8", + "version": "0.7.9", "scripts": { "dev": "vite", "build": "vite build", @@ -13,22 +13,22 @@ "redaxios": "0.4.1", "toastify-js": "1.10.0", "validator": "13.5.2", - "vue": "3.0.9", "vue-i18n": "9.1.4", - "vue-router": "4.0.5", - "vue-toastification": "2.0.0-rc.1" + "vue-toastification": "2.0.0-rc.1", + "vue": "3.0.9", + "vue-router": "4.0.5" }, "devDependencies": { + "@tailwindcss/jit": "0.1.18", "@tailwindcss/aspect-ratio": "0.2.0", "@tailwindcss/forms": "0.3.2", - "@tailwindcss/jit": "0.1.18", "@tailwindcss/line-clamp": "0.2.0", "@tailwindcss/typography": "0.4.0", "@vitejs/plugin-vue": "1.2.1", "@vue/compiler-sfc": "3.0.11", "autoprefixer": "10.2.5", - "release-it": "14.6.1", "tailwindcss": "2.1.1", + "release-it": "14.6.1", "vite": "2.1.5" }, "release-it": { diff --git a/public/env.sample.js b/public/env.sample.js index 7b65166..e561d12 100644 --- a/public/env.sample.js +++ b/public/env.sample.js @@ -7,6 +7,8 @@ const config = { baseurl_selfservice: '/selfservice/', // full url (including fqdn) baseurl_documentserver: 'http://localhost:4010/documents', + // optional, will fallback to code128 + code_format: 'ean13', // optional, will fallback to baseurl_selfservice/imprint url_imprint: '', // optional, will fallback to baseurl_selfservice/privacy diff --git a/src/views/Profile.vue b/src/views/Profile.vue index 4dbda81..3f6855a 100644 --- a/src/views/Profile.vue +++ b/src/views/Profile.vue @@ -2,141 +2,115 @@
-
-

+
+

{{ state.group }}

-
- - -
-
- -
@@ -147,96 +121,181 @@
- +
- +
- +
-
+
-
{{ $t('registrierungscode') }}
- Registrierungscode -
{{ $t('vorname') }}
-

+

{{ $t("registrierungscode") }}
+ Registrierungscode +
{{ $t("vorname") }}
+

-
{{ $t('mittelname') }}
-

+

{{ $t("mittelname") }}
+

-
{{ $t('nachname') }}
-

+

{{ $t("nachname") }}
+

-
{{ $t('e_mail_adress') }}
-

+

{{ $t("e_mail_adress") }}
+

-
{{ $t('phone_number') }}
-

+

{{ $t("phone_number") }}
+

-
+
- - +
+ - - + + @@ -248,39 +307,63 @@
{{ $t('distance') }}{{ $t('lap_time') }} + {{ $t("distance") }} + + {{ $t("lap_time") }} +
-
- - {{ $t('no_laps_scans_were_recorded_yet') }} +
+ + {{ $t("no_laps_scans_were_recorded_yet") }}
-
+
- - +
+ - - - + + + @@ -293,52 +376,68 @@ - +
Name{{ $t('amount_per_kilometer_in_eur') }}{{ $t('current_total_amount_in_eur') }} + Name + + {{ $t("amount_per_kilometer_in_eur") }} + + {{ $t("current_total_amount_in_eur") }} +
- € + € - € + €
{{ $t('total') }}{{ $t("total") }} - € + € - € + €
-
- - {{ $t('no_sponsorings_for_you_were_recorded_yet') }} +
+ + {{ $t("no_sponsorings_for_you_were_recorded_yet") }}
@@ -357,18 +456,18 @@ import { TYPE, useToast } from "vue-toastification"; import axios from "redaxios"; import bwipjs from "bwip-js"; -function textToBase64Barcode(text){ +function textToBase64Barcode(text) { var canvas = document.createElement("canvas"); bwipjs.toCanvas(canvas, { - bcid: config.codeformat, - text: text, - scale: 4, - height: 10, - // width: 10, - includetext: true, - textxalign: 'center', - backgroundcolor: 'ffffff' + bcid: config.codeformat || 'code39', + text: text, + scale: 3, + height: 10, + // width: 10, + includetext: true, + textxalign: 'center', + backgroundcolor: 'ffffff' } ) return canvas.toDataURL("image/png"); @@ -388,13 +487,13 @@ const state = reactive({ delete_active: false, fullobject: {} }) -state.barcode = textToBase64Barcode("12345"); const toast = useToast(); const props = defineProps({ - token: String -}) + token: String, +}); const accesstoken = atob(props.token); -axios.get(`${config.baseurl}api/runners/me/${accesstoken}`) +axios + .get(`${config.baseurl}api/runners/me/${accesstoken}`) .then(({ data }) => { state.phone = data.phone; state.email = data.email; @@ -404,26 +503,38 @@ axios.get(`${config.baseurl}api/runners/me/${accesstoken}`) state.group = data.group; state.sponsorings = data.distanceDonations; state.fullobject = data; - state.barcode = textToBase64Barcode(state.fullobject.id); - }).catch((error) => { - toast.error("Profil konnte nicht geladen werden..."); + state.barcode = textToBase64Barcode(data.id); }) -axios.get(`${config.baseurl}api/runners/me/${accesstoken}/scans`) + .catch((error) => { + toast.error("Profil konnte nicht geladen werden..."); + }); +axios + .get(`${config.baseurl}api/runners/me/${accesstoken}/scans`) .then(({ data }) => { - data.map(function(s) { - s.lapTime = Math.floor(s.lapTime / 60) + 'min ' + (Math.floor(s.lapTime % 60) + "").padStart(2, "0") + "s" - s.distance = Math.floor(s.distance / 1000) + 'km ' + (Math.floor(s.distance % 1000) + "").padStart(3, "0") + "m" + data.map(function (s) { + s.lapTime = + Math.floor(s.lapTime / 60) + + "min " + + (Math.floor(s.lapTime % 60) + "").padStart(2, "0") + + "s"; + s.distance = + Math.floor(s.distance / 1000) + + "km " + + (Math.floor(s.distance % 1000) + "").padStart(3, "0") + + "m"; return s; - }) - data.filter(s => s.valid === true); + }); + data.filter((s) => s.valid === true); state.scans = data; - }).catch((error) => { - toast.error("Profil konnte nicht geladen werden..."); }) + .catch((error) => { + toast.error("Profil konnte nicht geladen werden..."); + }); function delete_me() { toast("Profil wird gelöscht..."); - let url = `${config.baseurl}api/runners/me/${accesstoken}?force=true` - axios.delete(url) + let url = `${config.baseurl}api/runners/me/${accesstoken}?force=true`; + axios + .delete(url) .then(() => { toast("Alle Daten gelöscht!"); location.replace(`${config.baseurl_selfservice}`); @@ -434,31 +545,37 @@ function delete_me() { } function get_certificate() { toast("Urkunde wird generiert..."); - const browserlocale = ((navigator.languages && navigator.languages[0]) || '').substr(0, 2); + const browserlocale = ( + (navigator.languages && navigator.languages[0]) || + "" + ).substr(0, 2); let url = `${config.baseurl_documentserver}certificates?locale=${browserlocale}&download=true&key=${config.documentserver_key}`; let postdata = Object.assign({}, state.fullobject); postdata.group = { - name: postdata.group - } - postdata = [postdata] - axios.post(url, postdata, { - responseType: "blob" - }) + name: postdata.group, + }; + postdata = [postdata]; + axios + .post(url, postdata, { + responseType: "blob", + }) .then((response) => { - console.log(response) + console.log(response); if (response.status != "200") { toast.error("Urkunde konnte nicht generiert werden..."); } else { - var fileURL = window.URL.createObjectURL(new Blob([response.data], { type: 'application/pdf' })); - var fileLink = document.createElement('a'); + var fileURL = window.URL.createObjectURL( + new Blob([response.data], { type: "application/pdf" }) + ); + var fileLink = document.createElement("a"); fileLink.href = fileURL; - fileLink.setAttribute('download', 'Certificate.pdf'); + fileLink.setAttribute("download", "Certificate.pdf"); document.body.appendChild(fileLink); fileLink.click(); fileLink.remove(); - toast("Urkunde generiert!",{type:TYPE.SUCCESS}); + toast("Urkunde generiert!", { type: TYPE.SUCCESS }); } }) .catch((err) => { @@ -466,4 +583,12 @@ function get_certificate() { toast.error("An error occured while generating your certificate"); }); } +function get_registration() { + toast("Registrierungscode wird generiert..."); + var a = document.createElement("a"); + a.href = state.barcode; + a.download = "LfK23_Registrierungscode.png"; + a.click(); + toast("Registrierungscode generiert!", { type: TYPE.SUCCESS }); +} \ No newline at end of file