mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-21 16:29:54 +08:00
feat:插件筛选运行中插件
This commit is contained in:
@@ -2020,6 +2020,7 @@ export default {
|
||||
filterPlugins: 'Filter Plugins',
|
||||
name: 'Name',
|
||||
hasNewVersion: 'Has New Version',
|
||||
running: 'Running',
|
||||
author: 'Author',
|
||||
label: 'Label',
|
||||
repository: 'Repository',
|
||||
|
||||
@@ -1998,6 +1998,7 @@ export default {
|
||||
filterPlugins: '过滤插件',
|
||||
name: '名称',
|
||||
hasNewVersion: '有新版本',
|
||||
running: '运行中',
|
||||
author: '作者',
|
||||
label: '标签',
|
||||
repository: '仓库',
|
||||
|
||||
@@ -2000,6 +2000,7 @@ export default {
|
||||
filterPlugins: '過濾插件',
|
||||
name: '名稱',
|
||||
hasNewVersion: '有新版本',
|
||||
running: '運行中',
|
||||
author: '作者',
|
||||
label: '標籤',
|
||||
repository: '倉庫',
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user