#authentication_string = QMobile.authentication_string() #authentication_object = $.parseJSON(QMobile.authentication_object()) class Quser format_date: (utc) -> formatted = '' formatted += utc.substr(0,10) formatted += ' ' formatted += utc.substr(11, 5) formatted watch_events: -> return if window.redirecting faye = new Faye.Client(event_host) user_id = Qstorage.getItem('user_id') unless user_id @reset_user() redirect_to 'obtain_token' return false faye.subscribe "/user/"+user_id, (e)=> if(e.event == 'list_closed') #redirect_to 'user_root', {list_closed: 'true'} redirect_to 'history_list', {list_id: e.data.id, list_closed: true} else if(e.event == 'list_helped') window.active_list.needs_help = false @list_needs_help_default_action() else if(e.event == 'order_being_processed') $('#order-row-'+e.data.id).addClass('active') else if(e.event == 'order_being_delivered') $('#order-row-'+e.data.id).addClass('delivered') else if(e.event == 'list_changed_table') list = new List(e.data.list) $('.table-number').text(list.table_number()) else if(e.event == 'list_needs_help') window.active_list.needs_help = true @list_needs_help_default_action() else if(e.event == 'list_needs_payment') window.active_list.needs_payment = true @list_needs_payment_default_action() else if(e.event == 'user_join_request') @show_join_request(e.data) else if(e.event == 'join_request_approved') redirect_to 'list_products', message: 'join_request_approved' else if(e.event == 'join_request_rejected') redirect_to 'user_root', message: 'join_request_rejected' 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)) console.log(e) false ensure_json: (res)-> if typeof(res) == 'string' then JSON.parse(res) else res reset_user: -> Qstorage.removeItem('auth_token') Qstorage.removeItem('user_id') authenticate_user: -> email = $('#user-email') password = $('#user-password') return unless email.length && password.length return email.focus() unless email.val() && email.val().length > 0 return password.focus() unless password.val() && password.val().length > 0 $.post(data_host + '/user/obtain_token.json', {"user[email]": email.val(), "user[password]": password.val()}, (res)=> res = @ensure_json(res) if res.auth_token Qstorage.setItem('auth_token', res.auth_token) Qstorage.setItem('user_id', res.user_id) redirect_to 'user_root' else $('.user-alert').html(t('obtain_token.invalid_combination')).show() ) false ensure_token: (callback)-> unless Qstorage.getItem('auth_token') && typeof(Qstorage.getItem('auth_token')) == 'string' && Qstorage.getItem('auth_token').length > 0 return redirect_to('obtain_token') @authentication_string = 'auth_token='+Qstorage.getItem('auth_token') @authentication_object = {auth_token: Qstorage.getItem('auth_token')} callback.call() if callback home_loader: -> @ensure_token => $.getJSON(data_host + '/user/list_info.json', @authentication_object, (res) => @handle_active_list_default_actions(res)) handle_active_list: (callback) -> @ensure_token => $.getJSON(data_host + '/user/list_info.json', @authentication_object, (res) => if(res.ok == false && res.status && res.status == 401) redirect_to('obtain_token') else if !res.list_active redirect_to 'user_root', {list_closed: 'true'} return window.active_list = res callback.call() if callback @handle_active_list_default_actions(res) ) handle_active_list_default_actions: (response)-> response ||= {} if(response.ok == false && response.status && response.status == 401) redirect_to('obtain_token') return $('.table-number').text(response.table_number) if response.table_number $('.supplier-name').text(response.supplier_name) if response.supplier_name if response.not_present || response.list_active == false then $('.home-link').removeClass('active') else $('.home-link').addClass('active') @list_needs_payment_default_action(response) @list_needs_help_default_action(response) # join_request_active is to ensure that there are no more modals loaded when one is still active # console.log('join_request_active=' + window.join_request_active) @handle_join_requests(response) handle_join_requests: (response)-> if !window.join_request_active && response.join_requests && response.join_requests.length window.join_request_active = true for join_request in response.join_requests @show_join_request(join_request) show_join_request: (join_request)-> $(@mustache('#join-request-template', title: t('join_request.title') message: t('join_request.body', {email: join_request.user_email}) reject: t('join_request.reject') approve: t('join_request.approve') requester_id: join_request.user_id )).modal() false approve_join_request: (user_id)-> @ensure_token => $.post(data_host + '/user/approve_join_request', $.extend({user_id: user_id}, @authentication_object), -> window.join_request_active = false) reject_join_request: (user_id)-> @ensure_token => $.post(data_host + '/user/reject_join_request', $.extend({user_id: user_id}, @authentication_object), -> window.join_request_active = false) list_needs_help: -> return unless window.active_list && !window.active_list.needs_help @ensure_token => $.post(data_host + '/user/needs_help.json', @authentication_object, (res) => window.active_list = @ensure_json(res); @list_needs_help_default_action()) list_needs_help_default_action: (response)=> response ||= window.active_list window.active_list = response needs_help_container = $('#list-needs-help-button') if needs_help_container.length if response.needs_help needs_help_container.data('needs-help', true) needs_help_container.addClass('active') else needs_help_container.data('needs-help', false) needs_help_container.removeClass('active') unless needs_help_container.data('click-initialized') needs_help_container.click( -> if $(this).data('needs-help') Qwaiter.alert(t('list_needs_help.help_is_on_its_way')) else Qwaiter.confirm( title: t('list_needs_help.title') content: t('list_needs_help.content') ok: 'Quser.list_needs_help()' ) ) needs_help_container.data('click-initialized', true) list_needs_payment: -> return unless window.active_list && !window.active_list.needs_payment @ensure_token => $.post(data_host + '/user/list_needs_payment.json', @authentication_object, (res) => window.active_list = @ensure_json(res); @list_needs_payment_default_action()) list_needs_payment_default_action: (response)-> response ||= window.active_list window.active_list = response needs_payment_container = $('#list-needs-payment-button') if needs_payment_container.length if response.needs_payment needs_payment_container.data('needs-payment', true) needs_payment_container.addClass('active') else needs_payment_container.data('needs-payment', false) needs_payment_container.removeClass('active') unless needs_payment_container.data('click-initialized') needs_payment_container.click( -> if $(this).data('needs-payment') Qwaiter.alert(t('list_needs_payment.payment_already_requested')) else Qwaiter.confirm( title: t('list_needs_payment.title') content: t('list_needs_payment.content') ok: 'Quser.list_needs_payment()' ) ) needs_payment_container.data('click-initialized', true) load_active_list: () -> @ensure_token => $.getJSON(data_host + '/user/active_list.json?'+@authentication_string, (res) => if(res.ok == false && res.status && res.status == 401) redirect_to('obtain_token') window.active_list = res if res._id unless res.list_active redirect_to 'history_list', {list_id: window.active_list._id, list_closed: true} return @handle_active_list_default_actions(res) body = $('#active-list-table tbody') foot = $('#active-list-table tfoot') @build_list_table(body, foot, res) ) load_history_list: () -> return unless list_id = Qstorage.list_id @ensure_token => $.getJSON(data_host + '/user/history_list.json?list_id='+list_id+'&'+ @authentication_string, (res) => body = $('#history-list-table tbody') foot = $('#history-list-table tfoot') @build_list_table(body, foot, res) $('.list-created-at').text(@format_date(res.created_at)) $('.list-closed-at').text(@format_date(res.closed_at)) $('.supplier-name').text(res.supplier_name) ) load_list_history: -> @ensure_token => page = Qstorage.getItem('page') || 1 page = parseInt(page) $.getJSON(data_host + '/user/list_history.json?'+@authentication_string+'&page='+page, (res) => @paginate(res, @load_list_history) container = $('#list-history-container').html('') return unless res.lists for list in res.lists container.append @mustache('#list-history-template', new List(list) ) ) paginate: (wrapper, callback) -> container = $('nav.pagination') container.html('') return unless wrapper.num_pages list = $('
').html(t('join_request.requestor.waiting_for_confirmation'))) @ensure_token => $.post(data_host + '/user/join_occupied_table.json', $.extend({table_id: table_id}, @authentication_object)) #setInterval('Quser.check_if_can_join_occupied_table("'+table_id+'")', 7500) add_product: (product_id, count) -> count ||= 1 window.active_products_list ||= {} window.active_products_list[product_id] ||= 0 window.active_products_list[product_id] += count @build_product_list() clear_selected_products: -> window.active_products_list = {} $('#active-order-table').hide() @Quser = new Quser