perf: add mark color to the border of icon in connection pane

This commit is contained in:
tiny-craft 2023-08-25 00:44:00 +08:00
parent 94bcbdfe13
commit 96a11bdb9c
4 changed files with 32 additions and 24 deletions

View File

@ -62,6 +62,9 @@ const data = computed(() => {
const backgroundColor = computed(() => { const backgroundColor = computed(() => {
const { markColor: hex = '' } = connectionStore.serverProfile[props.server] || {} const { markColor: hex = '' } = connectionStore.serverProfile[props.server] || {}
if (isEmpty(hex)) {
return ''
}
const { r, g, b } = parseHexColor(hex) const { r, g, b } = parseHexColor(hex)
return `rgba(${r}, ${g}, ${b}, 0.2)` return `rgba(${r}, ${g}, ${b}, 0.2)`
}) })

View File

@ -14,10 +14,6 @@ const themeVars = useThemeVars()
const dialogStore = useDialogStore() const dialogStore = useDialogStore()
const connectionStore = useConnectionStore() const connectionStore = useConnectionStore()
const filterPattern = ref('') const filterPattern = ref('')
const onDisconnectAll = () => {
connectionStore.closeAllConnection()
}
</script> </script>
<template> <template>
@ -38,13 +34,6 @@ const onDisconnectAll = () => {
stroke-width="4" stroke-width="4"
t-tooltip="new_group" t-tooltip="new_group"
@click="dialogStore.openNewGroupDialog()" /> @click="dialogStore.openNewGroupDialog()" />
<icon-button
:disabled="!connectionStore.anyConnectionOpened"
:icon="Unlink"
size="20"
stroke-width="4"
t-tooltip="disconnect_all"
@click="onDisconnectAll" />
<n-input v-model:value="filterPattern" :placeholder="$t('filter')" clearable> <n-input v-model:value="filterPattern" :placeholder="$t('filter')" clearable>
<template #prefix> <template #prefix>
<n-icon :component="Filter" size="20" /> <n-icon :component="Filter" size="20" />

View File

@ -117,18 +117,29 @@ const menuOptions = {
}, },
} }
/**
* get mark color of server saved in preferences
* @param name
* @return {null|string}
*/
const getServerMarkColor = (name) => {
const { markColor = '' } = connectionStore.serverProfile[name] || {}
if (!isEmpty(markColor)) {
const rgb = parseHexColor(markColor)
const rgb2 = hexGammaCorrection(rgb, 0.75)
return toHexColor(rgb2)
}
return null
}
const renderLabel = ({ option }) => { const renderLabel = ({ option }) => {
if (option.type === ConnectionType.Server) { if (option.type === ConnectionType.Server) {
const { markColor = '' } = connectionStore.serverProfile[option.name] || {} const color = getServerMarkColor(option.name)
if (!isEmpty(markColor)) { if (color != null) {
const rgb = parseHexColor(markColor)
const rgb2 = hexGammaCorrection(rgb, 0.75)
return h( return h(
NText, NText,
{ {
style: { style: { color },
color: toHexColor(rgb2),
},
}, },
() => option.label, () => option.label,
) )
@ -166,9 +177,10 @@ const renderPrefix = ({ option }) => {
) )
case ConnectionType.Server: case ConnectionType.Server:
const connected = connectionStore.isConnected(option.name) const connected = connectionStore.isConnected(option.name)
const color = getServerMarkColor(option.name)
return h( return h(
NIcon, NIcon,
{ size: 20 }, { size: 20, color },
{ {
default: () => h(ToggleServer, { modelValue: !!connected }), default: () => h(ToggleServer, { modelValue: !!connected }),
}, },
@ -362,9 +374,11 @@ const handleSelectContextMenu = (key) => {
removeConnection(name) removeConnection(name)
break break
case 'server_close': case 'server_close':
if (!isEmpty(group)) { connectionStore.closeConnection(name).then((closed) => {
connectionStore.closeConnection(name) if (closed) {
} $message.success(i18n.t('handle_succ'))
}
})
break break
case 'group_rename': case 'group_rename':
if (!isEmpty(group)) { if (!isEmpty(group)) {
@ -372,7 +386,9 @@ const handleSelectContextMenu = (key) => {
} }
break break
case 'group_delete': case 'group_delete':
removeGroup(group) if (!isEmpty(group)) {
removeGroup(group)
}
break break
default: default:
console.warn('TODO: handle context menu:' + key) console.warn('TODO: handle context menu:' + key)

View File

@ -67,7 +67,7 @@ func main() {
}, },
About: &mac.AboutInfo{ About: &mac.AboutInfo{
Title: "Tiny RDM", Title: "Tiny RDM",
Message: "A modern lightweight cross-platform Redis desktop client\nCopyright © 2023", Message: "A modern lightweight cross-platform Redis desktop client.\n\nCopyright © 2023",
Icon: icon, Icon: icon,
}, },
//WebviewIsTransparent: true, //WebviewIsTransparent: true,