End of day commit

This commit is contained in:
2014-07-21 20:31:11 +02:00
parent 2fec0b3bb6
commit 8ca59c4e38
27 changed files with 258 additions and 94 deletions
@@ -1,5 +1,6 @@
Ember.Handlebars.helper 'time', (time, params..., options = {})->
return '' unless time
time = new Date(time) if typeof(time) is "string"
iso = time.toISOString()
tag = if options.bare then iso else $("<span data-time=\"#{iso}\"></span>").text(moment(iso).format(options.format || 'dd D MMM HH:MM')).get(0).outerHTML
new Handlebars.SafeString tag
@@ -14,22 +14,29 @@ Qsupplier.App.IndexController = Ember.ObjectController.extend
@get('orders').filter (o)->( o.get('needs_supplier_attention') )
).property('orders.@each.state', 'active_section.id')
markListAsHelped: (id)->
if list = Qsupplier.App.List.findCached(id)
list.is_helped()
actions:
markListAsHelped: (id)->
if list = Qsupplier.App.List.findCached(id)
list.is_helped()
closeList: (id)->
if list = Qsupplier.App.List.findCached(id)
list.close()
closeList: (id)->
if list = Qsupplier.App.List.findCached(id)
list.close()
markOrderDelivered: (id)->
$.post('/supplier/order_is_delivered', order_id: id)
if order = Qsupplier.App.Order.findCached(id)
order.set('state', 'delivered')
markOrderDelivered: (id)->
$.post('/supplier/order_is_delivered', order_id: id)
if order = Qsupplier.App.Order.findCached(id)
order.set('state', 'delivered')
markOrderActive: (id)->
$.post('/supplier/mark_order_in_process', order_id: id)
if order = Qsupplier.App.Order.findCached(id)
order.set('state', 'active')
cancelOrder: (order)->
$.post "/supplier/orders/#{order.id}/cancel"
order.set 'state', 'cancelled'
showList: (id)->
@transitionToRoute 'list', id
showListInfo: (view, link)->
debugger
markOrderActive: (id)->
$.post('/supplier/mark_order_in_process', order_id: id)
if order = Qsupplier.App.Order.findCached(id)
order.set('state', 'active')
showListInfo: (view, link)->
debugger
@@ -34,9 +34,12 @@ Qsupplier.App.List = DS.Model.extend
@set 'needs_payment', true
markIsPaid: ->
@set 'needs_payment', false
relevant_orders: (-> @get('orders').filter((o)->o.get('state') isnt 'cancelled')).property('orders.@each.state')
active_orders: (-> @get('orders').filter((o)->o.get('state') is 'placed' or o.get('state') is 'active')).property('orders.@each.state')
total: (->
@get('orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
).property('orders.@each.total')
@get('relevant_orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
).property('relevant_orders.@each.total')
close: ->
@markClosed()
@@ -45,4 +48,4 @@ Qsupplier.App.List = DS.Model.extend
is_helped: ->
@markHelped()
$.post Routes.supplier_mark_list_as_helped_path(), list_id: @id
sorted_orders: (-> @get('orders').sortBy('created_at').reverseObjects()).property('orders.@each.isLoaded')
sorted_orders: (-> @get('relevant_orders').sortBy('created_at').reverseObjects()).property('relevant_orders.@each.isLoaded')
@@ -19,6 +19,8 @@ Qsupplier.App.Order = DS.Model.extend
markClosed: ->
@set 'state', 'closed'
markCancelled: ->
@set 'state', 'cancelled'
total: (->
@get('product_orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
).property('product_orders.@each.quantity', 'product_orders.@each.product.@each.price')
@@ -11,7 +11,7 @@ if list.closed_at
.row
each user in list.users
img.facebook-image src="http://graph.facebook.com/#{unbound user.facebook_id}/picture?type=square" alt="f"
if list.orders
if list.sorted_orders
.list-orders-container
each order in list.sorted_orders
.list-order-container class=order.state
@@ -6,7 +6,7 @@ td.status-icons
span.icon.needs-payment
td.numeric.table_number {{view.content.table.number}}
td.section_title {{view.content.section.title}}
td.currency.total_list_amount {{currency view.content.price}}
td.currency.total_list_amount {{currency view.content.total}}
td.actions
if view.content.needs_help
button.mark_list_as_helped{ action markListAsHelped view.content.id}
@@ -14,8 +14,5 @@ td.actions
i.fa.fa-bell.fa-stack-small
i.fa.fa-ban.revoke
/span.button-text=t 'list.is_helped_button'
button.close_list{ action closeList view.content.id}
span.fa.fa-times.fa-2x
span.button-text=t 'list.close_list'
a.btn.hide href="/supplier/lists/{{unbound view.content.id}}"
span.icon-list &nbsp;
button.close_list{ action closeList view.content.id}: span
button.show-list.button{action "showList" view.content.id}: span
@@ -21,3 +21,4 @@ td.actions
/button.hide.mark-order-delivered{ action markOrderDelivered view.content.id}
span.button-icon
span.button-text= t 'order.being_served'
button.remove-order{ action "cancelOrder" view.content }: span
@@ -1,32 +1,30 @@
.page-header
div.dashboard-section-selection
'{{view 'Qsupplier.App.HomeSectionSelectorView' selectionBinding="controller.active_section" content=controller.sections prompt=controllers.application.supplier.name}}
'{{view 'Qsupplier.App.HomeSectionJumperView'}}
h3 {{t 'active_lists.title'}}
Qsupplier.App.HomeSectionSelectorView selectionBinding="controller.active_section" content=controller.sections prompt=controllers.application.supplier.name
Qsupplier.App.HomeSectionJumperView
h3=t 'active_lists.title'
.well
table.active-lists-table.table
thead
tr
th.status-icons
th.numeric {{t 'table_number'}}
th {{t 'models.section'}}
th.currency {{t 'active_lists.price'}}
th.numeric=t 'table_number'
th=t 'models.section'
th.currency=t 'active_lists.price'
th.actions
tbody
each list in controller.active_lists
' {{view 'Qsupplier.App.ActiveListView' contentBinding="list"}}
each list in controller.active_lists: Qsupplier.App.ActiveListView contentBinding="list"
.page-header
h3 {{t 'active_orders.title' }}
h3=t 'active_orders.title'
.well
table.active-orders-table.table
thead
tr
th.status-icons
th {{t 'models.order'}}
th.numeric {{t 'table_number'}}
th {{t 'models.section'}}
th.currency {{t 'active_orders.price'}}
th=t 'models.order'
th.numeric=t 'table_number'
th=t 'models.section'
th.currency=t 'active_orders.price'
th.actions
tbody
each order in controller.active_orders
' {{view 'Qsupplier.App.ActiveOrderView' contentBinding="order"}}
each order in controller.active_orders: Qsupplier.App.ActiveOrderView contentBinding="order"
@@ -6,10 +6,13 @@ root.Qsupplier=
console.log(e)
if(e.event == 'new_order')
if Qsupplier.App
Qsupplier.App.store().pushPayload e.data
#Qsupplier.App.Order.pushByAttriburtes(e.data.order)
#for product_order in e.data.product_orders
#Qsupplier.App.ProductOrder.pushByAttriburtes product_order, debug: true
Qsupplier.App.store().pushPayload(e.data)
# Fix for ember pushPayload bug not creating the proper relations/triggers
setTimeout ->
if order = Qsupplier.App.store().all('order').findProperty('id', e.data.order.id)
list = order.get('list')
list.get('orders').addRecord order
, 100
else if(e.event == 'list_needs_help')
if Qsupplier.App and list = Qsupplier.App.List.findCached(e.data.id)
list.markNeedsHelp()
@@ -57,6 +60,12 @@ root.Qsupplier=
$('.supplier-orders-placed-count-number').text e.data.count
else if e.event == 'list_changed_table'
Qsupplier.App && Qsupplier.App.List.updateOrAdd(e.data.list)
else if e.event == 'order_cancelled'
if Qsupplier.App and order = Qsupplier.App.Order.findCached(e.data.id)
order.markCancelled()
$('.supplier-orders-placed-count-number').text(e.data.orders_placed_count) if Number.isInteger(e.data.orders_placed_count)
$('.supplier-orders-in-process-count-number').text(e.data.orders_in_process_count) if Number.isInteger(e.data.orders_in_process_count)
# old stuff
#list = new List(e.data.list)
@@ -17,11 +17,10 @@ App.List = DS.Model.extend
join_requests: DS.hasMany('join_request')
users: DS.hasMany('user')
total: (->
@get('orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
).property('orders.@each.total')
is_extended_version: ->
@get('extended_version')
sorted_orders: (-> @get('orders').sortBy('created_at').reverseObjects()).property('orders.@each.isLoaded')
relevant_orders: (-> @get('orders').filter((o)->o.get('state') isnt 'cancelled')).property('orders.@each.state')
sorted_orders: (-> @get('relevant_orders').sortBy('created_at').reverseObjects()).property('relevant_orders.@each.isLoaded')
total: (->
@get('relevant_orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
).property('relevant_orders.@each.total')
@@ -1,19 +0,0 @@
.dashboard-section-selection
float: right
min-width: 124px
select
width: calc(100% - 30px)
.active-lists-table
width: 100%
.mark_list_as_helped
+button-icon-only
.close_list
+button-icon-only
.active-orders-table
width: 100%
.mark_order_active
+button-icon-only
margin-right: 0.6em
.mark_order_delivered
+button-icon-only
@@ -5,7 +5,6 @@
@import ./foundation_and_overrides
@import ./qstructure
@import ./qicons
@import ./qdashboard
@import ./qdisplays
@import ./form_actions
@import ./components/*
@@ -0,0 +1,40 @@
$button-spacing: 8px
.dashboard-section-selection
float: right
min-width: 124px
select
width: calc(100% - 30px)
.active-lists-table
width: 100%
.mark_list_as_helped
+button-icon-only
margin-right: $button-spacing
.close_list
+button-icon-only
span
@extend .fa
@extend .fa-2x
@extend .fa-times // This is not good!!!
.show-list
+button-icon-only
margin-left: $button-spacing
span
@extend .fa
@extend .fa-2x
@extend .fa-list
.active-orders-table
width: 100%
.mark_order_active
+button-icon-only
margin-right: 0.6em
.mark_order_delivered
+button-icon-only
.remove-order
+button-icon-only
background-color: $alert-color
margin-left: $button-spacing
span
@extend .fa
@extend .fa-2x
@extend .fa-times
@@ -15,7 +15,7 @@ module Suppliers
@end_time += current_supplier.night_offset.to_f.hours
end
@lists = List.for_supplier_created_at current_supplier, @start_time..@end_time
@lists.include_relation(:table) # for number
#@lists.include_relation(:table) # for number
else
@lists = List.for_supplier(current_supplier, page: params[:page], per_page: params[:per_page] || 25)
end
@@ -15,6 +15,12 @@ module Suppliers
end
end
def cancel
@order = current_supplier.find_order(params[:id])
@order.cancel!
render json: @order
end
def show
@order = current_supplier.find_order(params[:id])
respond_to do |format|
+6 -3
View File
@@ -268,10 +268,14 @@ class List
end
end
def relevant_orders
orders.reject(&:cancelled?)
end
# Store the final list price in a property
def set_price
list_total = 0.0
for order in orders
for order in relevant_orders
order_total = 0.0
for product_order in order.product_orders
order_total += (product_order.quantity * product_order.price).round(2)
@@ -408,8 +412,7 @@ class List
@with_info_as_json = hl
end
private
# should not be private, called from order as well
def broadcast_users(message, content = {})
for user_id in Array.wrap(user_ids)
broadcast_user user_id, message, content
+22
View File
@@ -106,6 +106,28 @@ class Order
end
end
def cancel!
original_state = state.inquiry
self.state = 'cancelled' if placed? || active?
if save
broadcast_options = {id: id}
if original_state.placed?
reduced_count = supplier.decrement_orders_placed_count!
broadcast_options[:orders_placed_count] = reduced_count
elsif original_state.active?
reduced_count = supplier.decrement_orders_in_process_count!
broadcast_options[:orders_in_process_count] = reduced_count
end
list.broadcast_users 'order_cancelled', broadcast_options
broadcast_supplier supplier_id, 'order_cancelled', broadcast_options
end
end
def cancelled?
state == 'cancelled'
end
#TODO fix me
def close!
self.state = 'closed' if placed? || active?
if save
+1 -1
View File
@@ -15,7 +15,7 @@ html lang="en"
= render 'suppliers/application/head'
= javascript_include_tag "supplier/foundation1/application"
= yield :head
= javascript_include_tag "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places&language=#{I18n.locale}"
/= javascript_include_tag "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places&language=#{I18n.locale}"
javascript:
supplier_id="#{current_supplier.id}";