Starred, All, and Trending on explore are paged also group projects. Need ajax filter.
This commit is contained in:
parent
0dc64a8ce1
commit
30e022a2fe
7 changed files with 55 additions and 14 deletions
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
initSearch: ->
|
initSearch: ->
|
||||||
@timer = null
|
@timer = null
|
||||||
$("#project-filter-form-field").on('keyup', ->
|
$("#project-filter-form-field,.projects-list-filter").on('keyup', ->
|
||||||
clearTimeout(@timer)
|
clearTimeout(@timer)
|
||||||
@timer = setTimeout(Dashboard.filterResults, 500)
|
@timer = setTimeout(Dashboard.filterResults, 500)
|
||||||
)
|
)
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
complete: ->
|
complete: ->
|
||||||
$('.projects-list-holder').fadeTo(250, 1)
|
$('.projects-list-holder').fadeTo(250, 1)
|
||||||
success: (data) ->
|
success: (data) ->
|
||||||
$('div.projects-list-holder').replaceWith(data.html)
|
$('.projects-list-holder,.public-projects').replaceWith(data.html)
|
||||||
# Change url so if user reload a page - search results are saved
|
# Change url so if user reload a page - search results are saved
|
||||||
history.replaceState {page: project_filter_url}, document.title, project_filter_url
|
history.replaceState {page: project_filter_url}, document.title, project_filter_url
|
||||||
dataType: "json"
|
dataType: "json"
|
||||||
|
|
|
@ -16,6 +16,8 @@ class Dispatcher
|
||||||
shortcut_handler = null
|
shortcut_handler = null
|
||||||
|
|
||||||
switch page
|
switch page
|
||||||
|
when 'explore:projects:index', 'explore:projects:starred', 'explore:projects:trending'
|
||||||
|
Dashboard.init()
|
||||||
when 'projects:issues:index'
|
when 'projects:issues:index'
|
||||||
Issues.init()
|
Issues.init()
|
||||||
shortcut_handler = new ShortcutsNavigation()
|
shortcut_handler = new ShortcutsNavigation()
|
||||||
|
|
|
@ -11,8 +11,8 @@ class @ProjectsList
|
||||||
ProjectsList.filter_results($("#project-filter-form-field"))
|
ProjectsList.filter_results($("#project-filter-form-field"))
|
||||||
|
|
||||||
@filter_results: ($element) ->
|
@filter_results: ($element) ->
|
||||||
terms = $($element).val()
|
terms = $element.val()
|
||||||
filterSelector = $($element).data('filter-selector') || 'span.filter-title'
|
filterSelector = $element.data('filter-selector') || 'span.filter-title'
|
||||||
|
|
||||||
if not terms
|
if not terms
|
||||||
$("ul.projects-list li").show()
|
$("ul.projects-list li").show()
|
||||||
|
|
|
@ -6,19 +6,49 @@ class Explore::ProjectsController < Explore::ApplicationController
|
||||||
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
|
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
|
||||||
@projects = @projects.non_archived
|
@projects = @projects.non_archived
|
||||||
@projects = @projects.search(params[:search]) if params[:search].present?
|
@projects = @projects.search(params[:search]) if params[:search].present?
|
||||||
|
@projects = @projects.search(params[:filter_projects]) if params[:filter_projects].present?
|
||||||
@projects = @projects.sort(@sort = params[:sort])
|
@projects = @projects.sort(@sort = params[:sort])
|
||||||
@projects = @projects.includes(:namespace).page(params[:page]).per(PER_PAGE)
|
@projects = @projects.includes(:namespace).page(params[:page]).per(PER_PAGE)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html
|
||||||
|
format.json do
|
||||||
|
render json: {
|
||||||
|
html: view_to_html_string("dashboard/projects/_projects", locals: { projects: @projects })
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def trending
|
def trending
|
||||||
@projects = TrendingProjectsFinder.new.execute(current_user)
|
@projects = TrendingProjectsFinder.new.execute(current_user)
|
||||||
@projects = @projects.non_archived
|
@projects = @projects.non_archived
|
||||||
|
@projects = @projects.search(params[:filter_projects]) if params[:filter_projects].present?
|
||||||
@projects = @projects.page(params[:page]).per(PER_PAGE)
|
@projects = @projects.page(params[:page]).per(PER_PAGE)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html
|
||||||
|
format.json do
|
||||||
|
render json: {
|
||||||
|
html: view_to_html_string("dashboard/projects/_projects", locals: { projects: @projects })
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def starred
|
def starred
|
||||||
@projects = ProjectsFinder.new.execute(current_user)
|
@projects = ProjectsFinder.new.execute(current_user)
|
||||||
|
@projects = @projects.search(params[:filter_projects]) if params[:filter_projects].present?
|
||||||
@projects = @projects.reorder('star_count DESC')
|
@projects = @projects.reorder('star_count DESC')
|
||||||
@projects = @projects.page(params[:page]).per(PER_PAGE)
|
@projects = @projects.page(params[:page]).per(PER_PAGE)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html
|
||||||
|
format.json do
|
||||||
|
render json: {
|
||||||
|
html: view_to_html_string("dashboard/projects/_projects", locals: { projects: @projects })
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -41,14 +41,21 @@ class GroupsController < Groups::ApplicationController
|
||||||
def show
|
def show
|
||||||
@last_push = current_user.recent_push if current_user
|
@last_push = current_user.recent_push if current_user
|
||||||
@projects = @projects.includes(:namespace)
|
@projects = @projects.includes(:namespace)
|
||||||
|
@projects = @projects.search(params[:filter_projects]) if params[:filter_projects].present?
|
||||||
@projects = @projects.page(params[:page]).per(PER_PAGE)
|
@projects = @projects.page(params[:page]).per(PER_PAGE)
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
|
|
||||||
format.json do
|
format.json do
|
||||||
load_events
|
if params[:filter_projects]
|
||||||
pager_json("events/_events", @events.count)
|
render json: {
|
||||||
|
html: view_to_html_string("dashboard/projects/_projects", locals: { projects: @projects })
|
||||||
|
}
|
||||||
|
else
|
||||||
|
load_events
|
||||||
|
pager_json("events/_events", @events.count)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
format.atom do
|
format.atom do
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
.projects-list-holder.prepend-top-default
|
.top-area
|
||||||
.input-group
|
.nav-controls
|
||||||
= search_field_tag :filter_projects, nil, placeholder: 'Filter by name', class: 'projects-list-filter form-control', spellcheck: false
|
= form_tag request.original_url, method: :get, class: 'project-filter-form', id: 'project-filter-form' do |f|
|
||||||
- if can? current_user, :create_projects, @group
|
= search_field_tag :filter_projects, params[:filter_projects], placeholder: 'Filter by name...', class: 'input-short project-filter-form-field form-control', spellcheck: false, id: 'project-filter-form-field'
|
||||||
%span.input-group-btn
|
- if current_user && current_user.can_create_project?
|
||||||
= link_to new_project_path(namespace_id: @group.id), class: 'btn btn-new' do
|
= link_to new_project_path, class: 'btn btn-new' do
|
||||||
= icon('plus')
|
= icon('plus')
|
||||||
New Project
|
New Project
|
||||||
|
|
||||||
|
.projects-list-holder
|
||||||
= render 'shared/projects/list', projects: @projects, projects_limit: 20, stars: false, skip_namespace: true
|
= render 'shared/projects/list', projects: @projects, projects_limit: 20, stars: false, skip_namespace: true
|
||||||
|
|
|
@ -27,3 +27,4 @@
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
new ProjectsList();
|
new ProjectsList();
|
||||||
|
Dashboard.init();
|
||||||
|
|
Loading…
Reference in a new issue