- {{ getLinesByType(gdtEntryType).secondMath }}
+
{{ getLinesByType.firstMath }}
+
+ {{ getLinesByType.secondMath }}
@@ -33,9 +33,9 @@ export default {
factor: { type: Number },
gdt: { type: Number },
},
- methods: {
- getLinesByType(givenType) {
- switch (givenType) {
+ computed: {
+ getLinesByType() {
+ switch (this.gdtEntryType) {
case GdtEntryType.FORM:
case GdtEntryType.CVS:
case GdtEntryType.ELOPAGE:
@@ -80,7 +80,7 @@ export default {
}
}
default:
- throw new Error('no additional transaction info for this type: ' + givenType)
+ throw new Error('no additional transaction info for this type: ' + this.gdtEntryType)
}
},
},
diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json
index 10a3be0ce..e46f9bb83 100644
--- a/frontend/src/locales/de.json
+++ b/frontend/src/locales/de.json
@@ -97,8 +97,9 @@
"credit": "Gutschrift",
"factor": "Faktor",
"formula": "Berechungsformel",
+ "funding": "Zu den Förderbeiträgen",
"gdt-received": "Gradido Transform (GDT) erhalten",
- "no-transactions": "Du hast zur Zeit keine Transaktionen",
+ "no-transactions": "Du hast noch keine Gradido Transform (GDT).",
"publisher": "Dein geworbenes Mitglied hat einen Beitrag bezahlt",
"raise": "Erhöhung",
"recruited-member": "Geworbenes Mitglied"
@@ -109,6 +110,7 @@
"logout": "Abmelden",
"members_area": "Mitgliederbereich",
"message": "hallo gradido !!",
+ "overview": "Übersicht",
"privacy_policy": "Datenschutzerklärung",
"send": "Senden",
"settings": {
diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json
index d3d5b05ab..23d551272 100644
--- a/frontend/src/locales/en.json
+++ b/frontend/src/locales/en.json
@@ -97,8 +97,9 @@
"credit": "Credit",
"factor": "Factor",
"formula": "Calculation formula",
+ "funding": "Regarding the funding contributions",
"gdt-received": "Gradido Transform (GDT) received",
- "no-transactions": "You currently have no transactions",
+ "no-transactions": "You do not have Gradido Transform (GDT) yet.",
"publisher": "A member you referred has paid a contribution",
"raise": "Increase",
"recruited-member": "Recruited Member"
@@ -109,6 +110,7 @@
"logout": "Logout",
"members_area": "Member's area",
"message": "hello gradido !!",
+ "overview": "Overview",
"privacy_policy": "Privacy policy",
"send": "Send",
"settings": {
diff --git a/frontend/src/main.js b/frontend/src/main.js
index ad5c6e1db..fd06bf9c0 100755
--- a/frontend/src/main.js
+++ b/frontend/src/main.js
@@ -6,6 +6,7 @@ import { loadAllRules } from './validation-rules'
import { ApolloClient, ApolloLink, InMemoryCache, HttpLink } from 'apollo-boost'
import VueApollo from 'vue-apollo'
import CONFIG from './config'
+
import addNavigationGuards from './routes/guards'
import { store } from './store/store'
diff --git a/frontend/src/routes/router.test.js b/frontend/src/routes/router.test.js
index 23d2e71b6..df4f9c229 100644
--- a/frontend/src/routes/router.test.js
+++ b/frontend/src/routes/router.test.js
@@ -49,8 +49,8 @@ describe('router', () => {
expect(routes.find((r) => r.path === '/').redirect()).toEqual({ path: '/login' })
})
- it('has twelve routes defined', () => {
- expect(routes).toHaveLength(13)
+ it('has fourteen routes defined', () => {
+ expect(routes).toHaveLength(14)
})
describe('overview', () => {
@@ -64,6 +64,17 @@ describe('router', () => {
})
})
+ describe('send', () => {
+ it('requires authorization', () => {
+ expect(routes.find((r) => r.path === '/send').meta.requiresAuth).toBeTruthy()
+ })
+
+ it('loads the "Send" component', async () => {
+ const component = await routes.find((r) => r.path === '/send').component()
+ expect(component.default.name).toBe('SendOverview')
+ })
+ })
+
describe('profile', () => {
it('requires authorization', () => {
expect(routes.find((r) => r.path === '/profile').meta.requiresAuth).toBeTruthy()
diff --git a/frontend/src/routes/routes.js b/frontend/src/routes/routes.js
index 8cc4d313d..f4f0dfe04 100755
--- a/frontend/src/routes/routes.js
+++ b/frontend/src/routes/routes.js
@@ -14,6 +14,13 @@ const routes = [
requiresAuth: true,
},
},
+ {
+ path: '/send',
+ component: () => import('../views/Pages/SendOverview.vue'),
+ meta: {
+ requiresAuth: true,
+ },
+ },
{
path: '/profile',
component: () => import('../views/Pages/UserProfileOverview.vue'),
diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js
index a753b9931..b25640e5c 100644
--- a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js
+++ b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js
@@ -89,33 +89,40 @@ describe('DashboardLayoutGdd', () => {
navbar = wrapper.findAll('ul.navbar-nav').at(0)
})
- it('has three items in the navbar', () => {
- expect(navbar.findAll('ul > a')).toHaveLength(3)
+ it('has four items in the navbar', () => {
+ expect(navbar.findAll('ul > a')).toHaveLength(4)
})
- it('has first item "send" in navbar', () => {
- expect(navbar.findAll('ul > a').at(0).text()).toEqual('send')
+ it('has first item "overview" in navbar', () => {
+ expect(navbar.findAll('ul > a').at(0).text()).toEqual('overview')
})
- it('has first item "send" linked to overview in navbar', () => {
- navbar.findAll('ul > a').at(0).trigger('click')
- expect(wrapper.findComponent(RouterLinkStub).props().to).toBe('/overview')
+ it('has first item "overview" linked to overview in navbar', () => {
+ expect(navbar.findAll('ul > a > a').at(0).attributes('href')).toBe('/overview')
})
- it('has second item "transactions" in navbar', () => {
- expect(navbar.findAll('ul > a').at(1).text()).toEqual('transactions')
+ it('has second item "send" in navbar', () => {
+ expect(navbar.findAll('ul > a').at(1).text()).toEqual('send')
})
- it('has second item "transactions" linked to transactions in navbar', async () => {
- expect(wrapper.findAll('a').at(3).attributes('href')).toBe('/transactions')
+ it('has second item "send" linked to /send in navbar', () => {
+ expect(wrapper.findAll('ul > a > a').at(1).attributes('href')).toBe('/send')
})
- it('has three items in the navbar', () => {
- expect(navbar.findAll('ul > a')).toHaveLength(3)
+ it('has third item "transactions" in navbar', () => {
+ expect(navbar.findAll('ul > a').at(2).text()).toEqual('transactions')
})
- it('has third item "My profile" linked to profile in navbar', async () => {
- expect(wrapper.findAll('a').at(5).attributes('href')).toBe('/profile')
+ it('has third item "transactions" linked to transactions in navbar', async () => {
+ expect(wrapper.findAll('ul > a > a').at(2).attributes('href')).toBe('/transactions')
+ })
+
+ it('has fourth item "My profile" in navbar', () => {
+ expect(navbar.findAll('ul > a').at(3).text()).toEqual('site.navbar.my-profil')
+ })
+
+ it('has fourth item "My profile" linked to profile in navbar', async () => {
+ expect(wrapper.findAll('ul > a > a').at(3).attributes('href')).toBe('/profile')
})
it('has a link to the members area', () => {
diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue
index 2b63bf417..8273685bd 100755
--- a/frontend/src/views/Layout/DashboardLayout_gdd.vue
+++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue
@@ -2,11 +2,16 @@
-
+
{
let wrapper
- const propsData = {
- balance: 123.45,
- transactionCount: 1,
- }
-
const mocks = {
$t: jest.fn((t) => t),
- $n: jest.fn((n) => String(n)),
- $store: {
- state: {
- email: 'sender@example.org',
- },
- },
- $apollo: {
- mutate: sendMock,
- },
+ $n: jest.fn(),
}
const Wrapper = () => {
- return mount(AccountOverview, { localVue, mocks, propsData })
+ return mount(AccountOverview, {
+ localVue,
+ mocks,
+ })
}
describe('mount', () => {
@@ -38,97 +25,21 @@ describe('AccountOverview', () => {
wrapper = Wrapper()
})
- it('has a status line', () => {
- expect(wrapper.find('div.gdd-status').exists()).toBeTruthy()
+ it('has a status gdd-status-gdd', () => {
+ expect(wrapper.find('div.gdd-status-gdd').exists()).toBeTruthy()
})
-
- it('has a send field', () => {
- expect(wrapper.find('div.gdd-send').exists()).toBeTruthy()
+ it('has a status gdd-status-gdt', () => {
+ expect(wrapper.find('div.gdd-status-gdt').exists()).toBeTruthy()
})
-
it('has a transactions table', () => {
expect(wrapper.find('div.gdd-transaction-list').exists()).toBeTruthy()
})
- describe('transaction form', () => {
- it('steps forward in the dialog', async () => {
- await wrapper.findComponent({ name: 'TransactionForm' }).vm.$emit('set-transaction', {
- email: 'user@example.org',
- amount: 23.45,
- memo: 'Make the best of it!',
- })
- expect(wrapper.findComponent({ name: 'TransactionConfirmation' }).exists()).toBeTruthy()
- })
- })
-
- describe('confirm transaction', () => {
- beforeEach(() => {
- wrapper.setData({
- currentTransactionStep: 1,
- transactionData: {
- email: 'user@example.org',
- amount: 23.45,
- memo: 'Make the best of it!',
- },
- })
- })
-
- it('resets the transaction process when on-reset is emitted', async () => {
- await wrapper.findComponent({ name: 'TransactionConfirmation' }).vm.$emit('on-reset')
- expect(wrapper.findComponent({ name: 'TransactionForm' }).exists()).toBeTruthy()
- expect(wrapper.vm.transactionData).toEqual({
- email: '',
- amount: 0,
- memo: '',
- })
- })
-
- describe('transaction is confirmed and server response is success', () => {
- beforeEach(async () => {
- jest.clearAllMocks()
- await wrapper
- .findComponent({ name: 'TransactionConfirmation' })
- .vm.$emit('send-transaction')
- })
-
- it('calls the API when send-transaction is emitted', async () => {
- expect(sendMock).toBeCalledWith(
- expect.objectContaining({
- variables: {
- email: 'user@example.org',
- amount: 23.45,
- memo: 'Make the best of it!',
- },
- }),
- )
- })
-
- it('emits update-balance', () => {
- expect(wrapper.emitted('update-balance')).toBeTruthy()
- expect(wrapper.emitted('update-balance')).toEqual([[23.45]])
- })
-
- it('shows the succes page', () => {
- expect(wrapper.find('div.card-body').text()).toContain('form.send_transaction_success')
- })
- })
-
- describe('transaction is confirmed and server response is error', () => {
- beforeEach(async () => {
- jest.clearAllMocks()
- sendMock.mockRejectedValue({ message: 'receiver not found' })
- await wrapper
- .findComponent({ name: 'TransactionConfirmation' })
- .vm.$emit('send-transaction')
- })
-
- it('shows the error page', () => {
- expect(wrapper.find('div.card-body').text()).toContain('form.send_transaction_error')
- })
-
- it('shows recipient not found', () => {
- expect(wrapper.text()).toContain('transaction.receiverNotFound')
- })
+ describe('timestamp updates', () => {
+ it('emits update transactions', async () => {
+ expect(wrapper.emitted('update-transactions')).toHaveLength(1)
+ await wrapper.setData({ timestamp: Date.now() })
+ expect(wrapper.emitted('update-transactions')).toHaveLength(2)
})
})
})
diff --git a/frontend/src/views/Pages/AccountOverview.vue b/frontend/src/views/Pages/AccountOverview.vue
index 6a056510b..5512a03d8 100644
--- a/frontend/src/views/Pages/AccountOverview.vue
+++ b/frontend/src/views/Pages/AccountOverview.vue
@@ -1,83 +1,59 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/frontend/src/views/Pages/AccountOverview/GddTransactionList.vue b/frontend/src/views/Pages/AccountOverview/GddTransactionList.vue
index fa0cc7357..1e24c14d0 100644
--- a/frontend/src/views/Pages/AccountOverview/GddTransactionList.vue
+++ b/frontend/src/views/Pages/AccountOverview/GddTransactionList.vue
@@ -124,7 +124,7 @@
:per-page="pageSize"
:total-rows="transactionCount"
>
-
+
{{ $t('transaction.nullTransactions') }}
@@ -198,4 +198,8 @@ export default {
padding-left: 0px;
padding-right: 0px;
}
+
+.gdd-transaction-list-item {
+ outline: none !important;
+}
diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js
index fcecf63fa..77507cb69 100644
--- a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js
+++ b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js
@@ -7,41 +7,8 @@ const localVue = global.localVue
const apolloMock = jest.fn().mockResolvedValue({
data: {
listGDTEntries: {
- count: 4,
- gdtEntries: [
- {
- amount: 100,
- gdt: 1700,
- factor: 17,
- comment: '',
- date: '2021-05-02T17:20:11+00:00',
- gdtEntryType: GdtEntryType.FORM,
- },
- {
- amount: 1810,
- gdt: 362,
- factor: 0.2,
- comment: 'Dezember 20',
- date: '2020-12-31T12:00:00+00:00',
- gdtEntryType: GdtEntryType.GLOBAL_MODIFICATOR,
- },
- {
- amount: 100,
- gdt: 1700,
- factor: 17,
- comment: '',
- date: '2020-05-07T17:00:00+00:00',
- gdtEntryType: GdtEntryType.FORM,
- },
- {
- amount: 100,
- gdt: 110,
- factor: 22,
- comment: '',
- date: '2020-04-10T13:28:00+00:00',
- gdtEntryType: GdtEntryType.ELOPAGE_PUBLISHER,
- },
- ],
+ count: 0,
+ gdtEntries: [],
},
},
})
@@ -51,10 +18,18 @@ const windowScrollToMock = jest.fn()
window.scrollTo = windowScrollToMock
-describe('GdtTransactionList', () => {
+const state = {
+ language: 'en',
+}
+
+describe('GdtTransactionList ', () => {
let wrapper
const mocks = {
+ $store: {
+ state,
+ commit: jest.fn(),
+ },
$i18n: {
locale: 'en',
},
@@ -73,15 +48,80 @@ describe('GdtTransactionList', () => {
return mount(GdtTransactionList, { localVue, mocks })
}
- describe('mount', () => {
+ describe('mount - When no transactions are loaded', () => {
beforeEach(() => {
wrapper = Wrapper()
})
+ it('renders the funding button ', () => {
+ expect(wrapper.find('.gdt-funding').exists()).toBe(true)
+ })
+
+ it('links to https://gradido.net/en/memberships/ when clicking', async () => {
+ expect(wrapper.find('.gdt-funding').attributes('href')).toBe(
+ 'https://gradido.net/' + state.language + '/memberships/',
+ )
+ })
+ })
+
+ describe('mount - When transactions are loaded', () => {
+ beforeEach(() => {
+ apolloMock.mockResolvedValue({
+ data: {
+ listGDTEntries: {
+ count: 4,
+ gdtEntries: [
+ {
+ id: 1,
+ amount: 100,
+ gdt: 1700,
+ factor: 17,
+ comment: '',
+ date: '2021-05-02T17:20:11+00:00',
+ gdtEntryType: GdtEntryType.FORM,
+ },
+ {
+ id: 2,
+ amount: 1810,
+ gdt: 362,
+ factor: 0.2,
+ comment: 'Dezember 20',
+ date: '2020-12-31T12:00:00+00:00',
+ gdtEntryType: GdtEntryType.GLOBAL_MODIFICATOR,
+ },
+ {
+ id: 3,
+ amount: 100,
+ gdt: 1700,
+ factor: 17,
+ comment: '',
+ date: '2020-05-07T17:00:00+00:00',
+ gdtEntryType: GdtEntryType.FORM,
+ },
+ {
+ id: 4,
+ amount: 100,
+ gdt: 110,
+ factor: 22,
+ comment: '',
+ date: '2020-04-10T13:28:00+00:00',
+ gdtEntryType: GdtEntryType.ELOPAGE_PUBLISHER,
+ },
+ ],
+ },
+ },
+ })
+ wrapper = Wrapper()
+ })
+
it('renders the component', () => {
expect(wrapper.find('div.gdt-transaction-list').exists()).toBeTruthy()
})
+ it('does not render the funding button ', () => {
+ expect(wrapper.find('.gdt-funding').exists()).toBe(false)
+ })
+
describe('server returns valid data', () => {
it('calls the API', async () => {
await wrapper.vm.$nextTick()
diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue
index e69e5edec..378aa3ece 100644
--- a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue
+++ b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue
@@ -1,21 +1,17 @@
-
-
+
+
{{ $t('gdt.no-transactions') }}
+
+
+ {{ $t('gdt.funding') }}
+
@@ -52,6 +49,7 @@ export default {
transactionGdtCount: { type: Number, default: 0 },
currentPage: 1,
pageSize: 25,
+ link: 'https://gradido.net/' + this.$store.state.language + '/memberships/',
}
},
methods: {
@@ -97,4 +95,8 @@ export default {
.nav-tabs .nav-item.show .nav-link {
background-color: #f8f9fe38;
}
+
+.gdt-transaction-list-item {
+ outline: none !important;
+}
diff --git a/frontend/src/views/Pages/SendOverview.spec.js b/frontend/src/views/Pages/SendOverview.spec.js
new file mode 100644
index 000000000..f28ec6126
--- /dev/null
+++ b/frontend/src/views/Pages/SendOverview.spec.js
@@ -0,0 +1,135 @@
+import { mount } from '@vue/test-utils'
+import SendOverview from './SendOverview'
+
+const sendMock = jest.fn()
+sendMock.mockResolvedValue('success')
+
+const localVue = global.localVue
+
+// window.scrollTo = jest.fn()
+
+describe('SendOverview', () => {
+ let wrapper
+
+ const propsData = {
+ balance: 123.45,
+ transactionCount: 1,
+ }
+
+ const mocks = {
+ $t: jest.fn((t) => t),
+ $n: jest.fn((n) => String(n)),
+ $store: {
+ state: {
+ email: 'sender@example.org',
+ },
+ },
+ $apollo: {
+ mutate: sendMock,
+ },
+ }
+
+ const Wrapper = () => {
+ return mount(SendOverview, { localVue, mocks, propsData })
+ }
+
+ describe('mount', () => {
+ beforeEach(() => {
+ wrapper = Wrapper()
+ })
+
+ it('has a status GDD line gdd-status-gdd', () => {
+ expect(wrapper.find('div.gdd-status-gdd').exists()).toBeTruthy()
+ })
+
+ it('has a send field', () => {
+ expect(wrapper.find('div.gdd-send').exists()).toBeTruthy()
+ })
+
+ // it('has a transactions table', () => {
+ // expect(wrapper.find('div.gdd-transaction-list').exists()).toBeTruthy()
+ // })
+
+ describe('transaction form', () => {
+ it('steps forward in the dialog', async () => {
+ await wrapper.findComponent({ name: 'TransactionForm' }).vm.$emit('set-transaction', {
+ email: 'user@example.org',
+ amount: 23.45,
+ memo: 'Make the best of it!',
+ })
+ expect(wrapper.findComponent({ name: 'TransactionConfirmation' }).exists()).toBeTruthy()
+ })
+ })
+
+ describe('confirm transaction', () => {
+ beforeEach(() => {
+ wrapper.setData({
+ currentTransactionStep: 1,
+ transactionData: {
+ email: 'user@example.org',
+ amount: 23.45,
+ memo: 'Make the best of it!',
+ },
+ })
+ })
+
+ it('resets the transaction process when on-reset is emitted', async () => {
+ await wrapper.findComponent({ name: 'TransactionConfirmation' }).vm.$emit('on-reset')
+ expect(wrapper.findComponent({ name: 'TransactionForm' }).exists()).toBeTruthy()
+ expect(wrapper.vm.transactionData).toEqual({
+ email: 'user@example.org',
+ amount: 23.45,
+ memo: 'Make the best of it!',
+ })
+ })
+
+ describe('transaction is confirmed and server response is success', () => {
+ beforeEach(async () => {
+ jest.clearAllMocks()
+ await wrapper
+ .findComponent({ name: 'TransactionConfirmation' })
+ .vm.$emit('send-transaction')
+ })
+
+ it('calls the API when send-transaction is emitted', async () => {
+ expect(sendMock).toBeCalledWith(
+ expect.objectContaining({
+ variables: {
+ email: 'user@example.org',
+ amount: 23.45,
+ memo: 'Make the best of it!',
+ },
+ }),
+ )
+ })
+
+ it('emits update-balance', () => {
+ expect(wrapper.emitted('update-balance')).toBeTruthy()
+ expect(wrapper.emitted('update-balance')).toEqual([[23.45]])
+ })
+
+ it('shows the succes page', () => {
+ expect(wrapper.find('div.card-body').text()).toContain('form.send_transaction_success')
+ })
+ })
+
+ describe('transaction is confirmed and server response is error', () => {
+ beforeEach(async () => {
+ jest.clearAllMocks()
+ sendMock.mockRejectedValue({ message: 'receiver not found' })
+ await wrapper
+ .findComponent({ name: 'TransactionConfirmation' })
+ .vm.$emit('send-transaction')
+ })
+
+ it('shows the error page', () => {
+ expect(wrapper.find('div.card-body').text()).toContain('form.send_transaction_error')
+ })
+
+ it('shows recipient not found', () => {
+ expect(wrapper.text()).toContain('transaction.receiverNotFound')
+ })
+ })
+ })
+ })
+})
diff --git a/frontend/src/views/Pages/SendOverview.vue b/frontend/src/views/Pages/SendOverview.vue
new file mode 100644
index 000000000..ee8537833
--- /dev/null
+++ b/frontend/src/views/Pages/SendOverview.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.spec.js b/frontend/src/views/Pages/SendOverview/GddSend.spec.js
similarity index 100%
rename from frontend/src/views/Pages/AccountOverview/GddSend.spec.js
rename to frontend/src/views/Pages/SendOverview/GddSend.spec.js
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/SendOverview/GddSend.vue
similarity index 100%
rename from frontend/src/views/Pages/AccountOverview/GddSend.vue
rename to frontend/src/views/Pages/SendOverview/GddSend.vue
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/QrCode.vue b/frontend/src/views/Pages/SendOverview/GddSend/QrCode.vue
similarity index 100%
rename from frontend/src/views/Pages/AccountOverview/GddSend/QrCode.vue
rename to frontend/src/views/Pages/SendOverview/GddSend/QrCode.vue
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionConfirmation.vue b/frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue
similarity index 100%
rename from frontend/src/views/Pages/AccountOverview/GddSend/TransactionConfirmation.vue
rename to frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.spec.js b/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.spec.js
similarity index 100%
rename from frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.spec.js
rename to frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.spec.js
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue b/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue
similarity index 100%
rename from frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue
rename to frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue
diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionResult.vue b/frontend/src/views/Pages/SendOverview/GddSend/TransactionResult.vue
similarity index 100%
rename from frontend/src/views/Pages/AccountOverview/GddSend/TransactionResult.vue
rename to frontend/src/views/Pages/SendOverview/GddSend/TransactionResult.vue
diff --git a/frontend/src/views/Pages/UserProfileTransactionList.vue b/frontend/src/views/Pages/UserProfileTransactionList.vue
index 5f52bb540..f9240008d 100644
--- a/frontend/src/views/Pages/UserProfileTransactionList.vue
+++ b/frontend/src/views/Pages/UserProfileTransactionList.vue
@@ -62,4 +62,8 @@ export default {
background-color: aquamarine;
font-size: larger;
}
+
+.nav-tabs > li > a {
+ outline: none !important;
+}
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 19fb8c4ab..c9f427f7a 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -1735,13 +1735,6 @@
dependencies:
"@babel/types" "^7.3.0"
-"@types/chart.js@^2.7.55":
- version "2.9.30"
- resolved "https://registry.yarnpkg.com/@types/chart.js/-/chart.js-2.9.30.tgz#34b99897f4f5ef0f74c8fe4ced70ac52b4d752dd"
- integrity sha512-EgjxUUZFvf6ls3kW2CwyrnSJhgyKxgwrlp/W5G9wqyPEO9iFatO63zAA7L24YqgMxiDjQ+tG7ODU+2yWH91lPg==
- dependencies:
- moment "^2.10.2"
-
"@types/d3@3.5.38":
version "3.5.38"
resolved "https://registry.yarnpkg.com/@types/d3/-/d3-3.5.38.tgz#76f8f2e9159ae562965b2fa0e6fbee1aa643a1bc"
@@ -3823,29 +3816,6 @@ chardet@^0.4.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
-chart.js@^2.9.3:
- version "2.9.4"
- resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.4.tgz#0827f9563faffb2dc5c06562f8eb10337d5b9684"
- integrity sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==
- dependencies:
- chartjs-color "^2.1.0"
- moment "^2.10.2"
-
-chartjs-color-string@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz#1df096621c0e70720a64f4135ea171d051402f71"
- integrity sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==
- dependencies:
- color-name "^1.0.0"
-
-chartjs-color@^2.1.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz#6118bba202fe1ea79dd7f7c0f9da93467296c3b0"
- integrity sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==
- dependencies:
- chartjs-color-string "^0.6.0"
- color-convert "^1.9.3"
-
check-types@^8.0.3:
version "8.0.3"
resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552"
@@ -4073,7 +4043,7 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3:
+color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -9620,7 +9590,7 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-moment@^2.10.2, moment@^2.19.2:
+moment@^2.19.2:
version "2.29.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
@@ -13469,13 +13439,6 @@ vue-bootstrap-typeahead@^0.2.6:
resize-observer-polyfill "^1.5.0"
vue "^2.5.17"
-vue-chartjs@^3.5.0:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/vue-chartjs/-/vue-chartjs-3.5.1.tgz#d25e845708f7744ae51bed9d23a975f5f8fc6529"
- integrity sha512-foocQbJ7FtveICxb4EV5QuVpo6d8CmZFmAopBppDIGKY+esJV8IJgwmEW0RexQhxqXaL/E1xNURsgFFYyKzS/g==
- dependencies:
- "@types/chart.js" "^2.7.55"
-
vue-cli-plugin-i18n@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/vue-cli-plugin-i18n/-/vue-cli-plugin-i18n-1.0.1.tgz#5a3077de5d62c9b4068e486db1fc97fce9fa0072"