Add event filter for group and project show pages
This commit is contained in:
		
							parent
							
								
									4675ff46e8
								
							
						
					
					
						commit
						17af835387
					
				| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
class Activities
 | 
			
		||||
  constructor: ->
 | 
			
		||||
    Pager.init 20, true
 | 
			
		||||
    $(".event_filter_link").bind "click", (event) =>
 | 
			
		||||
      event.preventDefault()
 | 
			
		||||
      @toggleFilter($(event.currentTarget))
 | 
			
		||||
      @reloadActivities()
 | 
			
		||||
 | 
			
		||||
  reloadActivities: ->
 | 
			
		||||
    $(".content_list").html ''
 | 
			
		||||
    Pager.init 20, true
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  toggleFilter: (sender) ->
 | 
			
		||||
    sender.parent().toggleClass "inactive"
 | 
			
		||||
    event_filters = $.cookie("event_filter")
 | 
			
		||||
    filter = sender.attr("id").split("_")[0]
 | 
			
		||||
    if event_filters
 | 
			
		||||
      event_filters = event_filters.split(",")
 | 
			
		||||
    else
 | 
			
		||||
      event_filters = new Array()
 | 
			
		||||
 | 
			
		||||
    index = event_filters.indexOf(filter)
 | 
			
		||||
    if index is -1
 | 
			
		||||
      event_filters.push filter
 | 
			
		||||
    else
 | 
			
		||||
      event_filters.splice index, 1
 | 
			
		||||
 | 
			
		||||
    $.cookie "event_filter", event_filters.join(","), { path: '/' }
 | 
			
		||||
 | 
			
		||||
@Activities = Activities
 | 
			
		||||
| 
						 | 
				
			
			@ -1,13 +1,7 @@
 | 
			
		|||
class Dashboard
 | 
			
		||||
  constructor: ->
 | 
			
		||||
    Pager.init 20, true
 | 
			
		||||
    @initSidebarTab()
 | 
			
		||||
 | 
			
		||||
    $(".event_filter_link").bind "click", (event) =>
 | 
			
		||||
      event.preventDefault()
 | 
			
		||||
      @toggleFilter($(event.currentTarget))
 | 
			
		||||
      @reloadActivities()
 | 
			
		||||
 | 
			
		||||
    $(".dash-filter").keyup ->
 | 
			
		||||
      terms = $(this).val()
 | 
			
		||||
      uiBox = $(this).parents('.ui-box').first()
 | 
			
		||||
