From a035ef536f5cfab94dd8c70153bc4b07aef8950b Mon Sep 17 00:00:00 2001 From: Ramy Mostafa Date: Tue, 21 Jan 2014 02:09:17 +0200 Subject: [PATCH] issue #27 Better Countdown Handling --- Gemfile | 2 +- Gemfile.lock | 3 +++ app/assets/javascripts/application.js | 1 + app/assets/javascripts/campaigns.js.coffee | 29 ++++++++++++++++++++-- app/views/theme/views/campaign.html.erb | 13 ++-------- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/Gemfile b/Gemfile index 92db9096..e110147e 100644 --- a/Gemfile +++ b/Gemfile @@ -16,7 +16,7 @@ gem 'paperclip', '~> 3.0' gem 'ckeditor' gem 'aws-sdk' gem 'active_model_serializers' - +gem 'momentjs-rails' # Front-end gem 'bootstrap-sass', '2.1' gem 'jquery-rails' diff --git a/Gemfile.lock b/Gemfile.lock index 9df9df5c..66565f27 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -136,6 +136,8 @@ GEM treetop (~> 1.4.8) method_source (0.8.1) mime-types (1.23) + momentjs-rails (2.5.0) + railties (>= 3.1) multi_json (1.7.6) multipart-post (1.2.0) net-scp (1.1.1) @@ -256,6 +258,7 @@ DEPENDENCIES jquery-rails jquery-ui-rails lograge + momentjs-rails newrelic_rpm nokogiri paperclip (~> 3.0) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 5cc98ab9..f858278e 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -29,3 +29,4 @@ //= require validate //= require event_tracking //= require unsaved_changes.js +//= require moment diff --git a/app/assets/javascripts/campaigns.js.coffee b/app/assets/javascripts/campaigns.js.coffee index 6cd88c54..2966ec41 100644 --- a/app/assets/javascripts/campaigns.js.coffee +++ b/app/assets/javascripts/campaigns.js.coffee @@ -44,7 +44,7 @@ Crowdhoster.campaigns = $('input').prop('checked', false) $('#amount').removeClass('error') $('.error').hide() - + $('#amount_form').on "submit", (e) -> e.preventDefault() $reward = $('.reward_option.selected') @@ -57,6 +57,7 @@ Crowdhoster.campaigns = $('.error').html('Amount must be at least $' + $reward.attr('data-price') + ' to select that ' + $('#reward_select').attr('data-reference') + '.').show() else this.submit() + this.timeCheck('#days') submitPaymentForm: (form) -> $('#refresh-msg').show() @@ -90,7 +91,31 @@ Crowdhoster.campaigns = user_id = $form.find('#ct_user_id').val() crowdtilt.card.create(user_id, cardData, this.cardResponseHandler) - + timeCheck: (element) -> + expiration = $(element).attr("date-element") + date_moment = moment.unix(expiration) + expired = moment().diff(date_moment, "seconds") > 0 + if expired + $(element).html "No days left!" + return + months = date_moment.diff(moment(), "months") + days = date_moment.diff(moment(), "days") + refDate = "months" + refDiff = months + if days < 120 + hours = date_moment.diff(moment(), "hours") + if hours > 72 + refDiff = days + refDate = "days" + else + if hours >= 2 + refDiff = hours + refDate = "hours" + else + refDiff = date_moment.diff(moment(), "minutes") + refDate = "minutes" + $(element).html refDiff + "" + refDate + " left" + cardResponseHandler: (response) -> switch response.status when 201 diff --git a/app/views/theme/views/campaign.html.erb b/app/views/theme/views/campaign.html.erb index b6bd3948..a019f1d1 100644 --- a/app/views/theme/views/campaign.html.erb +++ b/app/views/theme/views/campaign.html.erb @@ -58,17 +58,8 @@ <% end %> - <% if !@campaign.expired? %> -
  • - <%= distance_of_time_in_words_to_now(@campaign.expiration_date).gsub(/\D/, "") %> - <%= distance_of_time_in_words_to_now(@campaign.expiration_date).gsub(/\d/, "").gsub("about", "") %> left -
  • - <% else %> -
  • - No - days left! -
  • - <% end %> +
  • +
  • <% if @campaign.raised_amount < @campaign.goal_dollars %>