1
1
import * as React from "react" ;
2
2
import Slider from "rc-slider" ;
3
3
import { countBy , debounce , zipObject } from "lodash" ;
4
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" ;
5
+ import { faCalendarCheck } from "@fortawesome/free-solid-svg-icons" ;
4
6
import { formatReleaseDate , useMediaQuery } from "../utils" ;
5
7
import { SortDirection } from "../FreshReleases" ;
6
8
@@ -15,7 +17,7 @@ function createMarks(
15
17
sortDirection : string ,
16
18
order : string
17
19
) {
18
- let dataArr : Array < string > = [ ] ;
20
+ let dataArr : Array < React . ReactNode > = [ ] ;
19
21
let percentArr : Array < number > = [ ] ;
20
22
// We want to filter out the keys that have less than 1.5% of the total releases
21
23
const minReleasesThreshold = Math . floor ( releases . length * 0.015 ) ;
@@ -24,11 +26,26 @@ function createMarks(
24
26
releases ,
25
27
( item : FreshReleaseItem ) => item . release_date
26
28
) ;
27
- const filteredDates = Object . keys ( releasesPerDate ) . filter (
28
- ( date ) => releasesPerDate [ date ] >= minReleasesThreshold
29
+ const today = new Date ( ) ;
30
+ const todayString = today . toISOString ( ) . split ( "T" ) [ 0 ] ;
31
+ const formattedTodayString = formatReleaseDate ( todayString ) ;
32
+ const filteredDates = Object . keys ( releasesPerDate ) . filter ( ( date ) =>
33
+ date !== todayString
34
+ ? releasesPerDate [ date ] >= minReleasesThreshold
35
+ : releasesPerDate [ date ] > 0
29
36
) ;
30
37
31
- dataArr = filteredDates . map ( ( item ) => formatReleaseDate ( item ) ) ;
38
+ dataArr = filteredDates . map ( ( item ) =>
39
+ formatReleaseDate ( item ) === formattedTodayString ? (
40
+ < FontAwesomeIcon
41
+ icon = { faCalendarCheck }
42
+ size = "2xl"
43
+ style = { { color : "#353070" } }
44
+ />
45
+ ) : (
46
+ formatReleaseDate ( item )
47
+ )
48
+ ) ;
32
49
percentArr = filteredDates
33
50
. map ( ( item ) => ( releasesPerDate [ item ] / releases . length ) * 100 )
34
51
. map ( ( _ , index , arr ) =>
@@ -103,7 +120,9 @@ export default function ReleaseTimeline(props: ReleaseTimelineProps) {
103
120
const { releases, order, direction } = props ;
104
121
105
122
const [ currentValue , setCurrentValue ] = React . useState < number | number [ ] > ( ) ;
106
- const [ marks , setMarks ] = React . useState < { [ key : number ] : string } > ( { } ) ;
123
+ const [ marks , setMarks ] = React . useState < { [ key : number ] : React . ReactNode } > (
124
+ { }
125
+ ) ;
107
126
108
127
const screenMd = useMediaQuery ( "(max-width: 992px)" ) ; // @screen -md
109
128
0 commit comments