Skip to content

Commit b03021d

Browse files
committed
Create event module
1 parent 5ff5c49 commit b03021d

File tree

5 files changed

+71
-65
lines changed

5 files changed

+71
-65
lines changed

src/store/modules/event.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import EventService from '@/services/EventService.js'
2+
3+
export const state = {
4+
events: [],
5+
eventsTotal: 0,
6+
event: {}
7+
}
8+
9+
export const mutations = {
10+
ADD_EVENT(state, event) {
11+
state.events.push(event)
12+
},
13+
SET_EVENTS(state, events) {
14+
state.events = events
15+
},
16+
SET_EVENTS_TOTAL(state, eventsTotal) {
17+
state.eventsTotal = eventsTotal
18+
},
19+
SET_EVENT(state, event) {
20+
state.event = event
21+
}
22+
}
23+
24+
export const actions = {
25+
createEvent({ commit }, event) {
26+
return EventService.postEvent(event).then(() => {
27+
commit('ADD_EVENT', event)
28+
})
29+
},
30+
fetchEvents({ commit }, { perPage, page }) {
31+
EventService.getEvents(perPage, page)
32+
.then(response => {
33+
commit('SET_EVENTS_TOTAL', parseInt(response.headers['x-total-count']))
34+
commit('SET_EVENTS', response.data)
35+
})
36+
.catch(error => {
37+
console.log('There was an error:', error.response)
38+
})
39+
},
40+
fetchEvent({ commit, getters }, id) {
41+
var event = getters.getEventById(id)
42+
43+
if (event) {
44+
commit('SET_EVENT', event)
45+
} else {
46+
EventService.getEvent(id)
47+
.then(response => {
48+
commit('SET_EVENT', response.data)
49+
})
50+
.catch(error => {
51+
console.log('There was an error:', error.response)
52+
})
53+
}
54+
}
55+
}
56+
export const getters = {
57+
getEventById: state => id => {
58+
return state.events.find(event => event.id === id)
59+
}
60+
}

src/store/store.js

Lines changed: 4 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import Vue from 'vue'
22
import Vuex from 'vuex'
3-
import EventService from '@/services/EventService.js'
43
import * as user from '@/store/modules/user.js'
4+
import * as event from '@/store/modules/event.js'
55

66
Vue.use(Vuex)
77

88
export default new Vuex.Store({
99
modules: {
10-
user
10+
user,
11+
event
1112
},
1213
state: {
1314
categories: [
@@ -18,63 +19,6 @@ export default new Vuex.Store({
1819
'education',
1920
'food',
2021
'community'
21-
],
22-
events: [],
23-
eventsTotal: 0,
24-
event: {}
25-
},
26-
mutations: {
27-
ADD_EVENT(state, event) {
28-
state.events.push(event)
29-
},
30-
SET_EVENTS(state, events) {
31-
state.events = events
32-
},
33-
SET_EVENTS_TOTAL(state, eventsTotal) {
34-
state.eventsTotal = eventsTotal
35-
},
36-
SET_EVENT(state, event) {
37-
state.event = event
38-
}
39-
},
40-
actions: {
41-
createEvent({ commit }, event) {
42-
return EventService.postEvent(event).then(() => {
43-
commit('ADD_EVENT', event)
44-
})
45-
},
46-
fetchEvents({ commit }, { perPage, page }) {
47-
EventService.getEvents(perPage, page)
48-
.then(response => {
49-
commit(
50-
'SET_EVENTS_TOTAL',
51-
parseInt(response.headers['x-total-count'])
52-
)
53-
commit('SET_EVENTS', response.data)
54-
})
55-
.catch(error => {
56-
console.log('There was an error:', error.response)
57-
})
58-
},
59-
fetchEvent({ commit, getters }, id) {
60-
var event = getters.getEventById(id)
61-
62-
if (event) {
63-
commit('SET_EVENT', event)
64-
} else {
65-
EventService.getEvent(id)
66-
.then(response => {
67-
commit('SET_EVENT', response.data)
68-
})
69-
.catch(error => {
70-
console.log('There was an error:', error.response)
71-
})
72-
}
73-
}
74-
},
75-
getters: {
76-
getEventById: state => id => {
77-
return state.events.find(event => event.id === id)
78-
}
22+
]
7923
}
8024
})

src/views/EventCreate.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export default {
7878
})
7979
},
8080
createFreshEventObject() {
81-
const user = this.$store.state.user
81+
const user = this.$store.state.user.user
8282
const id = Math.floor(Math.random() * 10000000)
8383
8484
return {

src/views/EventList.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div>
33
<h1>Events for {{ user.user.name }}</h1>
4-
<EventCard v-for="event in events" :key="event.id" :event="event"/>
4+
<EventCard v-for="event in event.events" :key="event.id" :event="event"/>
55
<template v-if="page != 1">
66
<router-link :to="{ name: 'event-list', query: { page: page - 1 } }" rel="prev">
77
Prev Page</router-link>
@@ -34,9 +34,9 @@ export default {
3434
return parseInt(this.$route.query.page) || 1
3535
},
3636
hasNextPage() {
37-
return this.eventsTotal > this.page * this.perPage
37+
return this.event.eventsTotal > this.page * this.perPage
3838
},
39-
...mapState(['events', 'eventsTotal', 'user'])
39+
...mapState(['event', 'eventsTotal', 'user'])
4040
}
4141
}
4242
</script>

src/views/EventShow.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ export default {
3232
created() {
3333
this.$store.dispatch('fetchEvent', this.id)
3434
},
35-
computed: mapState(['event'])
35+
computed: mapState({
36+
event: state => state.event.event
37+
})
3638
}
3739
</script>
3840
<style scoped>

0 commit comments

Comments
 (0)