allow timezone parameters to work correctly with charts

This commit is contained in:
Lee Lawlor 2014-08-05 12:20:10 -04:00
parent 7b44f08dd5
commit 868882a0c9
3 changed files with 14 additions and 3 deletions

View File

@ -328,6 +328,9 @@ class ApplicationController < ActionController::Base
# use the offset to find an appropriate timezone # use the offset to find an appropriate timezone
def set_timezone_from_offset(offset) def set_timezone_from_offset(offset)
offset = offset.to_i offset = offset.to_i
# always set to UTC if offset is 0
return 'UTC' if offset == 0
# keep track of the currently matched time zone # keep track of the currently matched time zone
current_zone = nil current_zone = nil

View File

@ -99,9 +99,15 @@ module FeedHelper
empty_clone.attribute_names.each { |attr| empty_clone[attr] = nil } empty_clone.attribute_names.each { |attr| empty_clone[attr] = nil }
return empty_clone return empty_clone
end end
# get the time floored to the correct number of seconds
def get_floored_time(input_time, seconds) def get_floored_time(input_time, seconds)
return Time.zone.at((input_time.to_f / seconds).floor * seconds) floored_seconds = (input_time.to_f / seconds).floor * seconds
# offset the seconds by the current time zone offset
offset_seconds = Time.zone.now.utc_offset
return Time.at(floored_seconds - offset_seconds)
end end
# slice feed into timescales # slice feed into timescales
def feeds_into_timescales(feeds, params) def feeds_into_timescales(feeds, params)

View File

@ -39,9 +39,11 @@ class DailyFeed < ActiveRecord::Base
return output return output
end end
# checks to see if this is a daily feed # checks to see if this is a daily feed, only works for timezone UTC (offset == 0)
def self.valid_params(params) def self.valid_params(params)
(params[:timescale] == '1440' || params[:sum] == '1440' || params[:average] == '1440' || params[:median] == '1440') ? true : false daily_params = (params[:timescale] == '1440' || params[:sum] == '1440' || params[:average] == '1440' || params[:median] == '1440') ? true : false
return daily_params && (Time.zone.name == 'UTC')
end end
end end