diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-20 02:18:09 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-20 02:18:09 +0300 |
commit | 6ed4ec3e0b1340f96b7c043ef51d1b33bbe85fde (patch) | |
tree | dc4d20fe6064752c0bd323187252c77e0a89144b /app/controllers/projects/environments_controller.rb | |
parent | 9868dae7fc0655bd7ce4a6887d4e6d487690eeed (diff) |
Add latest changes from gitlab-org/gitlab@15-4-stable-eev15.4.0-rc42
Diffstat (limited to 'app/controllers/projects/environments_controller.rb')
-rw-r--r-- | app/controllers/projects/environments_controller.rb | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index 7ef9fd9daed..4f037cc843e 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -5,7 +5,10 @@ class Projects::EnvironmentsController < Projects::ApplicationController # into app/controllers/projects/metrics_dashboard_controller.rb # See https://gitlab.com/gitlab-org/gitlab/-/issues/226002 for more details. + MIN_SEARCH_LENGTH = 3 + include MetricsDashboard + include ProductAnalyticsTracking layout 'project' @@ -26,6 +29,18 @@ class Projects::EnvironmentsController < Projects::ApplicationController before_action :expire_etag_cache, only: [:index], unless: -> { request.format.json? } after_action :expire_etag_cache, only: [:cancel_auto_stop] + track_event :index, + :folder, + :show, + :new, + :edit, + :create, + :update, + :stop, + :cancel_auto_stop, + :terminal, + name: 'users_visiting_environments_pages' + feature_category :continuous_delivery urgency :low @@ -35,12 +50,10 @@ class Projects::EnvironmentsController < Projects::ApplicationController respond_to do |format| format.html format.json do - @environments = project.environments - .with_state(params[:scope] || :available) + @environments = search_environments.with_state(params[:scope] || :available) + environments_count_by_state = search_environments.count_by_state Gitlab::PollingInterval.set_header(response, interval: 3_000) - environments_count_by_state = project.environments.count_by_state - render json: { environments: serialize_environments(request, response, params[:nested]), review_app: serialize_review_app, @@ -59,7 +72,8 @@ class Projects::EnvironmentsController < Projects::ApplicationController respond_to do |format| format.html format.json do - folder_environments = project.environments.where(environment_type: params[:id]) + folder_environments = search_environments(type: params[:id]) + @environments = folder_environments.with_state(params[:scope] || :available) .order(:name) @@ -236,6 +250,16 @@ class Projects::EnvironmentsController < Projects::ApplicationController @environment ||= project.environments.find(params[:id]) end + def search_environments(type: nil) + search = params[:search] if params[:search] && params[:search].length >= MIN_SEARCH_LENGTH + + @search_environments ||= + Environments::EnvironmentsFinder.new(project, + current_user, + type: type, + search: search).execute + end + def metrics_params params.require([:start, :end]) end |