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
160 161 162 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 160 def mean (total.to_f / values.count.to_f).round(2) end |
#number?(val) ⇒ Boolean
164 165 166 167 168 169 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 164 def number?(val) Float(val) true rescue ArgumentError, TypeError false end |
#total ⇒ Object
156 157 158 |
# File 'app/models/renalware/hd/sessions/auditable_session_collection.rb', line 156 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 152 153 154 |
# 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 |