summaryrefslogtreecommitdiff
path: root/app/controllers/projects/ml/experiments_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/ml/experiments_controller.rb')
-rw-r--r--app/controllers/projects/ml/experiments_controller.rb36
1 files changed, 17 insertions, 19 deletions
diff --git a/app/controllers/projects/ml/experiments_controller.rb b/app/controllers/projects/ml/experiments_controller.rb
index 1e1c4b1587c..00b965542f6 100644
--- a/app/controllers/projects/ml/experiments_controller.rb
+++ b/app/controllers/projects/ml/experiments_controller.rb
@@ -3,6 +3,8 @@
module Projects
module Ml
class ExperimentsController < ::Projects::ApplicationController
+ include Projects::Ml::ExperimentsHelper
+
before_action :check_feature_flag
feature_category :mlops
@@ -11,7 +13,12 @@ module Projects
MAX_CANDIDATES_PER_PAGE = 30
def index
- @experiments = ::Ml::Experiment.by_project_id(@project.id).page(params[:page]).per(MAX_EXPERIMENTS_PER_PAGE)
+ paginator = ::Ml::Experiment.by_project_id(@project.id)
+ .with_candidate_count
+ .keyset_paginate(cursor: params[:cursor], per_page: MAX_EXPERIMENTS_PER_PAGE)
+
+ @experiments = paginator.records
+ @page_info = page_info(paginator)
end
def show
@@ -19,26 +26,17 @@ module Projects
return redirect_to project_ml_experiments_path(@project) unless @experiment.present?
- page = params[:page].to_i
- page = 1 if page == 0
-
- @candidates = @experiment.candidates
- .including_relationships
- .page(page)
- .per(MAX_CANDIDATES_PER_PAGE)
-
- return unless @candidates
-
- return redirect_to(url_for(page: @candidates.total_pages)) if @candidates.out_of_range?
+ find_params = params
+ .transform_keys(&:underscore)
+ .permit(:name, :order_by, :sort, :order_by_type)
- @pagination = {
- page: page,
- is_last_page: @candidates.last_page?,
- per_page: MAX_CANDIDATES_PER_PAGE,
- total_items: @candidates.total_count
- }
+ paginator = CandidateFinder
+ .new(@experiment, find_params)
+ .execute
+ .keyset_paginate(cursor: params[:cursor], per_page: MAX_CANDIDATES_PER_PAGE)
- @candidates.each(&:artifact_lazy)
+ @candidates = paginator.records.each(&:artifact_lazy)
+ @page_info = page_info(paginator)
end
private