From 6d7647c2c51f61de915c0a56b977eebec3c8c571 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Wed, 25 Sep 2013 12:19:25 +0200 Subject: [PATCH] Working supplier dashboard --- .../controllers/index_controller.js.coffee | 25 ++++++++++++++++--- .../supplier/app/models/list.js.coffee | 2 ++ .../supplier/app/models/order.js.coffee | 6 +++++ .../supplier/app/routes/index_route.js.coffee | 5 ++-- .../app/templates/active_order.emblem | 6 ++--- app/serializers/list_serializer.rb | 2 +- app/serializers/order_serializer.rb | 2 +- 7 files changed, 37 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee index bf820269..c6ae6ded 100644 --- a/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee @@ -1,11 +1,17 @@ Qsupplier.App.IndexController = Ember.ObjectController.extend active_lists: (-> - @get('lists').filterProperty('state', 'active') - ).property('lists.@each.state') + if @get('sectionId') + @get('lists').filter (l)=>( l.get('section_id') == @get('sectionId') && l.get('state') == 'active' ) + else + @get('lists').filterProperty('state', 'active') + ).property('lists.@each.state', 'sectionId') active_orders: (-> - @get('orders').filter (o)->(o.get('state') == 'active') - ).property('orders.@each.state') + if @get('sectionId') + @get('orders').filter (o)=>( o.get('section_id') == @get('sectionId') && o.get('needs_supplier_attention') ) + else + @get('orders').filter (o)->( o.get('needs_supplier_attention') ) + ).property('orders.@each.state', 'sectionId') markListAsHelped: (id)-> list = Qsupplier.App.List.find(id) @@ -15,3 +21,14 @@ Qsupplier.App.IndexController = Ember.ObjectController.extend list = Qsupplier.App.List.find(id) list.set('state', 'closed') $.post '/supplier/close_list', {list_id: id} + + 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') + sectionId: '' diff --git a/app/assets/javascripts/supplier/app/models/list.js.coffee b/app/assets/javascripts/supplier/app/models/list.js.coffee index 7a0ed6e1..6a59c0d3 100644 --- a/app/assets/javascripts/supplier/app/models/list.js.coffee +++ b/app/assets/javascripts/supplier/app/models/list.js.coffee @@ -9,3 +9,5 @@ Qsupplier.App.List = DS.Model.extend table_number: attr 'number' table: DS.belongsTo('Qsupplier.App.Table', inverse: 'active_list') orders: DS.hasMany('Qsupplier.App.Order') + section: DS.belongsTo('Qsupplier.App.Section') + section_id: attr('string') diff --git a/app/assets/javascripts/supplier/app/models/order.js.coffee b/app/assets/javascripts/supplier/app/models/order.js.coffee index 01ffc2f5..4918c392 100644 --- a/app/assets/javascripts/supplier/app/models/order.js.coffee +++ b/app/assets/javascripts/supplier/app/models/order.js.coffee @@ -4,8 +4,14 @@ Qsupplier.App.Order = DS.Model.extend list: DS.belongsTo('Qsupplier.App.List') total_amount: attr('number') product_orders: attr('object') + section: DS.belongsTo('Qsupplier.App.Section') + section_id: attr('string') + active: (-> @get('state') == 'active').property('state') delivered: (-> @get('state') == 'delivered').property('state') + placed: (-> @get('state') == 'placed').property('state') + needs_supplier_attention: (-> @get('state') == 'placed' || @get('state') == 'active').property('state') + display: (-> @get('product_orders').map((po)-> "#{po.product_name} (#{po.quantity})").join(',') ).property('product_orders') diff --git a/app/assets/javascripts/supplier/app/routes/index_route.js.coffee b/app/assets/javascripts/supplier/app/routes/index_route.js.coffee index 67dd4fdf..2c9edc42 100644 --- a/app/assets/javascripts/supplier/app/routes/index_route.js.coffee +++ b/app/assets/javascripts/supplier/app/routes/index_route.js.coffee @@ -3,8 +3,9 @@ Qsupplier.App.IndexRoute = Ember.Route.extend Ember.Object.create lists: Qsupplier.App.List.find({state: 'active'}) orders: Qsupplier.App.Order.find() - #setupController: (controller, model)-> - #controller.set('model', model) + setupController: (controller, model)-> + controller.set('model', model) + $('#section_selector').on 'change', (-> controller.set('sectionId', $(this).val())) #controller.set 'lists', Qsupplier.App.List.all() #.filterProperty('state', 'active') #controller.set 'orders', Qsupplier.App.Order.all() #controller.set 'lists', model.get('lists') diff --git a/app/assets/javascripts/supplier/app/templates/active_order.emblem b/app/assets/javascripts/supplier/app/templates/active_order.emblem index 3c26283d..2f8afabf 100644 --- a/app/assets/javascripts/supplier/app/templates/active_order.emblem +++ b/app/assets/javascripts/supplier/app/templates/active_order.emblem @@ -3,6 +3,6 @@ td.numeric.table_number {{view.content.table_number}} td.section_title {{view.content.section_title}} td.currency {{currency view.content.total_amount}} td.actions - /**/ - /**/ - ' Actions + if view.content.placed + button.btn.btn-success{ action markOrderActive view.content.id} {{t 'order.being_processed'}} + button.btn.btn-inverse{ action markOrderDelivered view.content.id} {{t 'order.being_served' }} diff --git a/app/serializers/list_serializer.rb b/app/serializers/list_serializer.rb index 44c3b6cc..b98cbddd 100644 --- a/app/serializers/list_serializer.rb +++ b/app/serializers/list_serializer.rb @@ -1,4 +1,4 @@ class ListSerializer < Qwaiter::Serializer embed :ids - attributes :state, :needs_help, :needs_payment, :is_paid, :price, :table_id, :table_number + attributes :state, :needs_help, :needs_payment, :is_paid, :price, :table_id, :table_number, :section_id end diff --git a/app/serializers/order_serializer.rb b/app/serializers/order_serializer.rb index a244cc15..866aadd9 100644 --- a/app/serializers/order_serializer.rb +++ b/app/serializers/order_serializer.rb @@ -1,4 +1,4 @@ class OrderSerializer < Qwaiter::Serializer embed :ids - attributes :state, :list_id + attributes :state, :list_id, :section_id end