root = exports ? this root.Qrammer = alert: (msg) -> alert(msg) confirm: (callback, content) -> content ||= 'Are you sure?' wrapper = $('') callback_wrapper = -> wrapper.modal('hide') callback() header = $('') .append('') .append('

Confirm

').appendTo(wrapper) body = $('').append('

'+content+'

').appendTo(wrapper) footer = $('') .append($('Close').click(-> wrapper.modal('hide'))) .append($('Yes').click(callback_wrapper)) .appendTo(wrapper) wrapper.modal() currency: (num) -> num = 0.0 if isNaN(num) || num == '' || num == null '€ ' + parseFloat(num).toFixed(2) add_product: (product) -> window.active_list = {} unless window.active_list window.active_list[product._id] = {product: product, number: 0} unless window.active_list[product._id] window.active_list[product._id].number += 1 Qrammer.build_product_list() build_product_list: -> table = $('#active-order-table') tbody = table.find('tbody') tbody = $('').appendTo(table) unless tbody.length tbody.find('tr').remove() total = 0.0 for product_id, info of window.active_list total += info.product.price * info.number row = $('').attr('id', 'active-order-row-'+product_id).appendTo(tbody) row.append(''+info.product.name+'') row.append(''+info.number+'') row.append(''+Qrammer.currency(info.product.price * info.number)+'') x_btn = $('').click(-> delete(window.active_list[product_id]) && Qrammer.build_product_list() ) row.append($('').append(x_btn)) $('#active-order-total').html(Qrammer.currency(total)) table.show() clear_active_list: -> window.active_list = {} $('#active-order-table').hide() order_active_list: (post_uri)-> h = {list_id: active_list_id} for product_id, info of window.active_list h['products['+product_id+']'] = info.number $.post(post_uri, h, ((res) -> Qrammer.handle_response(res)), 'json') handle_response: (res) -> if(typeof(res) == 'string') return unless res.length if res[0] == '{' res = JSON.parse(res) else eval(res) return alert(res['message']) if res['message'] && !res['ok'] alert(res['message']) if res['message'] && res['ok'] load_active_order_list: (supplier_id) -> $.get('/suppliers/'+supplier_id+'/active_order_list.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 = $('').appendTo(body) process_btn = $('') process_callback = ( (ord) -> -> my_btn = $(this) $.post('/orders/'+ord.id+'/is_being_processed', {}, (res)-> my_btn.remove()) )(order) process_btn.click(process_callback) delivered_btn = $('') delivered_callback = ( (ord, r) -> -> my_btn = $(this) $.post('/orders/'+ord.id+'/is_delivered', {}, (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($('').text(order_txts.join(', '))) row.append($('').text(order.table_number)) row.append($('').html(Qrammer.currency(order.total_amount))) td_buttons = $('') td_buttons.append(process_btn).append(' ') if order.state == 'placed' td_buttons.append(delivered_btn) row.append(td_buttons) #foot.append(''+Qrammer.currency(res.total_amount)+''); ) load_active_lists: (supplier_id) -> $.get('/suppliers/'+supplier_id+'/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 = $('').appendTo(body) close_btn = $('') close_callback = ( (lst, r) -> -> my_btn = $(this) $.post('/lists/'+lst._id+'/is_closed', {}, (res)-> r.slideUp('slow')) )(list, row) close_btn.click(close_callback) row.append($('').text(list._id)) row.append($('').html(Qrammer.currency(list.total_amount))) td_buttons = $('') td_buttons.append(close_btn) row.append(td_buttons) #foot.append(''+Qrammer.currency(res.total_amount)+''); ) build_product_list_as_modal: -> wrapper = $('') callback_wrapper = -> wrapper.modal('hide') callback() header = $('') .append('') .append('

Product list

').appendTo(wrapper) body = $('') table = $('
').appendTo(body) tbody = $('').appendTo(table) for product_id, info of window.active_list row = $('').appendTo(tbody) row.append(''+info.product.name+'') row.append(''+info.number+'') row.append(''+Qrammer.currency(info.product.price * info.number)+'') body.appendTo(wrapper) footer = $('') .append($('Close').click(-> wrapper.modal('hide'))) .append($('Yes').click(callback_wrapper)) .appendTo(wrapper) wrapper.modal() jQuery.ajaxSetup 'beforeSend': (xhr) -> xhr.setRequestHeader("Accept", "text/javascript")