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: {