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-2016 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
- CORE_FIELDS_UNDISABLABLE =
%w(project_id tracker_id subject description 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).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
- #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, included, #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
134 135 136 137 138 139 140 |
# File 'app/models/tracker.rb', line 134 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
125 126 127 128 129 130 131 |
# File 'app/models/tracker.rb', line 125 def self.disabled_core_fields(trackers) if trackers.present? trackers.map(&:disabled_core_fields).reduce(:&) else [] end end |
Instance Method Details
#<=>(tracker) ⇒ Object
83 84 85 |
# File 'app/models/tracker.rb', line 83 def <=>(tracker) position <=> tracker.position end |
#core_fields ⇒ Object
106 107 108 |
# File 'app/models/tracker.rb', line 106 def core_fields CORE_FIELDS - disabled_core_fields end |
#core_fields=(fields) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'app/models/tracker.rb', line 110 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
101 102 103 104 |
# File 'app/models/tracker.rb', line 101 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
93 94 95 96 97 98 99 |
# File 'app/models/tracker.rb', line 93 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
89 90 91 |
# File 'app/models/tracker.rb', line 89 def issue_statuses @issue_statuses ||= IssueStatus.where(:id => issue_status_ids).to_a.sort end |
#to_s ⇒ Object
81 |
# File 'app/models/tracker.rb', line 81 def to_s; name end |