diff --git a/frontend/src/components/project/views/ProjectTable.vue b/frontend/src/components/project/views/ProjectTable.vue index 7d98d7375..5376233d9 100644 --- a/frontend/src/components/project/views/ProjectTable.vue +++ b/frontend/src/components/project/views/ProjectTable.vue @@ -94,28 +94,28 @@ # {{ $t('task.attributes.done') }} {{ $t('task.attributes.title') }} {{ $t('task.attributes.priority') }} @@ -128,49 +128,49 @@ {{ $t('task.attributes.dueDate') }} {{ $t('task.attributes.startDate') }} {{ $t('task.attributes.endDate') }} {{ $t('task.attributes.percentDone') }} {{ $t('task.attributes.doneAt') }} {{ $t('task.attributes.created') }} {{ $t('task.attributes.updated') }} @@ -349,16 +349,28 @@ watch( {deep: true}, ) -// FIXME: by doing this we can have multiple sort orders -function sort(property: keyof SortBy) { - const order = sortBy.value[property] - if (typeof order === 'undefined' || order === 'none') { - sortBy.value[property] = 'desc' - } else if (order === 'desc') { - sortBy.value[property] = 'asc' +// Allow sorting by multiple columns only when ctrl is pressed +function sort(property: keyof SortBy, event?: MouseEvent) { + const ctrlPressed = event?.ctrlKey || event?.metaKey + + const currentOrder = sortBy.value[property] + let newOrder: 'asc' | 'desc' | 'none' | undefined = undefined + if (typeof currentOrder === 'undefined' || currentOrder === 'none') { + newOrder = 'desc' + } else if (currentOrder === 'desc') { + newOrder = 'asc' + } + + if (!ctrlPressed) { + sortBy.value = {} as SortBy + } + + if (newOrder) { + sortBy.value[property] = newOrder } else { delete sortBy.value[property] } + setActiveColumnsSortParam() }