mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
save task column filter (#14587)
* save task column filter * remove old setting * fix tests
This commit is contained in:
@@ -144,22 +144,6 @@
|
||||
>{{ $t('startAdvCollapsed') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input
|
||||
v-model="user.preferences.dailyDueDefaultView"
|
||||
type="checkbox"
|
||||
class="mr-2"
|
||||
@change="set('dailyDueDefaultView')"
|
||||
>
|
||||
<span
|
||||
class="hint"
|
||||
popover-trigger="mouseenter"
|
||||
popover-placement="right"
|
||||
:popover="$t('dailyDueDefaultViewPop')"
|
||||
>{{ $t('dailyDueDefaultView') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div
|
||||
v-if="party.memberCount === 1"
|
||||
class="checkbox"
|
||||
|
||||
@@ -521,7 +521,12 @@ export default {
|
||||
// Get Category Filter Labels
|
||||
this.typeFilters = getFilterLabels(this.type, this.challenge);
|
||||
// Set default filter for task column
|
||||
|
||||
if (this.challenge) {
|
||||
this.activateFilter(this.type);
|
||||
} else {
|
||||
this.activateFilter(this.type, this.user.preferences.tasks.activeFilter[this.type], true);
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.setColumnBackgroundVisibility();
|
||||
@@ -661,7 +666,7 @@ export default {
|
||||
taskSummary (task) {
|
||||
this.$emit('taskSummary', task);
|
||||
},
|
||||
activateFilter (type, filter = '') {
|
||||
activateFilter (type, filter = '', skipSave = false) {
|
||||
// Needs a separate API call as this data may not reside in store
|
||||
if (type === 'todo' && filter === 'complete2') {
|
||||
if (this.group && this.group._id) {
|
||||
@@ -677,14 +682,16 @@ export default {
|
||||
// as default filter for daily
|
||||
// and set the filter as 'due' only when the component first
|
||||
// loads and not on subsequent reloads.
|
||||
if (
|
||||
type === 'daily' && filter === '' && !this.challenge
|
||||
&& this.user.preferences.dailyDueDefaultView
|
||||
) {
|
||||
if (type === 'daily' && filter === '' && !this.challenge) {
|
||||
filter = 'due'; // eslint-disable-line no-param-reassign
|
||||
}
|
||||
|
||||
this.activeFilter = getActiveFilter(type, filter, this.challenge);
|
||||
|
||||
if (!skipSave && !this.challenge) {
|
||||
const propertyToUpdate = `preferences.tasks.activeFilter.${type}`;
|
||||
this.$store.dispatch('user:set', { [propertyToUpdate]: filter });
|
||||
}
|
||||
},
|
||||
setColumnBackgroundVisibility () {
|
||||
this.$nextTick(() => {
|
||||
|
||||
@@ -21,6 +21,18 @@ describe('Task Column', () => {
|
||||
getters: {
|
||||
'tasks:getFilteredTaskList': () => [],
|
||||
},
|
||||
|
||||
state: {
|
||||
user: {
|
||||
data: {
|
||||
preferences: {
|
||||
tasks: {
|
||||
activeFilter: {},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
mocks,
|
||||
stubs,
|
||||
@@ -76,7 +88,20 @@ describe('Task Column', () => {
|
||||
'tasks:getFilteredTaskList': () => () => habits,
|
||||
};
|
||||
|
||||
const store = new Store({ getters });
|
||||
const store = new Store({
|
||||
getters,
|
||||
state: {
|
||||
user: {
|
||||
data: {
|
||||
preferences: {
|
||||
tasks: {
|
||||
activeFilter: {},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
wrapper = makeWrapper({ store });
|
||||
});
|
||||
|
||||
@@ -22,7 +22,13 @@ describe('Task', () => {
|
||||
state: {
|
||||
user: {
|
||||
data: {
|
||||
preferences: {},
|
||||
preferences: {
|
||||
tasks: {
|
||||
activeFilter: {
|
||||
|
||||
},
|
||||
},
|
||||
},
|
||||
...additionalUserData,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
"helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit <a href=\"/groups/guild/7732f64c-33ee-4cce-873c-fc28f147a6f7\">the Aspiring Linguists Guild</a>!",
|
||||
"stickyHeader": "Sticky header",
|
||||
"newTaskEdit": "Open new tasks in edit mode",
|
||||
"dailyDueDefaultView": "Set Dailies default to 'due' tab",
|
||||
"dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'",
|
||||
"reverseChatOrder": "Show chat messages in reverse order",
|
||||
"startAdvCollapsed": "Advanced Settings in tasks start collapsed",
|
||||
"startAdvCollapsedPop": "With this option set, Advanced Settings will be hidden when you first open a task for editing.",
|
||||
|
||||
@@ -534,6 +534,7 @@ export default new Schema({
|
||||
stickyHeader: { $type: Boolean, default: true },
|
||||
disableClasses: { $type: Boolean, default: false },
|
||||
newTaskEdit: { $type: Boolean, default: false },
|
||||
// not used anymore, now the current filter is saved in preferences.activeFilter
|
||||
dailyDueDefaultView: { $type: Boolean, default: false },
|
||||
advancedCollapsed: { $type: Boolean, default: false },
|
||||
toolbarCollapsed: { $type: Boolean, default: false },
|
||||
@@ -594,6 +595,12 @@ export default new Schema({
|
||||
mirrorGroupTasks: [
|
||||
{ $type: String, validate: [v => validator.isUUID(v), 'Invalid group UUID.'], ref: 'Group' },
|
||||
],
|
||||
activeFilter: {
|
||||
habit: { $type: String, default: 'all' },
|
||||
daily: { $type: String, default: 'all' },
|
||||
todo: { $type: String, default: 'remaining' },
|
||||
reward: { $type: String, default: 'all' },
|
||||
},
|
||||
},
|
||||
improvementCategories: {
|
||||
$type: Array,
|
||||
|
||||
Reference in New Issue
Block a user