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