54 lines
1.3 KiB
Ruby
54 lines
1.3 KiB
Ruby
|
|
class JamRuby::JamTrackTrack
|
||
|
|
|
||
|
|
# add a custom validation
|
||
|
|
|
||
|
|
validate :preview
|
||
|
|
|
||
|
|
def preview
|
||
|
|
if preview_generate_error
|
||
|
|
errors.add(:preview_start_time, preview_generate_error)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
# this is used by active admin/jam-admin
|
||
|
|
def preview_start_time_raw
|
||
|
|
if self.preview_start_time.nil? || self.preview_start_time.nil?
|
||
|
|
''
|
||
|
|
else
|
||
|
|
seconds = self.preview_start_time.to_f/1000
|
||
|
|
time = Time.at(seconds)
|
||
|
|
time.strftime("%M:%S:#{(self.preview_start_time % 1000).to_s.rjust(3, '0')}")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
# this is used by active admin/jam-admin
|
||
|
|
def preview_start_time_raw=(new_value)
|
||
|
|
|
||
|
|
value = nil
|
||
|
|
if new_value == nil || new_value == ''
|
||
|
|
value = nil
|
||
|
|
else
|
||
|
|
if new_value && new_value.kind_of?(String) && new_value.include?(':')
|
||
|
|
bits = new_value.split(':')
|
||
|
|
if bits.length != 3
|
||
|
|
raise "format of preview start time must be MM:SS:MLS"
|
||
|
|
end
|
||
|
|
|
||
|
|
value = (bits[0].to_i * 60000) + (bits[1].to_i * 1000) + (bits[2].to_i)
|
||
|
|
|
||
|
|
else
|
||
|
|
raise "format of preview start time must be MM:SS:MLS"
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if !value.nil? && value != self.preview_start_time
|
||
|
|
self.preview_start_time = value
|
||
|
|
generate_preview
|
||
|
|
else
|
||
|
|
self.preview_start_time = value
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|