diff --git a/src/components/Controls.vue b/src/components/Controls.vue index bc5148ece..ec130248a 100644 --- a/src/components/Controls.vue +++ b/src/components/Controls.vue @@ -138,8 +138,40 @@ -

{{ t('deck', 'Filter by due date') }}

+

{{ t('deck', 'Filter by completed') }}

+
+ + +
+
+ + +
+ +
+ + +
+

{{ t('deck', 'Filter by due date') }}

(a.title < b.title) ? -1 : 1) @@ -360,7 +392,12 @@ export default { } if (e.target.value === 'unassigned') { this.filter.users = [] + this.$store.dispatch('setFilter', { ...this.filter }) + } else { + this.filter.completed = 'both' + this.$store.dispatch('setFilter', { ...this.filter }) } + this.$store.dispatch('setFilter', { ...this.filter }) }, setFilter() { if (this.filter.users.length > 0) { @@ -402,7 +439,7 @@ export default { } }, clearFilter() { - const filterReset = { tags: [], users: [], due: '' } + const filterReset = { tags: [], users: [], due: '', completed: 'both' } this.$store.dispatch('setFilter', { ...filterReset }) this.filter = filterReset }, @@ -519,7 +556,6 @@ export default { input + label { display: block; padding: 6px 0; - vertical-align: middle; .avatardiv { vertical-align: middle; margin-bottom: 2px; diff --git a/src/store/card.js b/src/store/card.js index 28b3a1c34..fb4df408c 100644 --- a/src/store/card.js +++ b/src/store/card.js @@ -33,7 +33,10 @@ export default { getters: { cardsByStack: (state, getters, rootState) => (id) => { return state.cards.filter((card) => { - const { tags, users, due, unassigned } = rootState.filter + const { tags, users, due, unassigned, completed } = rootState.filter + + if (completed === 'open' && card.done !== null) { return false } + if (completed === '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 3d0248c4c..f52aeafc9 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: '' }, + filter: { tags: [], users: [], due: '', completed: 'both' }, shortcutLock: false, }, getters: {