var CartShipping = FormView.extend({ el: "#cart_shipping", action: sdk.cart.set_shipping_address, list_mode: true, data: {}, template: $("#cart_shipping .template").html(), events: { "click .dropdown-wrapper": "toggle_dropdown", }, initialize: function(opt){ this.parent = opt.parent this.$form = this.$("form") this.$dropdown_wrapper = this.$(".dropdown-wrapper") this.$address_list = this.$(".address_list") this.$address_form = this.$(".address") this.$msg = this.$(".msg") this.address = new AddressView ({ parent: this }) this.scroller = new IScroll('#cart_shipping', app.iscroll_options) this.address.disabled = true }, show: function(){ document.body.className = "cart" app.cart.el.className = "shipping" app.footer.show("PAYMENT >", "CANCEL") window.location.hash = "#/cart/shipping" this.populate() this.deferScrollToTop() }, populate: function(){ // id checked name address city state zip this.$(".save_as_default").show() this.$address_list.empty() if (! app.account.addresses.length) { this.toggle_dropdown(false) return } app.account.addresses.forEach(function(address){ var t = this.template.replace(/{{id}}/g, address.Id) .replace(/{{checked}}/g, address.IsDefault ? "checked" : "") .replace(/{{name}}/g, address.Name + " " + address.Surname) .replace(/{{address}}/g, address.Address.replace(/\n$/,"").replace("\n", "
")) .replace(/{{city}}/g, address.City) .replace(/{{state}}/g, address.Province) .replace(/{{zip}}/g, address.ZipCode) this.$address_list.append(t) }.bind(this)) }, toggle_dropdown: function(state){ if (! app.account.addresses.length) { state = false } this.list_mode = typeof state == "boolean" ? state : ! this.list_mode this.$dropdown_wrapper.toggle( !! app.account.addresses.length ) this.address.disabled = this.list_mode this.$address_form.toggle(! this.list_mode) this.$address_list.toggle(this.list_mode) }, // sdk.cart.set_shipping_address // sdk.shipping.get_delivery_types // sdk.shipping.set_delivery_type shipping_types: { Standard: 1, Express: 2, }, finalize: function(data){ var shipping_info = {}, address_data, address_id var shipping_type = $("[name=ShippingType]").filter(function(){ return $(this).prop("checked") }).val() sdk.shipping.set_delivery_type({ id: this.shipping_types[shipping_type], success: function(data){ console.log("set shipping type", data) }, error: function(data){ console.log("didnt set shipping type", data) }, }) if (this.list_mode) { address_id = this.$("[name=AddressId]").filter(function(){ return $(this).prop("checked") }).val() address_data = app.account.addressLookup[ address_id ] } else { address_data = data } shipping_info.Name = address_data.Name shipping_info.Surname = address_data.Surname shipping_info.Email = auth.user.Email shipping_info.Phone = address_data.Phone shipping_info.Mobile = address_data.Phone shipping_info.StreetWithNumber = address_data.Address shipping_info.PostalCode = address_data.ZipCode shipping_info.City = address_data.City shipping_info.Province = address_data.Province shipping_info.Region = address_data.Province shipping_info.CountryCode = CANADIAN_LOOKUP[ address_data.Province ] ? "CA" : "US" this.data = shipping_info return shipping_info }, success: function(){ app.router.go('cart/payment') }, cancel: function(){ app.router.go('cart/summary') }, })