11import { useCategory } from '@app/context'
22import { t } from "@app/locale"
33import { Calendar , Collection , Link , Menu } from "@element-plus/icons-vue"
4+ import { useSiteMerge } from '@hooks'
45import Flex from "@pages/components/Flex"
5- import { IS_ANDROID } from "@util/constant/environment"
6- import { ALL_MERGE_METHODS } from "@util/merge"
76import { ElCheckboxButton , ElCheckboxGroup , ElIcon , ElText , ElTooltip } from "element-plus"
87import { computed , defineComponent , StyleValue } from "vue"
98import { type JSX } from "vue/jsx-runtime"
109import { useReportFilter } from "../context"
11- import type { ReportFilterOption } from "../types"
1210
1311const METHOD_ICONS : Record < timer . stat . MergeMethod , JSX . Element > = {
1412 cate : < Collection /> ,
@@ -17,11 +15,16 @@ const METHOD_ICONS: Record<timer.stat.MergeMethod, JSX.Element> = {
1715 group : < Menu /> ,
1816}
1917
20- const METHODS = IS_ANDROID ? ALL_MERGE_METHODS . filter ( m => m !== 'group' ) : ALL_MERGE_METHODS
21-
2218const MergeFilterItem = defineComponent < { } > ( ( ) => {
2319 const filter = useReportFilter ( )
2420 const cate = useCategory ( )
21+ const { mergeItems : siteMergeItems } = useSiteMerge ( {
22+ onGroupDisabled : ( ) => mergeMethod . value . filter ( v => v !== 'group' )
23+ } )
24+ const mergeItems = computed ( ( ) => {
25+ const res = [ 'date' , ...siteMergeItems . value ] satisfies timer . stat . MergeMethod [ ]
26+ return cate . enabled ? res : res . filter ( m => m !== 'cate' )
27+ } )
2528 const mergeMethod = computed ( {
2629 get : ( ) => {
2730 const { mergeDate, siteMerge } = filter
@@ -33,7 +36,7 @@ const MergeFilterItem = defineComponent<{}>(() => {
3336 set : val => {
3437 filter . mergeDate = val . includes ( 'date' )
3538 const oldSiteMerge = filter . siteMerge
36- const newSiteMerge = ( [ 'cate' , 'domain' , 'group' ] satisfies ReportFilterOption [ 'siteMerge' ] [ ] )
39+ const newSiteMerge = siteMergeItems . value
3740 . filter ( t => val . includes ( t ) )
3841 . sort ( t => oldSiteMerge ?. includes ( t ) ? 1 : - 1 ) [ 0 ]
3942 filter . siteMerge = newSiteMerge
@@ -50,7 +53,7 @@ const MergeFilterItem = defineComponent<{}>(() => {
5053 modelValue = { mergeMethod . value }
5154 onChange = { val => mergeMethod . value = val as timer . stat . MergeMethod [ ] }
5255 >
53- { METHODS . filter ( m => m !== 'cate' || cate . enabled ) . map ( method => (
56+ { mergeItems . value . map ( method => (
5457 < ElCheckboxButton value = { method } >
5558 < ElTooltip content = { t ( msg => msg . shared . merge . mergeMethod [ method ] ) } offset = { 20 } placement = "top" >
5659 < span style = { { margin : '-6px' } satisfies StyleValue } >
0 commit comments