Mozo upgrade progress

This commit is contained in:
2015-07-27 20:40:53 +02:00
parent bd9dfa7c77
commit efae583705
43 changed files with 148 additions and 151 deletions
@@ -16,6 +16,17 @@ Ember.Application.initializer
container.register 'clock:service', ClockService
application.inject 'component:menu-product-categories', 'clock', 'clock:service'
Globals = Ember.Object.extend
list: null
notice: ''
Ember.Application.initializer
name: 'Globals'
initialize: (container, application)->
container.typeInjection('component', 'store', 'store:main')
application.register('global:variables', Globals, {singleton: true})
application.inject('controller', 'globals', 'global:variables')
application.inject('component', 'globals', 'global:variables')
@App = Ember.Application.create
LOG_TRANSITIONS: true
rootElement: '#ember-app-container'
@@ -1,8 +1,8 @@
App.ListOrderView = Ember.View.extend
App.ListOrderComponent = Ember.Component.extend
classNames: 'list-order-container'
classNameBindings: ['content.state', 'contentWrapClass']
templateName: 'list_order_row'
contentWrapClass: (-> "order-row-#{@get('content.id')}").property('content.id')
classNameBindings: ['order.state', 'contentWrapClass']
#templateName: 'components/list-order'
contentWrapClass: (-> "order-row-#{@get('order.id')}").property('order.id')
#click: ->
#if @route_param
#@get('controller').transitionToRoute(@route, @route_param)
@@ -0,0 +1,12 @@
App.MenuItemComponent = Ember.Component.extend
classNames: 'menu-list-item'
classNameBindings: ['active']
click: ->
if route_param = @get('route_param')
@get('reference_controller').transitionToRoute(@get('route'), route_param)
else
@get('reference_controller').transitionToRoute(@get('route'))
active: (->
if @get('reference_controller.currentPath') == @get('route') then 'active' else ''
).property('reference_controller.currentPath')
setTemplate: (-> @templateName = "components/menu/#{@get('route')}").on('init')
@@ -0,0 +1,10 @@
App.MenuItemListNeedsHelpComponent = Ember.Component.extend Ember.ViewTargetActionSupport,
action: 'listNeedsHelp'
templateName: "components/menu/list_needs_help"
classNames: 'menu-list-item callout'
classNameBindings: ['globals.list.needs_help:active']
click: ->
if @get('globals.list.needs_help')
@set 'globals.notice', t('list_needs_help.help_is_on_its_way')
else
@triggerAction()
@@ -1,10 +1,10 @@
App.MenuItemListNeedsPaymentView = Ember.View.extend Ember.ViewTargetActionSupport,
App.MenuItemListNeedsPaymentComponent = Ember.Component.extend Ember.ViewTargetActionSupport,
action: 'listNeedsPayment'
templateName: "menu/list_needs_payment"
templateName: "components/menu/list_needs_payment"
classNames: 'menu-list-item callout'
classNameBindings: ['controller.list.needs_payment:active']
click: ->
if @get('controller.list.needs_payment')
@set 'controller.notice', t('list_needs_payment.payment_already_requested')
@set 'globals.notice', t('list_needs_payment.payment_already_requested')
else
@triggerAction() #action: 'listNeedsPayment'
@@ -1,5 +1,5 @@
App.MenuItemProductOrdersView = Ember.View.extend
templateName: 'menu/product_orders'
App.MenuItemProductOrdersComponent = Ember.Component.extend
templateName: 'components/menu/product_orders'
classNames: ['menu-list-item', 'menu-list-item-product-orders']
classNameBindings: ['controller.controllers.product_orders.product_orders.length:show:hide', 'currentRoute:active']
currentRoute: (-> @get('controller.currentRouteName') is 'product_orders' ).property('controller.currentRouteName')
@@ -0,0 +1,5 @@
App.MenuItemScanQrComponent = Ember.Component.extend Ember.ViewTargetActionSupport,
action: 'scanQr'
templateName: "components/menu/scan_qr"
classNames: 'menu-list-item'
click: -> @triggerAction()
@@ -1,4 +1,4 @@
App.ActiveListController = Ember.ObjectController.extend
App.ActiveListController = Ember.Controller.extend
#orders: (->
#@get('list.orders')
#).property('list.orders')
@@ -1,14 +1,14 @@
App.ApplicationController = Ember.Controller.extend
needs: ['product_orders']
join_request_sent: false
notice: ''
#notice: ''
actions:
confirmCancel: ->
if cancel = @get('confirm.cancel')
cancel.call(@)
$('#confirm-modal').hide()
clearNotice: ->
@set 'notice', null
@set 'globals.notice', ''
showSupplierStatusInfo: ->
@modal 'supplier_status_info',
model: @get('list.supplier')
@@ -18,10 +18,10 @@ App.ApplicationController = Ember.Controller.extend
debugger
currentPathDidChange: (->
@set 'notice', ''
@set 'globals.notice', ''
).observes('currentPath')
events:
notify: (notification) -> @set 'notice', notification.message
notify: (notification) -> @set 'globals.notice', notification.message
list_helped: -> @set 'list.needs_help', false
list_needs_help: -> @set 'list.needs_help', true # incoming from other users
list_is_paid: -> @set 'list.needs_payment', false
@@ -48,7 +48,7 @@ App.ApplicationController = Ember.Controller.extend
join_request = @store.createRecord 'join_request', data.join_request
@transitionToRoute 'join_requests'
order_cancelled: (data)->
if order = App.Order.findCached(data.id)
if order = @store.all('order').findBy('id', data.id)
order.markCancelled()
@events.orders_placed_count.call(@, count: data.supplier_orders_placed_count) if data.supplier_orders_placed_count == 0 or data.supplier_orders_placed_count
@events.orders_in_process_count.call(@, count: data.supplier_orders_in_process_count) if data.supplier_orders_in_process_count == 0 or data.supplier_orders_in_process_count
@@ -61,14 +61,14 @@ App.ApplicationController = Ember.Controller.extend
# NOTE data.id is in the form of: jr-:user_id
requestor_id = data.id.substr(3)
if requestor_id is Qstorage.getItem('user_id')
@set 'notice', t('join_request.requestor.join_request_rejected')
@set 'globals.notice', t('join_request.requestor.join_request_rejected')
@set 'join_request_sent', false
join_request_approved: ->
return if @get('list.id')
@setCurrentList ->
@transitionToRoute('active_list').then =>
@set 'notice', t('join_request.requestor.join_request_approved')
@set 'globals.notice', t('join_request.requestor.join_request_approved')
list_changed_table: ->
@setCurrentList()
@@ -96,7 +96,9 @@ App.ApplicationController = Ember.Controller.extend
# at the moment remove the dummy list, this should be resolved by Ember eventually
if error_list = @store.all('list').findBy('id', 'current')
error_list.eraseRecord()
#TODO: depricate list on application controller
@set 'list', list
@set 'globals.list', list
if list.get('join_requests.length')
@transitionToRoute 'join_requests'
else if @currentRouteName is 'index'
@@ -111,6 +113,6 @@ App.ApplicationController = Ember.Controller.extend
@set 'list', null
switch @currentRouteName
when 'table' then # nothing
else @redirect_to 'index'
else @redirect_to 'user_root'
@store.find('list', 'current').then(success, error)
@@ -1,4 +1,4 @@
App.JoinRequestsController = Ember.ArrayController.extend
App.JoinRequestsController = Ember.Controller.extend
join_requests: (-> @get('controllers.application.list.join_requests') ).property('controllers.application.list.join_requests')
actions:
rejectRequest: (join_request)->
@@ -1,2 +1,2 @@
App.ListController = Ember.ObjectController.extend
App.ListController = Ember.Controller.extend
list: (-> @get('model')).property('model')
@@ -1,2 +1,2 @@
App.ListsIndexController = Ember.ArrayController.extend App.PaginationModule,
App.ListsIndexController = Ember.Controller.extend App.PaginationModule,
lists: (->@get('model').sortBy('created_at').reverse()).property('model.@each')
@@ -1,4 +1,4 @@
@App.modals.BaseController = Ember.ObjectController.extend
@App.modals.BaseController = Ember.Controller.extend
alert_message: ""
title: (->
# return title if directly set by options
@@ -1,4 +1,4 @@
App.ProductOrdersController = Ember.ArrayController.extend
App.ProductOrdersController = Ember.Controller.extend
needs: ['application', 'table']
orderTotal: (->
#Math.round(Math.random()*100)
@@ -27,7 +27,7 @@ App.ProductOrdersController = Ember.ArrayController.extend
# @transitionToRoute 'active_list'
# , @ajaxError (jqXHR)=>
# new_product_orders.invoke 'eraseRecord'
# @redirect_to 'index', message: 'order_could_not_be_processed'
# @redirect_to 'user_root', message: 'order_could_not_be_processed'
#orders = @store.all('product_order').toArray()
#data = @get('product_orders').map( (po)->po.serialize() )
@@ -41,7 +41,7 @@ App.ProductOrdersController = Ember.ArrayController.extend
url: "#{$data_host}/user/orders.json"
data: JSON.stringify(dataObject)
success: (response) =>
@store.pushPayload('order', response) if response.order
@store.pushPayload(order: response.order) if response.order
@transitionToRoute 'active_list'
@get('product_orders').invoke 'unloadRecord'
@@ -1,8 +1,8 @@
App.TableController = Ember.ObjectController.extend
App.TableController = Ember.Controller.extend
join_request_sent: (-> @get('controllers.application.join_request_sent')).property('controllers.application.join_request_sent')
tableCanTakeOrders: (->
return false unless @get('supplier.can_take_orders')
list = @get('controllers.application.list')
list = @get('globals.list')
if list
return false unless list.get('supplier.id') == @get('supplier.id')
return false unless list.get('table.id') == @get('model.id')
@@ -11,6 +11,7 @@ App.TableController = Ember.ObjectController.extend
# no list and open supplier
if @get('model.occupied') then false else true
).property('controllers.application.list.id', 'supplier.can_take_orders', 'model.occupied', 'model.id', 'controllers.application.list.table.id')
supplier: Ember.computed 'model.supplier', -> @get('model.supplier')
showJoinButton: (->
return false unless @get('supplier.can_take_orders')
return false if @get('controllers.application.list') # if you already have an active list, do not join another
@@ -15,13 +15,10 @@ ControllerExtensions = Ember.Mixin.create
modal: (name, options={})->
options.model ||= Ember.Object.create()
@send "openModal", name, options
Ember.ArrayController.reopen ControllerExtensions
Ember.Controller.reopen ControllerExtensions
Ember.ObjectController.reopen ControllerExtensions
Ember.Controller.reopen
redirect_to: (route, args...)->
route = 'index' if route == 'user_root'
route_object= App.Router.router.recognizer.names[route]
#route_object= App.Router.router.recognizer.names[route]
route_object = @get "target.router.recognizer.names.#{route}"
throw "Route #{route} cannot exist" unless route_object
dynamic_segments = route_object.segments.reduce (sum, segment) ->
if segment.name then sum + 1 else sum
@@ -38,7 +35,11 @@ Ember.Controller.reopen
@transitionToRoute.apply(@,route_args).then =>
if options.message
tkey = if options.message.indexOf('.') > -1 then options.message else "messages.#{options.message}"
@set 'controllers.application.notice', t(tkey)
@set 'globals.notice', t(tkey)
#Ember.ArrayController.reopen ControllerExtensions
Ember.Controller.reopen ControllerExtensions
#Ember.ObjectController.reopen ControllerExtensions
#Ember.Controller.reopen
#confirm: (options = {})->
##@showModal options
##$(document).foundation('reflow') # needed (stupid!!!)
@@ -54,10 +55,10 @@ Ember.Controller.reopen
#$('#confirm-modal').foundation('reveal', 'open') #this kills the ember actions
#$('#confirm-modal').css('visibility', 'visible').show()
Ember.ArrayController.reopen
redirect_to: (route, options={})->
route = 'index' if route == 'user_root'
@transitionToRoute(route).then =>
if options.message
tkey = if options.message.indexOf('.') > -1 then options.message else "messages.#{options.message}"
@set 'controllers.application.notice', t(tkey)
#Ember.ArrayController.reopen
#redirect_to: (route, options={})->
#route = 'index' if route == 'user_root'
#@transitionToRoute(route).then =>
#if options.message
#tkey = if options.message.indexOf('.') > -1 then options.message else "messages.#{options.message}"
#@set 'globals.notice', t(tkey)
@@ -2,7 +2,7 @@ DS.Model.reopen
created_at: DS.attr('date')
updated_at: DS.attr('date')
eraseRecord: ->
@clearRelationships()
#@clearRelationships()
@transitionTo('deleted.saved')
DS.Model.reopenClass
findCached: (id)->
@@ -23,7 +23,7 @@ App.ApplicationRoute = Ember.Route.extend
controller = @controllerFor('application')
controller.setCurrentList ->
@transitionTo('active_list')
controller.set 'notice', t('messages.authenticated')
controller.set 'globals.notice', t('messages.authenticated')
actions:
obtain_token: ( options = {} ) ->
provider = options.provider || 'facebook'
@@ -97,7 +97,8 @@ App.ApplicationRoute = Ember.Route.extend
else
message = t('errors.404.general.message')
@transitionTo('index').then (route)->
route.get('controller.controllers.application').set 'notice', message if route and route.get
#route.get('controller.controllers.application').set 'notice', message if route and route.get
route.set 'globals.notice', message if route and route.set
$log
action: 'applicationerror'
error: error.message
@@ -164,7 +165,8 @@ App.ApplicationRoute = Ember.Route.extend
ar.send('selectQr', _id: table_id)
else
ar.transitionTo('index').then (route)->
route.get('controller.controllers.application').set 'notice', "we got a barcode: '#{result.text}' but cannot extract a table id"
#route.get('controller.controllers.application').set 'notice', "we got a barcode: '#{result.text}' but cannot extract a table id"
route.set 'globals.notice', "we got a barcode: '#{result.text}' but cannot extract a table id"
$log
action: 'qrscan'
error: 'cannot extract table id'
@@ -176,7 +178,8 @@ App.ApplicationRoute = Ember.Route.extend
error: 'scan failed'
info: error
ar.transitionTo('index').then (route)->
route.get('controller.controllers.application').set 'notice', "scanning failed: #{error}"
#route.get('controller.controllers.application').set 'notice', "scanning failed: #{error}"
route.set 'globals.notice', "scanning failed: #{error}"
<% else %>
@transitionTo 'select_qrcode'
<% end %>
@@ -1,40 +1,7 @@
#App.ApplicationSerializer = DS.ActiveModelSerializer.extend
#serializeBelongsTo: (record, json, relationship) ->
#console.log "Serialize belongsTo #{record.toString()}"
#key = relationship.key
#belongsTo = Ember.get(record, key)
#key = (if @keyForRelationship then @keyForRelationship(key, "belongsTo") else key)
#if relationship.options.embedded is "always"
#json[key] = belongsTo.serialize()
#else
#@_super record, json, relationship
#serializeHasMany: (record, json, relationship) ->
#console.log "Serialize hasMany #{record.toString()}"
#key = relationship.key
#hasMany = Ember.get(record, key)
#relationshipType = DS.RelationshipChange.determineRelationshipType(record.constructor, relationship)
#if relationship.options.embedded is "always"
#if hasMany and relationshipType is "manyToNone" or relationshipType is "manyToMany" or relationshipType is "manyToOne"
#json[key] = []
#hasMany.forEach (item, index) ->
#json[key].push item.serialize()
#else
#@_super record, json, relationship
App.ApplicationSerializer = DS.ActiveModelSerializer.extend()
App.ApplicationStore = DS.Store.extend
#adapter: DS.RESTAdapter.extend
#host: $data_host
#namespace: 'user'
## user underscored paths
#pathForType: (type)->
#decamelized = Ember.String.decamelize(type)
#Ember.String.pluralize(decamelized)
#headers:
#Accept: 'application/json'
adapter: DS.ActiveModelAdapter.extend
host: $data_host
namespace: 'user'
headers:
"Accept": "application/json, text/javascript; q=0.01"
App.ApplicationAdapter = DS.ActiveModelAdapter.extend
host: $data_host
namespace: 'user'
headers:
"Accept": "application/json, text/javascript; q=0.01"
@@ -16,7 +16,11 @@ if list.closed_at
if list.orders.isLoaded
if list.sorted_orders
.list-orders-container
each order in list.sorted_orders: = view "list-order" contentBinding="order"
each order in list.sorted_orders
= list-order order=order
/= order.display
/span.currency= currency order.total
/span.created_at= time order.created_at format="H:mm"
if list.showTotal
.list-orders-total.total
= t 'total'
@@ -2,10 +2,10 @@
= partial "global/side_menu"
.main-section
.main-section-content
if notice
if globals.notice
#notice.alert-box{action "clearNotice"} data-alert=true
a.right href="#"
span.fa.fa-times.fa-lg
span= notice
span= globals.notice
= outlet
=outlet modal
@@ -2,30 +2,30 @@
.top-menu-bar
.menu-content
section.main-buttons
if list.id
if globals.list.id
link-to 'index' class="top-menu-logo with-list"
= image_tag 'user/logo-small.png'
= view "menu-item" route="active_list"
= view "menu-item" route="table" route_param=list.table.id
= view "menu-item-list-needs-help"
= view "menu-item-list-needs-payment"
= menu-item route="active_list" reference_controller=controller
= menu-item route="table" route_param=globals.list.table.id reference_controller=controller
= menu-item-list-needs-help reference_controller=controller
= menu-item-list-needs-payment reference_controller=controller
else
link-to 'index' class="top-menu-logo without-list"
= image_tag 'user/logo-small.png'
= view "menu-item-scan-qr"
= view "menu-item-product-orders"
if list
= menu-item-scan-qr reference_controller=controller
= menu-item-product-orders reference_controller=controller
if globals.list
.extra-info{action "showSupplierStatusInfo"}
.supplier-info-row
/ .supplier-name= list.supplier.name
.table-number
|#&nbsp;
= list.table.number
= globals.list.table.number
.supplier-info-row
.counter.supplier-orders-placed-count
= list.supplier.orders_placed_count
= globals.list.supplier.orders_placed_count
span.orders-placed-count-icon
.supplier-info-row
.counter.supplier-orders-in-process-count
= list.supplier.orders_in_process_count
= globals.list.supplier.orders_in_process_count
span.orders-in-process-count-icon
@@ -1,10 +0,0 @@
App.MenuItemListNeedsHelpView = Ember.View.extend Ember.ViewTargetActionSupport,
action: 'listNeedsHelp'
templateName: "menu/list_needs_help"
classNames: 'menu-list-item callout'
classNameBindings: ['controller.list.needs_help:active']
click: ->
if @get('controller.list.needs_help')
@set 'controller.notice', t('list_needs_help.help_is_on_its_way')
else
@triggerAction()
@@ -1,5 +0,0 @@
App.MenuItemScanQrView = Ember.View.extend Ember.ViewTargetActionSupport,
action: 'scanQr'
templateName: "menu/scan_qr"
classNames: 'menu-list-item'
click: -> @triggerAction()
@@ -1,14 +0,0 @@
App.MenuItemView = Ember.View.extend
classNames: 'menu-list-item'
classNameBindings: ['active']
click: ->
if @route_param
@get('controller').transitionToRoute(@route, @route_param)
else
@get('controller').transitionToRoute(@route)
active: (->
if @get('controller.currentPath') == @route then 'active' else ''
).property('controller.currentPath')
init: ->
@templateName = "menu/#{@route}"
@_super()