gdt transaction with arrays and without slots

This commit is contained in:
ogerly 2021-09-06 14:07:34 +02:00
parent c9337bf939
commit 9503c2a49a
4 changed files with 223 additions and 249 deletions

View File

@ -0,0 +1,134 @@
<template>
<div>
<div class="list-group">
<div class="list-group-item gdt-transaction-list-item" v-b-toggle="'a' + date + ''">
<!-- Icon -->
<div class="text-right" style="position: absolute">
<b-icon
v-if="gdtEntryType"
:icon="getLinesByType(gdtEntryType).icon"
:class="getLinesByType(gdtEntryType).iconclasses"
></b-icon>
</div>
<!-- Collaps Button -->
<div class="text-right" style="width: 96%; position: absolute">
<b-button class="btn-sm">
<b>i</b>
</b-button>
</div>
<!-- type -->
<b-row>
<div class="col-6 text-right">
{{ getLinesByType(gdtEntryType).description }}
</div>
<div class="col-6">
{{ getLinesByType(gdtEntryType).descriptiontext }}
</div>
</b-row>
<!-- credit -->
<b-row>
<div class="col-6 text-right">
{{ $t('gdt.credit') }}
</div>
<div class="col-6">
{{ getLinesByType(gdtEntryType).credittext }}
</div>
</b-row>
<!-- Nachricht-->
<b-row v-if="comment && gdtEntryType !== 7">
<div class="col-6 text-right">
{{ $t('form.memo') }}
</div>
<div class="col-6">
{{ comment }}
</div>
</b-row>
<!-- Datum-->
<b-row class="gdt-list-row text-header">
<div class="col-6 text-right">
{{ $t('form.date') }}
</div>
<div class="col-6">
{{ $d($moment(date), 'long') }} {{ $i18n.locale === 'de' ? 'Uhr' : '' }}
</div>
</b-row>
</div>
<b-collapse :id="'a' + date + ''" class="pb-4">
<transaction-collaps
:amount="amount"
:gdtEntryType="gdtEntryType"
:factor="factor"
:gdt="gdt"
></transaction-collaps>
</b-collapse>
</div>
</div>
</template>
<script>
import TransactionCollaps from '../components/TransactionCollaps.vue'
export default {
name: 'Transaction',
components: {
TransactionCollaps,
},
props: {
amount: { type: Number, default: 0 },
date: {
type: Date,
default: function () {
return new Date()
},
},
comment: { type: String, default: '' },
gdtEntryType: { type: Number, default: 0 },
factor: { type: Number, default: 0 },
gdt: { type: Number, default: 0 },
},
methods: {
getLinesByType(givenType) {
const linesByType = {
1: {
icon: 'heart',
iconclasses: 'gradido-global-color-accent m-mb-1 font2em',
description: 'Beitrag',
descriptiontext: this.$n(this.amount, 'decimal') + ' €',
credittext: this.$n(this.gdt, 'decimal') + ' GDT',
},
4: {
icon: 'person-check',
iconclasses: 'gradido-global-color-accent m-mb-1 font2em',
description: 'Geworbenes Mitglied',
descriptiontext: '5%',
credittext: this.$n(this.amount, 'decimal') + ' GDT',
},
7: {
icon: 'gift',
iconclasses: 'gradido-global-color-accent m-mb-1 font2em',
description: 'Aktion',
descriptiontext: this.comment,
credittext: this.$n(this.gdt, 'decimal') + ' GDT',
},
}
const type = linesByType[givenType]
if (type)
return {
icon: type.icon,
iconclasses: type.iconclasses,
description: type.description,
descriptiontext: type.descriptiontext,
credittext: type.credittext,
}
},
},
}
</script>

View File

@ -0,0 +1,78 @@
<template>
<div>
<b-row class="gdt-list-clooaps-header-text text-center pb-3">
<div class="col h4">
{{ getLinesByType(gdtEntryType).headline }}
</div>
</b-row>
<b-row class="gdt-list-clooaps-box--all">
<div class="col-6 text-right clooaps-col-left">
<div>{{ getLinesByType(gdtEntryType).first }}</div>
<div>{{ getLinesByType(gdtEntryType).second }}</div>
</div>
<div class="col-6 clooaps-col-right">
<div>{{ getLinesByType(gdtEntryType).firstMath }}</div>
<div>
{{ getLinesByType(gdtEntryType).secondMath }}
</div>
</div>
</b-row>
</div>
</template>
<script>
export default {
name: 'TransactionCollaps',
props: {
amount: { type: Number, default: 0 },
gdtEntryType: { type: Number, default: 0 },
factor: { type: Number, default: 0 },
gdt: { type: Number, default: 0 },
},
methods: {
getLinesByType(givenType) {
const linesByType = {
1: {
headline: this.$t('gdt.calculation'),
first: this.$t('gdt.factor'),
firstMath: this.factor + ' GDT pro €',
second: this.$t('gdt.formula'),
secondMath:
this.$n(this.amount, 'decimal') +
' € * ' +
this.factor +
' GDT / € = ' +
this.$n(this.gdt, 'decimal') +
' GDT',
},
4: {
headline: this.$t('gdt.publisher'),
},
7: {
headline: this.$t('gdt.conversion-gdt-euro'),
first: this.$t('gdt.raise'),
firstMath: this.factor * 100 + ' % ',
second: this.$t('gdt.conversion'),
secondMath:
this.$n(this.amount, 'decimal') +
' GDT * ' +
this.factor * 100 +
'% = ' +
this.$n(this.gdt, 'decimal') +
' GDT',
},
}
const type = linesByType[givenType]
if (type)
return {
headline: type.headline,
first: type.first,
firstMath: type.firstMath,
second: type.second,
secondMath: type.secondMath,
}
},
},
}
</script>

