Commit e21366f17cb8ff6cc71ea3c5e00ee05c3838fad2
1 parent
556c20c3
Exists in
theme-brasil-digital-from-staging
and in
9 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