summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/ui/site/EditSubscriptionModal.js72
1 files changed, 49 insertions, 23 deletions
diff --git a/public/assets/javascripts/ui/site/EditSubscriptionModal.js b/public/assets/javascripts/ui/site/EditSubscriptionModal.js
index e3172d0..8952e42 100644
--- a/public/assets/javascripts/ui/site/EditSubscriptionModal.js
+++ b/public/assets/javascripts/ui/site/EditSubscriptionModal.js
@@ -2,7 +2,8 @@
var EditSubscriptionModal = ModalFormView.extend({
el: ".mediaDrawer.editSubscription",
action: "/api/subscription",
- method: "put",
+ updateAction: "/api/subscription",
+ destroyAction: "/api/subscription/destroy",
fixedClose: true,
subscriber: null,
@@ -51,7 +52,7 @@ var EditSubscriptionModal = ModalFormView.extend({
load: function(){
this.reset()
if (this.loaded) { return this.show() }
- $.get("/api/subscription", function(data){
+ $.get(this.action, function(data){
this.loaded = true
if (data.subscriber) {
this.subscriber = data.subscription
@@ -80,39 +81,64 @@ var EditSubscriptionModal = ModalFormView.extend({
this.__super__.show.call(this)
},
+ calculateTotals: function(subscriber, plan){
+ var t = {}
+ t.is_pro = plan.name == "pro"
+ t.is_monthly = subscriber.plan_period == "monthly"
+ t.plan_price = t.is_monthly ? plan.monthly_price : plan.yearly_price
+ t.basic_layout_price = t.is_monthly ? plan.basic_layout_monthly_price : plan.basic_layout_yearly_price
+ t.basic_layout_total = subscriber.basic_layouts * t.basic_layout_price
+ t.pro_layout_price = t.is_monthly ? plan.pro_layout_monthly_price : plan.pro_layout_yearly_price
+ t.pro_layout_total = t.is_pro ? subscriber.pro_layouts * t.pro_layout_price : 0
+ t.plan_total = t.plan_price + t.basic_layout_total + t.pro_layout_total
+ return t
+ },
+
updateTotals: function(){
var subscriber = this.subscriber
var plan = this.plans[ this.plan_levels[ subscriber.plan_type ] ]
- var is_pro = plan.name == "pro"
- var is_monthly = subscriber.plan_period == "monthly"
+ var totals = this.calculateTotals(subscriber, plan)
- var plan_price = is_monthly ? plan.monthly_price : plan.yearly_price
- this.$planType.html( plan.name )
- this.$planCost.toDollars( plan_price )
+ this.$planType.html ( plan.name )
+ this.$planCost.toDollars ( totals.plan_price )
- this.$billingInterval.html( is_monthly ? "mo." : "yr." )
- this.$proLayoutRow.toggle( is_pro )
+ this.$billingInterval.html ( totals.is_monthly ? "mo." : "yr." )
+ this.$proLayoutRow.toggle ( totals.is_pro )
- var basic_layout_price = is_monthly ? plan.basic_layout_monthly_price : plan.basic_layout_yearly_price
- var basic_layout_total = subscriber.basic_layouts * basic_layout_price
- this.$basicLayoutCost.toDollars( basic_layout_price )
- this.$basicLayoutQuantity.html( subscriber.basic_layouts )
- this.$basicLayoutTotal.toDollars( basic_layout_total )
+ this.$basicLayoutCost.toDollars ( totals.basic_layout_price )
+ this.$basicLayoutQuantity.html ( subscriber.basic_layouts )
+ this.$basicLayoutTotal.toDollars ( totals.basic_layout_total )
- var pro_layout_price = is_monthly ? plan.pro_layout_monthly_price : plan.pro_layout_yearly_price
- var pro_layout_total = is_pro ? subscriber.pro_layouts * pro_layout_price : 0
- this.$proLayoutCost.toDollars( pro_layout_price )
- this.$proLayoutQuantity.html( subscriber.pro_layouts )
- this.$proLayoutTotal.toDollars( pro_layout_total )
+ this.$proLayoutCost.toDollars ( totals.pro_layout_price )
+ this.$proLayoutQuantity.html ( subscriber.pro_layouts )
+ this.$proLayoutTotal.toDollars ( totals.pro_layout_total )
- var plan_total = plan_price + basic_layout_total + pro_layout_total
- this.$planTotal.toDollars( plan_total )
+ this.$planTotal.toDollars ( totals.plan_total )
},
- upgradeSubscription: function(){
+ update: function(){
+ $.ajax({
+ url: this.updateAction,
+ type: "put",
+ data: { _csrf: this.$csrf.val() },
+ success: function(data){
+ window.location.href = "/profile"
+ }
+ })
},
- cancelSubscription: function(){
+ destroy: function(){
+ var msg = "Are you sure you want to cancel your subscription " + sanitize(this.$name.val()) + "?"
+ ConfirmModal.confirm(msg, function(){
+ $.ajax({
+ url: this.destroyAction,
+ type: "delete",
+ data: { _csrf: this.$csrf.val() },
+ success: function(data){
+ window.location.href = "/profile"
+ }
+ })
+ }.bind(this))
},
})