Skip to content

Commit 3021691

Browse files
committed
fix: hide tab group merge if disbaled
1 parent 142ca70 commit 3021691

File tree

4 files changed

+38
-8
lines changed

4 files changed

+38
-8
lines changed

src/pages/app/components/Report/ReportFilter/MergeFilterItem.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import { useCategory } from '@app/context'
22
import { t } from "@app/locale"
33
import { Calendar, Collection, Link, Menu } from "@element-plus/icons-vue"
4+
import { useSiteMerge } from '@hooks'
45
import Flex from "@pages/components/Flex"
5-
import { IS_ANDROID } from "@util/constant/environment"
6-
import { ALL_MERGE_METHODS } from "@util/merge"
76
import { ElCheckboxButton, ElCheckboxGroup, ElIcon, ElText, ElTooltip } from "element-plus"
87
import { computed, defineComponent, StyleValue } from "vue"
98
import { type JSX } from "vue/jsx-runtime"
109
import { useReportFilter } from "../context"
11-
import type { ReportFilterOption } from "../types"
1210

1311
const 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-
2218
const 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}>

src/pages/hooks/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export * from "./useProvider"
88
export * from "./useRequest"
99
export * from "./useScrollRequest"
1010
export * from "./useShadow"
11+
export * from "./useSiteMerge"
1112
export * from "./useState"
1213
export * from "./useSwitch"
1314
export * from "./useWindowFocus"

src/pages/hooks/useSiteMerge.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import optionHolder from '@service/components/option-holder'
2+
import { computed } from 'vue'
3+
import { useRequest } from './useRequest'
4+
5+
type Options = {
6+
onGroupDisabled?: NoArgCallback
7+
}
8+
9+
export const useSiteMerge = ({ onGroupDisabled }: Options) => {
10+
const { data: countTabGroup } = useRequest(() => optionHolder.get().then(o => o.countTabGroup), {
11+
defaultValue: false,
12+
onSuccess: v => !v && onGroupDisabled?.()
13+
})
14+
15+
const mergeItems = computed(() => {
16+
const res: (Exclude<timer.stat.MergeMethod, 'date'>)[] = ['cate', 'domain']
17+
countTabGroup.value && res.push('group')
18+
return res
19+
})
20+
21+
return { mergeItems, countTabGroup }
22+
}

src/pages/popup/components/Footer/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useSiteMerge } from '@hooks/useSiteMerge'
12
import Flex from "@pages/components/Flex"
23
import DurationSelect from "@popup/components/Footer/DurationSelect"
34
import { useQuery } from "@popup/context"
@@ -9,6 +10,9 @@ import Menu from "./Menu"
910

1011
const Footer = defineComponent(() => {
1112
const query = useQuery()
13+
const { mergeItems } = useSiteMerge({
14+
onGroupDisabled: () => query.mergeMethod === 'group' && (query.mergeMethod = undefined)
15+
})
1216

1317
return () => (
1418
<Flex justify="space-between" width="100%">
@@ -26,7 +30,7 @@ const Footer = defineComponent(() => {
2630
style={{ width: '90px' }}
2731
>
2832
<ElOption value='' label={t(msg => msg.shared.merge.mergeMethod.notMerge)} />
29-
{(['domain', 'cate', 'group'] satisfies timer.stat.MergeMethod[]).map(method => (
33+
{mergeItems.value.map(method => (
3034
<ElOption value={method} label={t(msg => msg.shared.merge.mergeMethod[method])} />
3135
))}
3236
</ElSelect>

0 commit comments

Comments
 (0)