11import { type ScrollbarOverviewItem } from "./state"
22
33import { formatDate } from '../../utils/format'
4+ import { FormatUtils } from "../../utils/FormatUtils"
45
56const isInDateOrder = items => {
67 const isDesc = items [ 0 ] . date > items [ items . length - 1 ] . date
@@ -17,7 +18,7 @@ const isInDateOrder = items => {
1718const HOUR_MS = 1000 * 60 * 60
1819const DAY_MS = HOUR_MS * 24
1920
20- const setDateValue = items => {
21+ const setDateValue = ( items , format : FormatUtils ) => {
2122 const firstDate = new Date ( items [ 0 ] . date )
2223 const lastDate = new Date ( items [ items . length - 1 ] . date )
2324 const diff = Math . abs ( lastDate . getTime ( ) - firstDate . getTime ( ) )
@@ -26,15 +27,15 @@ const setDateValue = items => {
2627
2728 let dateValueFn : ( date : Date ) => string
2829 if ( hourDiff < 6 ) {
29- dateValueFn = date => formatDate ( '%H:%M:%S' , date )
30+ dateValueFn = date => formatDate ( format . time || '%H:%M:%S' , date )
3031 } else if ( hourDiff <= 24 ) {
31- dateValueFn = date => formatDate ( '%H:%M' , date )
32+ dateValueFn = date => formatDate ( format . hourMinute || '%H:%M' , date )
3233 } else if ( dayDiff < 90 ) {
33- dateValueFn = date => formatDate ( '%d.%m.%y' , date )
34+ dateValueFn = date => formatDate ( format . date || '%d.%m.%y' , date )
3435 } else if ( dayDiff < 700 ) {
35- dateValueFn = date => formatDate ( '%b %Y' , date )
36+ dateValueFn = date => formatDate ( format . monthYear || '%b %Y' , date )
3637 } else {
37- dateValueFn = date => formatDate ( '%Y' , date )
38+ dateValueFn = date => formatDate ( format . year || '%Y' , date )
3839 }
3940
4041 items . forEach ( item => item . dateValue = dateValueFn ( item . date ) )
@@ -47,15 +48,15 @@ export interface TopDateItem {
4748 dateValue : string
4849}
4950
50- export const overviewItemMapper = ( topDateItems : TopDateItem [ ] , viewHeight : number , padding : number ) : [ ScrollbarOverviewItem [ ] , ( number ) => string ] => {
51+ export const overviewItemMapper = ( topDateItems : TopDateItem [ ] , viewHeight : number , padding : number , format : FormatUtils = { } ) : [ ScrollbarOverviewItem [ ] , ( number ) => string ] => {
5152 if ( ! topDateItems . length ) {
5253 return [ [ ] , ( ) => '' ]
5354 }
5455
5556 if ( ! isInDateOrder ( topDateItems ) ) {
5657 return [ [ ] , ( ) => '' ]
5758 }
58- setDateValue ( topDateItems )
59+ setDateValue ( topDateItems , format )
5960
6061 const lastItem = topDateItems [ topDateItems . length - 1 ]
6162 const maxTop = ( lastItem . top + lastItem . height ) - viewHeight
@@ -91,7 +92,7 @@ export const overviewItemMapper = (topDateItems: TopDateItem[], viewHeight: numb
9192
9293 const detailTextFn = ( scrollTop ) => {
9394 const lastItem = topDateItems . filter ( item => item . top <= scrollTop ) . pop ( )
94- return `${ lastItem ?. date ? formatDate ( '%d.%m.%y' , lastItem ?. date ) : '' } `
95+ return `${ lastItem ?. date ? formatDate ( format . date || '%d.%m.%y' , lastItem ?. date ) : '' } `
9596 }
9697
9798 return [ overviewItems , detailTextFn ]
0 commit comments