diff --git a/api/schema.graphqls b/api/schema.graphqls index 73140b9..5c5bc2c 100644 --- a/api/schema.graphqls +++ b/api/schema.graphqls @@ -278,7 +278,7 @@ type JobResultList { offset: Int limit: Int count: Int - hasNextPage: Boolean! + hasNextPage: Boolean } type JobLinkResultList { diff --git a/internal/graph/generated/generated.go b/internal/graph/generated/generated.go index 1ea41f9..29a2a24 100644 --- a/internal/graph/generated/generated.go +++ b/internal/graph/generated/generated.go @@ -1995,7 +1995,7 @@ type JobResultList { offset: Int limit: Int count: Int - hasNextPage: Boolean! + hasNextPage: Boolean } type JobLinkResultList { @@ -5251,14 +5251,11 @@ func (ec *executionContext) _JobResultList_hasNextPage(ctx context.Context, fiel return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(*bool) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalOBoolean2ᚖbool(ctx, field.Selections, res) } func (ec *executionContext) fieldContext_JobResultList_hasNextPage(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { @@ -13464,9 +13461,6 @@ func (ec *executionContext) _JobResultList(ctx context.Context, sel ast.Selectio out.Values[i] = ec._JobResultList_count(ctx, field, obj) case "hasNextPage": out.Values[i] = ec._JobResultList_hasNextPage(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } default: panic("unknown field " + strconv.Quote(field.Name)) } diff --git a/internal/graph/model/models_gen.go b/internal/graph/model/models_gen.go index 7aa2764..d575fc3 100644 --- a/internal/graph/model/models_gen.go +++ b/internal/graph/model/models_gen.go @@ -82,7 +82,7 @@ type JobResultList struct { Offset *int `json:"offset,omitempty"` Limit *int `json:"limit,omitempty"` Count *int `json:"count,omitempty"` - HasNextPage bool `json:"hasNextPage"` + HasNextPage *bool `json:"hasNextPage,omitempty"` } type JobsStatistics struct { diff --git a/internal/graph/schema.resolvers.go b/internal/graph/schema.resolvers.go index c20cf1e..a33e041 100644 --- a/internal/graph/schema.resolvers.go +++ b/internal/graph/schema.resolvers.go @@ -11,6 +11,7 @@ import ( "strconv" "time" + "github.com/ClusterCockpit/cc-backend/internal/config" "github.com/ClusterCockpit/cc-backend/internal/graph/generated" "github.com/ClusterCockpit/cc-backend/internal/graph/model" "github.com/ClusterCockpit/cc-backend/internal/metricdata" @@ -234,26 +235,29 @@ func (r *queryResolver) Jobs(ctx context.Context, filter []*model.JobFilter, pag return nil, err } - hasNextPage := false - nextPage := page - nextPage.Page += 1 - - nextJobs, err := r.Repo.QueryJobs(ctx, filter, nextPage, order) - if err != nil { - log.Warn("Error while querying next jobs") - return nil, err - } - if len(nextJobs) > 0 { - hasNextPage = true - } - count, err := r.Repo.CountJobs(ctx, filter) if err != nil { log.Warn("Error while counting jobs") return nil, err } - return &model.JobResultList{Items: jobs, Count: &count, HasNextPage: hasNextPage}, nil + if !config.Keys.UiDefaults["job_list_usePaging"].(bool) { + hasNextPage := false + page.Page += 1 + + nextJobs, err := r.Repo.QueryJobs(ctx, filter, page, order) + if err != nil { + log.Warn("Error while querying next jobs") + return nil, err + } + if len(nextJobs) > 0 { + hasNextPage = true + } + + return &model.JobResultList{Items: jobs, Count: &count, HasNextPage: &hasNextPage}, nil + } else { + return &model.JobResultList{Items: jobs, Count: &count}, nil + } } // JobsStatistics is the resolver for the jobsStatistics field. diff --git a/web/frontend/src/joblist/JobList.svelte b/web/frontend/src/joblist/JobList.svelte index 6311a66..486ea3e 100644 --- a/web/frontend/src/joblist/JobList.svelte +++ b/web/frontend/src/joblist/JobList.svelte @@ -30,7 +30,7 @@ export let metrics = ccconfig.plot_list_selectedMetrics; export let showFootprint; - let usePaging = !!ccconfig.job_list_usePaging + let usePaging = ccconfig.job_list_usePaging let itemsPerPage = usePaging ? ccconfig.plot_list_jobsPerPage : 10; let page = 1; let paging = { itemsPerPage, page };