group completed filters to one property

Signed-off-by: grnd-alt <salimbelakkaf@outlook.de>
This commit is contained in:
grnd-alt
2024-03-13 15:44:17 +01:00
parent 9a3521ba93
commit c6728d33c8
3 changed files with 16 additions and 31 deletions

View File

@@ -141,23 +141,23 @@
<h3>{{ t('deck', 'Filter by completed') }}</h3> <h3>{{ t('deck', 'Filter by completed') }}</h3>
<div class="filter--item"> <div class="filter--item">
<input id="filter-option-both" <input id="filter-option-both"
v-model="filter.completedOrOpen" v-model="filter.completed"
type="radio" type="radio"
class="radio" class="radio"
:value="true" value="both"
@change="setFilter" @change="setFilter"
@click="beforeSetFilter"> @click="beforeSetFilter">
<label for="filter-option-both">{{ t('deck', 'both') }}</label> <label for="filter-option-both">{{ t('deck', 'Open and completed') }}</label>
</div> </div>
<div class="filter--item"> <div class="filter--item">
<input id="filter-option-open" <input id="filter-option-open"
v-model="filter.open" v-model="filter.completed"
type="radio" type="radio"
class="radio" class="radio"
:value="true" value="open"
@change="setFilter" @change="setFilter"
@click="beforeSetFilter"> @click="beforeSetFilter">
<label for="filter-option-open">{{ t('deck', 'open') }}</label> <label for="filter-option-open">{{ t('deck', 'Open') }}</label>
</div> </div>
<div class="filter--item"> <div class="filter--item">
@@ -165,10 +165,10 @@
v-model="filter.completed" v-model="filter.completed"
type="radio" type="radio"
class="radio" class="radio"
:value="true" value="completed"
@change="setFilter" @change="setFilter"
@click="beforeSetFilter"> @click="beforeSetFilter">
<label for="filter-option-completed">{{ t('deck', 'completed') }}</label> <label for="filter-option-completed">{{ t('deck', 'Completed') }}</label>
</div> </div>
<h3>{{ t('deck', 'Filter by due date') }}</h3> <h3>{{ t('deck', 'Filter by due date') }}</h3>
@@ -325,7 +325,7 @@ export default {
filterVisible: false, filterVisible: false,
showArchived: false, showArchived: false,
isAddStackVisible: false, isAddStackVisible: false,
filter: { tags: [], users: [], due: '', unassigned: false, open: false, completed: false, completedOrOpen: true }, filter: { tags: [], users: [], due: '', unassigned: false, completed: 'both' },
showAddCardModal: false, showAddCardModal: false,
defaultPageTitle: false, defaultPageTitle: false,
isNotifyPushEnabled: isNotifyPushEnabled(), isNotifyPushEnabled: isNotifyPushEnabled(),
@@ -349,7 +349,7 @@ export default {
} }
}, },
isFilterActive() { isFilterActive() {
return this.filter.tags.length !== 0 || this.filter.users.length !== 0 || this.filter.due !== '' || this.filter.open || this.filter.completed || !this.filter.completedOrOpen return this.filter.tags.length !== 0 || this.filter.users.length !== 0 || this.filter.due !== '' || this.filter.completed !== 'both'
}, },
labelsSorted() { labelsSorted() {
return [...this.board.labels].sort((a, b) => (a.title < b.title) ? -1 : 1) return [...this.board.labels].sort((a, b) => (a.title < b.title) ? -1 : 1)
@@ -393,22 +393,8 @@ export default {
if (e.target.value === 'unassigned') { if (e.target.value === 'unassigned') {
this.filter.users = [] this.filter.users = []
this.$store.dispatch('setFilter', { ...this.filter }) this.$store.dispatch('setFilter', { ...this.filter })
}
if (e.target.id === 'filter-option-open') {
this.filter.open = !this.filter.open
this.$store.dispatch('setFilter', { ...this.filter })
}
if (e.target.id === 'filter-option-completed') {
this.filter.completed = !this.filter.completed
this.$store.dispatch('setFilter', { ...this.filter })
}
if (e.target.id !== 'filter-option-both') {
this.filter.completedOrOpen = !(this.filter.open || this.filter.completed)
this.$store.dispatch('setFilter', { ...this.filter })
} else { } else {
this.filter.completedOrOpen = true this.filter.completed = 'both'
this.filter.open = false
this.filter.completed = false
this.$store.dispatch('setFilter', { ...this.filter }) this.$store.dispatch('setFilter', { ...this.filter })
} }
this.$store.dispatch('setFilter', { ...this.filter }) this.$store.dispatch('setFilter', { ...this.filter })
@@ -453,7 +439,7 @@ export default {
} }
}, },
clearFilter() { clearFilter() {
const filterReset = { tags: [], users: [], due: '', open: false, completed: false, completedOrOpen: true } const filterReset = { tags: [], users: [], due: '', completed: 'both' }
this.$store.dispatch('setFilter', { ...filterReset }) this.$store.dispatch('setFilter', { ...filterReset })
this.filter = filterReset this.filter = filterReset
}, },
@@ -570,7 +556,6 @@ export default {
input + label { input + label {
display: block; display: block;
padding: 6px 0; padding: 6px 0;
vertical-align: middle;
.avatardiv { .avatardiv {
vertical-align: middle; vertical-align: middle;
margin-bottom: 2px; margin-bottom: 2px;

View File

@@ -33,10 +33,10 @@ export default {
getters: { getters: {
cardsByStack: (state, getters, rootState) => (id) => { cardsByStack: (state, getters, rootState) => (id) => {
return state.cards.filter((card) => { return state.cards.filter((card) => {
const { tags, users, due, unassigned, open, completed } = rootState.filter const { tags, users, due, unassigned, completed } = rootState.filter
if (open && card.done !== null) { return false } if (completed === 'open' && card.done !== null) { return false }
if (completed && card.done == null) { return false } if (completed === 'completed' && card.done == null) { return false }
let allTagsMatch = true let allTagsMatch = true
let allUsersMatch = true let allUsersMatch = true

View File

@@ -74,7 +74,7 @@ export default new Vuex.Store({
searchQuery: '', searchQuery: '',
activity: [], activity: [],
activityLoadMore: true, activityLoadMore: true,
filter: { tags: [], users: [], due: '', open: false, completed: false, completedOrOpen: true }, filter: { tags: [], users: [], due: '', completed: 'both' },
shortcutLock: false, shortcutLock: false,
}, },
getters: { getters: {