Class: Renalware::HD::Sessions::AuditableSessionCollection::MeanValueStrategy
- Inherits:
-
Object
- Object
- Renalware::HD::Sessions::AuditableSessionCollection::MeanValueStrategy
- Defined in:
- app/models/renalware/hd/sessions/auditable_session_collection.rb
Instance Attribute Summary collapse
-
#selector ⇒ Object
readonly
Returns the value of attribute selector.
-
#sessions ⇒ Object
readonly
Returns the value of attribute sessions.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(sessions:, selector:) ⇒ MeanValueStrategy
constructor
A new instance of MeanValueStrategy.
- #mean ⇒ Object
- #number?(val) ⇒ Boolean
- #total ⇒ Object
-
#values ⇒ Object
Note here we ignore values that cannot be coerced into a number Any values like “## TEST CANCELLED” etc are thus excluded from the calculation.
Constructor Details
#initialize(sessions:, selector:) ⇒ MeanValueStrategy
Returns a new instance of MeanValueStrategy.
136 137 138 139 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 136 def initialize(sessions:, selector:) @sessions = sessions @selector = selector end |
Instance Attribute Details
#selector ⇒ Object (readonly)
Returns the value of attribute selector.
134 135 136 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 134 def selector @selector end |
#sessions ⇒ Object (readonly)
Returns the value of attribute sessions.
134 135 136 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 134 def sessions @sessions end |
Instance Method Details
#call ⇒ Object
141 142 143 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 141 def call values.blank? ? 0 : mean end |
#mean ⇒ Object
157 158 159 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 157 def mean (total.to_f / values.count.to_f).round(2) end |
#number?(val) ⇒ Boolean
161 162 163 164 165 166 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 161 def number?(val) Float(val) true rescue ArgumentError, TypeError false end |
#total ⇒ Object
153 154 155 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 153 def total @total ||= values.inject(0.0){ |sum, value| sum + value.to_f } end |
#values ⇒ Object
Note here we ignore values that cannot be coerced into a number Any values like “## TEST CANCELLED” etc are thus excluded from the calculation
147 148 149 150 151 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 147 def values @values ||= begin sessions.map { |session| selector.call(session) }.compact.select{ |val| number?(val) } end end |