Commit 17af835387c996f82b46f3bade67d513b4e40cc5
1 parent
4675ff46
Exists in
master
and in
4 other branches
Add event filter for group and project show pages
Showing
12 changed files
with
54 additions
and
42 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | +class Activities | |
| 2 | + constructor: -> | |
| 3 | + Pager.init 20, true | |
| 4 | + $(".event_filter_link").bind "click", (event) => | |
| 5 | + event.preventDefault() | |
| 6 | + @toggleFilter($(event.currentTarget)) | |
| 7 | + @reloadActivities() | |
| 8 | + | |
| 9 | + reloadActivities: -> | |
| 10 | + $(".content_list").html '' | |
| 11 | + Pager.init 20, true | |
| 12 | + | |
| 13 | + | |
| 14 | + toggleFilter: (sender) -> | |
| 15 | + sender.parent().toggleClass "inactive" | |
| 16 | + event_filters = $.cookie("event_filter") | |
| 17 | + filter = sender.attr("id").split("_")[0] | |
| 18 | + if event_filters | |
| 19 | + event_filters = event_filters.split(",") | |
| 20 | + else | |
| 21 | + event_filters = new Array() | |
| 22 | + | |
| 23 | + index = event_filters.indexOf(filter) | |
| 24 | + if index is -1 | |
| 25 | + event_filters.push filter | |
| 26 | + else | |
| 27 | + event_filters.splice index, 1 | |
| 28 | + | |
| 29 | + $.cookie "event_filter", event_filters.join(","), { path: '/' } | |
| 30 | + | |
| 31 | +@Activities = Activities | ... | ... |
app/assets/javascripts/dashboard.js.coffee
| 1 | 1 | class Dashboard |
| 2 | 2 | constructor: -> |
| 3 | - Pager.init 20, true | |
| 4 | 3 | @initSidebarTab() |
| 5 | 4 | |
| 6 | - $(".event_filter_link").bind "click", (event) => | |
| 7 | - event.preventDefault() | |
| 8 | - @toggleFilter($(event.currentTarget)) | |
| 9 | - @reloadActivities() | |
| 10 | - | |
| 11 | 5 | $(".dash-filter").keyup -> |
| 12 | 6 | terms = $(this).val() |
| 13 | 7 | uiBox = $(this).parents('.ui-box').first() |
| ... | ... | @@ -24,27 +18,6 @@ class Dashboard |
| 24 | 18 | |
| 25 | 19 | |
| 26 | 20 | |
| 27 | - reloadActivities: -> | |
| 28 | - $(".content_list").html '' | |
| 29 | - Pager.init 20, true | |
| 30 | - | |
| 31 | - toggleFilter: (sender) -> | |
| 32 | - sender.parent().toggleClass "inactive" | |
| 33 | - event_filters = $.cookie("event_filter") | |
| 34 | - filter = sender.attr("id").split("_")[0] | |
| 35 | - if event_filters | |
| 36 | - event_filters = event_filters.split(",") | |
| 37 | - else | |
| 38 | - event_filters = new Array() | |
| 39 | - | |
| 40 | - index = event_filters.indexOf(filter) | |
| 41 | - if index is -1 | |
| 42 | - event_filters.push filter | |
| 43 | - else | |
| 44 | - event_filters.splice index, 1 | |
| 45 | - | |
| 46 | - $.cookie "event_filter", event_filters.join(","), { path: '/' } | |
| 47 | - | |
| 48 | 21 | initSidebarTab: -> |
| 49 | 22 | key = "dashboard_sidebar_filter" |
| 50 | 23 | ... | ... |
app/assets/javascripts/dispatcher.js.coffee
| ... | ... | @@ -20,10 +20,11 @@ class Dispatcher |
| 20 | 20 | Issues.init() |
| 21 | 21 | when 'dashboard:show' |
| 22 | 22 | new Dashboard() |
| 23 | + new Activities() | |
| 23 | 24 | when 'projects:commit:show' |
| 24 | 25 | new Commit() |
| 25 | 26 | when 'groups:show', 'projects:show' |
| 26 | - Pager.init(20, true) | |
| 27 | + new Activities() | |
| 27 | 28 | when 'projects:new', 'projects:edit' |
| 28 | 29 | new Project() |
| 29 | 30 | when 'projects:walls:show' | ... | ... |
app/controllers/application_controller.rb
| ... | ... | @@ -155,4 +155,9 @@ class ApplicationController < ActionController::Base |
| 155 | 155 | redirect_to new_profile_password_path and return |
| 156 | 156 | end |
| 157 | 157 | end |
| 158 | + | |
| 159 | + def event_filter | |
| 160 | + filters = cookies['event_filter'].split(',') if cookies['event_filter'].present? | |
| 161 | + @event_filter ||= EventFilter.new(filters) | |
| 162 | + end | |
| 158 | 163 | end | ... | ... |
app/controllers/dashboard_controller.rb
| ... | ... | @@ -66,9 +66,4 @@ class DashboardController < ApplicationController |
| 66 | 66 | def load_projects |
| 67 | 67 | @projects = current_user.authorized_projects.sorted_by_activity |
| 68 | 68 | end |
| 69 | - | |
| 70 | - def event_filter | |
| 71 | - filters = cookies['event_filter'].split(',') if cookies['event_filter'].present? | |
| 72 | - @event_filter ||= EventFilter.new(filters) | |
| 73 | - end | |
| 74 | 69 | end | ... | ... |
app/controllers/groups_controller.rb
| ... | ... | @@ -31,7 +31,9 @@ class GroupsController < ApplicationController |
| 31 | 31 | end |
| 32 | 32 | |
| 33 | 33 | def show |
| 34 | - @events = Event.in_projects(project_ids).limit(20).offset(params[:offset] || 0) | |
| 34 | + @events = Event.in_projects(project_ids) | |
| 35 | + @events = event_filter.apply_filter(@events) | |
| 36 | + @events = @events.limit(20).offset(params[:offset] || 0) | |
| 35 | 37 | @last_push = current_user.recent_push |
| 36 | 38 | |
| 37 | 39 | respond_to do |format| | ... | ... |
app/controllers/projects_controller.rb
| ... | ... | @@ -55,7 +55,10 @@ class ProjectsController < Projects::ApplicationController |
| 55 | 55 | |
| 56 | 56 | def show |
| 57 | 57 | limit = (params[:limit] || 20).to_i |
| 58 | - @events = @project.events.recent.limit(limit).offset(params[:offset] || 0) | |
| 58 | + | |
| 59 | + @events = @project.events.recent | |
| 60 | + @events = event_filter.apply_filter(@events) | |
| 61 | + @events = @events.limit(limit).offset(params[:offset] || 0) | |
| 59 | 62 | |
| 60 | 63 | # Ensure project default branch is set if it possible |
| 61 | 64 | # Normally it defined on push or during creation | ... | ... |
app/helpers/events_helper.rb
| ... | ... | @@ -28,7 +28,7 @@ module EventsHelper |
| 28 | 28 | end |
| 29 | 29 | |
| 30 | 30 | content_tag :div, class: "filter_icon #{inactive}" do |
| 31 | - link_to dashboard_path, class: 'has_tooltip event_filter_link', id: "#{key}_event_filter", 'data-original-title' => tooltip do | |
| 31 | + link_to request.path, class: 'has_tooltip event_filter_link', id: "#{key}_event_filter", 'data-original-title' => tooltip do | |
| 32 | 32 | content_tag :i, nil, class: icon_for_event[key] |
| 33 | 33 | end |
| 34 | 34 | end | ... | ... |
app/views/dashboard/_activities.html.haml
| 1 | 1 | = render "events/event_last_push", event: @last_push |
| 2 | - | |
| 3 | -.event_filter | |
| 4 | - = event_filter_link EventFilter.push, 'Push events' | |
| 5 | - = event_filter_link EventFilter.merged, 'Merge events' | |
| 6 | - = event_filter_link EventFilter.comments, 'Comments' | |
| 7 | - = event_filter_link EventFilter.team, 'Team' | |
| 2 | += render 'shared/event_filter' | |
| 8 | 3 | |
| 9 | 4 | - if @events.any? |
| 10 | 5 | .content_list | ... | ... |
app/views/groups/show.html.haml
app/views/projects/show.html.haml