User ember progress
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
|
||||
@$translations =
|
||||
en:
|
||||
models: <%= I18n.t('activemodel.models', locale: :en).to_json %>
|
||||
@@ -10,6 +9,7 @@
|
||||
attributes: <%= I18n.t('activemodel.attributes', locale: :nl).to_json %>
|
||||
helpers: <%= I18n.t('helpers', locale: :nl).to_json %>
|
||||
pagination: <%= I18n.t('views.pagination', locale: :nl).to_json %>
|
||||
|
||||
@t = (path, vars={}) ->
|
||||
#result = undefined
|
||||
#m = undefined
|
||||
|
||||
@@ -11,8 +11,18 @@ Ember.$.ajaxPrefilter (options) ->
|
||||
options.data = "auth_token=#{auth_token}"
|
||||
if options.type.toUpperCase() == 'POST'
|
||||
if auth_token = Qstorage.getItem('auth_token')
|
||||
options.data ||= {}
|
||||
options.data.auth_token = auth_token
|
||||
if options.data
|
||||
if typeof(options.data) == 'string'
|
||||
if options.data[0] == '{' || options.data[0] == '[' # json
|
||||
object = JSON.parse(options.data)
|
||||
object.auth_token = auth_token
|
||||
options.data = JSON.stringify(object)
|
||||
else
|
||||
options.data += "&auth_token=#{auth_token}"
|
||||
else
|
||||
options.data.auth_token = auth_token
|
||||
else
|
||||
options.data = "auth_token=#{auth_token}"
|
||||
true
|
||||
|
||||
Ember.$.ajaxSetup
|
||||
|
||||
@@ -8,3 +8,4 @@ App.ActiveListController = Ember.ObjectController.extend
|
||||
#).property('controllers.application.list')
|
||||
|
||||
displayTotal: (-> @get('model.orders.length') and @get('model.orders.length') > 1 ).property('model.orders.length')
|
||||
list: (-> @get('controllers.application.list') ).property('controllers.application.list')
|
||||
|
||||
@@ -20,6 +20,27 @@ App.ApplicationController = Ember.Controller.extend
|
||||
list_closed: -> @set 'list', null
|
||||
join_request_approved: (data)->
|
||||
@setCurrentList -> @transitionToRoute('active_list')
|
||||
order_being_processed: (data)->
|
||||
order = @store.all('order').findBy 'id', data.id
|
||||
order.set('state', 'active') if order
|
||||
order_being_delivered: (data)->
|
||||
order = @store.all('order').findBy 'id', data.id
|
||||
order.set('state', 'delivered') if order
|
||||
user_join_request: (data)->
|
||||
list = @store.all('list').findBy 'id', data.join_request.list_id
|
||||
user_data = data.users[0]
|
||||
user = @store.all('user').findBy 'id', user_data.id
|
||||
user = @store.createRecord 'user', user_data unless user
|
||||
data.join_request.list = list
|
||||
data.join_request.user = user
|
||||
join_request = @store.createRecord 'join_request', data.join_request
|
||||
@transitionToRoute 'join_requests'
|
||||
join_request_rejected: (data)->
|
||||
join_request = @store.all('join_request').findBy 'id', data.id
|
||||
join_request.eraseRecord() if join_request
|
||||
join_request_approved: ->
|
||||
@setCurrentList ->
|
||||
@transitionToRoute 'active_list'
|
||||
|
||||
#getProducts: (options = {})->
|
||||
#@store.find('product_category', options).then (product_categories)=>
|
||||
@@ -34,9 +55,12 @@ App.ApplicationController = Ember.Controller.extend
|
||||
error_list.eraseRecord()
|
||||
@set 'list', list
|
||||
@controllerFor('active_list').set('model', list)
|
||||
if list.get('join_requests').toArray().length
|
||||
@transitionToRoute 'join_requests'
|
||||
callback.call(@) if callback
|
||||
error = (jqXHR)=>
|
||||
error = (emberError)=>
|
||||
# if jqXHR.status == 404 officially, now assume close list on error
|
||||
#@redirect_to 'index', message: 'the_list_has_been_closed'
|
||||
console.log "Error: #{emberError.message}" if emberError.message
|
||||
@set 'list', null
|
||||
@store.find('list', 'current').then(success, error)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
App.JoinRequestsController = Ember.ArrayController.extend
|
||||
join_requests: (-> @get('controllers.application.list.join_requests') ).property('controllers.application.list.join_requests')
|
||||
actions:
|
||||
rejectRequest: (join_request)->
|
||||
Ember.$.post('/user/reject_join_request', user_id: join_request.get('user.id')).then (response)->
|
||||
join_request.eraseRecord()
|
||||
approveRequest: (join_request)->
|
||||
Ember.$.post('/user/approve_join_request', user_id: join_request.get('user.id')).then (response)->
|
||||
join_request.eraseRecord()
|
||||
@@ -1,4 +1,5 @@
|
||||
App.ProductOrdersController = Ember.ArrayController.extend
|
||||
needs: ['application', 'table']
|
||||
orderTotal: (->
|
||||
#Math.round(Math.random()*100)
|
||||
@get('model').getEach('total').reduce(((sum, total) -> sum + total), 0)
|
||||
@@ -8,16 +9,17 @@ App.ProductOrdersController = Ember.ArrayController.extend
|
||||
#TODO: make clearing of unpersisted product orders
|
||||
@store.all('product_order').toArray().invoke 'eraseRecord'
|
||||
orderProducts: ->
|
||||
order = @store.createRecord('order', list: @get('controllers.application.list'))
|
||||
table = @get('controllers.table.model')
|
||||
list = @get('controllers.application.list')
|
||||
order = @store.createRecord('order', list: list, table: table)
|
||||
new_product_orders = @store.all('product_order').filterProperty('order', null)
|
||||
order.get('product_orders').pushObjects(new_product_orders)
|
||||
order.save().then (response)=>
|
||||
debugger
|
||||
new_product_orders.invoke 'eraseRecord'
|
||||
.error (a,b,c)=>
|
||||
d=a
|
||||
debugger
|
||||
@transitionToRoute 'active_list'
|
||||
@transitionToRoute 'active_list'
|
||||
, (jqXHR)=>
|
||||
new_product_orders.invoke 'eraseRecord'
|
||||
@redirect_to 'index', message: 'order_could_not_be_processed'
|
||||
|
||||
#orders = @store.all('product_order').toArray()
|
||||
#data = orders.map( (order)->order.serialize() )
|
||||
|
||||
@@ -34,10 +34,4 @@ App.SelectQrcodeController = Ember.Controller.extend
|
||||
cancel: =>
|
||||
@redirect_to 'list_products'
|
||||
else
|
||||
if res.occupied
|
||||
@redirect_to 'join_occupied_table', {table_id: table._id}
|
||||
else if res.supplier_closed
|
||||
@redirect_to 'user_root', {message: 'supplier_is_closed'}
|
||||
else
|
||||
#$.post(data_host + '/user/create_list.json', {table_id: table._id}, (res)-> Quser.handle_response(res))
|
||||
@redirect_to 'table', table._id, a: 3
|
||||
@redirect_to 'table', table._id
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
attr = DS.attr
|
||||
App.JoinRequest= DS.Model.extend
|
||||
list: DS.belongsTo('list')
|
||||
user: DS.belongsTo('user')
|
||||
@@ -11,6 +11,8 @@ App.List = DS.Model.extend
|
||||
|
||||
supplier: DS.belongsTo('supplier')
|
||||
table: DS.belongsTo('table')
|
||||
join_requests: DS.hasMany('join_request')
|
||||
users: DS.hasMany('user')
|
||||
|
||||
total: (->
|
||||
@get('orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
|
||||
|
||||
@@ -2,6 +2,7 @@ attr = DS.attr
|
||||
App.Order = DS.Model.extend
|
||||
state: attr 'string'
|
||||
list: DS.belongsTo('list')
|
||||
table: DS.belongsTo('table')
|
||||
product_orders: DS.hasMany('product_order', embedded: 'always')
|
||||
total: (->
|
||||
@get('product_orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
attr = DS.attr
|
||||
App.User = DS.Model.extend
|
||||
facebook_id: attr('string')
|
||||
email: attr('string')
|
||||
list: DS.belongsTo('list') # in ember scope not many to many (yet)
|
||||
join_requests: DS.hasMany('join_request')
|
||||
@@ -8,13 +8,16 @@ Ember.Controller.reopen
|
||||
callback.call(@) if callback
|
||||
redirect_to: (route, args...)->
|
||||
route = 'index' if route == 'user_root'
|
||||
route_segments = App.Router.router.recognizer.names[route].segments
|
||||
dynamic_segments = route_segments.reduce (sum, segment) ->
|
||||
route_object= App.Router.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
|
||||
, 0
|
||||
route_args = [route]
|
||||
for isegment in [1..dynamic_segments]
|
||||
route_args.push args.shift()
|
||||
|
||||
if dynamic_segments # needed because javascript for loop always fires, even when end is less than start :'(
|
||||
for isegment in [1..dynamic_segments]
|
||||
route_args.push args.shift()
|
||||
|
||||
options = args.pop() || {}
|
||||
|
||||
|
||||
@@ -11,5 +11,6 @@ App.Router.map ->
|
||||
@route 'list_products'
|
||||
@route 'list_products_for_table', path: '/list_products/:table_id'
|
||||
@route 'table', path: '/tables/:table_id'
|
||||
@resource 'join_requests'
|
||||
@resource 'lists', ->
|
||||
@resource 'list', path: ':list_id'
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
App.ActiveListRoute = Ember.Route.extend
|
||||
afterModel: (a,b,c)->
|
||||
controller = @controllerFor('application')
|
||||
if table_id = controller.get('list.table.id')
|
||||
transitionTo 'table', table_id
|
||||
else
|
||||
controller.redirect_to 'index', message: 'the_list_has_been_closed'
|
||||
App.ActiveListRoute = Ember.Route.extend {}
|
||||
#model: ->
|
||||
#@get('controllers.application.list')
|
||||
#afterModel: ->
|
||||
#controller = @controllerFor('application')
|
||||
#table_id = controller.get('list.table.id')
|
||||
#debugger
|
||||
#if table_id
|
||||
#@transitionTo 'table', table_id
|
||||
#else
|
||||
#controller.redirect_to 'index', message: 'the_list_has_been_closed'
|
||||
#setupController: (controller, model)->
|
||||
#debugger
|
||||
|
||||
@@ -7,7 +7,7 @@ App.ApplicationRoute = Ember.Route.extend
|
||||
user_id = Qstorage.getItem('user_id')
|
||||
faye.subscribe "/user/"+user_id, (e)=>
|
||||
console.log e
|
||||
@events[e.event].call(@) if @events[e.event]
|
||||
@events[e.event].call(@, e.data) if @events[e.event]
|
||||
@setCurrentList()
|
||||
|
||||
unauthorized: ->
|
||||
|
||||
@@ -1,19 +1,28 @@
|
||||
.row
|
||||
h2=t 'active_list.title'
|
||||
if orders
|
||||
ul.active_list-orders
|
||||
each order in orders
|
||||
li class=order.state
|
||||
= order.display
|
||||
span.currency= currency order.total
|
||||
if displayTotal
|
||||
li.total
|
||||
= t 'total'
|
||||
span.currency= currency model.total
|
||||
if list
|
||||
each user in list.users
|
||||
img.facebook-image src="http://graph.facebook.com/#{unbound user.facebook_id}/picture?type=square"
|
||||
if list.orders
|
||||
.list-orders-container
|
||||
each order in orders
|
||||
.list-order-container class=order.state
|
||||
= order.display
|
||||
span.currency= currency order.total
|
||||
if displayTotal
|
||||
.list-orders-total.total
|
||||
= t 'total'
|
||||
span.currency= currency model.total
|
||||
else
|
||||
p
|
||||
span=t 'active_list.no_orders_explanation'
|
||||
br
|
||||
link-to 'list_products' class="button"
|
||||
span=t 'list_products.title'
|
||||
|
||||
else
|
||||
p
|
||||
span=t 'active_list.no_orders_explanation'
|
||||
span=t 'active_list.not_active.message'
|
||||
br
|
||||
link-to 'list_products' class="button"
|
||||
span=t 'list_products.title'
|
||||
|
||||
link-to 'index' class="button"
|
||||
span= t 'active_list.not_active.home_button_text'
|
||||
|
||||
@@ -34,6 +34,9 @@
|
||||
li
|
||||
=link-to 'lists'
|
||||
span= t 'models.plural.list'
|
||||
li
|
||||
=link-to 'join_requests'
|
||||
span= t 'models.plural.join_request'
|
||||
section.main-section
|
||||
if notice
|
||||
#notice.alert-box{action clearNotice} data-alert=true
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
.row
|
||||
h2= t 'join_request.existing_user.title'
|
||||
each join_request in join_requests
|
||||
.join-request-container
|
||||
img.facebook-image src="http://graph.facebook.com/#{unbound join_request.user.facebook_id}/picture?type=square"
|
||||
span.user-email= join_request.user.email
|
||||
.right
|
||||
button.join-request-reject{action rejectRequest join_request}=t 'join_request.existing_user.reject_request'
|
||||
button.join-request-approve{action approveRequest join_request}=t 'join_request.existing_user.approve_request'
|
||||
else
|
||||
p=t 'join_request.existing_user.no_join_requests_message'
|
||||
@@ -10,10 +10,12 @@
|
||||
#= require js-routes
|
||||
#= require_directory .
|
||||
#= require_self
|
||||
(($) ->
|
||||
origAppend = $.fn.append
|
||||
$.fn.append = -> origAppend.apply(@, arguments).trigger("append")
|
||||
)(jQuery)
|
||||
#
|
||||
# (($) ->
|
||||
# origAppend = $.fn.append
|
||||
# $.fn.append = -> origAppend.apply(@, arguments).trigger("append")
|
||||
# )(jQuery)
|
||||
|
||||
@Qstorage = localStorage
|
||||
|
||||
$.extend($translations.en, <%= I18n.t('user', locale: :en).to_json %>);
|
||||
|
||||
Reference in New Issue
Block a user