File tree Expand file tree Collapse file tree 7 files changed +49
-37
lines changed Expand file tree Collapse file tree 7 files changed +49
-37
lines changed Original file line number Diff line number Diff line change 11import EventList from '@sections/EventList/EventList.vue' ;
22import AddEvent from '@modals/AddEvent/AddEvent.vue' ;
3- import { get , set } from '@/utils/storage' ;
3+ import { get } from '@/utils/storage' ;
44
55export default {
66 name : 'App' ,
@@ -10,35 +10,29 @@ export default {
1010 AddEvent,
1111 } ,
1212
13- data ( ) {
14- return {
15- events : [ ] ,
16- } ;
17- } ,
18-
1913 methods : {
20- onAddEvent ( event ) {
21- this . events . push ( event ) ;
22- set ( 'events' , this . events ) ;
23- } ,
24-
2514 openAddEvent ( ) {
2615 this . $refs . addEvent . open ( ) ;
2716 } ,
28-
29- onRemoveEvent ( eventId ) {
30- const index = this . events . findIndex ( event => event . eventId === eventId ) ;
31- this . events . splice ( index , 1 ) ;
32- set ( 'events' , this . events ) ;
33- } ,
3417 } ,
3518
3619 created ( ) {
3720 const events = get ( 'events' ) || [ ] ;
3821
3922 events . forEach ( ( event ) => {
4023 event . eventDate = new Date ( event . eventDate ) ;
41- this . events . push ( event ) ;
4224 } ) ;
25+
26+ this . $store . dispatch ( 'setEvents' , events ) ;
27+
28+ this . $store . subscribe ( ( mutation ) => {
29+ if ( [ 'ADD_EVENT' , 'REMOVE_EVENT' ] . includes ( mutation . type ) ) {
30+ this . $store . dispatch ( 'syncEvents' ) ;
31+ }
32+ } ) ;
33+ } ,
34+
35+ destroyed ( ) {
36+
4337 } ,
4438} ;
Original file line number Diff line number Diff line change 11<template >
22 <div class =" c-app" >
3- <event-list
4- :events =" events"
5- @remove-event =" onRemoveEvent" />
3+ <event-list />
64 <div
75 class =" c-app__add-event-button"
86 @click =" openAddEvent" >Add Event</div >
9- <add-event
10- ref =" addEvent"
11- @add =" onAddEvent" />
7+ <add-event ref =" addEvent" />
128 </div >
139</template >
1410<script src="./App.js "></script >
Original file line number Diff line number Diff line change @@ -44,7 +44,7 @@ export default {
4444 const date = new Date ( this . eventDate ) ;
4545 const eventId = this . generateEventId ( ) ;
4646
47- this . $emit ( 'add ', {
47+ this . $store . dispatch ( 'addEvent ', {
4848 eventId,
4949 eventName : this . eventName ,
5050 eventDate : date ,
Original file line number Diff line number Diff line change @@ -73,7 +73,7 @@ export default {
7373 } ,
7474
7575 onClickRemove ( ) {
76- this . $emit ( 'remove-event ', this . eventId ) ;
76+ this . $store . dispatch ( 'removeEvent ', this . eventId ) ;
7777 } ,
7878 } ,
7979} ;
Original file line number Diff line number Diff line change @@ -3,17 +3,16 @@ import Event from '@sections/Event/Event.vue';
33export default {
44 name : 'EventList' ,
55
6- props : {
7- events : {
8- type : Array ,
9- required : true ,
10- } ,
11- } ,
12-
136 components : {
147 Event,
158 } ,
169
10+ computed : {
11+ events ( ) {
12+ return this . $store . state . events ;
13+ } ,
14+ } ,
15+
1716 methods : {
1817 onRemoveEvent ( id ) {
1918 this . $emit ( 'remove-event' , id ) ;
Original file line number Diff line number Diff line change 66 :event-id =" event.eventId"
77 :event-name =" event.eventName"
88 :event-date =" event.eventDate"
9- :background =" event.background"
10- @remove-event =" onRemoveEvent" />
9+ :background =" event.background" />
1110 </div >
1211</template >
1312<script src="./EventList.js "></script >
Original file line number Diff line number Diff line change 11import Vue from 'vue' ;
22import Vuex from 'vuex' ;
3+ import { set } from '@/utils/storage' ;
34
45Vue . use ( Vuex ) ;
56
67export default new Vuex . Store ( {
78 state : {
8-
9+ events : [ ] ,
910 } ,
11+
1012 mutations : {
13+ ADD_EVENT ( state , event ) {
14+ state . events . push ( event ) ;
15+ } ,
1116
17+ REMOVE_EVENT ( state , eventId ) {
18+ const index = state . events . findIndex ( event => event . eventId === eventId ) ;
19+ state . events . splice ( index , 1 ) ;
20+ } ,
1221 } ,
22+
1323 actions : {
24+ setEvents ( { commit } , events ) {
25+ events . forEach ( event => commit ( 'ADD_EVENT' , event ) ) ;
26+ } ,
27+
28+ addEvent ( { commit } , event ) {
29+ commit ( 'ADD_EVENT' , event ) ;
30+ } ,
31+
32+ removeEvent ( { commit } , eventId ) {
33+ commit ( 'REMOVE_EVENT' , eventId ) ;
34+ } ,
1435
36+ syncEvents ( { state } ) {
37+ set ( 'events' , state . events ) ;
38+ } ,
1539 } ,
1640} ) ;
You can’t perform that action at this time.
0 commit comments