feat:插件筛选运行中插件

This commit is contained in:
jxxghp
2025-06-09 12:49:00 +08:00
parent 8e042d5691
commit 1065973e07
5 changed files with 30 additions and 14 deletions

View File

@@ -2020,6 +2020,7 @@ export default {
filterPlugins: 'Filter Plugins',
name: 'Name',
hasNewVersion: 'Has New Version',
running: 'Running',
author: 'Author',
label: 'Label',
repository: 'Repository',

View File

@@ -1998,6 +1998,7 @@ export default {
filterPlugins: '过滤插件',
name: '名称',
hasNewVersion: '有新版本',
running: '运行中',
author: '作者',
label: '标签',
repository: '仓库',

View File

@@ -2000,6 +2000,7 @@ export default {
filterPlugins: '過濾插件',
name: '名稱',
hasNewVersion: '有新版本',
running: '運行中',
author: '作者',
label: '標籤',
repository: '倉庫',

View File

@@ -147,6 +147,9 @@ const installedFilter = ref(null)
// 有新版本过滤条件
const hasUpdateFilter = ref(false)
// 已启用过滤条件
const enabledFilter = ref(false)
// 已安装插件过滤窗口
const filterInstalledPluginDialog = ref(false)
@@ -191,9 +194,17 @@ const getFilteredFolderPlugins = (folderName: string) => {
// 应用筛选条件
return folderPlugins.filter(plugin => {
if (!installedFilter.value && !hasUpdateFilter.value) return true
if (hasUpdateFilter.value) {
return plugin.has_update
if (!installedFilter.value && !hasUpdateFilter.value && !enabledFilter.value) return true
if (hasUpdateFilter.value && enabledFilter.value) {
return plugin.has_update && plugin.state
}
if (hasUpdateFilter.value) return plugin.has_update
if (enabledFilter.value) return plugin.state
if (installedFilter.value) {
return plugin.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase())
}
if (installedFilter.value) {
return plugin.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase())
}
if (installedFilter.value) {
return plugin.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase())
@@ -263,7 +274,7 @@ const displayedFolders = computed(() => {
})
.filter(folder => {
// 当有筛选条件时,只显示包含筛选后插件的文件夹
if (installedFilter.value || hasUpdateFilter.value) {
if (installedFilter.value || hasUpdateFilter.value || enabledFilter.value) {
return folder.pluginCount > 0
}
return true
@@ -278,9 +289,6 @@ function updateMixedSortList() {
// 主列表:创建混合列表
const items: MixedSortItem[] = []
// 创建统一的排序索引
let globalOrder = 0
// 始终使用全局排序配置来创建混合列表
const allItems: { type: 'folder' | 'plugin'; id: string; data: any; order: number }[] = []
@@ -330,7 +338,7 @@ function updateMixedSortList() {
// 监听相关数据变化,更新混合排序列表
watch(
[displayedPlugins, displayedFolders, orderConfig, folderOrder, installedFilter, hasUpdateFilter],
[displayedPlugins, displayedFolders, orderConfig, folderOrder, installedFilter, hasUpdateFilter, enabledFilter],
() => {
// 只有在非拖拽状态下才更新
if (!isDraggingSortMode.value) {
@@ -761,12 +769,14 @@ function handleRepoUrl(url: string | undefined) {
}
// 监测dataList变化或installedFilter、hasUpdateFilter变化时更新filteredDataList
watch([dataList, installedFilter, hasUpdateFilter], () => {
watch([dataList, installedFilter, hasUpdateFilter, enabledFilter], () => {
filteredDataList.value = dataList.value.filter(item => {
if (!installedFilter.value && !hasUpdateFilter.value) return true
if (hasUpdateFilter.value) {
return item.has_update
if (!installedFilter.value && !hasUpdateFilter.value && !enabledFilter.value) return true
if (hasUpdateFilter.value && enabledFilter.value) {
return item.has_update && item.state
}
if (hasUpdateFilter.value) return item.has_update
if (enabledFilter.value) return item.state
if (installedFilter.value) {
return item.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase())
}
@@ -1238,7 +1248,10 @@ function onDragStartPlugin(evt: any) {
clearable
/>
</VCol>
<VCol cols="12">
<VCol cols="6">
<VSwitch v-model="enabledFilter" :label="t('plugin.running')" />
</VCol>
<VCol cols="6">
<VSwitch v-model="hasUpdateFilter" :label="t('plugin.hasNewVersion')" />
</VCol>
</VRow>