Merge branch 'master' into 1055_-_Concept_of_Operations_Requirements

This commit is contained in:
Ulf Gebhardt 2021-12-29 20:43:08 +01:00 committed by GitHub
commit bc0903a722
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 212 additions and 82 deletions

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"git.ignoreLimitWarning": true
}

View File

@ -8,6 +8,7 @@ const toastSuccessMock = jest.fn()
const toastErrorMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$apollo: {
mutate: apolloMutateMock,
},
@ -52,9 +53,7 @@ describe('ConfirmRegisterMailFormular', () => {
})
it('toasts a success message', () => {
expect(toastSuccessMock).toBeCalledWith(
'Erfolgreich senden der Confirmation Link an die E-Mail des Users! bob@baumeister.de',
)
expect(toastSuccessMock).toBeCalledWith('unregister_mail.success')
})
})
@ -66,9 +65,7 @@ describe('ConfirmRegisterMailFormular', () => {
})
it('toasts an error message', () => {
expect(toastErrorMock).toBeCalledWith(
'Fehler beim senden des confirmation link an den Benutzer: OUCH!',
)
expect(toastErrorMock).toBeCalledWith('unregister_mail.error')
})
})
})

View File

@ -2,17 +2,15 @@
<div class="component-confirm-register-mail">
<div class="shadow p-3 mb-5 bg-white rounded">
<div class="h5">
Die letzte Email wurde am
<b>{{ dateLastSend }} Uhr</b>
an das Mitglied ({{ email }}) gesendet.
{{ $t('unregister_mail.text', { date: dateLastSend, mail: email }) }}
</div>
<!-- Using components -->
<b-input-group prepend="Email bestätigen, wiederholt senden an:" class="mt-3">
<b-input-group :prepend="$t('unregister_mail.info')" class="mt-3">
<b-form-input readonly :value="email"></b-form-input>
<b-input-group-append>
<b-button variant="outline-success" class="test-button" @click="sendRegisterMail">
Registrierungs-Email bestätigen, jetzt senden
{{ $t('unregister_mail.button') }}
</b-button>
</b-input-group-append>
</b-input-group>
@ -42,14 +40,10 @@ export default {
},
})
.then(() => {
this.$toasted.success(
'Erfolgreich senden der Confirmation Link an die E-Mail des Users! ' + this.email,
)
this.$toasted.success(this.$t('unregister_mail.success', { email: this.email }))
})
.catch((error) => {
this.$toasted.error(
'Fehler beim senden des confirmation link an den Benutzer: ' + error.message,
)
this.$toasted.error(this.$t('unregister_mail.error', { message: error.message }))
})
},
},

View File

@ -3,8 +3,8 @@
<hr />
<br />
<div class="text-center">
Gradido Akademie Adminkonsole
<div><small>Version: 0.0.1</small></div>
{{ $t('gradido_admin_footer') }}
<div><small>Version: 1.0.0</small></div>
</div>
</div>
</template>

View File

