fix(filters): sorting tasks from filters
Resolves https://community.vikunja.io/t/filter-table-view-not-sorting/1416
This commit is contained in:
parent
1dc9c50d64
commit
895263f054
@ -149,13 +149,21 @@ func (tf *TaskCollection) ReadAll(s *xorm.Session, a web.Auth, search string, pa
|
|||||||
return nil, 0, 0, err
|
return nil, 0, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
sf.Filters.SortByArr = append(sf.Filters.SortByArr, tf.SortByArr...)
|
// By prepending sort options before the saved ones from the filter, we make sure the supplied sort
|
||||||
sf.Filters.SortBy = append(sf.Filters.SortBy, tf.SortBy...)
|
// options via query take precedence over the rest.
|
||||||
if len(sf.Filters.OrderBy) > len(sf.Filters.SortBy) {
|
|
||||||
sf.Filters.OrderBy = sf.Filters.OrderBy[:len(sf.Filters.SortBy)]
|
sortby := append(tf.SortBy, tf.SortByArr...)
|
||||||
}
|
sortby = append(sortby, sf.Filters.SortBy...)
|
||||||
sf.Filters.OrderBy = append(sf.Filters.OrderBy, tf.OrderBy...)
|
sortby = append(sortby, sf.Filters.SortByArr...)
|
||||||
sf.Filters.OrderByArr = tf.OrderByArr
|
|
||||||
|
orderby := append(tf.OrderBy, tf.OrderByArr...)
|
||||||
|
orderby = append(orderby, sf.Filters.OrderBy...)
|
||||||
|
orderby = append(orderby, sf.Filters.OrderByArr...)
|
||||||
|
|
||||||
|
sf.Filters.SortBy = sortby
|
||||||
|
sf.Filters.SortByArr = nil
|
||||||
|
sf.Filters.OrderBy = orderby
|
||||||
|
sf.Filters.OrderByArr = nil
|
||||||
|
|
||||||
return sf.getTaskCollection().ReadAll(s, a, search, page, perPage)
|
return sf.getTaskCollection().ReadAll(s, a, search, page, perPage)
|
||||||
}
|
}
|
||||||
|
@ -1211,6 +1211,42 @@ func TestTaskCollection_ReadAll(t *testing.T) {
|
|||||||
task5,
|
task5,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "saved filter with sort order asc",
|
||||||
|
fields: fields{
|
||||||
|
ProjectID: -2,
|
||||||
|
SortBy: []string{"title", "id"},
|
||||||
|
OrderBy: []string{"asc", "asc"},
|
||||||
|
},
|
||||||
|
args: args{
|
||||||
|
a: &user.User{ID: 1},
|
||||||
|
},
|
||||||
|
want: []*Task{
|
||||||
|
task5,
|
||||||
|
task6,
|
||||||
|
task7,
|
||||||
|
task8,
|
||||||
|
task9,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "saved filter with sort by due date",
|
||||||
|
fields: fields{
|
||||||
|
ProjectID: -2,
|
||||||
|
SortBy: []string{"due_date", "id"},
|
||||||
|
OrderBy: []string{"asc", "asc"},
|
||||||
|
},
|
||||||
|
args: args{
|
||||||
|
a: &user.User{ID: 1},
|
||||||
|
},
|
||||||
|
want: []*Task{
|
||||||
|
task6,
|
||||||
|
task5,
|
||||||
|
task7,
|
||||||
|
task8,
|
||||||
|
task9,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user