Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXTREME 13.1 Demos/DXSK8/DXSK8.Tablet/views/
Upload File :
Current File : C:/Users/Public/Documents/DXTREME 13.1 Demos/DXSK8/DXSK8.Tablet/views/ProductDetail.js

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;
};