var OrdersView = ScrollableView.extend({ el: "#orders", loaded: false, list_template: $("#orders .list_template").html(), item_template: $("#orders .item_template").html(), events: { "click .back": "back", "click .item": "load_single", }, initialize: function(){ this.$list = this.$(".list") this.$empty = this.$(".empty") this.$single_order = this.$("#single_order") this.$rows = this.$(".rows") this.$subtotal = this.$(".subtotal") this.$shipping = this.$(".shipping") this.$tax = this.$(".tax") this.$total = this.$(".total") this.$shipping_address = this.$(".shipping_address") this.$shipping_method = this.$(".shipping_method") this.scroller = new IScroll('#orders', app.iscroll_options) }, show: function(){ if (! auth.logged_in()) { return app.router.go("intro") } app.header.set_back(false) app.footer.hide() document.body.className = "orders" this.deferScrollToTop() this.el.className = "" if (this.loaded) { this.populate() } else { this.fetch() } }, orders: null, orderLookup: {}, fetch: function(){ this.$list.empty() this.$empty.hide() this.loader = new Loader(this.ready.bind(this)) app.curtain.show("loading") sdk.account.fetch_orders({ success: function(data){ this.loader.register("orders") this.orders = data.OrderDetails data.OrderDetails.forEach(function(row){ this.loader.register(row.OrderNumber) sdk.account.fetch_single_order({ id: row.OrderNumber, success: function(row_data){ this.orderLookup[ row.OrderNumber ] = row_data.OrderFullDetails this.loader.ready(row.OrderNumber) }.bind(this), error: function(){ this.orderLookup[ row.OrderNumber ] = null this.loader.ready(row.OrderNumber) }.bind(this), }) }.bind(this)) this.loader.ready("orders") }.bind(this), error: function(){ console.log("error fetching orders") }.bind(this), }) }, ready: function(){ this.populate() app.curtain.hide("loading") }, populate: function(){ this.$list.empty() if (! this.orders.length) { this.$empty.show() return } else { this.$empty.hide() } this.orders.forEach(function(row){ var order = this.orderLookup[ row.OrderNumber ] if (! order) { return } var t = this.list_template.replace(/{{date}}/g, moment(order['Date']).format("ddd MM/DD/YYYY").toUpperCase()) .replace(/{{id}}/g, row.OrderNumber) .replace(/{{total}}/g, as_cash( order.TotalAmount )) var $t = $(t), $images = $t.find(".images") order.Items.forEach(function(item){ var img = new Image () img.src = sdk.image(item['Code10'], "11_f") $images.append(img) }.bind(this)) this.$list.append($t) }.bind(this)) this.refreshScroller() }, load_single: function(e){ var id = $(e.currentTarget).data("id") var order = this.orderLookup[ id ] if (! order) { return } console.log(order) this.$rows.empty() order.Items.forEach(function(item){ var $el = $("
