1
0

fix(kanban): correctly paginate filtered kanban buckets

Resolves https://github.com/go-vikunja/vikunja/issues/314

(cherry picked from commit 1451f6e46f03c30384834ff99e0cbe7f15958536)
This commit is contained in:
kolaente
2024-09-14 09:37:11 +02:00
parent 89d643b9cf
commit 971f328256
2 changed files with 10 additions and 14 deletions

View File

@ -137,7 +137,11 @@ func getTaskFilterOptsFromCollection(tf *TaskCollection, projectView *ProjectVie
return opts, err
}
func getTaskOrTasksInBuckets(s *xorm.Session, a web.Auth, projects []*Project, view *ProjectView, opts *taskSearchOptions) (tasks interface{}, resultCount int, totalItems int64, err error) {
func getTaskOrTasksInBuckets(s *xorm.Session, a web.Auth, projects []*Project, view *ProjectView, opts *taskSearchOptions, filteringForBucket bool) (tasks interface{}, resultCount int, totalItems int64, err error) {
if filteringForBucket {
return getTasksForProjects(s, projects, a, opts, view)
}
if view != nil && !strings.Contains(opts.filter, "bucket_id") {
if view.BucketConfigurationMode != BucketConfigurationModeNone {
tasksInBuckets, err := GetTasksInBucketsForView(s, view, projects, opts, a)
@ -262,6 +266,7 @@ func (tf *TaskCollection) ReadAll(s *xorm.Session, a web.Auth, search string, pa
}
var view *ProjectView
var filteringForBucket bool
if tf.ProjectViewID != 0 {
view, err = GetProjectViewByIDAndProject(s, tf.ProjectViewID, tf.ProjectID)
if err != nil {
@ -277,6 +282,7 @@ func (tf *TaskCollection) ReadAll(s *xorm.Session, a web.Auth, search string, pa
}
if view.BucketConfigurationMode == BucketConfigurationModeFilter && strings.Contains(tf.Filter, "bucket_id") {
filteringForBucket = true
tf.Filter, err = getFilterValueForBucketFilter(tf.Filter, view)
if err != nil {
return nil, 0, 0, err
@ -318,7 +324,7 @@ func (tf *TaskCollection) ReadAll(s *xorm.Session, a web.Auth, search string, pa
if err != nil {
return nil, 0, 0, err
}
return getTaskOrTasksInBuckets(s, a, []*Project{project}, view, opts)
return getTaskOrTasksInBuckets(s, a, []*Project{project}, view, opts, filteringForBucket)
}
projects, err := getRelevantProjectsFromCollection(s, a, tf)
@ -326,5 +332,5 @@ func (tf *TaskCollection) ReadAll(s *xorm.Session, a web.Auth, search string, pa
return nil, 0, 0, err
}
return getTaskOrTasksInBuckets(s, a, projects, view, opts)
return getTaskOrTasksInBuckets(s, a, projects, view, opts, filteringForBucket)
}