Mini Kabibi Habibi
DXSK8.Phone.OrdersOverview = function (params) {
DXSK8.Phone.filteredOrdersIds = DXSK8.Phone.filteredOrdersIds || {};
DXSK8.Phone.productNameForFiltering = DXSK8.Phone.productNameForFiltering || "";
var ORDER_STATES = DXSK8.ORDER_STATES;
var viewModel = {
ordersOverview: [
{
name: ORDER_STATES["new"].name,
state: ORDER_STATES["new"].id,
imageCss: "image-placeholder-new",
cssClass: "very-important",
quantity: ko.observable(0)
},
{
name: ORDER_STATES["in-progress"].name,
state: ORDER_STATES["in-progress"].id,
imageCss: "image-placeholder-in-progress",
cssClass: "important",
quantity: ko.observable(0)
},
{
name: ORDER_STATES["completed"].name,
state: ORDER_STATES["completed"].id,
imageCss: "image-placeholder-completed",
quantity: ko.observable(0)
},
{
name: ORDER_STATES["out-of-stock"].name,
state: ORDER_STATES["out-of-stock"].id,
imageCss: "image-placeholder-out-of-stock",
quantity: ko.observable(0)
}
],
productNameForFiltering: ko.observable(DXSK8.Phone.productNameForFiltering)
};
var cacheOrderIds = function (orderItems, orderState) {
var ordersIds = [];
$.each(orderItems, function (i) {
ordersIds.push(this.items[0].Order.Id);
});
DXSK8.Phone.filteredOrdersIds[orderState] = ordersIds;
};
var loadOrders = function(name) {
$.each(viewModel.ordersOverview, function (index, orderOverviewItem) {
if (orderOverviewItem.state != undefined) {
var filter = [["Order.State", orderOverviewItem.state]];
if(name) {
filter.push(["Product.Name", "contains", name]);
}
DXSK8.db.OrderItems.createQuery()
.select("Order.Id")
.filter(filter)
.groupBy("Order.Id")
.enumerate()
.done(function (orderItems) {
cacheOrderIds(orderItems, orderOverviewItem.state);
orderOverviewItem.quantity(Object.keys(orderItems).length);
});
}
});
};
viewModel.productNameForFiltering.subscribe(function (value) {
DXSK8.Phone.productNameForFiltering = value;
loadOrders(value);
});
loadOrders(viewModel.productNameForFiltering());
return viewModel;
};