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 = ScrollFactory('#orders', app.iscroll_options)
},
show: function(){
if (! auth.logged_in()) { return app.router.go("intro") }
if (! navigator.onLine) {
app.closed.showElement()
app.closed.setMessage("PLEASE GO ONLINE TO VIEW
YOUR ORDERS.", "")
return
}
app.account.consent.check()
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 = $("
