@@ -3,11 +3,11 @@ import axios from 'axios'
33import dateAndTime from 'date-and-time'
44
55const DEFAULT_DAYS_INTERVAL = 45 ;
6- const START_DATE = dateAndTime . addDays ( new Date ( ) , - DEFAULT_DAYS_INTERVAL )
7- const FINISH_DATE = dateAndTime . addDays ( new Date ( ) , DEFAULT_DAYS_INTERVAL )
6+ const today = new Date ( ) ; today . setHours ( 0 ) ; today . setMinutes ( 0 ) ; today . setSeconds ( 0 )
7+ const START_DATE = dateAndTime . addDays ( today , - DEFAULT_DAYS_INTERVAL )
8+ const FINISH_DATE = dateAndTime . addDays ( today , DEFAULT_DAYS_INTERVAL )
89const format = ( date ) => dateAndTime . format ( date , 'YYYY-MM-DD' ) ;
910
10-
1111export default {
1212 namespaced : true ,
1313 state : {
@@ -18,18 +18,47 @@ export default {
1818 } ,
1919 getters : {
2020 values : ( state ) => state . computed || [ ] ,
21+ dates : ( state ) => [ ...Array ( dateAndTime . subtract ( state . end , state . start ) . toDays ( ) + 1 ) . keys ( ) ]
22+ . map ( x => dateAndTime . addDays ( state . start , x ) ) ,
23+ byDates : ( state , getters ) => state . computed ? getters . dates . reduce ( ( current , val ) => {
24+ const key = format ( val ) ;
25+ current [ key ] = state . computed . filter ( x => dateAndTime . isSameDay ( val , new Date ( x . dateTime . value ) ) ) ;
26+ return current ;
27+ } , { } ) : { }
2128 } ,
2229 mutations : {
2330 retrieve : ( state , start , end ) => {
31+ state . start = start || state . start ;
32+ state . end = end || state . end ;
2433 const req = endpoints . occurencies ( format ( state . start ) , format ( state . end ) )
25- state . loading = true ;
26- axios . get ( req )
27- . then ( response => {
28- state . computed = response . data
29- console . log ( state . computed )
30- } )
31- . catch ( err => console . error ( `Retrieving occurencies error:` , err ) ) ;
34+ getOccurencies ( state , req ) ;
35+ } ,
36+ retrievePrevious : ( state , start ) => {
37+ const reqRight = dateAndTime . addDays ( state . start , - 1 ) ;
38+ state . start = start || dateAndTime . addDays ( state . start , - DEFAULT_DAYS_INTERVAL ) ;
39+ const req = endpoints . occurencies ( format ( state . start ) , format ( reqRight ) ) ;
40+ getOccurencies ( state , req , ( state , data ) => {
41+ state . unshift ( ...data ) ;
42+ } ) ;
43+ } ,
44+ retrieveNext : ( state , end ) => {
45+ const reqLeft = dateAndTime . addDays ( state . end , 1 ) ;
46+ state . end = end || dateAndTime . addDays ( state . end , DEFAULT_DAYS_INTERVAL ) ;
47+ const req = endpoints . occurencies ( format ( reqLeft ) , format ( state . end ) ) ;
48+ getOccurencies ( state , req , ( state , data ) => {
49+ state . push ( ...data ) ;
50+ } ) ;
3251 } ,
3352 clear : ( state ) => state . computed = null
3453 }
54+ }
55+
56+ function getOccurencies ( state , req , transformState = ( state , data ) => { state . computed = data } ) {
57+ state . loading = true ;
58+ axios . get ( req )
59+ . then ( response => {
60+ transformState ( state , response . data ) ;
61+ state . loading = false ;
62+ } )
63+ . catch ( err => console . error ( `Retrieving occurencies error:` , err ) ) ;
3564}
0 commit comments