{I" class:ETI"ProcessedAsset;FI"logical_path;TI"fshop/cart.js;FI" pathname;TI"H/home/nofxx/projects/fshop/app/assets/javascripts/fshop/cart.coffee;FI"content_type;TI"application/javascript;TI" mtime;Tl+sRI" length;Ti1I" digest;TI"%38575ae3c71cf7d72ad61113ebbc8bb0;FI" source;TI"1(function() { var BasicPerson, Cart, CartItem, Order, doc, getCartItemData, getCartItemsData, orderFn, _ref, _ref1, _ref2, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; doc = $(document); getCartItemData = function(el) { return $(el).closest('.cart-item').data('cart-item-data'); }; getCartItemsData = function(el) { return $(el).closest('.cart-items-root').data('cart-items-array'); }; Cart = (function(_super) { __extends(Cart, _super); function Cart() { _ref = Cart.__super__.constructor.apply(this, arguments); return _ref; } Cart.prototype.createObservables = function() { return this.oa('items', []); }; Cart.prototype.init = function() { return this.order = new Order(this); }; Cart.prototype.ko_finalValue = function() { var item, value, _i, _len, _ref1; value = 0; _ref1 = this.items(); for (_i = 0, _len = _ref1.length; _i < _len; _i++) { item = _ref1[_i]; value += item.totalValue(); } return value; }; Cart.prototype.ko_changed = function() { var item, _i, _len, _ref1; _ref1 = this.items(); for (_i = 0, _len = _ref1.length; _i < _len; _i++) { item = _ref1[_i]; if (item.changed()) { return true; } } return false; }; Cart.prototype.addItem = function(item) { return this.items.push(item); }; return Cart; })(BaseKO); Order = (function(_super) { __extends(Order, _super); function Order() { _ref1 = Order.__super__.constructor.apply(this, arguments); return _ref1; } Order.prototype.formSelector = '.address-cart-form'; Order.prototype.createObservables = function(cart) { var _this = this; this.cart = cart; this.user = FShopUser.current(); this.o('deliveryAddress', new Address()); this.o('chargingAddress', new Address()); this.o('registerableAddress', new Address()); this.o('addressToRegister', new Address()); this.o('addressFields', ''); this.o('basic_zip', ''); this.oa('sendingAddresses', []); this.o('mirrorPerson', true); this.deliveryPerson = new BasicPerson(); this.chargingPerson = new BasicPerson(); this.user.isLoaded.subscribe(function(isLoaded) { if (isLoaded) { _this.registerableAddress().zip(_this.basic_zip()); } _this.deliveryPerson.name(_this.user.name()); return _this.deliveryPerson.doc(_this.user.doc()); }); this.deliveryPerson.name.subscribe(function(newName) { if (_this.mirrorPerson()) { return _this.chargingPerson.name(newName); } }); this.deliveryPerson.doc.subscribe(function(newDoc) { if (_this.mirrorPerson()) { return _this.chargingPerson.doc(newDoc); } }); this.mirrorPerson.subscribe(function(shouldMirror) { if (!shouldMirror) { return; } _this.chargingPerson.name(_this.deliveryPerson.name()); return _this.chargingPerson.doc(_this.deliveryPerson.doc()); }); this.deliveryPerson.name(this.user.name()); return this.deliveryPerson.doc(this.user.doc()); }; Order.prototype.ko_finalValue = function() { return this.cart.finalValue(); }; Order.prototype.ko_addressesList = function() { return (this.user.addresses() || []).slice().concat(this.registerableAddress()); }; Order.prototype.self_setDeliveryAddress = function(address) { return this.deliveryAddress(address); }; Order.prototype.self_setChargingAddress = function(address) { return this.chargingAddress(address); }; Order.prototype.self_setBothAddresses = function(address) { this.self_setDeliveryAddress(address); return this.self_setChargingAddress(address); }; Order.prototype.isDeliveryAddress = function(address) { return address === this.deliveryAddress(); }; Order.prototype.isChargingAddress = function(address) { return address === this.chargingAddress(); }; Order.prototype.isBothAddresses = function(address) { return this.isDeliveryAddress(address) && this.isChargingAddress(address); }; Order.prototype.ko_bothAddressesAreSame = function() { return this.chargingAddress().id() === this.deliveryAddress().id(); }; Order.prototype.sendAddressButtonTextFor = function(address) { if (address.isNew()) { return 'Cadastrar'; } else { return 'Atualizar'; } }; Order.prototype.shouldAddressBeSendable = function(address) { return this.sendingAddresses().indexOf(address) === -1; }; Order.prototype.generateNewAddress = function() { return this.registerableAddress(new Address()); }; Order.prototype.addressCreated = function(address, data) { address.processData(data); address.error_messages([]); this.user.addresses.push(address); return this.generateNewAddress(); }; Order.prototype.addressUpdated = function(address, data) { address.processData(data); return address.error_messages([]); }; Order.prototype.self_workWithAddress = function(address) { var data, _this = this; data = address.isNew() ? ['new', this.addressCreated] : ['update', this.addressUpdated]; this.sendAddressForm(address, data[0]).done(function(result) { if (result.success) { return data[1].call(_this, address, result.record); } else { return address.error_messages(result.error_messages || ['Aconteceu algum erro.']); } }).fail(function() { return address.error_messages(['Aconteceu algum erro no servidor!']); }); return false; }; Order.prototype.sendAddressForm = function(address, dataKey) { var $form, data, token, _this = this; this.addressToRegister(address); $form = $(this.formSelector).find('form'); data = $form.data("form-" + dataKey) || {}; $form.find('[name=_method]').val(data._method || data.method || 'POST'); $form.find('[name=id]').val(address.id()); token = $('[name="csrf-token"]').attr('content'); $form.find('input[name=authenticity_token]').val(token); this.sendingAddresses.push(address); return $.ajax(data.action, { method: data.method, data: $form.serialize() }).complete(function() { return _this.sendingAddresses.remove(address); }); }; return Order; })(BaseKO); BasicPerson = (function(_super) { __extends(BasicPerson, _super); function BasicPerson() { _ref2 = BasicPerson.__super__.constructor.apply(this, arguments); return _ref2; } BasicPerson.prototype.createObservables = function(data) { if (data == null) { data = {}; } this.o('name', data.name); return this.o('doc', data.doc); }; return BasicPerson; })(BaseKO); CartItem = (function() { function CartItem() { var _this = this; this.price = ko.observable(0); this.count = ko.observable(0); this.infinityShelf = ko.observable(false); this.shelfCount = ko.observable(0); this.originalCount = ko.observable(); this.unitDivider = ko.observable(1); this.totalValue = ko.computed(function() { var count, price; price = _this.price(); count = _this.count(); if (price <= 0 || count <= 0) { return 0; } else { return (price * count) / _this.unitDivider(); } }); this.outOfStock = ko.computed(function() { if (_this.infinityShelf()) { return false; } return _this.count() > _this.shelfCount(); }); this.changed = ko.computed(function() { return _this.count() !== _this.originalCount(); }); } CartItem.prototype.setPrice = function(price) { return this.price(price); }; CartItem.prototype.setQty = function(qty) { this.count(qty); if (this.originalCount() == null) { return this.originalCount(qty); } }; CartItem.prototype.setShelf = function(qty) { if ((typeof qty.charAt === "function" ? qty.charAt(0) : void 0) === 'i') { this.infinityShelf(true); qty = qty.substr(1, qty.length - 1); } return this.shelfCount(qty | 0); }; CartItem.prototype.setDivider = function(divider) { return this.unitDivider(divider); }; return CartItem; })(); orderFn = function(e) { var $dr, $el, $form, $nr, order; if (!isLoggedIn()) { return; } $el = $(this); $form = $el.closest('form'); if ($form.data('cart-verified')) { return; } $form.data('cart-verified', true); e.preventDefault(); alert('Verifique os dados da entrega antes de enviar!'); $dr = $('#delivery-row'); $dr.collapse('show'); if ((order = getCartItemsData($('.cart-items-root')).order).basic_zip()) { $nr = $dr.find('.new-record'); $nr.find('.collapse').collapse('show'); $('body').animate({ scrollTop: $nr.offset().top - parseInt($('body').css('padding-top').replace('px', '') || 0, 10) }, 500); return order.setBothAddresses(order.registerableAddress()); } }; doc.on('created', '.cart-items-root', function() { return $(this).data('cart-items-array', new Cart()); }); doc.on('created', '.cart-item', function() { var itemData; itemData = new CartItem(); $(this).data('cart-item-data', itemData); getCartItemsData(this).addItem(itemData); return ko.applyBindings(itemData, this); }); doc.on('created', '.cart-item [data-divider]', function() { return getCartItemData(this).setDivider($(this).data('divider') | 0); }); doc.on('created', '.cart-item [data-price]', function() { return getCartItemData(this).setPrice($(this).data('price') | 0); }); doc.on('created change keyup', '.cart-item-quantity', function(e) { return getCartItemData(this).setQty($(this).val() | 0); }); doc.on('created', '.cart-item [data-shelf-quantity]', function() { return getCartItemData(this).setShelf($(this).data('shelf-quantity')); }); doc.on('created', '.cart-has-changes', function() { return ko.applyBindings(getCartItemsData($('.cart-items-root')), this); }); doc.on('created', '.remove-hide', function() { return $(this).removeClass('hide'); }); doc.on('created', '.user-cart-order, .address-cart-form', function() { return ko.applyBindings(getCartItemsData($('.cart-items-root')).order, this); }); doc.on('click', '.zip-expander a', function(e) { var $el, $tEl; e.preventDefault(); $el = $(this); $el.closest('.zip-expander').find('.hide').removeClass('hide'); $el.addClass('hide'); $tEl = $el.closest('.cart-zip').find('.address-selection'); if ($tEl.hasClass('hide')) { $tEl.hide().removeClass('hide'); } return $tEl.slideToggle({ durantion: 500 }); }); doc.on('change', '.cart-zip .address-selection input[name*=zip]', function() { var $el, $tEl, isText, text; $el = $(this); if (this.type.toLowerCase() === 'text') { if ($el.closest('.address-selection').find(':radio:checked').val()) { return; } $tEl = $el; isText = true; text = "CEP: " + ($el.val()); } else { $tEl = $el.closest('.form-group').find('.form-control'); isText = $tEl[0].tagName === 'INPUT'; } if (isText) { text = "CEP: " + ($tEl.val()); } else { text = $tEl.html(); } $el.closest('.cart-zip').find('.address-selected').html(text); return $(this).trigger('zip-updated', isText ? $tEl.val() : $el.val()); }); doc.on('zip-updated', '.cart-zip', function(e, zipOrId) { return $.getJSON('/cart/zip.json', { zip: zipOrId, target: 'cart', setZip: true }).success(function(result) { return console.log('get zip result', arguments); }).error(function() { return console.log('fail get zip result', arguments); }); }); doc.on('submit', 'form.user-cart-order', orderFn); doc.on('click', 'form.user-cart-order input[type=submit]', orderFn); }).call(this); ;TI"dependency_digest;TI"%d2fe536b87588321f01753f5079f313a;FI"required_paths;T[ I"G/home/nofxx/projects/fshop/vendor/assets/javascripts/accounting.js;FI"E/home/nofxx/projects/fshop/vendor/assets/javascripts/knockout.js;FI"L/home/nofxx/projects/fshop/app/assets/javascripts/fshop/money_ko.coffee;FI"K/home/nofxx/projects/fshop/app/assets/javascripts/fshop/base_ko.coffee;FI"N/home/nofxx/projects/fshop/app/assets/javascripts/fshop/address_ko.coffee;FI"H/home/nofxx/projects/fshop/app/assets/javascripts/fshop/user.coffee;FI"T/home/nofxx/projects/fshop/app/assets/javascripts/fshop/copyFieldsFor_ko.coffee;FI"H/home/nofxx/projects/fshop/app/assets/javascripts/fshop/cart.coffee;FI"dependency_paths;T[ {I" path;TI"H/home/nofxx/projects/fshop/app/assets/javascripts/fshop/cart.coffee;FI" mtime;TI"2013-10-31T23:21:02-02:00;TI" digest;TI"%163514403370708a2de1e2b8aef5a98f;F{I" path;TI"G/home/nofxx/projects/fshop/vendor/assets/javascripts/accounting.js;FI" mtime;TI"2013-09-12T17:07:38-03:00;TI" digest;TI"%1c0ba8d74820e787e4c0b6db4a91a0c1;F{I" path;TI"L/home/nofxx/projects/fshop/app/assets/javascripts/fshop/money_ko.coffee;FI" mtime;TI"2013-10-31T23:21:02-02:00;TI" digest;TI"%275c9de67e73190c08aeb55b384989ef;F{I" path;TI"E/home/nofxx/projects/fshop/vendor/assets/javascripts/knockout.js;FI" mtime;TI"2013-09-12T17:07:38-03:00;TI" digest;TI"%ecc1056b6ff4b9f1cb025e638320240d;F{I" path;TI"K/home/nofxx/projects/fshop/app/assets/javascripts/fshop/base_ko.coffee;FI" mtime;TI"2013-10-31T23:21:02-02:00;TI" digest;TI"%2210ee139cf3001f08d91669a674ed1a;F{I" path;TI"N/home/nofxx/projects/fshop/app/assets/javascripts/fshop/address_ko.coffee;FI" mtime;TI"2013-10-31T23:21:02-02:00;TI" digest;TI"%13e050d2bfa06feb80a17fe417fe94f5;F{I" path;TI"H/home/nofxx/projects/fshop/app/assets/javascripts/fshop/user.coffee;FI" mtime;TI"2013-10-31T23:21:02-02:00;TI" digest;TI"%be74e7b3681429d0bba7f2d164ab57cb;F{I" path;TI"T/home/nofxx/projects/fshop/app/assets/javascripts/fshop/copyFieldsFor_ko.coffee;FI" mtime;TI"2013-10-31T23:21:02-02:00;TI" digest;TI"%52455938a1ad32f754f7a72362518005;FI" _version;TI"%ac1cd7cf9811f9938e2b8937c60a24e6;F