Class: Tracker
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Tracker
- Includes:
- Redmine::SafeAttributes
- Defined in:
- app/models/tracker.rb
Overview
Redmine - project management software Copyright (C) 2006-2017 Jean-Philippe Lang
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Constant Summary collapse
- CORE_FIELDS_UNDISABLABLE =
%w(project_id tracker_id subject priority_id is_private).freeze
- CORE_FIELDS =
Fields that can be disabled Other (future) fields should be appended, not inserted!
%w(assigned_to_id category_id fixed_version_id parent_issue_id start_date due_date estimated_hours done_ratio description).freeze
- CORE_FIELDS_ALL =
(CORE_FIELDS_UNDISABLABLE + CORE_FIELDS).freeze
Class Method Summary collapse
-
.core_fields(trackers) ⇒ Object
Returns the fields that are enabled for one tracker at least.
-
.disabled_core_fields(trackers) ⇒ Object
Returns the fields that are disabled for all the given trackers.
Instance Method Summary collapse
- #<=>(tracker) ⇒ Object
- #copy_workflow_rules(source_tracker) ⇒ Object
- #core_fields ⇒ Object
- #core_fields=(fields) ⇒ Object
- #disabled_core_fields ⇒ Object
- #issue_status_ids ⇒ Object
-
#issue_statuses ⇒ Object
Returns an array of IssueStatus that are used in the tracker's workflows.
- #to_s ⇒ Object
Methods included from Redmine::SafeAttributes
#delete_unsafe_attributes, #safe_attribute?, #safe_attribute_names, #safe_attributes=
Class Method Details
.core_fields(trackers) ⇒ Object
Returns the fields that are enabled for one tracker at least
131 132 133 134 135 136 137 |
# File 'app/models/tracker.rb', line 131 def self.core_fields(trackers) if trackers.present? trackers.uniq.map(&:core_fields).reduce(:|) else CORE_FIELDS.dup end end |
.disabled_core_fields(trackers) ⇒ Object
Returns the fields that are disabled for all the given trackers
122 123 124 125 126 127 128 |
# File 'app/models/tracker.rb', line 122 def self.disabled_core_fields(trackers) if trackers.present? trackers.map(&:disabled_core_fields).reduce(:&) else [] end end |
Instance Method Details
#<=>(tracker) ⇒ Object
76 77 78 |
# File 'app/models/tracker.rb', line 76 def <=>(tracker) position <=> tracker.position end |
#copy_workflow_rules(source_tracker) ⇒ Object
117 118 119 |
# File 'app/models/tracker.rb', line 117 def copy_workflow_rules(source_tracker) WorkflowRule.copy(source_tracker, nil, self, nil) end |
#core_fields ⇒ Object
99 100 101 |
# File 'app/models/tracker.rb', line 99 def core_fields CORE_FIELDS - disabled_core_fields end |
#core_fields=(fields) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'app/models/tracker.rb', line 103 def core_fields=(fields) raise ArgumentError.new("Tracker.core_fields takes an array") unless fields.is_a?(Array) bits = 0 CORE_FIELDS.each_with_index do |field, i| unless fields.include?(field) bits |= 2 ** i end end self.fields_bits = bits @disabled_core_fields = nil core_fields end |
#disabled_core_fields ⇒ Object
94 95 96 97 |
# File 'app/models/tracker.rb', line 94 def disabled_core_fields i = -1 @disabled_core_fields ||= CORE_FIELDS.select { i += 1; (fields_bits || 0) & (2 ** i) != 0} end |
#issue_status_ids ⇒ Object
86 87 88 89 90 91 92 |
# File 'app/models/tracker.rb', line 86 def issue_status_ids if new_record? [] else @issue_status_ids ||= WorkflowTransition.where(:tracker_id => id).distinct.pluck(:old_status_id, :new_status_id).flatten.uniq end end |
#issue_statuses ⇒ Object
Returns an array of IssueStatus that are used in the tracker's workflows
82 83 84 |
# File 'app/models/tracker.rb', line 82 def issue_statuses @issue_statuses ||= IssueStatus.where(:id => issue_status_ids).to_a.sort end |
#to_s ⇒ Object
74 |
# File 'app/models/tracker.rb', line 74 def to_s; name end |