Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/environments_controller.rb')
-rw-r--r--app/controllers/projects/environments_controller.rb34
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