Fix and implement supplier counters

This commit is contained in:
2014-03-07 18:29:49 +01:00
parent 95e268adea
commit 99473758e6
25 changed files with 304 additions and 65 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 573 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

@@ -44,6 +44,10 @@ class Quser
else if(e.event == 'new_order')
$('#active-list-table tbody').append @mustache('#active-list-order-template', new Order(e.data.order))
$('.list-total-amount').html(currency(e.data.total_amount))
else if(e.event == 'orders_in_process_count')
$('.supplier-orders-in-process-count').text(e.data.count || 0)
else if(e.event == 'orders_placed_count')
$('.supplier-orders-placed-count').text(e.data.count || 0)
console.log(e)
false
ensure_json: (res)->
@@ -97,6 +101,9 @@ class Quser
$('.table-number').text(response.table_number) if response.table_number
$('.supplier-name').text(response.supplier_name) if response.supplier_name
$('.supplier-orders-placed-count').text(response.supplier_orders_placed_count || 0)
$('.supplier-orders-in-process-count').text(response.supplier_orders_in_process_count || 0)
if response.not_present || response.list_active == false then $('.home-link').removeClass('active') else $('.home-link').addClass('active')
@@ -0,0 +1,20 @@
.supplier-info-row
clear: right
.supplier-orders-in-process-count
background-image: image-url('icons/order-check.png')
padding-left: 20px
padding-right: 6px
.supplier-orders-delivered-count
background-image: image-url('icons/order-doublecheck.png')
padding-left: 28px
.supplier-orders-placed-count
background-image: image-url('icons/orders-queue.png')
padding-left: 22px
padding-right: 6px
//padding-top: 4px
//padding-top: 4px
.top-button-bar
.counter
display: inline
background-repeat: no-repeat
background-position: left center
@@ -4,3 +4,6 @@
li
list-style: none
margin-bottom: 8px
.qr-image
background-color: white
display: block
+12 -2
View File
@@ -23,8 +23,18 @@ class DashboardController < ApplicationController
size = RQRCode.minimum_qr_size_from_string(code)
respond_to do |format|
format.html
format.svg { render :qrcode => code, :level => :l, :unit => 10, table_number: @table.number, qcontainer: true }
format.png { render qrcode: code, level: :l, table_number: @table.number, qcontainer: true }
format.svg { render qrcode: code, level: :l, unit: 10, table_number: @table.number, qcontainer: true }
format.png do
#render qrcode: code, level: :l, table_number: @table.number, qcontainer: true
size = RQRCode.minimum_qr_size_from_string(code)
level = :l
qrcode = RQRCode::QRCode.new(code, size: size, level: level)
svg = RQRCode::Renderers::SVG::render(qrcode)
svg_file = Tempfile.new(['table_qr', '.svg']){|f| f.puts svg}
png_target = svg_file.path.sub /svg$/, 'png'
render nothing: true
end
end
end
+1 -1
View File
@@ -184,7 +184,7 @@ class UserController < ApplicationController
end
format.json do
render json: js_alert(t('messages.the_list_has_been_closed')) and return unless list.present?
render json: list.with_orders_and_join_requests_as_json.merge(supplier_name: list.supplier.name)
render json: list.with_orders_and_join_requests_and_supplier_info_as_json
end
end
end
+11 -3
View File
@@ -270,7 +270,7 @@ class List
return false unless user
order = Order.create list: self, supplier: supplier, user: user, section_id: section_id
return unless order.id
orders_in_process_count = supplier.increment_orders_in_process_count!
orders_placed_count = supplier.increment_orders_placed_count!
loaded_products = self.class.database.load_document products.keys
products.each do |product_id, quantity|
quantity = quantity.to_i
@@ -281,11 +281,11 @@ class List
save
for user_id in user_ids
broadcast_user user_id, 'new_order', order: order.with_products_as_json, total_amount: price
broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_count
broadcast_user user_id, 'orders_placed_count', count: orders_placed_count
end
broadcast_supplier supplier.id, 'list_update', active_model_serializer.new(self).as_json
broadcast_supplier supplier.id, 'new_order', OrderSerializer.new(order)
broadcast_supplier supplier.id, 'orders_in_process_count', count: orders_in_process_count
broadcast_supplier supplier.id, 'orders_placed_count', count: orders_placed_count
order
end
@@ -323,6 +323,14 @@ class List
@with_orders_and_join_requests_as_json = with_orders_as_json.merge(join_requests_as_json)
end
def with_orders_and_join_requests_and_supplier_info_as_json
with_orders_and_join_requests_as_json.merge(
supplier_name: supplier.name,
supplier_orders_in_process_count: supplier.orders_in_process_count,
supplier_orders_placed_count: supplier.orders_placed_count
)
end
def has_active_orders?
Order.count_active_for_supplier_and_list(supplier_id, id) > 0
end
+7 -7
View File
@@ -78,29 +78,29 @@ class Order
def is_being_processed!
self.state = 'active'
if save
orders_in_process_count = supplier.decrement_orders_in_process_count!
orders_delivered_count = supplier.increment_orders_delivered_count!
orders_in_process_count = supplier.increment_orders_in_process_count!
orders_placed_count = supplier.decrement_orders_placed_count!
for user_id in list.user_ids
broadcast_user user_id, 'order_being_processed', id: id, list_id: list_id
broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_count
broadcast_user user_id, 'orders_delivered_count', count: orders_delivered_count
broadcast_user user_id, 'orders_placed_count', count: orders_placed_count
end
broadcast_supplier supplier_id, 'order_being_processed', id: id, list_id: list_id
broadcast_supplier supplier_id, 'orders_in_process_count', count: orders_in_process_count
broadcast_supplier supplier_id, 'orders_delivered_count', count: orders_delivered_count
broadcast_supplier supplier_id, 'orders_placed_count', count: orders_placed_count
end
end
def is_delivered!
self.state = 'delivered'
if save
orders_delivered_count = supplier.decrement_orders_delivered_count!
orders_in_process_count = supplier.decrement_orders_in_process_count!
for user_id in list.user_ids
broadcast_user user_id, 'order_being_delivered', id: id, list_id: list_id
broadcast_user user_id, 'orders_delivered_count', count: orders_delivered_count
broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_count
end
broadcast_supplier supplier_id, 'order_being_delivered', id: id, list_id: list_id
broadcast_supplier supplier_id, 'orders_delivered_count', count: orders_delivered_count
broadcast_supplier supplier_id, 'orders_in_process_count', count: orders_in_process_count
end
end
+15 -12
View File
@@ -116,6 +116,9 @@ class Supplier
end
def self.reset_counters!
Qwaiter::Couchbase.design_doc('supplier').counters(reduce: false).each{|counter| Qwaiter::Counter.set counter.key, 0}
spec = Order.by_supplier_id_and_state(reduce: true, group_level: 2)
reset_order_counters_with_spec spec
end
@@ -137,8 +140,8 @@ class Supplier
Array.wrap(results['rows']).each do |result|
supplier_id, state = result['key']
case state
when 'placed' then Qwaiter::Counter.set "supplier:#{supplier_id}:orders_in_process", result['value']
when 'active' then Qwaiter::Counter.set "supplier:#{supplier_id}:orders_delivered", result['value']
when 'placed' then Qwaiter::Counter.set "supplier_counter:#{supplier_id}:orders_placed", result['value']
when 'active' then Qwaiter::Counter.set "supplier_counter:#{supplier_id}:orders_in_process", result['value']
end
end
end
@@ -168,31 +171,31 @@ class Supplier
end
def increment_orders_in_process_count!
Qwaiter::Counter.incr "supplier:#{id}:orders_in_process"
Qwaiter::Counter.incr "supplier_counter:#{id}:orders_in_process"
end
def increment_orders_delivered_count!
Qwaiter::Counter.incr "supplier:#{id}:orders_delivered"
def increment_orders_placed_count!
Qwaiter::Counter.incr "supplier_counter:#{id}:orders_placed"
end
def decrement_orders_in_process_count!
Qwaiter::Counter.decr "supplier:#{id}:orders_in_process"
Qwaiter::Counter.decr "supplier_counter:#{id}:orders_in_process"
end
def decrement_orders_delivered_count!
Qwaiter::Counter.decr "supplier:#{id}:orders_delivered"
def decrement_orders_placed_count!
Qwaiter::Counter.decr "supplier_counter:#{id}:orders_placed"
end
def orders_in_process_count
Qwaiter::Counter.get "supplier:#{id}:orders_in_process"
Qwaiter::Counter.get "supplier_counter:#{id}:orders_in_process"
end
def orders_delivered_count
Qwaiter::Counter.get "supplier:#{id}:orders_delivered"
def orders_placed_count
Qwaiter::Counter.get "supplier_counter:#{id}:orders_placed"
end
def active_order_count
orders_in_process_count + orders_delivered_count
orders_in_process_count + orders_placed_count
end
private
+1 -1
View File
@@ -1,4 +1,4 @@
.page-header= title 'Select Qr code'
ul#qr-list
- for table in @tables
li= link_to_function image_tag(url_for(table_qr_image_path(table_id: table.id, format: :png))), %|Quser.actions_for_table({table_id: '#{table.id}'})|
li= link_to_function image_tag(url_for(table_qr_image_path(table_id: table.id, format: :svg)), class: 'qr-image'), %|Quser.actions_for_table({table_id: '#{table.id}'})|
+1 -1
View File
@@ -28,7 +28,7 @@ html lang="en"
ul.nav.pull-right
li.dropdown
a.dropdown-toggle href="#" data-toggle="dropdown"
= current_supplier.email
= current_supplier.name.presence || current_supplier.email
b.caret
ul.dropdown-menu
- if current_supplier.open?
+6 -2
View File
@@ -1,7 +1,11 @@
= top_bar title: 'active_list.title' do
.pull-right
.table-number
.supplier-name
.supplier-info-row
.table-number
.supplier-name
.supplier-info-row
.counter.supplier-orders-placed-count
.counter.supplier-orders-in-process-count
.action-buttons
= link_to content_tag(:span, t('helpers.links.place_order')), user_list_products_path, class: ['user-top-button'], id: 'place-order-on-list'
span#list-needs-payment-button.user-top-button
+6 -2
View File
@@ -1,7 +1,11 @@
= top_bar title: 'show_products.title' do
.pull-right
.table-number
.supplier-name
.supplier-info-row
.table-number
.supplier-name
.supplier-info-row
.counter.supplier-orders-placed-count
.counter.supplier-orders-in-process-count
.action-buttons
= link_to user_active_list_path, class: ['user-top-button'], id: 'show-active-list' do
span= t('helpers.links.show_active_list', list: List.model_name.human)
@@ -1,7 +1,11 @@
= top_bar title: 'show_products.title' do
.pull-right
.table-number
.supplier-name
.supplier-info-row
.table-number
.supplier-name
.supplier-info-row
.counter.supplier-orders-placed-count
.counter.supplier-orders-in-process-count
.well
table#products-table.table.table-hover
tbody