@@ -12,60 +12,62 @@ async function exportTime(url) {
12
12
}
13
13
14
14
export function lastChange ( data , field ) {
15
-
16
- const lastLastValue = data . slice ( ) . reverse ( ) . find ( row => {
17
- return row [ field ]
18
- } )
19
-
20
- if ( ! lastLastValue ) {
21
- return {
22
- lastDay : {
23
- date : new Date ( ) ,
24
- value : 0 ,
25
- diff : 0 ,
26
- percentDiff : 0
27
- } ,
28
- dayBefore : {
29
- date : new Date ( ) ,
30
- value : 0 ,
31
- diff : 0 ,
32
- percentDiff : 0
33
- } ,
15
+
16
+ const result = {
17
+ lastDay : {
18
+ date : new Date ( ) ,
19
+ fistDate : undefined ,
20
+ value : undefined ,
21
+ diff : undefined ,
22
+ percentDiff : undefined
23
+ } ,
24
+ dayBefore : {
25
+ date : new Date ( ) ,
26
+ fistDate : undefined ,
27
+ value : undefined ,
28
+ diff : undefined ,
29
+ percentDiff : undefined
30
+ } ,
31
+ day2Before : {
32
+ date : new Date ( ) ,
33
+ value : undefined ,
34
34
}
35
35
}
36
36
37
- const lastValue = data . slice ( ) . reverse ( ) . find ( row => {
38
- return row [ field ] == lastLastValue [ field ]
39
- } )
40
37
41
- const previousValue = data . slice ( ) . reverse ( ) . find ( row => {
42
- return row [ field ] != lastValue [ field ] && Date . parse ( row [ 'date' ] ) < Date . parse ( lastValue [ 'date' ] )
43
- } )
44
- const prePreviousValue = data . slice ( ) . reverse ( ) . find ( row => {
45
- return row [ field ] != previousValue [ field ] && Date . parse ( row [ 'date' ] ) < Date . parse ( previousValue [ 'date' ] )
46
- } )
38
+ // result.lastDay.date = new Date(data[data.length - 1]['date'])
39
+ // result.lastDay.value = data[data.length - 1][field]
47
40
48
- const lastDayValue = lastValue [ field ] || null
49
- const dayBeforeValue = previousValue [ field ] || null
41
+ let i = data . length
50
42
51
- const lastDayDiff = lastValue [ field ] - previousValue [ field ]
52
- const dayBeforeDiff = previousValue [ field ] - prePreviousValue [ field ]
53
-
54
- const lastDayPercentDiff = lastDayDiff != 0 ? Math . round ( ( lastDayDiff / dayBeforeValue ) * 1000 ) / 10 : 0
43
+ while ( i > 0 && data [ i ] [ field ] == null ) i --
44
+ result . lastDay . date = new Date ( data [ i ] [ 'date' ] )
45
+ result . lastDay . value = data [ i ] [ field ]
55
46
56
- return {
57
- lastDay : {
58
- date : lastValue ? new Date ( Date . parse ( lastValue . date ) ) : null ,
59
- value : lastDayValue ,
60
- diff : lastDayDiff ,
61
- percentDiff : lastDayPercentDiff ,
62
- } ,
63
- dayBefore : {
64
- date : previousValue ? new Date ( Date . parse ( previousValue . date ) ) : null ,
65
- value : dayBeforeValue ,
66
- diff : dayBeforeDiff ,
67
- }
68
- }
47
+ while ( i > 0 && result . lastDay . value === data [ i ] [ field ] ) i --
48
+ result . lastDay . fistDate = new Date ( data [ i + 1 ] [ 'date' ] )
49
+
50
+ while ( i > 0 && data [ i ] [ field ] == null ) i --
51
+ result . dayBefore . date = new Date ( data [ i ] [ 'date' ] )
52
+ result . dayBefore . value = data [ i ] [ field ]
53
+
54
+ while ( i > 0 && result . dayBefore . value === data [ i ] [ field ] ) i --
55
+ result . dayBefore . fistDate = new Date ( data [ i + 1 ] [ 'date' ] )
56
+
57
+ while ( i > 0 && data [ i ] [ field ] == null ) i --
58
+ result . day2Before . date = new Date ( data [ i ] [ 'date' ] )
59
+ result . day2Before . value = data [ i ] [ field ]
60
+
61
+ // while(i > 0 && result.dayBefore.value === data[i][field]) i--
62
+ // result.day2Before.fistDate = new Date(data[i+1]['date'])
63
+
64
+ result . lastDay . diff = result . lastDay . value - result . dayBefore . value
65
+ result . lastDay . percentDiff = result . dayBefore . value ? Math . round ( ( result . lastDay . diff / result . dayBefore . value ) * 1000 ) / 10 : 0
66
+
67
+ result . dayBefore . diff = result . dayBefore . value - result . day2Before . value
68
+ result . dayBefore . percentDiff = result . day2Before . value ? Math . round ( ( result . dayBefore . diff / result . day2Before . value ) * 1000 ) / 10 : 0
69
+
70
+ return result
69
71
}
70
72
71
73
const statsStore = {
@@ -88,7 +90,7 @@ const statsStore = {
88
90
return { }
89
91
}
90
92
let searchResult = getters . data . find ( day => {
91
- return new Date ( Date . parse ( day . date ) ) . setHours ( 0 , 0 , 0 , 0 ) === date . getTime ( )
93
+ return new Date ( Date . parse ( day . date ) ) . setHours ( 0 , 0 , 0 , 0 ) === date . getTime ( )
92
94
} )
93
95
return { date, value : searchResult ? searchResult [ field ] : null }
94
96
} ,
@@ -168,7 +170,7 @@ const hospitalsStore = {
168
170
return { }
169
171
}
170
172
let searchResult = getters . data . find ( day => {
171
- return new Date ( Date . parse ( day . date ) ) . setHours ( 0 , 0 , 0 , 0 ) === date . getTime ( )
173
+ return new Date ( Date . parse ( day . date ) ) . setHours ( 0 , 0 , 0 , 0 ) === date . getTime ( )
172
174
} )
173
175
return { date, value : searchResult ? searchResult [ field ] : null }
174
176
} ,
@@ -195,7 +197,7 @@ const hospitalsStore = {
195
197
} ) ;
196
198
return row
197
199
} ) ;
198
-
200
+
199
201
200
202
let hospitals = { }
201
203
let rawData = await d3 . csv ( "https://raw.githubusercontent.com/slo-covid-19/data/master/csv/dict-hospitals.csv" )
0 commit comments