refactor(frontend): community routes

This commit is contained in:
Moriz Wahl 2023-02-17 09:48:05 +01:00
parent b3b84fca36
commit 86742d0158
6 changed files with 304 additions and 288 deletions

View File

@ -2,19 +2,19 @@
<div class="nav-community container"> <div class="nav-community container">
<b-row class="nav-row"> <b-row class="nav-row">
<b-col cols="12" lg="4" md="4" class="px-0"> <b-col cols="12" lg="4" md="4" class="px-0">
<b-btn active-class="btn-active" block variant="link" to="/community#edit"> <b-btn active-class="btn-active" block variant="link" @click="handleClick(0)">
<b-icon icon="pencil" class="mr-2" /> <b-icon icon="pencil" class="mr-2" />
{{ $t('community.submitContribution') }} {{ $t('community.submitContribution') }}
</b-btn> </b-btn>
</b-col> </b-col>
<b-col cols="12" lg="4" md="4" class="px-0"> <b-col cols="12" lg="4" md="4" class="px-0">
<b-btn active-class="btn-active" block variant="link" to="/community#my"> <b-btn active-class="btn-active" block variant="link" @click="handleClick(1)">
<b-icon icon="person" class="mr-2" /> <b-icon icon="person" class="mr-2" />
{{ $t('community.myContributions') }} {{ $t('community.myContributions') }}
</b-btn> </b-btn>
</b-col> </b-col>
<b-col cols="12" lg="4" md="4" class="px-0"> <b-col cols="12" lg="4" md="4" class="px-0">
<b-btn active-class="btn-active" block variant="link" to="/community#all"> <b-btn active-class="btn-active" block variant="link" @click="handleClick(2)">
<b-icon icon="people" class="mr-2" /> <b-icon icon="people" class="mr-2" />
{{ $t('community.community') }} {{ $t('community.community') }}
</b-btn> </b-btn>
@ -25,6 +25,19 @@
<script> <script>
export default { export default {
name: 'NavCommunity', name: 'NavCommunity',
methods: {
handleClick(tab) {
console.log('handleClick', tab)
if (this.$route.params && this.$route.params.tab && Number(this.$route.params.tab) !== tab) {
this.$router.push({ params: { tab } })
}
},
},
watch: {
'$route.params.tab'(tab) {
this.handleClick(tab)
},
},
} }
</script> </script>
<style scoped> <style scoped>

View File

@ -71,6 +71,12 @@ export default {
hash() { hash() {
return this.$route.hash return this.$route.hash
}, },
currentTab() {
console.log('ROUTE', this.$route)
if (this.$route.from && this.$route.from.params && this.$route.from.params.tab)
return this.$route.from.params.tab
return 0
},
}, },
} }
</script> </script>

View File

@ -9,7 +9,8 @@ export default {
name: 'ContentHeader', name: 'ContentHeader',
computed: { computed: {
path() { path() {
return this.$route.path.replace(/^\//, '') console.log('ContentHeader', this.$route.path.replace(/^\/(.+?)(\/.+)?$/, '$1'))
return this.$route.path.replace(/^\/(.+?)(\/.+)?$/, '$1')
}, },
}, },
} }

View File

@ -10,10 +10,12 @@ export default {
name: 'RightSide', name: 'RightSide',
computed: { computed: {
name() { name() {
switch (this.$route.path.replace(/^\//, '')) { console.log('RightSide', this.$route.path.replace(/^\/(.+?)(\/.+)?$/, '$1'))
switch (this.$route.path.replace(/^\/(.+?)(\/.+)?$/, '$1')) {
case 'settings': case 'settings':
return 'empty' return 'empty'
case 'community': case 'community':
console.log('-----------')
return 'community' return 'community'
default: default:
return 'transactions' return 'transactions'

View File

@ -73,9 +73,7 @@ export default {
}, },
data() { data() {
return { return {
hashLink: '', tabIndex: 1,
tabLinkHashes: ['#edit', '#my', '#all'],
tabIndex: 0,
items: [], items: [],
itemsAll: [], itemsAll: [],
currentPage: 1, currentPage: 1,
@ -97,10 +95,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.$nextTick(() => { this.updateTabIndex(Number(this.$route.params.tab))
this.tabIndex = this.tabLinkHashes.findIndex((hashLink) => hashLink === this.$route.hash)
this.hashLink = this.$route.hash
})
}, },
apollo: { apollo: {
OpenCreations: { OpenCreations: {
@ -153,9 +148,6 @@ export default {
this.items = listContributions.contributionList this.items = listContributions.contributionList
if (this.items.find((item) => item.state === 'IN_PROGRESS')) { if (this.items.find((item) => item.state === 'IN_PROGRESS')) {
this.tabIndex = 1 this.tabIndex = 1
if (this.$route.hash !== '#my') {
this.$router.push({ path: '/community#my' })
}
this.toastInfo(this.$t('contribution.alert.answerQuestionToast')) this.toastInfo(this.$t('contribution.alert.answerQuestionToast'))
} }
}, },
@ -165,21 +157,8 @@ export default {
}, },
}, },
watch: { watch: {
$route(to, from) { '$route.params.tab'(tab) {
this.tabIndex = this.tabLinkHashes.findIndex((hashLink) => hashLink === to.hash) this.updateTabIndex(tab)
this.hashLink = to.hash
this.closeAllOpenCollapse()
},
tabIndex(num) {
if (num !== 0) {
this.form = {
id: null,
date: new Date(),
memo: '',
hours: 0,
amount: '',
}
}
}, },
}, },
computed: { computed: {
@ -211,6 +190,13 @@ export default {
}, },
}, },
methods: { methods: {
updateTabIndex(tab) {
console.log('updateTabIndex', tab)
if (Number(tab) !== this.tabIndex) {
this.tabIndex = Number(tab)
this.closeAllOpenCollapse()
}
},
closeAllOpenCollapse() { closeAllOpenCollapse() {
this.$el.querySelectorAll('.collapse.show').forEach((value) => { this.$el.querySelectorAll('.collapse.show').forEach((value) => {
this.$root.$emit('bv::toggle::collapse', value.id) this.$root.$emit('bv::toggle::collapse', value.id)
@ -294,7 +280,6 @@ export default {
this.form.amount = item.amount this.form.amount = item.amount
this.form.hours = item.amount / 20 this.form.hours = item.amount / 20
this.updateAmount = item.amount this.updateAmount = item.amount
this.$router.push({ path: '#edit' })
this.tabIndex = 0 this.tabIndex = 0
}, },
updateTransactions(pagination) { updateTransactions(pagination) {
@ -306,8 +291,6 @@ export default {
}, },
created() { created() {
this.updateTransactions(0) this.updateTransactions(0)
this.tabIndex = 0
this.$router.push({ path: '/community#edit' })
}, },
} }
</script> </script>

View File

@ -58,6 +58,17 @@ const routes = [
requiresAuth: true, requiresAuth: true,
pageTitle: 'community', pageTitle: 'community',
}, },
redirect: (to) => {
return { path: '/community/1' }
},
},
{
path: '/community/:tab',
component: () => import('@/pages/Community.vue'),
meta: {
requiresAuth: true,
pageTitle: 'community',
},
}, },
{ {
path: '/information', path: '/information',