feat:插件筛选运行中插件

This commit is contained in:
jxxghp
2025-06-09 12:49:41 +08:00
parent 8e042d5691
commit 1065973e07
5 changed files with 30 additions and 14 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "moviepilot", "name": "moviepilot",
"version": "2.5.3-1", "version": "2.5.4",
"private": true, "private": true,
"type": "module", "type": "module",
"bin": "dist/service.js", "bin": "dist/service.js",
+1
View File
@@ -2020,6 +2020,7 @@ export default {
filterPlugins: 'Filter Plugins', filterPlugins: 'Filter Plugins',
name: 'Name', name: 'Name',
hasNewVersion: 'Has New Version', hasNewVersion: 'Has New Version',
running: 'Running',
author: 'Author', author: 'Author',
label: 'Label', label: 'Label',
repository: 'Repository', repository: 'Repository',
+1
View File
@@ -1998,6 +1998,7 @@ export default {
filterPlugins: '过滤插件', filterPlugins: '过滤插件',
name: '名称', name: '名称',
hasNewVersion: '有新版本', hasNewVersion: '有新版本',
running: '运行中',
author: '作者', author: '作者',
label: '标签', label: '标签',
repository: '仓库', repository: '仓库',
+1
View File
@@ -2000,6 +2000,7 @@ export default {
filterPlugins: '過濾插件', filterPlugins: '過濾插件',
name: '名稱', name: '名稱',
hasNewVersion: '有新版本', hasNewVersion: '有新版本',
running: '運行中',
author: '作者', author: '作者',
label: '標籤', label: '標籤',
repository: '倉庫', repository: '倉庫',
+26 -13
View File
@@ -147,6 +147,9 @@ const installedFilter = ref(null)
// 有新版本过滤条件 // 有新版本过滤条件
const hasUpdateFilter = ref(false) const hasUpdateFilter = ref(false)
// 已启用过滤条件
const enabledFilter = ref(false)
// 已安装插件过滤窗口 // 已安装插件过滤窗口
const filterInstalledPluginDialog = ref(false) const filterInstalledPluginDialog = ref(false)
@@ -191,9 +194,17 @@ const getFilteredFolderPlugins = (folderName: string) => {
// 应用筛选条件 // 应用筛选条件
return folderPlugins.filter(plugin => { return folderPlugins.filter(plugin => {
if (!installedFilter.value && !hasUpdateFilter.value) return true if (!installedFilter.value && !hasUpdateFilter.value && !enabledFilter.value) return true
if (hasUpdateFilter.value) { if (hasUpdateFilter.value && enabledFilter.value) {
return plugin.has_update 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) { if (installedFilter.value) {
return plugin.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase()) return plugin.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase())
@@ -263,7 +274,7 @@ const displayedFolders = computed(() => {
}) })
.filter(folder => { .filter(folder => {
// 当有筛选条件时,只显示包含筛选后插件的文件夹 // 当有筛选条件时,只显示包含筛选后插件的文件夹
if (installedFilter.value || hasUpdateFilter.value) { if (installedFilter.value || hasUpdateFilter.value || enabledFilter.value) {
return folder.pluginCount > 0 return folder.pluginCount > 0
} }
return true return true
@@ -278,9 +289,6 @@ function updateMixedSortList() {
// 主列表:创建混合列表 // 主列表:创建混合列表
const items: MixedSortItem[] = [] const items: MixedSortItem[] = []
// 创建统一的排序索引
let globalOrder = 0
// 始终使用全局排序配置来创建混合列表 // 始终使用全局排序配置来创建混合列表
const allItems: { type: 'folder' | 'plugin'; id: string; data: any; order: number }[] = [] const allItems: { type: 'folder' | 'plugin'; id: string; data: any; order: number }[] = []
@@ -330,7 +338,7 @@ function updateMixedSortList() {
// 监听相关数据变化,更新混合排序列表 // 监听相关数据变化,更新混合排序列表
watch( watch(
[displayedPlugins, displayedFolders, orderConfig, folderOrder, installedFilter, hasUpdateFilter], [displayedPlugins, displayedFolders, orderConfig, folderOrder, installedFilter, hasUpdateFilter, enabledFilter],
() => { () => {
// 只有在非拖拽状态下才更新 // 只有在非拖拽状态下才更新
if (!isDraggingSortMode.value) { if (!isDraggingSortMode.value) {
@@ -761,12 +769,14 @@ function handleRepoUrl(url: string | undefined) {
} }
// 监测dataList变化或installedFilter、hasUpdateFilter变化时更新filteredDataList // 监测dataList变化或installedFilter、hasUpdateFilter变化时更新filteredDataList
watch([dataList, installedFilter, hasUpdateFilter], () => { watch([dataList, installedFilter, hasUpdateFilter, enabledFilter], () => {
filteredDataList.value = dataList.value.filter(item => { filteredDataList.value = dataList.value.filter(item => {
if (!installedFilter.value && !hasUpdateFilter.value) return true if (!installedFilter.value && !hasUpdateFilter.value && !enabledFilter.value) return true
if (hasUpdateFilter.value) { if (hasUpdateFilter.value && enabledFilter.value) {
return item.has_update return item.has_update && item.state
} }
if (hasUpdateFilter.value) return item.has_update
if (enabledFilter.value) return item.state
if (installedFilter.value) { if (installedFilter.value) {
return item.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase()) return item.plugin_name?.toLowerCase().includes((installedFilter.value as string).toLowerCase())
} }
@@ -1238,7 +1248,10 @@ function onDragStartPlugin(evt: any) {
clearable clearable
/> />
</VCol> </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')" /> <VSwitch v-model="hasUpdateFilter" :label="t('plugin.hasNewVersion')" />
</VCol> </VCol>
</VRow> </VRow>