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