diff --git a/app/controllers/admin/conference_controller.rb b/app/controllers/admin/conference_controller.rb index ac175e14..d34ee1ed 100644 --- a/app/controllers/admin/conference_controller.rb +++ b/app/controllers/admin/conference_controller.rb @@ -21,11 +21,11 @@ class Admin::ConferenceController < ApplicationController @conferences.each do |c| # Event submissions over time chart @submissions[c.short_title] = c.get_submissions_per_week - @cfp_weeks.push(c.cfp_weeks) + @cfp_weeks.push(@submissions[c.short_title].length) # Conference registrations over time chart @registrations[c.short_title] = c.get_registrations_per_week - @registration_weeks.push(c.registration_weeks) + @registration_weeks.push(@registrations[c.short_title].length) end @cfp_weeks = @cfp_weeks.max diff --git a/app/models/conference.rb b/app/models/conference.rb index c86c4df8..cdbd26fd 100644 --- a/app/models/conference.rb +++ b/app/models/conference.rb @@ -270,14 +270,16 @@ class Conference < ActiveRecord::Base def calculate_items_per_week(start_week, weeks, items) sum = 0 result = [] - last_key = start_week + 1 + last_key = start_week - 1 - items.each_with_index do |(key, value), index| - # Padding left - if index == 0 - result = Array.new(key.to_i - start_week, 0) - # Padding middle - elsif last_key < (key.to_i - 1) + if !items.empty? && start_week > items.keys[0].to_i + start_week = items.keys[0].to_i + weeks += start_week - items.keys[0].to_i + 1 + end + + items.each do |key, value| + # Padding + if last_key < (key.to_i - 1) result += Array.new(key.to_i - last_key - 1, sum) end diff --git a/spec/models/conference_spec.rb b/spec/models/conference_spec.rb index 7f49addd..2f947160 100644 --- a/spec/models/conference_spec.rb +++ b/spec/models/conference_spec.rb @@ -70,6 +70,24 @@ describe Conference do describe '#get_submissions_per_week' do + it 'does calculate correct if cfp start date is altered' do + cfp = create(:call_for_papers) + cfp.start_date = Date.new(2014, 05, 26) + cfp.end_date = Date.new(2014, 05, 26) + 21 + subject.call_for_papers = cfp + subject.events += [create(:event, created_at: Date.new(2014, 05, 26) - 7)] + expect(subject.get_submissions_per_week).to eq([1, 1, 1, 1, 1]) + end + + it 'does calculate correct if cfp end date is altered' do + cfp = create(:call_for_papers) + cfp.start_date = Date.new(2014, 05, 26) + cfp.end_date = Date.new(2014, 05, 26) + 21 + subject.call_for_papers = cfp + subject.events += [create(:event, created_at: Date.new(2014, 05, 26) + 28)] + expect(subject.get_submissions_per_week).to eq([0, 0, 0, 0, 1]) + end + it 'pads with zeros if there are no submissions' do cfp = create(:call_for_papers) cfp.start_date = Date.new(2014, 05, 26)