View File

@ -1,103 +0,0 @@
<template>
<div>
<div class="list-group">
<div class="list-group-item gdt-transaction-list-item" v-b-toggle="'a' + date + ''">
<!-- Icon -->
<div class="text-right" style="position: absolute">
ICON
<b-icon
v-if="gdtEntryType"
:icon="getIcon(gdtEntryType).icon"
:class="getIcon(gdtEntryType).class"
></b-icon>
</div>
<!-- Collaps Button -->
<div class="text-right" style="width: 96%; position: absolute">
<b-button class="btn-sm">
<b>i</b>
</b-button>
</div>
<!-- Betrag -->
<b-row>
<div class="col-6 text-right">
text1Betrag
<!-- <div>{{ $t('gdt.your-share') }}</div>
<div>{{ $t('gdt.credit') }}</div> -->
</div>
<div class="col-6">
text1Betrag
<!-- <div><slot name="your-share"></slot></div>
<div><slot name="credit"></slot></div> -->
</div>
</b-row>
<!-- Betrag ENDE-->
<!-- Nachricht-->
<b-row v-if="comment">
<div class="col-6 text-right">
text2Memo
<!-- {{ $t('form.memo') }} -->
</div>
<div class="col-6">
text2Memo
<slot name="memo"></slot>
</div>
</b-row>
<!-- Datum-->
<b-row class="gdt-list-row text-header">
<div class="col-6 text-right">
text3Date
<!-- {{ $t('form.date') }} -->
</div>
<div class="col-6">
text3Data
<!-- <slot name="date"></slot> -->
</div>
</b-row>
</div>
<b-collapse :id="'a' + date + ''" class="pb-4">
<b-row class="gdt-list-clooaps-header-text text-center pb-3">
<div class="col h4"><!--{{ $t('gdt.publisher') }}--> CollapsData</div>
</b-row>
</b-collapse>
</div>
</div>
</template>
<script>
const iconsByType = {
1: { icon: 'heart', classes: 'gradido-global-color-accent' },
4: { icon: 'person-check', classes: 'gradido-global-color-accent' },
7: { icon: 'gift', classes: 'gradido-global-color-accent' },
}
export default {
props: {
date: {
type: Date,
default: function () {
return new Date()
},
},
comment: { type: String, default: '' },
gdtEntryType: { type: Number, default: '' },
},
methods: {
getIcon(givenType) {
const type = iconsByType[givenType]
if (type)
return {
icon: type.icon,
class: type.classes + ' m-mb-1 font2em',
}
this.throwError('no icon to given type: ' + givenType)
},
},
}
</script>

View File

