You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
3.0 KiB
JavaScript

import _DB from './_DB.js';
var OrderView = function(){
return {
view: function(vnode){
var order = vnode.attrs.order;
var user = _DB.getRecord(order.user_id);
var cart = _DB.getRecord(order.cart_id)
var lineitems = cart.lineitem_ids.map(_DB.getRecord);
var cart_total = 0;
return m('.order-view', [
m('h1', [
'Order #'+order.id,
m('small', 'Ordered On: '+order.date_ordered)
]),
m('p', user.store+' ('+user.firstname+' '+user.lastname+')'),
( order.status === 'open'
?
m('button.btn.btn-primary',{onclick: function(e){
_DB.setProperty(order, 'status', 'closed');
}},'Close Order')
:
m('button.btn.btn-primary',{onclick: function(e){
_DB.setProperty(order, 'status', 'open');
}},'Re-open Order')
),
m('.steps', [
m('ul.step', [
m('li.step-item'+(order.progress==='ordered'?'.active':''), [
m('a.tooltip', {
href:'#',
'data-tooltip':'Customer Placed Order on '+order.date_ordered,
onclick: function(e){
e.preventDefault();
e.stopPropagation();
_DB.setProperty(order, 'progress', 'ordered');
}
}, 'Ordered')
]),
m('li.step-item'+(order.progress==='picked'?'.active':''), [
m('a.tooltip', {
href:'#',
'data-tooltip':'Piazza Picked the Order',
onclick: function(e){
e.preventDefault();
e.stopPropagation();
_DB.setProperty(order, 'progress', 'picked');
}
}, 'Picked')
]),
m('li.step-item'+(order.progress==='shipped'?'.active':''), [
m('a.tooltip', {
href:'#',
'data-tooltip':'Piazza Shipped the Order',
onclick: function(e){
e.preventDefault();
e.stopPropagation();
_DB.setProperty(order, 'progress', 'shipped');
}
}, 'Shipped')
]),
m('li.step-item'+(order.progress==='paid'?'.active':''), [
m('a.tooltip', {
href:'#',
'data-tooltip':'Customer Paid for the Order in Full',
onclick: function(e){
e.preventDefault();
e.stopPropagation();
_DB.setProperty(order, 'progress', 'paid');
}
}, 'Paid')
])
])
]),
m('.items', [
m('table.table.table-striped.table-hover', [
m('thead', [
m('tr', [
m('th', 'Item'),
m('th', 'Quantity'),
m('th', 'Price'),
m('th', 'Subtotal')
])
]),
m('tbody', lineitems.map(function(lineitem){
var subtotal = lineitem.quantity*lineitem.price;
cart_total += subtotal;
return m('tr', [
m('td', _DB.getRecord(lineitem.item_id).name),
m('td', lineitem.quantity),
m('td', '$'+lineitem.price),
m('td', '$'+subtotal)
]);
}))
]),
m('h6', "Grand Total: $"+cart_total)
])
]);
}
};
};
export default OrderView;