Merge branch 'dropdown-load-fix' into 'master'
Dropdown loading time preformance fix ## What does this MR do? Optimizes the performance of the dropdown load time by just sending the required data to load the dropdown instead of the full object This MR aims to fix #17474 See merge request !5113
This commit is contained in:
commit
b8f67b4ddf
6 changed files with 21 additions and 3 deletions
|
@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date.
|
|||
|
||||
v 8.10.0 (unreleased)
|
||||
- Expose {should,force}_remove_source_branch (Ben Boeckel)
|
||||
- Fix projects dropdown loading performance with a simplified api cal. !5113 (tiagonbotelho)
|
||||
- Fix commit builds API, return all builds for all pipelines for given commit. !4849
|
||||
- Replace Haml with Hamlit to make view rendering faster. !3666
|
||||
- Expire the branch cache after `git gc` runs
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
groupPath: "/api/:version/groups/:id.json"
|
||||
namespacesPath: "/api/:version/namespaces.json"
|
||||
groupProjectsPath: "/api/:version/groups/:id/projects.json"
|
||||
projectsPath: "/api/:version/projects.json"
|
||||
projectsPath: "/api/:version/projects.json?simple=true"
|
||||
labelsPath: "/api/:version/projects/:id/labels"
|
||||
licensePath: "/api/:version/licenses/:key"
|
||||
gitignorePath: "/api/:version/gitignores/:key"
|
||||
|
|
|
@ -54,6 +54,7 @@ module API
|
|||
|
||||
class BasicProjectDetails < Grape::Entity
|
||||
expose :id
|
||||
expose :http_url_to_repo, :web_url
|
||||
expose :name, :name_with_namespace
|
||||
expose :path, :path_with_namespace
|
||||
end
|
||||
|
|
|
@ -25,7 +25,11 @@ module API
|
|||
@projects = current_user.authorized_projects
|
||||
@projects = filter_projects(@projects)
|
||||
@projects = paginate @projects
|
||||
present @projects, with: Entities::ProjectWithAccess, user: current_user
|
||||
if params[:simple]
|
||||
present @projects, with: Entities::BasicProjectDetails, user: current_user
|
||||
else
|
||||
present @projects, with: Entities::ProjectWithAccess, user: current_user
|
||||
end
|
||||
end
|
||||
|
||||
# Get an owned projects list for authenticated user
|
||||
|
|
|
@ -22,7 +22,7 @@ describe 'Project Title', ->
|
|||
@projects_data = fixture.load('projects.json')[0]
|
||||
|
||||
spyOn(jQuery, 'ajax').and.callFake (req) =>
|
||||
expect(req.url).toBe('/api/v3/projects.json')
|
||||
expect(req.url).toBe('/api/v3/projects.json?simple=true')
|
||||
d = $.Deferred()
|
||||
d.resolve @projects_data
|
||||
d.promise()
|
||||
|
|
|
@ -81,6 +81,18 @@ describe API::API, api: true do
|
|||
expect(json_response.first.keys).not_to include('open_issues_count')
|
||||
end
|
||||
|
||||
context 'GET /projects?simple=true' do
|
||||
it 'returns a simplified version of all the projects' do
|
||||
expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace"]
|
||||
|
||||
get api('/projects?simple=true', user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.first.keys).to match_array expected_keys
|
||||
end
|
||||
end
|
||||
|
||||
context 'and using search' do
|
||||
it 'should return searched project' do
|
||||
get api('/projects', user), { search: project.name }
|
||||
|
|
Loading…
Reference in a new issue