mirror of
https://github.com/VueTorrent/VueTorrent.git
synced 2025-03-29 21:11:51 +03:00
perf: Add RSS unread filter (#657) @Larsluph
This commit is contained in:
parent
34729e6efd
commit
bc5695b870
4 changed files with 13 additions and 5 deletions
|
@ -37,7 +37,7 @@
|
||||||
:mobile-breakpoint="0"
|
:mobile-breakpoint="0"
|
||||||
>
|
>
|
||||||
<template #top>
|
<template #top>
|
||||||
<v-text-field ref="filterRef" v-model="filter" label="Filter" class="mx-4" />
|
<v-text-field ref="filterRef" v-model="filter" :label="$t('filter')" class="mx-4" />
|
||||||
</template>
|
</template>
|
||||||
<template #[`item.fileName`]="{ item }">
|
<template #[`item.fileName`]="{ item }">
|
||||||
<a :href="item.descrLink" target="_blank" v-text="item.fileName" />
|
<a :href="item.descrLink" target="_blank" v-text="item.fileName" />
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
"of": "of",
|
"of": "of",
|
||||||
"yes": "yes",
|
"yes": "yes",
|
||||||
"no": "no",
|
"no": "no",
|
||||||
|
"filter": "Filter",
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"tooltips": {
|
"tooltips": {
|
||||||
"toggleSearch": "Toggle Search Filter",
|
"toggleSearch": "Toggle Search Filter",
|
||||||
|
@ -143,6 +144,7 @@
|
||||||
},
|
},
|
||||||
"rss": {
|
"rss": {
|
||||||
"title": "RSS Articles",
|
"title": "RSS Articles",
|
||||||
|
"filterRead": "Unread articles only",
|
||||||
"columnTitle": {
|
"columnTitle": {
|
||||||
"feedName": "Feed Name",
|
"feedName": "Feed Name",
|
||||||
"author": "Author",
|
"author": "Author",
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
"then": "Alors",
|
"then": "Alors",
|
||||||
"yes": "oui",
|
"yes": "oui",
|
||||||
"no": "non",
|
"no": "non",
|
||||||
|
"filter": "Filtre",
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"tooltips": {
|
"tooltips": {
|
||||||
"toggleSearch": "Rechercher un torrent",
|
"toggleSearch": "Rechercher un torrent",
|
||||||
|
@ -139,6 +140,7 @@
|
||||||
},
|
},
|
||||||
"rss": {
|
"rss": {
|
||||||
"title": "Articles RSS",
|
"title": "Articles RSS",
|
||||||
|
"filterUnread": "Articles non-lu uniquement",
|
||||||
"columnTitle": {
|
"columnTitle": {
|
||||||
"feedName": "Nom du Flux",
|
"feedName": "Nom du Flux",
|
||||||
"author": "Auteur",
|
"author": "Auteur",
|
||||||
|
|
|
@ -28,7 +28,10 @@
|
||||||
:item-class="getRowStyle"
|
:item-class="getRowStyle"
|
||||||
>
|
>
|
||||||
<template #top>
|
<template #top>
|
||||||
<v-text-field ref="filterRef" v-model="filter" label="Filter" class="mx-4" />
|
<div class="mx-4">
|
||||||
|
<v-text-field v-model="filter" :label="$t('filter')" />
|
||||||
|
<v-checkbox v-model="filterUnread" :label="$t('modals.rss.filterRead')" hide-details />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #[`item.title`]="{ item }">
|
<template #[`item.title`]="{ item }">
|
||||||
<a :href="item.link" target="_blank" v-text="item.title" />
|
<a :href="item.link" target="_blank" v-text="item.title" />
|
||||||
|
@ -76,6 +79,7 @@ export default defineComponent({
|
||||||
{ text: this.$t('modals.rss.columnTitle.actions'), value: 'actions', sortable: false }
|
{ text: this.$t('modals.rss.columnTitle.actions'), value: 'actions', sortable: false }
|
||||||
],
|
],
|
||||||
filter: '',
|
filter: '',
|
||||||
|
filterUnread: false,
|
||||||
sortBy: 'parsedDate',
|
sortBy: 'parsedDate',
|
||||||
reverse: true,
|
reverse: true,
|
||||||
mdiEmailOpen,
|
mdiEmailOpen,
|
||||||
|
@ -99,7 +103,7 @@ export default defineComponent({
|
||||||
;(this.rss as RssState).feeds.forEach((feed: Feed) => {
|
;(this.rss as RssState).feeds.forEach((feed: Feed) => {
|
||||||
feed.articles && articles.push(...feed.articles.map(article => ({ feedName: feed.name, parsedDate: new Date(article.date), ...article })))
|
feed.articles && articles.push(...feed.articles.map(article => ({ feedName: feed.name, parsedDate: new Date(article.date), ...article })))
|
||||||
})
|
})
|
||||||
return articles
|
return articles.filter(article => (this.filterUnread ? !article.isRead : true))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -107,7 +111,8 @@ export default defineComponent({
|
||||||
this.$router.back()
|
this.$router.back()
|
||||||
},
|
},
|
||||||
customFilter(value: string, query: string, item?: any): boolean {
|
customFilter(value: string, query: string, item?: any): boolean {
|
||||||
return (item as FeedArticle).title.toLowerCase().indexOf(query.toLowerCase()) !== -1
|
const article = item as FeedArticle
|
||||||
|
return article.title.toLowerCase().indexOf(query.toLowerCase()) !== -1
|
||||||
},
|
},
|
||||||
getRowStyle(item: FeedArticle) {
|
getRowStyle(item: FeedArticle) {
|
||||||
return item.isRead ? 'rss-read' : 'rss-unread'
|
return item.isRead ? 'rss-read' : 'rss-unread'
|
||||||
|
@ -135,7 +140,6 @@ export default defineComponent({
|
||||||
.rss-actions {
|
.rss-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
/*column-gap: 5px;*/
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue