diff --git a/src/components/Controls.vue b/src/components/Controls.vue
index f6cd89a07..d56d51808 100644
--- a/src/components/Controls.vue
+++ b/src/components/Controls.vue
@@ -138,27 +138,37 @@
-
{{ t('deck', 'Filter by done') }}
+ {{ t('deck', 'Filter by completed') }}
-
+
+
+
+
-
+
-
-
+
{{ t('deck', 'Filter by due date') }}
@@ -315,7 +325,7 @@ export default {
filterVisible: false,
showArchived: false,
isAddStackVisible: false,
- filter: { tags: [], users: [], due: '', unassigned: false, open: false, done: false },
+ filter: { tags: [], users: [], due: '', unassigned: false, open: false, completed: false, completedOrOpen: true },
showAddCardModal: false,
defaultPageTitle: false,
isNotifyPushEnabled: isNotifyPushEnabled(),
@@ -339,7 +349,7 @@ export default {
}
},
isFilterActive() {
- return this.filter.tags.length !== 0 || this.filter.users.length !== 0 || this.filter.due !== '' || this.filter.open || this.filter.done
+ return this.filter.tags.length !== 0 || this.filter.users.length !== 0 || this.filter.due !== '' || this.filter.open || this.filter.completed || !this.filter.completedOrOpen
},
labelsSorted() {
return [...this.board.labels].sort((a, b) => (a.title < b.title) ? -1 : 1)
@@ -382,16 +392,26 @@ export default {
}
if (e.target.value === 'unassigned') {
this.filter.users = []
+ this.$store.dispatch('setFilter', { ...this.filter })
}
- if (e.target.id === 'open') {
+ if (e.target.id === 'filter-option-open') {
this.filter.open = !this.filter.open
this.$store.dispatch('setFilter', { ...this.filter })
}
-
- if (e.target.id === 'done') {
- this.filter.done = !this.filter.done
+ 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 {
+ this.filter.completedOrOpen = true
+ this.filter.open = false
+ this.filter.completed = false
+ this.$store.dispatch('setFilter', { ...this.filter })
+ }
+ this.$store.dispatch('setFilter', { ...this.filter })
},
setFilter() {
if (this.filter.users.length > 0) {
@@ -433,7 +453,7 @@ export default {
}
},
clearFilter() {
- const filterReset = { tags: [], users: [], due: '', open: false, done: false }
+ const filterReset = { tags: [], users: [], due: '', open: false, completed: false, completedOrOpen: true }
this.$store.dispatch('setFilter', { ...filterReset })
this.filter = filterReset
},
diff --git a/src/store/card.js b/src/store/card.js
index 1c29b994f..00ff4da92 100644
--- a/src/store/card.js
+++ b/src/store/card.js
@@ -33,10 +33,10 @@ export default {
getters: {
cardsByStack: (state, getters, rootState) => (id) => {
return state.cards.filter((card) => {
- const { tags, users, due, unassigned, open, done } = rootState.filter
+ const { tags, users, due, unassigned, open, completed } = rootState.filter
if (open && card.done !== null) { return false }
- if (done && card.done == null) { return false }
+ if (completed && card.done == null) { return false }
let allTagsMatch = true
let allUsersMatch = true
diff --git a/src/store/main.js b/src/store/main.js
index a9a5e6bad..698e0ff3c 100644
--- a/src/store/main.js
+++ b/src/store/main.js
@@ -74,7 +74,7 @@ export default new Vuex.Store({
searchQuery: '',
activity: [],
activityLoadMore: true,
- filter: { tags: [], users: [], due: '', open: false, done: false },
+ filter: { tags: [], users: [], due: '', open: false, completed: false, completedOrOpen: true },
shortcutLock: false,
},
getters: {