Commit e21366f17cb8ff6cc71ea3c5e00ee05c3838fad2
1 parent
556c20c3
Exists in
staging
and in
4 other branches
Improve listing of processed tasks
Showing
5 changed files
with
84 additions
and
5 deletions
Show diff stats
app/controllers/my_profile/tasks_controller.rb
... | ... | @@ -21,7 +21,26 @@ class TasksController < MyProfileController |
21 | 21 | end |
22 | 22 | |
23 | 23 | def processed |
24 | - @tasks = Task.to(profile).without_spam.closed.sort_by(&:created_at) | |
24 | + @filter_requestor = params[:filter_requestor].presence | |
25 | + @filter_type = params[:filter_type].presence | |
26 | + @filter_text = params[:filter_text].presence | |
27 | + @filter_status = params[:filter_status].presence | |
28 | + @filter_created_from = Date.parse(params[:filter_created_from]) unless params[:filter_created_from].blank? | |
29 | + @filter_created_until = Date.parse(params[:filter_created_until]) unless params[:filter_created_until].blank? | |
30 | + @filter_closed_from = Date.parse(params[:filter_closed_from]) unless params[:filter_closed_from].blank? | |
31 | + @filter_closed_until = Date.parse(params[:filter_closed_until]) unless params[:filter_closed_until].blank? | |
32 | + | |
33 | + @tasks = Task.to(profile).without_spam.closed.order(:created_at) | |
34 | + @tasks = @tasks.of(@filter_type) | |
35 | + @tasks = @tasks.where(:status => params[:filter_status]) unless @filter_status.blank? | |
36 | + @tasks = @tasks.where('tasks.created_at >= ?', @filter_created_from.beginning_of_day) unless @filter_created_from.blank? | |
37 | + @tasks = @tasks.where('tasks.created_at <= ?', @filter_created_until.end_of_day) unless @filter_created_until.blank? | |
38 | + @tasks = @tasks.joins(:requestor).like('profiles.name', @filter_requestor) unless @filter_requestor.blank? | |
39 | + @tasks = @tasks.like('tasks.data', @filter_text) unless @filter_text.blank? | |
40 | + | |
41 | + @tasks = @tasks.paginate(:per_page => Task.per_page, :page => params[:page]) | |
42 | + | |
43 | + @task_types = Task.closed_types_for(profile) | |
25 | 44 | end |
26 | 45 | |
27 | 46 | def change_responsible | ... | ... |
app/models/task.rb
... | ... | @@ -263,6 +263,10 @@ class Task < ActiveRecord::Base |
263 | 263 | Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] } |
264 | 264 | end |
265 | 265 | |
266 | + def self.closed_types_for(profile) | |
267 | + Task.to(profile).closed.select('distinct type').map { |t| [t.class.name, t.title] } | |
268 | + end | |
269 | + | |
266 | 270 | def opened? |
267 | 271 | status == Task::Status::ACTIVE || status == Task::Status::HIDDEN |
268 | 272 | end | ... | ... |
app/views/tasks/processed.html.erb
1 | +<%= stylesheet_link_tag 'tasks' %> | |
2 | + | |
3 | +<div class="task-processed"> | |
1 | 4 | <h1><%= _("%s's processed tasks") % profile.name %></h1> |
2 | 5 | |
6 | +<div class="task-processed-filter"> | |
7 | +<% | |
8 | + type_collection = [[nil, _('All')]] + @task_types | |
9 | +%> | |
10 | + <%= form_tag '#', :method => 'get' do %> | |
11 | + <%= field_set_tag _('Filter'), :class => 'filter_fields' do %> | |
12 | + <div> | |
13 | + <%= labelled_select(_('Type of task')+': ', :filter_type, :first, :last, @filter_type, type_collection, {:id => 'filter-type'}) %> | |
14 | + <%= labelled_select(_('Status:'), :filter_status, :last, :first, @filter_status, [[_('Any'), nil], [Task::Status.names[Task::Status::CANCELLED], 2], [Task::Status.names[Task::Status::FINISHED], 3] ]) %> | |
15 | + </div> | |
16 | + | |
17 | + <div> | |
18 | + <%= labelled_text_field(_('Text Filter:'), :filter_text, @filter_text) %> | |
19 | + <%= labelled_text_field(_('Requestor Name:'), :filter_requestor, @filter_requestor) %> | |
20 | + </div> | |
21 | + | |
22 | + <%= labelled_form_field(_('Creation date'), date_range_field(:filter_created_from, :filter_created_until, @filter_created_from, @filter_created_until, '%Y-%m-%d', { :change_month => true, :change_year => true, :date_format => 'yy-mm-dd' }, { :size => 14, :from_id => 'filter_created_from', :to_id => 'filter_created_until' })) %> | |
23 | + <%= labelled_form_field(_('Processed date'), date_range_field(:filter_closed_from, :filter_closed_until, @filter_closed_from, @filter_closed_until, '%Y-%m-%d', { :change_month => true, :change_year => true, :date_format => 'yy-mm-dd' }, { :size => 14, :from_id => 'filter_closed_from', :to_id => 'filter_closed_until' })) %> | |
24 | + | |
25 | + <p> | |
26 | + <%= submit_button(:search, _('Search')) %> | |
27 | + </p> | |
28 | + <% end %> | |
29 | + <% end %> | |
30 | +</div> | |
31 | + | |
3 | 32 | <p> |
4 | 33 | <% if @tasks.empty? %> |
5 | 34 | <em><%= _('No processed tasks.') %></em> |
6 | 35 | <% else %> |
7 | - <ul> | |
36 | + <ul class="task-list"> | |
8 | 37 | <% @tasks.each do |item| %> |
9 | - <li> | |
10 | - <strong><%= task_information(item) %></strong> <br/> | |
38 | + <li class="task"> | |
39 | + <div class="title"> | |
40 | + <strong><%= task_information(item) %></strong> <br/> | |
41 | + </div> | |
42 | + <div> | |
43 | + <span><%= _('Status: ') %></span> | |
44 | + <span> | |
45 | + <%= Task::Status.names[item.status] %> | |
46 | + </span> | |
47 | + </div> | |
11 | 48 | <small> |
12 | 49 | <%= _('Created:') +' '+ show_date(item.created_at) %> |
13 | 50 | — |
... | ... | @@ -16,9 +53,12 @@ |
16 | 53 | </li> |
17 | 54 | <% end %> |
18 | 55 | </ul> |
56 | + <%= pagination_links(@tasks)%> | |
19 | 57 | <% end %> |
20 | 58 | </p> |
21 | 59 | |
22 | 60 | <% button_bar do %> |
23 | 61 | <%= button(:back, _('Back'), :action => 'index') %> |
24 | 62 | <% end %> |
63 | + | |
64 | +</div> | ... | ... |
public/stylesheets/tasks.css
... | ... | @@ -53,3 +53,19 @@ |
53 | 53 | .task_responsible { |
54 | 54 | text-align: right; |
55 | 55 | } |
56 | + | |
57 | +.task-processed li { | |
58 | + background-color: rgb(240, 240, 240); | |
59 | + border-radius: 8px; | |
60 | + margin: 10px 0; | |
61 | + list-style-type: none; | |
62 | + padding: 12px; | |
63 | +} | |
64 | + | |
65 | +.task-processed ul { | |
66 | + padding: 0; | |
67 | +} | |
68 | + | |
69 | +.task-processed .task-list .task .title { | |
70 | + border-bottom: 1px solid rgb(221, 221, 221); | |
71 | +} | ... | ... |
test/functional/tasks_controller_test.rb