From e21366f17cb8ff6cc71ea3c5e00ee05c3838fad2 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Thu, 25 Jun 2015 18:18:57 -0300 Subject: [PATCH] Improve listing of processed tasks --- app/controllers/my_profile/tasks_controller.rb | 21 ++++++++++++++++++++- app/models/task.rb | 4 ++++ app/views/tasks/processed.html.erb | 46 +++++++++++++++++++++++++++++++++++++++++++--- public/stylesheets/tasks.css | 16 ++++++++++++++++ test/functional/tasks_controller_test.rb | 2 +- 5 files changed, 84 insertions(+), 5 deletions(-) diff --git a/app/controllers/my_profile/tasks_controller.rb b/app/controllers/my_profile/tasks_controller.rb index 78dcee3..5c03257 100644 --- a/app/controllers/my_profile/tasks_controller.rb +++ b/app/controllers/my_profile/tasks_controller.rb @@ -21,7 +21,26 @@ class TasksController < MyProfileController end def processed - @tasks = Task.to(profile).without_spam.closed.sort_by(&:created_at) + @filter_requestor = params[:filter_requestor].presence + @filter_type = params[:filter_type].presence + @filter_text = params[:filter_text].presence + @filter_status = params[:filter_status].presence + @filter_created_from = Date.parse(params[:filter_created_from]) unless params[:filter_created_from].blank? + @filter_created_until = Date.parse(params[:filter_created_until]) unless params[:filter_created_until].blank? + @filter_closed_from = Date.parse(params[:filter_closed_from]) unless params[:filter_closed_from].blank? + @filter_closed_until = Date.parse(params[:filter_closed_until]) unless params[:filter_closed_until].blank? + + @tasks = Task.to(profile).without_spam.closed.order(:created_at) + @tasks = @tasks.of(@filter_type) + @tasks = @tasks.where(:status => params[:filter_status]) unless @filter_status.blank? + @tasks = @tasks.where('tasks.created_at >= ?', @filter_created_from.beginning_of_day) unless @filter_created_from.blank? + @tasks = @tasks.where('tasks.created_at <= ?', @filter_created_until.end_of_day) unless @filter_created_until.blank? + @tasks = @tasks.joins(:requestor).like('profiles.name', @filter_requestor) unless @filter_requestor.blank? + @tasks = @tasks.like('tasks.data', @filter_text) unless @filter_text.blank? + + @tasks = @tasks.paginate(:per_page => Task.per_page, :page => params[:page]) + + @task_types = Task.closed_types_for(profile) end def change_responsible diff --git a/app/models/task.rb b/app/models/task.rb index 927031d..85e4ddc 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -263,6 +263,10 @@ class Task < ActiveRecord::Base Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] } end + def self.closed_types_for(profile) + Task.to(profile).closed.select('distinct type').map { |t| [t.class.name, t.title] } + end + def opened? status == Task::Status::ACTIVE || status == Task::Status::HIDDEN end diff --git a/app/views/tasks/processed.html.erb b/app/views/tasks/processed.html.erb index b76fac6..a4f8e2a 100644 --- a/app/views/tasks/processed.html.erb +++ b/app/views/tasks/processed.html.erb @@ -1,13 +1,50 @@ +<%= stylesheet_link_tag 'tasks' %> + +

<%= _("%s's processed tasks") % profile.name %>

+
+<% + type_collection = [[nil, _('All')]] + @task_types +%> + <%= form_tag '#', :method => 'get' do %> + <%= field_set_tag _('Filter'), :class => 'filter_fields' do %> +
+ <%= labelled_select(_('Type of task')+': ', :filter_type, :first, :last, @filter_type, type_collection, {:id => 'filter-type'}) %> + <%= 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] ]) %> +
+ +
+ <%= labelled_text_field(_('Text Filter:'), :filter_text, @filter_text) %> + <%= labelled_text_field(_('Requestor Name:'), :filter_requestor, @filter_requestor) %> +
+ + <%= 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' })) %> + <%= 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' })) %> + +

+ <%= submit_button(:search, _('Search')) %> +

+ <% end %> + <% end %> +
+

<% if @tasks.empty? %> <%= _('No processed tasks.') %> <% else %> -

diff --git a/public/stylesheets/tasks.css b/public/stylesheets/tasks.css index 714947d..26d4c1d 100644 --- a/public/stylesheets/tasks.css +++ b/public/stylesheets/tasks.css @@ -53,3 +53,19 @@ .task_responsible { text-align: right; } + +.task-processed li { + background-color: rgb(240, 240, 240); + border-radius: 8px; + margin: 10px 0; + list-style-type: none; + padding: 12px; +} + +.task-processed ul { + padding: 0; +} + +.task-processed .task-list .task .title { + border-bottom: 1px solid rgb(221, 221, 221); +} diff --git a/test/functional/tasks_controller_test.rb b/test/functional/tasks_controller_test.rb index 49d0d6d..9379f6c 100644 --- a/test/functional/tasks_controller_test.rb +++ b/test/functional/tasks_controller_test.rb @@ -46,7 +46,7 @@ class TasksControllerTest < ActionController::TestCase assert_response :success assert_template 'processed' - assert_kind_of Array, assigns(:tasks) + assert !assigns(:tasks).nil? end should 'display task created_at' do -- libgit2 0.21.2