mirror of
https://github.com/redmine/redmine.git
synced 2025-11-07 13:55:52 +01:00
Filter time entries after project status (#20081).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@17608 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -80,6 +80,12 @@ class TimeEntryQuery < Query
|
|||||||
:type => :list, :values => activities.map {|a| [a.name, a.id.to_s]}
|
:type => :list, :values => activities.map {|a| [a.name, a.id.to_s]}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_available_filter("project.status",
|
||||||
|
:type => :list,
|
||||||
|
:name => l(:label_attribute_of_project, :name => l(:field_status)),
|
||||||
|
:values => lambda { project_statuses_values }
|
||||||
|
) if project.nil? || !project.leaf?
|
||||||
|
|
||||||
add_available_filter "comments", :type => :text
|
add_available_filter "comments", :type => :text
|
||||||
add_available_filter "hours", :type => :float
|
add_available_filter "hours", :type => :float
|
||||||
|
|
||||||
@@ -205,6 +211,10 @@ class TimeEntryQuery < Query
|
|||||||
sql_for_field("category_id", operator, value, Issue.table_name, "category_id")
|
sql_for_field("category_id", operator, value, Issue.table_name, "category_id")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def sql_for_project_status_field(field, operator, value, options={})
|
||||||
|
sql_for_field(field, operator, value, Project.table_name, "status")
|
||||||
|
end
|
||||||
|
|
||||||
# Accepts :from/:to params as shortcut filters
|
# Accepts :from/:to params as shortcut filters
|
||||||
def build_from_params(params, defaults={})
|
def build_from_params(params, defaults={})
|
||||||
super
|
super
|
||||||
|
|||||||
@@ -986,6 +986,25 @@ class TimelogControllerTest < Redmine::ControllerTest
|
|||||||
assert_equal [entry].map(&:id).map(&:to_s), css_select('input[name="ids[]"]').map {|e| e.attr('value')}
|
assert_equal [entry].map(&:id).map(&:to_s), css_select('input[name="ids[]"]').map {|e| e.attr('value')}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_index_with_project_status_filter
|
||||||
|
project = Project.find(3)
|
||||||
|
project.close
|
||||||
|
project.save
|
||||||
|
|
||||||
|
get :index, :params => {
|
||||||
|
:set_filter => 1,
|
||||||
|
:f => ['project.status'],
|
||||||
|
:op => {'project.status' => '='},
|
||||||
|
:v => {'project.status' => ['1']}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_response :success
|
||||||
|
|
||||||
|
time_entries = css_select('input[name="ids[]"]').map {|e| e.attr('value')}
|
||||||
|
assert_include '1', time_entries
|
||||||
|
assert_not_include '4', time_entries
|
||||||
|
end
|
||||||
|
|
||||||
def test_index_with_issue_status_column
|
def test_index_with_issue_status_column
|
||||||
issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :status_id => 4)
|
issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :status_id => 4)
|
||||||
entry = TimeEntry.generate!(:issue => issue)
|
entry = TimeEntry.generate!(:issue => issue)
|
||||||
|
|||||||
@@ -108,4 +108,19 @@ class TimeEntryQueryTest < ActiveSupport::TestCase
|
|||||||
query = TimeEntryQuery.new(:project => nil, :name => '_')
|
query = TimeEntryQuery.new(:project => nil, :name => '_')
|
||||||
assert !query.available_filters.has_key?('issue.category_id')
|
assert !query.available_filters.has_key?('issue.category_id')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_project_status_filter_should_be_available_in_global_queries
|
||||||
|
query = TimeEntryQuery.new(:project => nil, :name => '_')
|
||||||
|
assert query.available_filters.has_key?('project.status')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_project_status_filter_should_be_available_when_project_has_subprojects
|
||||||
|
query = TimeEntryQuery.new(:project => Project.find(1), :name => '_')
|
||||||
|
assert query.available_filters.has_key?('project.status')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_project_status_filter_should_not_be_available_when_project_is_leaf
|
||||||
|
query = TimeEntryQuery.new(:project => Project.find(2), :name => '_')
|
||||||
|
assert !query.available_filters.has_key?('project.status')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user