| 
						 | 
				
			
			@ -24,27 +18,6 @@ class Dashboard
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  reloadActivities: ->
 | 
			
		||||
    $(".content_list").html ''
 | 
			
		||||
    Pager.init 20, true
 | 
			
		||||
 | 
			
		||||
  toggleFilter: (sender) ->
 | 
			
		||||
    sender.parent().toggleClass "inactive"
 | 
			
		||||
    event_filters = $.cookie("event_filter")
 | 
			
		||||
    filter = sender.attr("id").split("_")[0]
 | 
			
		||||
    if event_filters
 | 
			
		||||
      event_filters = event_filters.split(",")
 | 
			
		||||
    else
 | 
			
		||||
      event_filters = new Array()
 | 
			
		||||
 | 
			
		||||
    index = event_filters.indexOf(filter)
 | 
			
		||||
    if index is -1
 | 
			
		||||
      event_filters.push filter
 | 
			
		||||
    else
 | 
			
		||||
      event_filters.splice index, 1
 | 
			
		||||
 | 
			
		||||
    $.cookie "event_filter", event_filters.join(","), { path: '/' }
 | 
			
		||||
 | 
			
		||||
  initSidebarTab: ->
 | 
			
		||||
    key = "dashboard_sidebar_filter"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,10 +20,11 @@ class Dispatcher
 | 
			
		|||
        Issues.init()
 | 
			
		||||
      when 'dashboard:show'
 | 
			
		||||
        new Dashboard()
 | 
			
		||||
        new Activities()
 | 
			
		||||
      when 'projects:commit:show'
 | 
			
		||||
        new Commit()
 | 
			
		||||
      when 'groups:show', 'projects:show'
 | 
			
		||||
        Pager.init(20, true)
 | 
			
		||||
        new Activities()
 | 
			
		||||
      when 'projects:new', 'projects:edit'
 | 
			
		||||
        new Project()
 | 
			
		||||
      when 'projects:walls:show'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,4 +155,9 @@ class ApplicationController < ActionController::Base
 | 
			
		|||
      redirect_to new_profile_password_path and return
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def event_filter
 | 
			
		||||
    filters = cookies['event_filter'].split(',') if cookies['event_filter'].present?
 | 
			
		||||
    @event_filter ||= EventFilter.new(filters)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,9 +66,4 @@ class DashboardController < ApplicationController
 | 
			
		|||
  def load_projects
 | 
			
		||||
    @projects = current_user.authorized_projects.sorted_by_activity
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def event_filter
 | 
			
		||||
    filters = cookies['event_filter'].split(',') if cookies['event_filter'].present?
 | 
			
		||||
    @event_filter ||= EventFilter.new(filters)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,9 @@ class GroupsController < ApplicationController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def show
 | 
			
		||||
    @events = Event.in_projects(project_ids).limit(20).offset(params[:offset] || 0)
 | 
			
		||||
    @events = Event.in_projects(project_ids)
 | 
			
		||||
    @events = event_filter.apply_filter(@events)
 | 
			
		||||
    @events = @events.limit(20).offset(params[:offset] || 0)
 | 
			
		||||
    @last_push = current_user.recent_push
 | 
			
		||||
 | 
			
		||||
    respond_to do |format|
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,7 +55,10 @@ class ProjectsController < Projects::ApplicationController
 | 
			
		|||
 | 
			
		||||
  def show
 | 
			
		||||
    limit = (params[:limit] || 20).to_i
 | 
			
		||||
    @events = @project.events.recent.limit(limit).offset(params[:offset] || 0)
 | 
			
		||||
 | 
			
		||||
    @events = @project.events.recent
 | 
			
		||||
    @events = event_filter.apply_filter(@events)
 | 
			
		||||
    @events = @events.limit(limit).offset(params[:offset] || 0)
 | 
			
		||||
 | 
			
		||||
    # Ensure project default branch is set if it possible
 | 
			
		||||
    # Normally it defined on push or during creation
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ module EventsHelper
 | 
			
		|||
               end
 | 
			
		||||
 | 
			
		||||
    content_tag :div, class: "filter_icon #{inactive}" do
 | 
			
		||||
      link_to dashboard_path, class: 'has_tooltip event_filter_link', id: "#{key}_event_filter", 'data-original-title' => tooltip do
 | 
			
		||||
      link_to request.path, class: 'has_tooltip event_filter_link', id: "#{key}_event_filter", 'data-original-title' => tooltip do
 | 
			
		||||
        content_tag :i, nil, class: icon_for_event[key]
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,5 @@
 | 
			
		|||
= render "events/event_last_push", event: @last_push
 | 
			
		||||
 | 
			
		||||
.event_filter
 | 
			
		||||
  = event_filter_link EventFilter.push, 'Push events'
 | 
			
		||||
  = event_filter_link EventFilter.merged, 'Merge events'
 | 
			
		||||
  = event_filter_link EventFilter.comments, 'Comments'
 | 
			
		||||
  = event_filter_link EventFilter.team, 'Team'
 | 
			
		||||
= render 'shared/event_filter'
 | 
			
		||||
 | 
			
		||||
- if @events.any?
 | 
			
		||||
  .content_list
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
     
 | 
			
		||||
    %span.cgray You will only see events from projects in this group
 | 
			
		||||
    %hr
 | 
			
		||||
    = render 'shared/event_filter'
 | 
			
		||||
    - if @events.any?
 | 
			
		||||
      .content_list
 | 
			
		||||
    - else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
.row
 | 
			
		||||
  .span9
 | 
			
		||||
    = render "events/event_last_push", event: @last_push
 | 
			
		||||
    = render 'shared/event_filter'
 | 
			
		||||
    .content_list
 | 
			
		||||
    .loading.hide
 | 
			
		||||
  .span3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
.event_filter
 | 
			
		||||
  = event_filter_link EventFilter.push, 'Push events'
 | 
			
		||||
  = event_filter_link EventFilter.merged, 'Merge events'
 | 
			
		||||
  = event_filter_link EventFilter.comments, 'Comments'
 | 
			
		||||
  = event_filter_link EventFilter.team, 'Team'
 | 
			
		||||
		Loading…
	
		Reference in New Issue