+
({
export const resolvers = (endpoint) => ({
Query: {
- environmentApp(_context, { page, scope }, { cache }) {
- return axios.get(endpoint, { params: { nested: true, page, scope } }).then((res) => {
+ environmentApp(_context, { page, scope, search }, { cache }) {
+ return axios.get(endpoint, { params: { nested: true, page, scope, search } }).then((res) => {
const headers = normalizeHeaders(res.headers);
const interval = headers['POLL-INTERVAL'];
const pageInfo = { ...parseIntPagination(headers), __typename: 'LocalPageInfo' };
@@ -59,8 +59,8 @@ export const resolvers = (endpoint) => ({
};
});
},
- folder(_, { environment: { folderPath }, scope }) {
- return axios.get(folderPath, { params: { scope, per_page: 3 } }).then((res) => ({
+ folder(_, { environment: { folderPath }, scope, search }) {
+ return axios.get(folderPath, { params: { scope, search, per_page: 3 } }).then((res) => ({
availableCount: res.data.available_count,
environments: res.data.environments.map(mapEnvironment),
stoppedCount: res.data.stopped_count,
diff --git a/app/assets/javascripts/environments/services/environments_service.js b/app/assets/javascripts/environments/services/environments_service.js
index dbd82a3c9853df8daf04928051a42dd4d2785ae5..03689b4591edc8d40d3344551f766423c2f11335 100644
--- a/app/assets/javascripts/environments/services/environments_service.js
+++ b/app/assets/javascripts/environments/services/environments_service.js
@@ -8,7 +8,7 @@ export default class EnvironmentsService {
fetchEnvironments(options = {}) {
const { scope, page, nested } = options;
- return axios.get(this.environmentsEndpoint, { params: { scope, page, nested } });
+ return axios.get(this.environmentsEndpoint, { params: { scope, page, nested, search: "review/my-b" } });
}
// eslint-disable-next-line class-methods-use-this
@@ -22,6 +22,6 @@ export default class EnvironmentsService {
}
getFolderContent(folderUrl, scope) {
- return axios.get(`${folderUrl}.json?per_page=${this.folderResults}&scope=${scope}`);
+ return axios.get(`${folderUrl}.json?per_page=${this.folderResults}&scope=${scope}&search=review/my-b`);
}
}
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb
index a100afd3488feea71879368c5ed932f3f5742b74..0a3d0d41c848f8b948958e81970209e3d7f3ee05 100644
--- a/app/controllers/projects/environments_controller.rb
+++ b/app/controllers/projects/environments_controller.rb
@@ -35,8 +35,12 @@ def index
respond_to do |format|
format.html
format.json do
- @environments = project.environments
- .with_state(params[:scope] || :available)
+ # @environments = project.environments
+ # .with_state(params[:scope] || :available)
+
+ state = params[:scope] || :available
+ @environments = Environments::EnvironmentsFinder.new(project, current_user,
+ states: [state], search: params[:search]).execute
Gitlab::PollingInterval.set_header(response, interval: 3_000)
environments_count_by_state = project.environments.count_by_state
@@ -59,9 +63,15 @@ def folder
respond_to do |format|
format.html
format.json do
- folder_environments = project.environments.where(environment_type: params[:id])
- @environments = folder_environments.with_state(params[:scope] || :available)
- .order(:name)
+ # folder_environments = project.environments.where(environment_type: params[:id])
+ # @environments = folder_environments.with_state(params[:scope] || :available)
+ # .order(:name)
+
+ state = params[:scope] || :available
+ folder_environments = Environments::EnvironmentsFinder.new(project, current_user,
+ type: params[:id], states: [state], search: params[:search]).execute
+
+ @environments = folder_environments.order(:name)
render json: {
environments: serialize_environments(request, response),
diff --git a/app/finders/environments/environments_finder.rb b/app/finders/environments/environments_finder.rb
index 46c49f096c6d1bc534b090e11a523de723a2162c..6b9f827881880e2b07b796f02f6253ef14310f0a 100644
--- a/app/finders/environments/environments_finder.rb
+++ b/app/finders/environments/environments_finder.rb
@@ -14,6 +14,7 @@ def initialize(project, current_user, params = {})
def execute
environments = project.environments
+ environments = by_type(environments)
environments = by_name(environments)
environments = by_search(environments)
environments = by_ids(environments)
@@ -24,6 +25,12 @@ def execute
private
+ def by_type(environments)
+ return environments unless params[:type].present?
+
+ environments.where(environment_type: params[:type])
+ end
+
def by_name(environments)
if params[:name].present?
environments.for_name(params[:name])