feat: add tooltip for model card and folder path (#149)

This commit is contained in:
Hayden
2025-02-22 18:10:28 +08:00
committed by GitHub
parent 450072e49d
commit 7df89c7265
4 changed files with 43 additions and 6 deletions

View File

@@ -68,13 +68,21 @@
}" }"
> >
<ModelCard <ModelCard
:model="rowItem"
v-for="rowItem in item.row" v-for="rowItem in item.row"
:model="rowItem"
:key="genModelKey(rowItem)" :key="genModelKey(rowItem)"
:style="{ :style="{
width: `${cardSize.width}px`, width: `${cardSize.width}px`,
height: `${cardSize.height}px`, height: `${cardSize.height}px`,
}" }"
v-tooltip.top="{
value: getFullPath(rowItem),
disabled: folderPaths.length < 2,
autoHide: false,
showDelay: 800,
hideDelay: 300,
pt: { root: { style: { zIndex: 2100, maxWidth: '32rem' } } },
}"
@dblclick="openItem(rowItem, $event)" @dblclick="openItem(rowItem, $event)"
@contextmenu.stop.prevent="openItemContext(rowItem, $event)" @contextmenu.stop.prevent="openItemContext(rowItem, $event)"
></ModelCard> ></ModelCard>
@@ -137,8 +145,14 @@ const gutter = {
y: 32, y: 32,
} }
const { dataTreeList, folderPaths, findFolder, openFolder, openModelDetail } = const {
useModelExplorer() dataTreeList,
folderPaths,
findFolder,
openFolder,
openModelDetail,
getFullPath,
} = useModelExplorer()
const { cardSize, cardSizeMap, cardSizeFlag, dialog: settings } = useConfig() const { cardSize, cardSizeMap, cardSizeFlag, dialog: settings } = useConfig()
const showToolbar = ref(false) const showToolbar = ref(false)

View File

@@ -55,7 +55,13 @@
}" }"
class="group/card cursor-pointer !p-0" class="group/card cursor-pointer !p-0"
@click="openModelDetail(model)" @click="openModelDetail(model)"
v-tooltip.top="{ value: model.basename, disabled: showModelName }" v-tooltip.top="{
value: getFullPath(model),
autoHide: false,
showDelay: 800,
hideDelay: 300,
pt: { root: { style: { zIndex: 2100, maxWidth: '32rem' } } },
}"
> >
<template #name> <template #name>
<div <div
@@ -139,7 +145,7 @@ const {
dialog: settings, dialog: settings,
} = useConfig() } = useConfig()
const { data, folders, openModelDetail } = useModels() const { data, folders, openModelDetail, getFullPath } = useModels()
const { t } = useI18n() const { t } = useI18n()
const toolbarContainer = ref<HTMLElement | null>(null) const toolbarContainer = ref<HTMLElement | null>(null)

View File

@@ -84,7 +84,17 @@
<td class="border-r bg-gray-300 px-4 dark:bg-gray-800"> <td class="border-r bg-gray-300 px-4 dark:bg-gray-800">
{{ $t(`info.${item.key}`) }} {{ $t(`info.${item.key}`) }}
</td> </td>
<td class="overflow-hidden text-ellipsis break-all px-4"> <td
class="overflow-hidden text-ellipsis break-all px-4"
v-tooltip.top="{
value: item.display,
disabled: !['pathIndex', 'basename'].includes(item.key),
autoHide: false,
showDelay: 800,
hideDelay: 300,
pt: { root: { style: { zIndex: 2100, maxWidth: '32rem' } } },
}"
>
{{ item.display }} {{ item.display }}
</td> </td>
</tr> </tr>

View File

@@ -226,6 +226,12 @@ export const useModels = defineStore('models', (store) => {
}) })
} }
function getFullPath(model: BaseModel) {
const fullname = genModelFullName(model)
const prefixPath = folders.value[model.type]?.[model.pathIndex]
return [prefixPath, fullname].filter(Boolean).join('/')
}
return { return {
folders: folders, folders: folders,
data: models, data: models,
@@ -233,6 +239,7 @@ export const useModels = defineStore('models', (store) => {
remove: deleteModel, remove: deleteModel,
update: updateModel, update: updateModel,
openModelDetail: openModelDetail, openModelDetail: openModelDetail,
getFullPath: getFullPath,
} }
}) })