Skip to content

Commit 7dbb58d

Browse files
author
sheepzh
committed
Show tooltip of the type in site management page (#196)
1 parent 8283a62 commit 7dbb58d

File tree

4 files changed

+97
-70
lines changed

4 files changed

+97
-70
lines changed

src/app/components/site-manage/table/column/alias.ts

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,23 @@ function handleChange(newAlias: string, row: timer.site.SiteInfo) {
2525
}
2626
}
2727

28-
const _default = defineComponent({
29-
name: "AliasColumn",
30-
setup() {
31-
return () => h(ElTableColumn, {
32-
prop: 'host',
33-
minWidth: 100,
34-
align: 'center',
35-
}, {
36-
default: ({ row }: { row: timer.site.SiteInfo }) => h(Editable, {
37-
modelValue: row.alias,
38-
onChange: (newAlias: string) => handleChange(newAlias, row)
39-
}),
40-
header: () => {
41-
const infoTooltip = h(ElTooltip,
42-
{ content: tooltip, placement: 'top' },
43-
() => h(ElIcon, { size: 11 }, () => h(InfoFilled))
44-
)
45-
return [label, ' ', infoTooltip]
46-
}
47-
})
48-
}
28+
const renderTooltip = () => h(ElTooltip,
29+
{ content: tooltip, placement: 'top' },
30+
() => h(ElIcon, { size: 11 }, () => h(InfoFilled))
31+
)
32+
33+
const render = () => h(ElTableColumn, {
34+
prop: 'host',
35+
minWidth: 100,
36+
align: 'center',
37+
}, {
38+
default: ({ row }: { row: timer.site.SiteInfo }) => h(Editable, {
39+
modelValue: row.alias,
40+
onChange: (newAlias: string) => handleChange(newAlias, row)
41+
}),
42+
header: () => [label, ' ', renderTooltip()]
4943
})
5044

45+
const _default = defineComponent({ render })
46+
5147
export default _default

src/app/components/site-manage/table/column/source.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,15 @@ function renderSource(source: timer.site.AliasSource) {
1919
return h(ElTag, { type, size: 'small' }, () => SOURCE_DESC[source])
2020
}
2121

22-
const _default = defineComponent({
23-
name: "SourceColumn",
24-
setup() {
25-
return () => h(ElTableColumn, {
26-
prop: 'source',
27-
label: t(msg => msg.siteManage.column.source),
28-
minWidth: 70,
29-
align: 'center',
30-
}, {
31-
default: ({ row }: { row: timer.site.SiteInfo }) => row.source ? renderSource(row.source) : ''
32-
})
33-
}
22+
const render = () => h(ElTableColumn, {
23+
prop: 'source',
24+
label: t(msg => msg.siteManage.column.source),
25+
minWidth: 70,
26+
align: 'center',
27+
}, {
28+
default: ({ row }: { row: timer.site.SiteInfo }) => row.source ? renderSource(row.source) : ''
3429
})
3530

31+
const _default = defineComponent({ render })
32+
3633
export default _default
Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
import { t } from "@app/locale"
2-
import { ElTableColumn, ElTag } from "element-plus"
2+
import { ElIcon, ElTableColumn, ElTag, ElTooltip } from "element-plus"
3+
import { InfoFilled } from "@element-plus/icons-vue"
34
import { defineComponent, h } from "vue"
5+
import { SiteManageMessage } from "@i18n/message/app/site-manage"
46

5-
const label = t(msg => msg.siteManage.column.type)
7+
type Type = keyof SiteManageMessage['type']
8+
const ALL_TYPES: Type[] = ['normal', 'merged', 'virtual']
69

7-
const normalType = t(msg => msg.siteManage.type.normal)
8-
const mergedType = t(msg => msg.siteManage.type.merged)
9-
const virtualType = t(msg => msg.siteManage.type.virtual)
10+
const label = t(msg => msg.siteManage.column.type)
1011

1112
function cumputeText({ merged, virtual }: timer.site.SiteInfo): string {
13+
let type: Type = undefined
1214
if (merged) {
13-
return mergedType
15+
type = 'merged'
1416
} else if (virtual) {
15-
return virtualType
17+
type = 'virtual'
1618
} else {
17-
return normalType
19+
type = 'normal'
1820
}
21+
return t(msg => msg.siteManage.type[type].name)
1922
}
2023

2124
function computeType({ merged, virtual }: timer.site.SiteInfo): 'info' | 'success' | '' {
@@ -28,21 +31,29 @@ function computeType({ merged, virtual }: timer.site.SiteInfo): 'info' | 'succes
2831
}
2932
}
3033

31-
const _default = defineComponent({
32-
name: "SiteType",
33-
setup() {
34-
return () => h(ElTableColumn, {
35-
prop: 'host',
36-
label,
37-
minWidth: 60,
38-
align: 'center',
39-
}, {
40-
default: ({ row }: { row: timer.site.SiteInfo }) => h(ElTag, {
41-
size: 'small',
42-
type: computeType(row),
43-
}, () => cumputeText(row))
44-
})
45-
}
34+
const renderTooltip = () => h(ElTooltip, { placement: 'top' }, {
35+
content: () => ALL_TYPES
36+
.map((type: Type) => `${t(msg => msg.siteManage.type[type].name)} - ${t(msg => msg.siteManage.type[type].info)}`)
37+
.reduce((a, b) => {
38+
a.length && a.push(h('br'))
39+
a.push(b)
40+
return a
41+
}, []),
42+
default: () => h(ElIcon, { size: 11 }, () => h(InfoFilled)),
4643
})
4744

45+
const renderContent = (row: timer.site.SiteInfo) => h(ElTag, {
46+
size: 'small',
47+
type: computeType(row),
48+
}, () => cumputeText(row))
49+
50+
const _default = defineComponent(() => () => h(ElTableColumn, {
51+
prop: 'host',
52+
minWidth: 60,
53+
align: 'center',
54+
}, {
55+
header: () => [label, ' ', renderTooltip()],
56+
default: ({ row }: { row: timer.site.SiteInfo }) => renderContent(row)
57+
}))
58+
4859
export default _default

src/i18n/message/app/site-manage.ts

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,7 @@ export type SiteManageMessage = {
1818
source: string
1919
icon: string
2020
}
21-
type: {
22-
normal: string
23-
merged: string
24-
virtual: string
25-
}
21+
type: Record<'normal' | 'merged' | 'virtual', Record<'name' | 'info', string>>
2622
source: {
2723
user: string
2824
detected: string
@@ -60,9 +56,18 @@ const _default: Messages<SiteManageMessage> = {
6056
icon: '网站图标',
6157
},
6258
type: {
63-
normal: '普通站点',
64-
merged: '合并站点',
65-
virtual: '自定义站点',
59+
normal: {
60+
name: '普通站点',
61+
info: '按域名的维度统计',
62+
},
63+
merged: {
64+
name: '合并站点',
65+
info: '将多个相关的域名合并统计,合并规则可以自定义'
66+
},
67+
virtual: {
68+
name: '自定义站点',
69+
info: '统计 Ant Pattern 格式的任意 URL,可以在右上角新增自定义站点'
70+
},
6671
},
6772
source: {
6873
user: '手动设置',
@@ -103,9 +108,18 @@ const _default: Messages<SiteManageMessage> = {
103108
detected: '自動抓取',
104109
},
105110
type: {
106-
normal: '普通站點',
107-
merged: '合併站點',
108-
virtual: '自定義站點',
111+
normal: {
112+
name: '普通站點',
113+
info: '按域名的維度統計',
114+
},
115+
merged: {
116+
name: '合併站點',
117+
info: '將多個相關的域名合併統計,合併規則可以自定義',
118+
},
119+
virtual: {
120+
name: '自定義站點',
121+
info: '統計 Ant Pattern 格式的任意 URL,可以在右上角新增自定義站點',
122+
},
109123
},
110124
button: {
111125
add: '新增',
@@ -137,9 +151,18 @@ const _default: Messages<SiteManageMessage> = {
137151
icon: 'Icon',
138152
},
139153
type: {
140-
normal: 'normal',
141-
merged: 'merged',
142-
virtual: 'virtual',
154+
normal: {
155+
name: 'normal',
156+
info: 'statistics by domain name',
157+
},
158+
merged: {
159+
name: 'merged',
160+
info: 'merge statistics of multiple related domain names, and the merge rules can be customized',
161+
},
162+
virtual: {
163+
name: 'virtual',
164+
info: 'count any URL in Ant Pattern format, you can add a custom site in the upper right corner',
165+
},
143166
},
144167
source: {
145168
user: 'user-maintained',

0 commit comments

Comments
 (0)