Class: Tracker
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Tracker
- 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 collapse
- 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
Class Method Details
.core_fields(trackers) ⇒ Object
Returns the fields that are enabled for one tracker at least
125 126 127 128 129 130 131 |
# File 'app/models/tracker.rb', line 125 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
116 117 118 119 120 121 122 |
# File 'app/models/tracker.rb', line 116 def self.disabled_core_fields(trackers) if trackers.present? trackers.map(&:disabled_core_fields).reduce(:&) else [] end end |
Instance Method Details
#<=>(tracker) ⇒ Object
74 75 76 |
# File 'app/models/tracker.rb', line 74 def <=>(tracker) position <=> tracker.position end |
#core_fields ⇒ Object
97 98 99 |
# File 'app/models/tracker.rb', line 97 def core_fields CORE_FIELDS - disabled_core_fields end |
#core_fields=(fields) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'app/models/tracker.rb', line 101 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
92 93 94 95 |
# File 'app/models/tracker.rb', line 92 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
84 85 86 87 88 89 90 |
# File 'app/models/tracker.rb', line 84 def issue_status_ids if new_record? [] else @issue_status_ids ||= WorkflowTransition.where(:tracker_id => id).uniq.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
80 81 82 |
# File 'app/models/tracker.rb', line 80 def issue_statuses @issue_statuses ||= IssueStatus.where(:id => issue_status_ids).to_a.sort end |
#to_s ⇒ Object
72 |
# File 'app/models/tracker.rb', line 72 def to_s; name end |