@ -17,135 +17,14 @@
} in transactionsGdt"
:key="transactionId"
>
<transaktion :date="date" :comment="comment" :gdtEntryType="gdtEntryType"> </transaktion>
<div class="list-group-item gdt-transaction-list-item" v-b-toggle="'a' + date + ''">
<!-- Icon -->
<div class="text-right" style="position: absolute">
<b-icon
v-if="gdtEntryType"
:icon="getIcon(gdtEntryType).icon"
:class="getIcon(gdtEntryType).class"
></b-icon>
</div>
<!-- Collaps Button -->
<div class="text-right" style="width: 96%; position: absolute">
<b-button class="btn-sm">
<b>i</b>
</b-button>
</div>
<!-- Betrag -->
<!-- 7 nur GDT erhalten -->
<b-row v-if="gdtEntryType === 7">
<div class="col-6 text-right">
<div>{{ $t('gdt.gdt-receive') }}</div>
<div>{{ $t('gdt.credit') }}</div>
</div>
<div class="col-6">
<div>{{ comment }}</div>
<div>{{ $n(gdt, 'decimal') }} GDT</div>
</div>
</b-row>
<!--4 publisher -->
<b-row v-else-if="gdtEntryType === 4">
<div class="col-6 text-right">
<div>{{ $t('gdt.your-share') }}</div>
<div>{{ $t('gdt.credit') }}</div>
</div>
<div class="col-6">
<div>5%</div>
<div>{{ $n(amount, 'decimal') }} GDT</div>
</div>
</b-row>
<!-- 1, 2, 3, 5, 6 spenden in euro -->
<b-row v-else>
<div class="col-6 text-right">
<div>{{ $t('gdt.contribution') }}</div>
<div>{{ $t('gdt.credit') }}</div>
</div>
<div class="col-6">
<div>{{ $n(amount, 'decimal') }} </div>
<div>{{ $n(gdt, 'decimal') }} GDT</div>
</div>
</b-row>
<!-- Betrag ENDE-->
<!-- Nachricht-->
<b-row v-if="comment && gdtEntryType !== 7">
<div class="col-6 text-right">
{{ $t('form.memo') }}
</div>
<div class="col-6">
{{ comment }}
</div>
</b-row>
<!-- Datum-->
<b-row v-if="date" class="gdt-list-row text-header">
<div class="col-6 text-right">
{{ $t('form.date') }}
</div>
<div class="col-6">
{{ $d($moment(date), 'long') }} {{ $i18n.locale === 'de' ? 'Uhr' : '' }}
</div>
</b-row>
</div>
<!-- Collaps START -->
<b-collapse v-if="gdtEntryType" :id="'a' + date + ''" class="pb-4">
<div style="border: 0px; background-color: #f1f1f1" class="p-2 pb-4 mb-4">
<!-- Überschrift -->
<b-row class="gdt-list-clooaps-header-text text-center pb-3">
<div class="col h4" v-if="gdtEntryType === 7">
{{ $t('gdt.conversion-gdt-euro') }}
</div>
<div class="col h4" v-else-if="gdtEntryType === 4">
{{ $t('gdt.publisher') }}
</div>
<div class="col h4" v-else>{{ $t('gdt.calculation') }}</div>
</b-row>
<!-- 7 nur GDT erhalten -->
<b-row class="gdt-list-clooaps-box-7" v-if="gdtEntryType == 7">
<div class="col-6 text-right clooaps-col-left">
<div>{{ $t('gdt.raise') }}</div>
<div>{{ $t('gdt.conversion') }}</div>
</div>
<div class="col-6 clooaps-col-right">
<div>{{ factor * 100 }} %</div>
<div>
{{ $n(amount, 'decimal') }} GDT * {{ factor * 100 }} % =
{{ $n(gdt, 'decimal') }} GDT
</div>
</div>
</b-row>
<!-- 4 publisher -->
<b-row class="gdt-list-clooaps-box-4" v-else-if="gdtEntryType === 4">
<div class="col-6 text-right clooaps-col-left"></div>
<div class="col-6 clooaps-col-right"></div>
</b-row>
<!-- 1, 2, 3, 5, 6 spenden in euro -->
<b-row class="gdt-list-clooaps-box--all" v-else>
<div class="col-6 text-right clooaps-col-left">
<div>{{ $t('gdt.factor') }}</div>
<div>{{ $t('gdt.formula') }}</div>
</div>
<div class="col-6 clooaps-col-right">
<div>{{ factor }} GDT pro </div>
<div>
{{ $n(amount, 'decimal') }} * {{ factor }} GDT / =
{{ $n(gdt, 'decimal') }} GDT
</div>
</div>
</b-row>
</div>
</b-collapse>
<!-- Collaps ENDE -->
<transaction
:amount="amount"
:date="date"
:comment="comment"
:gdtEntryType="gdtEntryType"
:factor="factor"
:gdt="gdt"
></transaction>
</div>
</div>
<pagination-buttons
@ -163,19 +42,13 @@
<script>
import { listGDTEntriesQuery } from '../../../graphql/queries'
import PaginationButtons from '../../../components/PaginationButtons'
import Transaktion from '../../../components/Transaktion.vue'
const iconsByType = {
1: { icon: 'heart', classes: 'gradido-global-color-accent' },
4: { icon: 'person-check', classes: 'gradido-global-color-accent' },
7: { icon: 'gift', classes: 'gradido-global-color-accent' },
}
import Transaction from '../../../components/Transaction.vue'
export default {
name: 'gdt-transaction-list',
components: {
PaginationButtons,
Transaktion,
Transaction,
},
data() {
return {
@ -218,15 +91,7 @@ export default {
this.$toasted.error(error.message)
})
},
getIcon(givenType) {
const type = iconsByType[givenType]
if (type)
return {
icon: type.icon,
class: type.classes + ' m-mb-1 font2em',
}
this.throwError('no icon to given type: ' + givenType)
},
throwError(msg) {
throw new Error(msg)
},