diff --git a/app/assets/javascripts/qrammer.js.coffee b/app/assets/javascripts/qrammer.js.coffee index 609f891a..52d6b836 100644 --- a/app/assets/javascripts/qrammer.js.coffee +++ b/app/assets/javascripts/qrammer.js.coffee @@ -57,8 +57,8 @@ root.Qrammer = else eval(res) return - alert(res['message']) if res['message'] && !res['ok'] - alert(res['message']) if res['message'] && res['ok'] + window.location = '/' if res['message'] && !res['ok'] + window.location = '/view_active_list' if res['ok'] load_active_order_list: (supplier_id) -> $.get('/suppliers/'+supplier_id+'/active_order_list.json', (res) -> body = $('#active-orders-table tbody') @@ -119,7 +119,29 @@ root.Qrammer = row.append(td_buttons) #foot.append(''+Qrammer.currency(res.total_amount)+''); ) - + active_user_list: (list_id) -> + $.get('/lists/'+list_id+'/current.json', (res) -> + body = $('#active-list-table tbody') + foot = $('#active-list-table tfoot') + body.find('tr').remove() + foot.find('tr').remove() + if !res.orders && !res.orders.length + alert('No orders in list') + return + for order in res.orders + order_txts = [] + row = $('').appendTo(body) + row.addClass(order.state) + #if(order.state == 'placed') row.addClass('info'); + #if(order.state == 'delivered') row.addClass('success'); + row.addClass('error') if order.state == 'cancelled' + for product in order.products + order_txts.push(product.name + ' (' + product['number'] + ')') + row.append($('').text(order_txts.join(', '))) + row.append($('').html(Qrammer.currency(order.total_amount))) + foot.append(''+Qrammer.currency(res.total_amount)+'') + ) + build_product_list_as_modal: -> wrapper = $('') callback_wrapper = -> diff --git a/app/models/list.rb b/app/models/list.rb index a0077d5d..6b29e5f6 100644 --- a/app/models/list.rb +++ b/app/models/list.rb @@ -12,7 +12,7 @@ class List validates :table_id, presence: true def close! - #TODO: close orders + orders.map(&:close!) self.state = 'closed' self.closed_at = Time.now save diff --git a/app/models/order.rb b/app/models/order.rb index 14899e4a..793cec5a 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -1,7 +1,7 @@ class Order include SimplyStored::Couch - property :state, default: 'placed' # placed, active, delivered, cancelled + property :state, default: 'placed' # placed, active, delivered, cancelled, closed belongs_to :list belongs_to :user @@ -42,4 +42,9 @@ class Order self.state = 'delivered' save end + + def close! + self.state = 'closed' if placed? || active? + save + end end diff --git a/app/views/dashboard/view_active_list.html.slim b/app/views/dashboard/view_active_list.html.slim index 064bb10b..e4bfa04b 100644 --- a/app/views/dashboard/view_active_list.html.slim +++ b/app/views/dashboard/view_active_list.html.slim @@ -10,28 +10,6 @@ table#active-list-table.table - content_for :footer do javascript: jQuery(function(){ - $.get('#{current_list_path(session[:active_list_id], format: :json).html_safe}', function(res){ - var body = $('#active-list-table tbody'); - var foot = $('#active-list-table tfoot'); - if(!res.orders && !res.orders.length){ - alert('No orders in list'); - return; - } - for(var iorder = 0; iorder < res.orders.length; iorder++){ - var order_txts = []; - var order = res.orders[iorder]; - var row = $('').appendTo(body); - row.addClass(order.state); - //if(order.state == 'placed') row.addClass('info'); - //if(order.state == 'delivered') row.addClass('success'); - if(order.state == 'cancelled') row.addClass('error'); - for(var iproduct = 0; iproduct < order.products.length; iproduct++){ - var product = order.products[iproduct]; - order_txts.push(product.name + ' (' + product['number'] + ')') - } - row.append($('').text(order_txts.join(', '))); - row.append($('').html(Qrammer.currency(res.orders[iorder].total_amount))) - } - foot.append(''+Qrammer.currency(res.total_amount)+''); - }) + Qrammer.active_user_list('#{session[:active_list_id]}') + setInterval( "Qrammer.active_user_list('#{session[:active_list_id]}')", 7500); }) diff --git a/stories b/stories index b2e16f50..30ab7ae7 100644 --- a/stories +++ b/stories @@ -36,3 +36,5 @@ Actielijst: - Bewoordingen critisch en klantgericht doornemen - Plaats omgevingen in ihpone / ipad omgeving (gerelateerd) - Barman en vaste tafels + +handle closed list on list update for user list