From 4ee158bf3281bb52b49d3d5c4ef8f86e932fccdb Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 10 May 2021 20:55:30 +0200 Subject: [PATCH] validation of input fields of GddSend --- frontend/src/locales/de.json | 5 +- frontend/src/locales/en.json | 5 +- frontend/src/main.js | 34 +++++ frontend/src/vee-validate.js | 25 ---- .../Pages/AccountOverview/GddSend.spec.js | 4 + .../views/Pages/AccountOverview/GddSend.vue | 136 ++++++++++-------- 6 files changed, 123 insertions(+), 86 deletions(-) delete mode 100644 frontend/src/vee-validate.js diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index b297bfc81..f3897f112 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -44,7 +44,10 @@ "max_gdd_info":"maximale anzahl GDD zum versenden erreicht!", "send_check":"Bestätige deine Zahlung. Prüfe bitte nochmal alle Daten!", "thx":"Danke,", - "send_success":"deine Transaktion wurde erfolgreich ausgeführt" + "send_success":"deine Transaktion wurde erfolgreich ausgeführt", + "validation": { + "double": "Das Feld {field} muss eine Dezimalzahl mit zwei Nachkommastellen sein" + } }, "error": { "error":"Fehler" diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index a49d6fc3d..a5173c2be 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -44,7 +44,10 @@ "max_gdd_info":"maximale anzahl GDD zum versenden erreicht!", "send_check":"Bestätige deine Zahlung. Prüfe bitte nochmal alle Daten!", "thx":"Thank you,", - "send_success":"your transaction was successfully completed" + "send_success":"your transaction was successfully completed", + "validation": { + "double": "The {field} field must be a decimal with two digits" + } }, "error": { "error":"Error" diff --git a/frontend/src/main.js b/frontend/src/main.js index bd57c6e57..94889e390 100755 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -2,6 +2,8 @@ import Vue from 'vue' import DashboardPlugin from './plugins/dashboard-plugin' import App from './App.vue' import i18n from './i18n.js' +import { configure, extend } from 'vee-validate' +import { required, email, min, between, double } from 'vee-validate/dist/rules' // store import { store } from './store/store' @@ -21,6 +23,38 @@ router.beforeEach((to, from, next) => { } }) +configure({ + defaultMessage: (field, values) => { + values._field_ = i18n.t(`fields.${field}`) + return i18n.t(`validations.messages.${values._rule_}`, values) + }, +}) + +extend('email', { + ...email, + message: (_, values) => i18n.t('validations.messages.email', values), +}) + +extend('required', { + ...required, + message: (_, values) => i18n.t('validations.messages.required', values), +}) + +extend('min', { + ...min, + message: (_, values) => i18n.t('validations.messages.min', values), +}) + +extend('double', { + ...double, + message: (_, values) => i18n.t('form.validation.double', values), +}) + +extend('between', { + ...between, + message: (_, values) => i18n.t('validations.messages.between', values), +}) + /* eslint-disable no-new */ new Vue({ el: '#app', diff --git a/frontend/src/vee-validate.js b/frontend/src/vee-validate.js deleted file mode 100644 index 42e4c9c94..000000000 --- a/frontend/src/vee-validate.js +++ /dev/null @@ -1,25 +0,0 @@ -import { configure, extend } from 'vee-validate' -import { required, email, min } from 'vee-validate/dist/rules' -import i18n from './i18n' - -configure({ - defaultMessage: (field, values) => { - values._field_ = i18n.t(`fields.${field}`) - return i18n.t(`validations.messages.${values._rule_}`, values) - }, -}) - -extend('email', { - ...email, - message: (_, values) => i18n.t('validations.messages.email', values), -}) - -extend('required', { - ...required, - message: (_, values) => i18n.t('validations.messages.required', values), -}) - -extend('min', { - ...min, - message: (_, values) => i18n.t('validations.messages.min', values), -}) diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.spec.js b/frontend/src/views/Pages/AccountOverview/GddSend.spec.js index ffc8fd211..c281f5176 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.spec.js +++ b/frontend/src/views/Pages/AccountOverview/GddSend.spec.js @@ -24,6 +24,10 @@ describe('GddSend', () => { $moment: jest.fn((m) => ({ format: () => m, })), + $i18n: { + locale: jest.fn(() => 'en'), + }, + $n: jest.fn((n) => String(n)), } const Wrapper = () => { diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/AccountOverview/GddSend.vue index b7d805988..3693e8930 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend.vue @@ -53,69 +53,84 @@
- {{ $t('form.receiver') }} - - - - - - - + + + {{ $t('form.receiver') }} + + {{ error }} + + + + + + + + +

- {{ $t('form.amount') }} - - {{ $t('form.max_gdd_info') }} - - - -
GDD
-
- -
- {{ $t('form.memo') }} - - - - - - + + {{ $t('form.amount') }} + + {{ error }} + + + + +
GDD
+
+ +
+ {{ $t('form.memo') }} + + + + + + +

@@ -294,4 +309,7 @@ video { max-height: 665px; max-width: 665px; } +span.errors { + color: red; +}