@@ -2,11 +2,12 @@ import { ElDatePicker, ElOption, ElSelect, ElSwitch } from "element-plus"
22import { ref , Ref , h } from "vue"
33import { daysAgo } from "../../../util/time"
44import { t } from "../../locale"
5- import { PeriodMessage } from "../../locale/components/period"
5+ import { HabitMessage } from "../../locale/components/habit"
6+ import { renderFilterContainer , switchFilterItem } from "../common/filter"
67
7- const datePickerShortcut = ( msg : keyof PeriodMessage [ 'dateRange' ] , agoOfStart : number ) => {
8+ const datePickerShortcut = ( msg : keyof HabitMessage [ 'dateRange' ] , agoOfStart : number ) => {
89 return {
9- text : t ( messages => messages . period . dateRange [ msg ] ) ,
10+ text : t ( messages => messages . habit . dateRange [ msg ] ) ,
1011 value : daysAgo ( agoOfStart , 0 )
1112 }
1213}
@@ -21,7 +22,7 @@ export type FilterProps = _Props
2122
2223const trenderSearchingRef : Ref < boolean > = ref ( false )
2324
24- const options : { [ size : string ] : keyof PeriodMessage [ 'sizes' ] } = {
25+ const options : { [ size : string ] : keyof HabitMessage [ 'sizes' ] } = {
2526 1 : 'fifteen' ,
2627 2 : 'halfHour' ,
2728 4 : 'hour' ,
@@ -30,7 +31,7 @@ const options: { [size: string]: keyof PeriodMessage['sizes'] } = {
3031
3132// Period size select
3233const selectOptions = ( ) => Object . entries ( options )
33- . map ( ( [ size , msg ] ) => h ( ElOption , { label : t ( root => root . period . sizes [ msg ] ) , value : size } ) )
34+ . map ( ( [ size , msg ] ) => h ( ElOption , { label : t ( root => root . habit . sizes [ msg ] ) , value : size } ) )
3435const periodSizeSelect = ( periodSizeRef : Ref < string > ) => h ( ElSelect ,
3536 {
3637 placeholder : t ( msg => msg . trender . hostPlaceholder ) ,
@@ -41,7 +42,7 @@ const periodSizeSelect = (periodSizeRef: Ref<string>) => h(ElSelect,
4142 onChange : ( val : string ) => periodSizeRef . value = val ,
4243 } , selectOptions )
4344
44- type ShortCutProp = [ label : keyof PeriodMessage [ 'dateRange' ] , dayAgo : number ]
45+ type ShortCutProp = [ label : keyof HabitMessage [ 'dateRange' ] , dayAgo : number ]
4546const shortcutProps : ShortCutProp [ ] = [
4647 [ 'latestDay' , 1 ] ,
4748 [ 'latest3Days' , 3 ] ,
@@ -69,29 +70,17 @@ const picker = (dateRangeRef: Ref<Date[]>) => h(ElDatePicker, {
6970} )
7071const datePickerItem = ( dateRangeRef : Ref < Date [ ] > ) => h ( 'span' , { class : 'filter-item' } , picker ( dateRangeRef ) )
7172
72- const averageName = ( ) => h ( 'a' , { class : 'filter-name' } , t ( msg => msg . period . average . label ) )
73- const averageSwitch = ( averageRef : Ref < boolean > ) => h ( ElSwitch ,
74- {
75- class : 'filter-item' ,
76- modelValue : averageRef . value ,
77- onChange : ( val : boolean ) => averageRef . value = val
78- }
79- )
80-
81- const filterContainer = ( {
73+ const childNodes = ( {
8274 dateRangeRef,
8375 periodSizeRef,
8476 averageRef
85- } : _Props ) => h ( 'div' ,
86- { class : 'filter-container' } ,
87- [
77+ } : _Props ) => [
8878 // Size select
8979 periodSizeSelect ( periodSizeRef ) ,
9080 // Date range picker
9181 datePickerItem ( dateRangeRef ) ,
9282 // Average by date
93- averageName ( ) , averageSwitch ( averageRef )
83+ ... switchFilterItem ( averageRef , msg => msg . habit . average . label )
9484 ]
95- )
9685
97- export default filterContainer
86+ export default renderFilterContainer ( childNodes )
0 commit comments