Mini Kabibi Habibi
DXSK8.Tablet.productDetail = function (params) {
var utils = DXSK8.Tablet.utils,
app = DXSK8.app;
var updateCurrentOrder = function(product) {
var orderItemId = DXSK8.Tablet.currentOrder.products[product.Type.Id]().OrderItemId;
product.OrderItemId = orderItemId;
if(!orderItemId) {
DXSK8.db.OrderItems.insert({
"Order": DXSK8.db.objectLink("Orders", DXSK8.Tablet.currentOrder.id),
"Product": DXSK8.db.objectLink("Products", product.Id),
}).done(function(response, id) {
product.OrderItemId = id;
});
}
else {
DXSK8.db.OrderItems.update(orderItemId, {
"Product": DXSK8.db.objectLink("Products", product.Id),
});
}
DXSK8.Tablet.currentOrder.products[product.Type.Id](product);
};
var viewModel = {
products: DXSK8.db.Products.toDataSource({
select: ["Id", "Name", "Price", "Description", "Type.Id", "Brand.Id"],
filter: [["Type.Id", Number(params.category)]],
paginate: false,
map: function(product, index) {
var s = new DevExpress.EndpointSelector({
image: {
local: product.__metadata.media_src
}
});
product.imageSrc = s.urlFor("image");
product.features = utils.createProductFeatures(product.Description);
product.cssClass = "t" + product.Type.Id;
product.price = Globalize.format(Number(product.Price), "C");
return product;
}
}),
goBack: function() {
app.navigate("productCategory/" + params.category);
},
choose: function() {
if(!DXSK8.Tablet.currentCustomer.authorized()) {
alert("Please log in");
return app.navigate("login");
}
if(!DXSK8.Tablet.currentOrder.id) {
alert("The order has not yet been created. Please use the desktop version of this demo to create the order.");
return;
}
var product = viewModel.selectedItem();
updateCurrentOrder(product);
},
selectedIndex: ko.observable(Number(params.id))
};
//TODO: consider creating selectedItem binding property for gallery
viewModel.selectedItem = ko.computed(function() {
var selectedIndex = viewModel.selectedIndex();
if(selectedIndex > -1) {
return viewModel.products.items()[selectedIndex];
}
});
return viewModel;
};