fix(table view): correctly load sort order from local storage
Resolves https://community.vikunja.io/t/table-view-sort-by-due-date-doesnt-persist-after-page-refresh/1198
This commit is contained in:
parent
1392d7f101
commit
c002275e7f
@ -5,6 +5,22 @@ import TaskCollectionService from '@/services/taskCollection'
|
|||||||
import type {ITask} from '@/modelTypes/ITask'
|
import type {ITask} from '@/modelTypes/ITask'
|
||||||
import {error} from '@/message'
|
import {error} from '@/message'
|
||||||
|
|
||||||
|
export type Order = 'asc' | 'desc' | 'none'
|
||||||
|
|
||||||
|
export interface SortBy {
|
||||||
|
id?: Order
|
||||||
|
index?: Order
|
||||||
|
done?: Order
|
||||||
|
title?: Order
|
||||||
|
priority?: Order
|
||||||
|
due_date?: Order
|
||||||
|
start_date?: Order
|
||||||
|
end_date?: Order
|
||||||
|
percent_done?: Order
|
||||||
|
created?: Order
|
||||||
|
updated?: Order
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME: merge with DEFAULT_PARAMS in filters.vue
|
// FIXME: merge with DEFAULT_PARAMS in filters.vue
|
||||||
export const getDefaultParams = () => ({
|
export const getDefaultParams = () => ({
|
||||||
sort_by: ['position', 'id'],
|
sort_by: ['position', 'id'],
|
||||||
@ -15,7 +31,7 @@ export const getDefaultParams = () => ({
|
|||||||
filter_concat: 'and',
|
filter_concat: 'and',
|
||||||
})
|
})
|
||||||
|
|
||||||
const SORT_BY_DEFAULT = {
|
const SORT_BY_DEFAULT: SortBy = {
|
||||||
id: 'desc',
|
id: 'desc',
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +60,7 @@ const SORT_BY_DEFAULT = {
|
|||||||
/**
|
/**
|
||||||
* This mixin provides a base set of methods and properties to get tasks on a list.
|
* This mixin provides a base set of methods and properties to get tasks on a list.
|
||||||
*/
|
*/
|
||||||
export function useTaskList(listId, sortByDefault = SORT_BY_DEFAULT) {
|
export function useTaskList(listId, sortByDefault: SortBy = SORT_BY_DEFAULT) {
|
||||||
const params = ref({...getDefaultParams()})
|
const params = ref({...getDefaultParams()})
|
||||||
|
|
||||||
const search = ref('')
|
const search = ref('')
|
||||||
|
@ -196,7 +196,7 @@ import FilterPopup from '@/components/list/partials/filter-popup.vue'
|
|||||||
import Pagination from '@/components/misc/pagination.vue'
|
import Pagination from '@/components/misc/pagination.vue'
|
||||||
import Popup from '@/components/misc/popup.vue'
|
import Popup from '@/components/misc/popup.vue'
|
||||||
|
|
||||||
import {useTaskList} from '@/composables/useTaskList'
|
import {useTaskList, SortBy} from '@/composables/useTaskList'
|
||||||
import type {ITask} from '@/modelTypes/ITask'
|
import type {ITask} from '@/modelTypes/ITask'
|
||||||
|
|
||||||
const ACTIVE_COLUMNS_DEFAULT = {
|
const ACTIVE_COLUMNS_DEFAULT = {
|
||||||
@ -222,21 +222,6 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
type Order = 'asc' | 'desc' | 'none'
|
|
||||||
|
|
||||||
interface SortBy {
|
|
||||||
index: Order
|
|
||||||
done?: Order
|
|
||||||
title?: Order
|
|
||||||
priority?: Order
|
|
||||||
due_date?: Order
|
|
||||||
start_date?: Order
|
|
||||||
end_date?: Order
|
|
||||||
percent_done?: Order
|
|
||||||
created?: Order
|
|
||||||
updated?: Order
|
|
||||||
}
|
|
||||||
|
|
||||||
const SORT_BY_DEFAULT: SortBy = {
|
const SORT_BY_DEFAULT: SortBy = {
|
||||||
index: 'desc',
|
index: 'desc',
|
||||||
}
|
}
|
||||||
@ -244,7 +229,7 @@ const SORT_BY_DEFAULT: SortBy = {
|
|||||||
const activeColumns = useStorage('tableViewColumns', {...ACTIVE_COLUMNS_DEFAULT})
|
const activeColumns = useStorage('tableViewColumns', {...ACTIVE_COLUMNS_DEFAULT})
|
||||||
const sortBy = useStorage<SortBy>('tableViewSortBy', {...SORT_BY_DEFAULT})
|
const sortBy = useStorage<SortBy>('tableViewSortBy', {...SORT_BY_DEFAULT})
|
||||||
|
|
||||||
const taskList = useTaskList(toRef(props, 'listId'))
|
const taskList = useTaskList(toRef(props, 'listId'), sortBy.value)
|
||||||
|
|
||||||
const {
|
const {
|
||||||
loading,
|
loading,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user