142 lines
5.8 KiB
CoffeeScript
142 lines
5.8 KiB
CoffeeScript
root = exports ? this
|
||
root.Qrammer =
|
||
alert: (msg) ->
|
||
alert(msg)
|
||
confirm: (callback, content) ->
|
||
content ||= 'Are you sure?'
|
||
wrapper = $('<div class="modal"></div>')
|
||
callback_wrapper = ->
|
||
wrapper.modal('hide')
|
||
callback()
|
||
header = $('<div class="modal-header"></div>')
|
||
.append('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>')
|
||
.append('<h3>Confirm</h3>').appendTo(wrapper)
|
||
body = $('<div class="modal-body"></div>').append('<p>'+content+'</p>').appendTo(wrapper)
|
||
footer = $('<div class="modal-footer"></div>')
|
||
.append($('<a href="#" class="btn">Close</a>').click(-> wrapper.modal('hide')))
|
||
.append($('<a href="#" class="btn btn-primary">Yes</a>').click(callback_wrapper))
|
||
.appendTo(wrapper)
|
||
wrapper.modal()
|
||
currency: (num) ->
|
||
num = 0.0 if isNaN(num) || num == '' || num == null
|
||
'€ ' + parseFloat(num).toFixed(2)
|
||
clear_active_list: ->
|
||
window.active_products_list = {}
|
||
$('#active-order-table').hide()
|
||
handle_response: (res) ->
|
||
if(typeof(res) == 'string')
|
||
return unless res.length
|
||
if res[0] == '{'
|
||
res = JSON.parse(res)
|
||
else
|
||
eval(res)
|
||
return
|
||
window.location = '/' if res['message'] && !res['ok']
|
||
window.location = '/user/active_list' if res['ok']
|
||
load_active_orders: () ->
|
||
$.get('/supplier/active_orders.json', (res) ->
|
||
body = $('#active-orders-table tbody')
|
||
body.find('tr').remove()
|
||
foot = $('#active-orders-table tfoot')
|
||
if(!res.orders && !res.orders.length)
|
||
alert('No orders in list');
|
||
return;
|
||
for order in res.orders
|
||
order_txts = []
|
||
row = $('<tr></tr>').appendTo(body)
|
||
process_btn = $('<button class="btn btn-success">In process!</button>')
|
||
process_callback = ( (ord) ->
|
||
->
|
||
my_btn = $(this)
|
||
$.post('/supplier/mark_order_in_process', {order_id: ord.id}, (res)-> my_btn.remove())
|
||
)(order)
|
||
process_btn.click(process_callback)
|
||
|
||
delivered_btn = $('<button class="btn btn-inverse">Is delivered!</button>')
|
||
delivered_callback = ( (ord, r) ->
|
||
->
|
||
my_btn = $(this)
|
||
$.post('/supplier/order_is_delivered', {order_id: ord.id}, (res)-> r.slideUp('slow'))
|
||
)(order, row)
|
||
delivered_btn.click(delivered_callback)
|
||
for product in order.products
|
||
order_txts.push(product.name + ' (' + product['number'] + ')')
|
||
row.append($('<td></td>').text(order_txts.join(', ')))
|
||
row.append($('<td class="numeric"></td>').text(order.table_number))
|
||
row.append($('<td class="currency"></td>').html(Qrammer.currency(order.total_amount)))
|
||
td_buttons = $('<td class="actions"></td>')
|
||
td_buttons.append(process_btn).append(' ') if order.state == 'placed'
|
||
td_buttons.append(delivered_btn)
|
||
row.append(td_buttons)
|
||
#foot.append('<tr><td></td><td class="currency"><strong>'+Qrammer.currency(res.total_amount)+'</strong></td></tr>');
|
||
)
|
||
|
||
|
||
load_active_lists: () ->
|
||
$.get('/supplier/active_lists.json', (res) ->
|
||
body = $('#active-lists-table tbody')
|
||
body.find('tr').remove()
|
||
foot = $('#active-lists-table tfoot')
|
||
for list in res.lists
|
||
order_txts = []
|
||
row = $('<tr></tr>').appendTo(body)
|
||
close_btn = $('<button class="btn btn-warning">Close!</button>')
|
||
close_callback = ( (lst, r) ->
|
||
->
|
||
my_btn = $(this)
|
||
$.post('/supplier/close_list', {list_id: list._id}, (res)-> r.slideUp('slow'))
|
||
)(list, row)
|
||
close_btn.click(close_callback)
|
||
|
||
needs_help_btn = $('<button class="btn btn-info">Question answered!</button>')
|
||
needs_help_callback = ( (lst, r) ->
|
||
->
|
||
my_btn = $(this)
|
||
$.post('/supplier/mark_list_as_helped', {list_id: list._id}, (res)-> my_btn.remove() )
|
||
)(list, row)
|
||
needs_help_btn.click(needs_help_callback)
|
||
|
||
|
||
icons_td = $('<td class="status-icons"></td>').appendTo(row)
|
||
icons_td.append('<i class="icon-hand-up"></i>').append(' ') if list.needs_help # or icon-bell
|
||
icons_td.append('<i class="icon-check"></i>') if list.needs_payment
|
||
|
||
row.append($('<td></td>').text(list.table_number))
|
||
row.append($('<td class="currency"></td>').html(Qrammer.currency(list.total_amount)))
|
||
td_buttons = $('<td class="actions"></td>')
|
||
td_buttons.append(needs_help_btn).append(' ') if list.needs_help
|
||
td_buttons.append(close_btn)
|
||
row.append(td_buttons)
|
||
#foot.append('<tr><td></td><td class="currency"><strong>'+Qrammer.currency(res.total_amount)+'</strong></td></tr>');
|
||
)
|
||
|
||
build_product_list_as_modal: ->
|
||
wrapper = $('<div class="modal"></div>')
|
||
callback_wrapper = ->
|
||
wrapper.modal('hide')
|
||
callback()
|
||
header = $('<div class="modal-header"></div>')
|
||
.append('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>')
|
||
.append('<h3>Product list</h3>').appendTo(wrapper)
|
||
|
||
body = $('<div class="modal-body"></div>')
|
||
table = $('<table class="table"></table>').appendTo(body)
|
||
tbody = $('<tbody></tbody>').appendTo(table)
|
||
for product_id, info of window.active_products_list
|
||
row = $('<tr></tr>').appendTo(tbody)
|
||
row.append('<td>'+info.product.name+'</td>')
|
||
row.append('<td>'+info.number+'</td>')
|
||
row.append('<td>'+Qrammer.currency(info.product.price * info.number)+'</td>')
|
||
|
||
body.appendTo(wrapper)
|
||
|
||
footer = $('<div class="modal-footer"></div>')
|
||
.append($('<a href="#" class="btn">Close</a>').click(-> wrapper.modal('hide')))
|
||
.append($('<a href="#" class="btn btn-primary">Yes</a>').click(callback_wrapper))
|
||
.appendTo(wrapper)
|
||
wrapper.modal()
|
||
|
||
jQuery.ajaxSetup
|
||
'beforeSend': (xhr) ->
|
||
xhr.setRequestHeader("Accept", "text/javascript")
|