mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-07 13:44:23 +08:00
40 lines
910 B
Ruby
40 lines
910 B
Ruby
# frozen_string_literal: true
|
|
|
|
class FormNumberFieldValue < FormFieldValue
|
|
def value=(val)
|
|
self.unit = form_field.data['unit']
|
|
|
|
if val.is_a?(Array)
|
|
self.number = val[0]
|
|
self.number_to = val[1]
|
|
else
|
|
self.number = val
|
|
end
|
|
end
|
|
|
|
def value
|
|
range? ? [number, number_to] : number
|
|
end
|
|
|
|
def range?
|
|
number_to.present?
|
|
end
|
|
|
|
def formatted
|
|
number_with_unit = "#{number} #{unit}"
|
|
range? ? "#{number_with_unit} - #{number_to} #{unit}" : number_with_unit
|
|
end
|
|
|
|
def value_in_range?
|
|
return true if number.nil?
|
|
|
|
validation_params = form_field.data.dig('validations', 'response_validation')
|
|
|
|
return true unless validation_params && validation_params['enabled']
|
|
|
|
min_value = validation_params['min']
|
|
max_value = validation_params['max']
|
|
|
|
!((min_value.present? && min_value > number) || (max_value.present? && max_value < number))
|
|
end
|
|
end
|