@ -21,6 +21,7 @@ const toastedErrorMock = jest.fn()
const toastedSuccessMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$moment: jest.fn(() => {
return {
format: jest.fn((m) => m),

View File

@ -1,10 +1,10 @@
<template>
<div class="component-creation-formular">
CREATION FORMULAR
{{ $t('creation_form.form') }}
<div class="shadow p-3 mb-5 bg-white rounded">
<b-form ref="creationForm">
<b-row class="m-4">
<label>Monat Auswählen</label>
<label>{{ $t('creation_form.select_month') }}</label>
<b-col class="text-left">
<b-form-radio
id="beforeLastMonth"
@ -50,7 +50,7 @@
</b-row>
<b-row class="m-4" v-show="createdIndex != null">
<label>Betrag Auswählen</label>
<label>{{ $t('creation_form.select_value') }}</label>
<div>
<b-input-group prepend="GDD" append=".00">
<b-form-input
@ -73,13 +73,13 @@
</div>
</b-row>
<b-row class="m-4">
<label>Text eintragen</label>
<label>{{ $t('creation_form.enter_text') }}</label>
<div>
<b-form-textarea
id="textarea-state"
v-model="text"
:state="text.length >= 10"
placeholder="Mindestens 10 Zeichen eingeben"
:placeholder="$t('creation_form.min_characters')"
rows="3"
></b-form-textarea>
</div>
@ -87,7 +87,7 @@
<b-row class="m-4">
<b-col class="text-center">
<b-button type="reset" variant="danger" @click="$refs.creationForm.reset()">
zurücksetzen
{{ $t('creation_form.reset') }}
</b-button>
</b-col>
<b-col class="text-center">
@ -100,7 +100,7 @@
@click="submitCreation"
:disabled="radioSelected === '' || value <= 0 || text.length < 10"
>
Update Schöpfung ({{ type }},{{ pagetype }})
{{ $t('creation_form.update_creation') }}
</b-button>
<b-button
@ -111,7 +111,7 @@
@click="submitCreation"
:disabled="radioSelected === '' || value <= 0 || text.length < 10"
>
Schöpfung einreichen ({{ type }})
{{ $t('creation_form.submit_creation') }}
</b-button>
</div>
</b-col>
@ -193,7 +193,7 @@ export default {
// Auswählen eines Zeitraumes
updateRadioSelected(name, index, openCreation) {
this.createdIndex = index
this.text = 'Schöpfung für ' + name.short + ' ' + name.year
this.text = this.$t('creation_form.creation_for') + ' ' + name.short + ' ' + name.year
// Wenn Mehrfachschöpfung
if (this.type === 'massCreation') {
// An Creation.vue emitten und radioSelectedMass aktualisieren
@ -242,7 +242,10 @@ export default {
.then((result) => {
this.$emit('update-user-data', this.item, result.data.createPendingCreation)
this.$toasted.success(
`Offene Schöpfung (${this.value} GDD) für ${this.item.email} wurde gespeichert und liegen zur Bestätigung bereit`,
this.$t('creation_form.toasted', {
value: this.value,
email: this.item.email,
}),
)
this.$store.commit('openCreationsPlus', 1)
this.submitObj = null

View File

@ -53,6 +53,7 @@ const apolloQueryMock = jest.fn().mockResolvedValue({
const toastedErrorMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$apollo: {
query: apolloQueryMock,
},

View File

@ -1,6 +1,6 @@
<template>
<div class="component-creation-transaction-list">
Alle Geschöpften Transaktionen für den User
{{ $t('transactionlist.title') }}
<b-table striped hover :items="items"></b-table>
</div>
</template>

View File

@ -18,6 +18,7 @@ const stateCommitMock = jest.fn()
const toastedErrorMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$moment: jest.fn(() => {
return {
format: jest.fn((m) => m),

View File

@ -3,7 +3,7 @@
<div class="shadow p-3 mb-5 bg-white rounded">
<b-form ref="updateCreationForm">
<b-row class="m-4">
<label>Monat Auswählen</label>
<label>{{ $t('creation_form.select_month') }}</label>
<b-col class="text-left">
<b-form-radio
id="beforeLastMonth"
@ -64,7 +64,7 @@
</b-row>
<b-row class="m-4">
<label>Betrag Auswählen</label>
<label>{{ $t('creation_form.select_value') }}</label>
<div>
<b-input-group prepend="GDD" append=".00">
<b-form-input
@ -87,7 +87,7 @@
</div>
</b-row>
<b-row class="m-4">
<label>Text eintragen</label>
<label>{{ $t('creation_form.enter_text') }}</label>
<div>
<b-form-textarea
id="textarea-state"
@ -101,7 +101,7 @@
<b-row class="m-4">
<b-col class="text-center">
<b-button type="reset" variant="danger" @click="$refs.updateCreationForm.reset()">
zurücksetzen
{{ $t('creation_form.reset') }}
</b-button>
</b-col>
<b-col class="text-center">
@ -113,7 +113,7 @@
@click="submitCreation"
:disabled="radioSelected === '' || value <= 0 || text.length < 10"
>
Update Schöpfung
{{ $t('creation_form.update_creation') }}
</b-button>
</div>
</b-col>
@ -211,7 +211,10 @@ export default {
row: this.row,
})
this.$toasted.success(
`Offene schöpfung (${this.value} GDD) für ${this.item.email} wurde geändert, liegt zur Bestätigung bereit`,
this.$t('creation_form.toasted_update', {
value: this.value,
email: this.item.email,
}),
)
this.submitObj = null
this.createdIndex = null

View File

@ -7,6 +7,7 @@ const storeDispatchMock = jest.fn()
const routerPushMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$store: {
state: {
openCreations: 1,

View File

@ -9,18 +9,18 @@
<b-collapse id="nav-collapse" is-nav>
<b-navbar-nav>
<b-nav-item to="/">Übersicht</b-nav-item>
<b-nav-item to="/user">Usersuche</b-nav-item>
<b-nav-item to="/creation">Mehrfachschöpfung</b-nav-item>
<b-nav-item to="/">{{ $t('navbar.overview') }}</b-nav-item>
<b-nav-item to="/user">{{ $t('navbar.user_search') }}</b-nav-item>
<b-nav-item to="/creation">{{ $t('navbar.multi_creation') }}</b-nav-item>
<b-nav-item
v-show="$store.state.openCreations > 0"
class="bg-color-creation p-1"
to="/creation-confirm"
>
{{ $store.state.openCreations }} offene Schöpfungen
{{ $store.state.openCreations }} {{ $t('navbar.open_creation') }}
</b-nav-item>
<b-nav-item @click="wallet">Wallet</b-nav-item>
<b-nav-item @click="logout">Logout</b-nav-item>
<b-nav-item @click="wallet">{{ $t('navbar.wallet') }}</b-nav-item>
<b-nav-item @click="logout">{{ $t('navbar.logout') }}</b-nav-item>
</b-navbar-nav>
</b-collapse>
</b-navbar>

View File

@ -9,7 +9,7 @@
:icon="type === 'PageCreationConfirm' ? 'x' : 'eye-slash-fill'"
aria-label="Help"
></b-icon>
Details verbergen von {{ row.item.firstName }} {{ row.item.lastName }}
{{ $t('hide_details') }} {{ row.item.firstName }} {{ row.item.lastName }}
</b-button>
</b-card>
</template>

View File

@ -13,8 +13,12 @@ describe('UserTable', () => {
creation: [],
}
const mocks = {
$t: jest.fn((t) => t),
}
const Wrapper = () => {
return mount(UserTable, { localVue, propsData })
return mount(UserTable, { localVue, propsData, mocks })
}
describe('mount', () => {

View File

@ -248,21 +248,18 @@ export default {
this.overlayItem = item
if (bookmarkType === 'remove') {
this.overlayText.header = 'Achtung! Schöpfung löschen!'
this.overlayText.text1 =
'Nach dem Löschen gibt es keine Möglichkeit mehr diesen Datensatz wiederherzustellen. Es wird aber der gesamte Vorgang in der Logdatei als Übersicht gespeichert.'
this.overlayText.text2 = 'Willst du die vorgespeicherte Schöpfung wirklich löschen? '
this.overlayText.button_ok = 'Ja, Schöpfung löschen!'
this.overlayText.button_cancel = 'Nein, nicht löschen.'
this.overlayText.header = this.$t('overlay.remove.title')
this.overlayText.text1 = this.$t('overlay.remove.text')
this.overlayText.text2 = this.$t('overlay.remove.question')
this.overlayText.button_ok = this.$t('overlay.remove.yes')
this.overlayText.button_cancel = this.$t('overlay.remove.no')
}
if (bookmarkType === 'confirm') {
this.overlayText.header = 'Schöpfung bestätigen!'
this.overlayText.text1 =
'Nach dem Speichern ist der Datensatz nicht mehr änderbar und kann auch nicht mehr gelöscht werden. Bitte überprüfe genau, dass alles stimmt.'
this.overlayText.text2 =
'Willst du diese vorgespeicherte Schöpfung wirklich vollziehen und entgültig speichern?'
this.overlayText.button_ok = 'Ja, Schöpfung speichern und bestätigen!'
this.overlayText.button_cancel = 'Nein, nicht speichern.'
this.overlayText.header = this.$t('overlay.confirm.title')
this.overlayText.text1 = this.$t('overlay.confirm.text')
this.overlayText.text2 = this.$t('overlay.confirm.question')
this.overlayText.button_ok = this.$t('overlay.confirm.yes')
this.overlayText.button_cancel = this.$t('overlay.confirm.no')
}
},
overlayOK(bookmarkType, item) {

View File

@ -1,4 +1,65 @@
{
"not_open_creations": "keine offene Schöpfungen",
"open_creations": "offene Schöpfungen"
"bookmark": "bookmark",
"confirmed": "bestätigt",
"creation_form": {
"creation_for": "Schöpfung für ",
"enter_text": "Text eintragen",
"form": "Schöpfungsformular",
"min_characters": "Mindestens 10 Zeichen eingeben",
"reset": "Zurücksetzen",
"select_month": "Monat auswählen",
"select_value": "Betrag auswählen",
"submit_creation": "Schöpfung einreichen",
"toasted": "Offene Schöpfung ({value} GDD) für {email} wurde gespeichert und liegt zur Bestätigung bereit",
"toasted_update": "`Offene Schöpfung {value} GDD) für {email} wurde geändert und liegt zur Bestätigung bereit",
"update_creation": "Schöpfung aktualisieren"
},
"details": "Details",
"e_mail": "E-Mail",
"firstname": "Vorname",
"gradido_admin_footer": "Gradido Akademie Adminkonsole",
"hide_details": "Details verbergen von",
"lastname": "Nachname",
"multiple_creation_text": "Bitte wähle ein oder mehrere Mitglieder aus für die du Schöpfen möchtest.",
"navbar": {
"logout": "Abmelden",
"multi_creation": "Mehrfachschöpfung",
"open_creation": "Offene Schöpfungen",
"overview": "Übersicht",
"user_search": "Nutzersuche",
"wallet": "Wallet"
},
"not_open_creations": "Keine offenen Schöpfungen",
"open_creation": "Offene Schöpfung",
"open_creations": "Offene Schöpfungen",
"overlay": {
"confirm": {
"no": "Nein, nicht speichern.",
"question": "Willst du diese vorgespeicherte Schöpfung wirklich vollziehen und entgültig speichern?",
"text": "Nach dem Speichern ist der Datensatz nicht mehr änderbar und kann auch nicht mehr gelöscht werden. Bitte überprüfe genau, dass alles stimmt.",
"title": "Schöpfung bestätigen!",
"yes": "Ja, Schöpfung bestätigen und speichern!"
},
"remove": {
"no": "Nein, nicht löschen.",
"question": "Willst du die vorgespeicherte Schöpfung wirklich löschen?",
"text": "Nach dem Löschen gibt es keine Möglichkeit mehr diesen Datensatz wiederherzustellen. Es wird aber der gesamte Vorgang in der Logdatei als Übersicht gespeichert.",
"title": "Achtung! Schöpfung löschen!",
"yes": "Ja, Schöpfung löschen!"
}
},
"remove": "Entfernen",
"transaction": "Transaktion",
"transactionlist": {
"title": "Alle geschöpften Transaktionen für den Nutzer"
},
"unregistered_emails": "Unregistrierte E-Mails",
"unregister_mail": {
"button": "Registrierungs-Email bestätigen, jetzt senden",
"error": "Fehler beim Senden des Bestätigungs-Links an den Benutzer: {message}",
"info": "Email bestätigen, wiederholt senden an:",
"success": "Erfolgreiches Senden des Bestätigungs-Links an die E-Mail des Nutzers! ({email})",
"text": " Die letzte Email wurde am <b>{date} Uhr</b> an das Mitglied ({mail}) gesendet."
},
"user_search": "Nutzer-Suche"
}

View File

@ -1,4 +1,65 @@
{
"bookmark": "Remember",
"confirmed": "confirmed",
"creation_form": {
"creation_for": "Creation for ",
"enter_text": "Enter text",
"form": "Creation form",
"min_characters": "Enter at least 10 characters",
"reset": "Reset",
"select_month": "Select month",
"select_value": "Select amount",
"submit_creation": "Submit creation",
"toasted": "Open creation ({value} GDD) for {email} has been saved and is ready for confirmation.",
"toasted_update": "Open creation {value} GDD) for {email} has been changed and is ready for confirmation.",
"update_creation": "Creation update"
},
"details": "Details",
"e_mail": "E-Mail",
"firstname": "Firstname",
"gradido_admin_footer": "Gradido Academy Admin Console",
"hide_details": "Hide details from",
"lastname": "Lastname",
"multiple_creation_text": "Please select one or more members for which you would like to perform creations.",
"navbar": {
"logout": "Logout",
"multi_creation": "Multiple creation",
"open_creation": "Open creations",
"overview": "Overview",
"user_search": "User search",
"wallet": "Wallet"
},
"not_open_creations": "No open creations",
"open_creations": "Open creations"
"open_creation": "Open creation",
"open_creations": "Open creations",
"overlay": {
"confirm": {
"no": "No, do not save.",
"question": "Do you really want to carry out and finally save this pre-stored creation?",
"text": "After saving, the record can no longer be changed or deleted. Please check carefully that everything is correct.",
"title": "Confirm creation!",
"yes": "Yes, confirm and save creation!"
},
"remove": {
"no": "No, do not delete.",
"question": "Do you really want to delete the pre-stored creation?",
"text": "After deletion, there is no possibility to restore this data record. However, the entire process is saved in the log file as an overview.",
"title": "Attention! Delete creation!",
"yes": "Yes, delete creation!"
}
},
"remove": "Remove",
"transaction": "Transaction",
"transactionlist": {
"title": "All creation-transactions for the user"
},
"unregistered_emails": "Unregistered e-mails",
"unregister_mail": {
"button": "Confirm registration email, send now",
"error": "Error sending the confirmation link to the user: {message}",
"info": "Confirm email, send repeatedly to:",
"success": "Successfully send the confirmation link to the user's email! ({email})",
"text": " The last email was sent to the member ({mail}) on <b>{date} clock</b>."
},
"user_search": "User search"
}

View File

@ -28,6 +28,7 @@ const apolloQueryMock = jest.fn().mockResolvedValue({
const toastErrorMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$apollo: {
query: apolloQueryMock,
},

View File

@ -31,7 +31,7 @@
@update-item="updateItem"
/>
<div v-if="itemsMassCreation.length === 0">
Bitte wähle ein oder Mehrere Mitglieder aus für die du Schöpfen möchtest
{{ $t('multiple_creation_text') }}
</div>
<creation-formular
v-else
@ -59,18 +59,18 @@ export default {
return {
showArrays: false,
Searchfields: [
{ key: 'bookmark', label: 'merken' },
{ key: 'firstName', label: 'Firstname' },
{ key: 'lastName', label: 'Lastname' },
{ key: 'creation', label: 'Creation' },
{ key: 'email', label: 'Email' },
{ key: 'bookmark', label: 'bookmark' },
{ key: 'firstName', label: this.$t('firstname') },
{ key: 'lastName', label: this.$t('lastname') },
{ key: 'creation', label: this.$t('open_creations') },
{ key: 'email', label: this.$t('e_mail') },
],
fields: [
{ key: 'email', label: 'Email' },
{ key: 'firstName', label: 'Firstname' },
{ key: 'lastName', label: 'Lastname' },
{ key: 'creation', label: 'Creation' },
{ key: 'bookmark', label: 'löschen' },
{ key: 'email', label: this.$t('e_mail') },
{ key: 'firstName', label: this.$t('firstname') },
{ key: 'lastName', label: this.$t('lastname') },
{ key: 'creation', label: this.$t('open_creations') },
{ key: 'bookmark', label: this.$t('remove') },
],
itemsList: [],
itemsMassCreation: [],

View File

@ -37,6 +37,7 @@ const apolloQueryMock = jest.fn().mockResolvedValue({
const apolloMutateMock = jest.fn().mockResolvedValue({})
const mocks = {
$t: jest.fn((t) => t),
$store: {
commit: storeCommitMock,
},

View File

@ -22,6 +22,7 @@ const apolloQueryMock = jest.fn().mockResolvedValue({
const storeCommitMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$apollo: {
query: apolloQueryMock,
},
@ -31,7 +32,6 @@ const mocks = {
openCreations: 2,
},
},
$t: jest.fn((t) => t),
}
describe('Overview', () => {

View File

@ -20,6 +20,7 @@ const apolloQueryMock = jest.fn().mockResolvedValue({
const toastErrorMock = jest.fn()
const mocks = {
$t: jest.fn((t) => t),
$apollo: {
query: apolloQueryMock,
},

View File

@ -3,15 +3,15 @@
<div style="text-align: right">
<b-button block variant="danger" @click="unconfirmedRegisterMails">
<b-icon icon="envelope" variant="light"></b-icon>
Anzeigen aller nicht registrierten E-Mails.
{{ $t('unregistered_emails') }}
</b-button>
</div>
<label>Usersuche</label>
<label>{{ $t('user_search') }}</label>
<b-input
type="text"
v-model="criteria"
class="shadow p-3 mb-3 bg-white rounded"
placeholder="User suche"
:placeholder="$t('user_search')"
@input="getUsers"
></b-input>
@ -37,12 +37,12 @@ export default {
return {
showArrays: false,
fields: [
{ key: 'email', label: 'Email' },
{ key: 'firstName', label: 'Firstname' },
{ key: 'lastName', label: 'Lastname' },
{ key: 'email', label: this.$t('e_mail') },
{ key: 'firstName', label: this.$t('firstname') },
{ key: 'lastName', label: this.$t('lastname') },
{
key: 'creation',
label: 'Open creations',
label: this.$t('open_creation'),
formatter: (value, key, item) => {
return (
`
@ -65,9 +65,9 @@ export default {
)
},
},
{ key: 'show_details', label: 'Details' },
{ key: 'confirm_mail', label: 'Mail' },
{ key: 'transactions_list', label: 'Transaction' },
{ key: 'show_details', label: this.$t('details') },
{ key: 'confirm_mail', label: this.$t('confirmed') },
{ key: 'transactions_list', label: this.$t('transaction') },
],
searchResult: [],
massCreation: [],