diff options
author | Patrick J Cherry <patrick@bytemark.co.uk> | 2012-05-08 11:46:47 +0100 |
---|---|---|
committer | Patrick J Cherry <patrick@bytemark.co.uk> | 2012-05-08 11:46:47 +0100 |
commit | deb14e7bc1979343188a0130d34bef16256e17ca (patch) | |
tree | c6015ab576ecca6b9b8d8fff90990f04a8455617 /lib | |
parent | 5c34efb1c21fc75c38024a0c802d448eef6527ba (diff) |
Web interface now uses an ajax call to work out ack times, falling back to
javascript if that takes too long.
Default working hours are now 9.30 - 5.30 as per SLA.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mauve/configuration.rb | 2 | ||||
-rw-r--r-- | lib/mauve/mauve_time.rb | 5 | ||||
-rw-r--r-- | lib/mauve/web_interface.rb | 25 |
3 files changed, 18 insertions, 14 deletions
diff --git a/lib/mauve/configuration.rb b/lib/mauve/configuration.rb index 4ee71dd..2acbc42 100644 --- a/lib/mauve/configuration.rb +++ b/lib/mauve/configuration.rb @@ -79,7 +79,7 @@ module Mauve # self.dead_zone = 3...6 self.daytime_hours = 8...20 - self.working_hours = 9...17 + self.working_hours = 9.5..17.5 end # Set the calendar URL. diff --git a/lib/mauve/mauve_time.rb b/lib/mauve/mauve_time.rb index d3fc039..c12fba3 100644 --- a/lib/mauve/mauve_time.rb +++ b/lib/mauve/mauve_time.rb @@ -119,7 +119,10 @@ class Time if defined? Mauve::Configuration and Mauve::Configuration.current Mauve::Configuration.current.working_hours else - [9.0...17.0] + # From our SLA: + # "Working hours" means 9.30am to 5.30pm, Monday to Friday, excluding + # English bank holidays. + [9.5..17.5] end end diff --git a/lib/mauve/web_interface.rb b/lib/mauve/web_interface.rb index 5919bb6..9a46403 100644 --- a/lib/mauve/web_interface.rb +++ b/lib/mauve/web_interface.rb @@ -267,29 +267,30 @@ EOF # get '/ajax/time_in_x_hours/:n_hours/:type_hours' do - content_type :text + content_type "application/json" n_hours = params[:n_hours].to_f type_hours = params[:type_hours].to_s - # - # Sanitise parameters - # - n_hours = ( n_hours > 300 ? 300 : n_hours ) - type_hours = "daytime" unless %w(daytime working wallclock).include?(type_hours) now = Time.now - ack_until = now.in_x_hours(n_hours, type_hours) + max_ack = (Time.now + Configuration.current.max_acknowledgement_time) # - # Make sure we can't ack longer than a week. + # Make sure we can't ack longer than the configuration allows. # - max_ack = (Time.now + Configuration.current.max_acknowledgement_time) - ack_until = max_ack if ack_until > max_ack - + if (n_hours * 3600.0).to_i > Configuration.current.max_acknowledgement_time + ack_until = max_ack + else + type_hours = "daytime" unless %w(daytime working wallclock).include?(type_hours) + ack_until = now.in_x_hours(n_hours, type_hours) + pp ack_until + ack_until = max_ack if ack_until > max_ack + end + # # Return answer as unix seconds. # - ack_until.to_f.round.to_s + "{ \"time\" : #{ack_until.to_f.round}, \"string\" : \"#{ack_until.to_s_human}\" }" end get '/ajax/time_to_s_human/:seconds' do |