root = exports ? this root.Qsupplier = watch_events: -> faye = new Faye.Client(event_host) faye.subscribe "/supplier/#{supplier_object.id}", (e)=> <% if Rails.env.test? %> window.faye_log ||= [] faye_message = {} faye_message[e.event] = JSON.parse(JSON.stringify(e.data)) faye_log.push faye_message <% elsif Rails.env.development? %> console.log "Event: #{e.event}" console.log e.data <% end %> if e.data if e.data.supplier_orders_placed_count == 0 or e.data.supplier_orders_placed_count $('.supplier-orders-placed-count-number').text(e.data.supplier_orders_placed_count) if e.data.supplier_orders_in_process_count == 0 or e.data.supplier_orders_in_process_count $('.supplier-orders-in-process-count-number').text(e.data.supplier_orders_in_process_count) # if(e.event == 'new_order') # if App # App.store().pushPayload(e.data) # # Fix for ember pushPayload bug not creating the proper relations/triggers # setTimeout -> # if order = App.store().all('order').findProperty('id', e.data.order.id) # # console.log "Ugly ember fix for adding order #{e.data.order.id} as relation to its list" # list = order.get('list') # list.get('orders').addRecord order # if table = list.get('table') # if table.get('active_list') # table.get('active_list').then (table_list)-> # table.set 'active_list', list if table_list isnt list # , 200 if(e.event == 'list_needs_help') list.markNeedsHelp() if list = App.List.findCached(e.data.id) else if(e.event == 'list_needs_payment') list.markNeedsPayment() if list = App.List.findCached(e.data.id) else if(e.event == 'list_is_paid') list.markIsPaid() if list = App.List.findCached(e.data.id) else if e.event == 'list_update' App.store().pushPayload('list', e.data) App.store().findById('list', e.data.list.id).then (list)-> list.get('table').then (table)->table.set('active_list', list) else if e.event == 'list_closed' list.markClosed() if list = App.List.findCached(e.data.id) else if e.event == 'order_closed' order.markClosed() if order = App.Order.findCached(e.data.id) else if e.event == 'list_helped' list.markHelped() if list = App.List.findCached(e.data.id) else if e.event == 'order_being_processed' order.markActive() if order = App.Order.findCached(e.data.id) else if e.event == 'order_being_delivered' order.markDelivered() if order = App.Order.findCached(e.data.id) else if e.event == 'orders_in_process_count' $('.supplier-orders-in-process-count-number').text e.data.count else if e.event == 'orders_placed_count' $('.supplier-orders-placed-count-number').text e.data.count else if e.event == 'list_changed_table' # App && App.List.updateOrAdd(e.data.list) # App.store().update 'list', e.data.list #TODO: waiting for single source of truth if list = App.List.findCached(e.data.list.id) list.get('table').set('active_list', null) App.store().findById('table', e.data.list.table_id).then (new_table)-> list.set('table', new_table) new_table.set('active_list', list) # making reverse association else if e.event == 'order_cancelled' order.markCancelled() if order = App.Order.findCached(e.data.id) false # move_table_to_active_section: (table_id)-> # table_container = $('#section-table-'+table_id) # section_container = $('.section-tables-active') # section_container.append(table_container) # Qsupplier.position_table_in_active_section(section_container, table_container, true) # # # Set the section id of the table in the database # $.ajax( # type: 'PUT', # url: '/supplier/tables/'+table_container.data('table-id'), # data: {table: {section_id: current_section_id}}, # dataType: 'json' # ) # position_table_in_active_section: (section_container, table_container, make_draggable)-> # make_draggable ||= false # button_container = table_container.find('.action-button-container') # button_container.html('') # button_container.append($('').click( -> Qsupplier.move_table_to_inactive_section(table_container.data('table-id')) )) # position_x = parseFloat(table_container.data('position-x')) # position_y = parseFloat(table_container.data('position-y')) # table_container.css('left', section_container.width()*position_x/current_section_width) # table_container.css('top', section_container.height()*position_y/current_section_height) # #TODO place element at 0.0 if it happens to be outside the region # table_container.show() # table_container.draggable( # containment: section_container, # stop: -> # position_x = current_section_width * $(this).position().left / section_container.width() # position_y = current_section_height * $(this).position().top / section_container.height() # table_container.data('position-x', position_x) # table_container.data('position-y', position_y) # $.ajax( # type: 'PUT', # url: '/supplier/tables/'+table_container.data('table-id'), # data: {table: {position_x: position_x, position_y: position_y}}, # dataType: 'json' # ) # ) if make_draggable # move_table_to_inactive_section: (table_id)-> # table_container = $('#section-table-'+table_id) # table_container.css('left', 'auto') # table_container.css('top', 'auto') # section_container = $('.section-tables-inactive') # section_container.prepend(table_container) # button_container = table_container.find('.action-button-container') # button_container.html('') # button_container.append($('').click( -> Qsupplier.move_table_to_active_section(table_container.data('table-id')) )) # #TODO make ajax call safe # $.ajax( # type: 'PUT', # url: '/supplier/tables/'+table_container.data('table-id'), # data: {table: {section_id: ''}}, # dataType: 'json' # ) # # load_active_lists: () -> # $.get('/supplier/active_lists.json?section_id='+($('.section_selector').val() || ''), (res) => # body = $('#active-lists-table tbody') # body.find('tr').remove() # foot = $('#active-lists-table tfoot') # for list in res.lists # body.append @mustache('#active-list-template', new List(list)) # ) # mark_list_as_helped: (list_id)-> # $.post('/supplier/mark_list_as_helped', {list_id: list_id}, (res)-> # ) # close_list: (list_id)-> # $.post('/supplier/close_list', {list_id: list_id}, (res)-> # ) # # load_active_orders: () -> # $.get('/supplier/active_orders.json?section_id='+($('.section_selector').val() || ''), (res) => # body = $('#active-orders-table tbody') # body.html('') # foot = $('#active-orders-table tfoot') # return unless res.orders # for order in res.orders # ord = new Order(order) # body.append @mustache('#active-order-template', ord) # ) # mark_order_in_process: (order_id)-> # $.post('/supplier/mark_order_in_process', {order_id: order_id}) # mark_order_delivered: (order_id)-> # $.post('/supplier/order_is_delivered', {order_id: order_id}) # # load_list: (list_id) -> # $.get(data_host + '/supplier/lists/'+list_id+'.json?old_style=1', (res) -> # body = $('#list-table tbody') # foot = $('#list-table tfoot') # Qsupplier.build_list_table(body, foot, res) # ) # build_list_table: (body, foot, res) -> # body.html('') # return unless res.orders # for order in res.orders # body.append @mustache('#list-order-template', new Order(order)) # foot.find('.list-total').html(currency(res.total_amount)) # update_section_tables_view: (section_id)-> # $.get(data_host + '/supplier/sections/'+section_id+'/tables_view.json', (res)-> # for table in res.tables # to = $('#section-table-'+table._id) # if table.occupied then to.addClass('occupied') else to.removeClass('occupied') # if table.needs_help then to.addClass('needs_help') else to.removeClass('needs_help') # if table.needs_payment then to.addClass('needs_payment') else to.removeClass('needs_payment') # if table.active_order then to.addClass('active_order') else to.removeClass('active_order') # # ) # add_tables_to_active_section: -> # number_start = $('#add-tables-number-start').val() # number_end = $('#add-tables-number-end').val() # $.post('/supplier/sections/'+current_section_id+'/add_tables', {number_start: number_start, number_end: number_end}, -> window.location.reload()) # #$('#add-tables-modal').modal('hide') # false # arrange_tables_of_active_section: -> # option = $('input[name=arrange-table-option]:checked').val() # by_row_count = parseInt($('#arrange-tables-by-row-count').val()) # by_column_count = parseInt($('#arrange-tables-by-column-count').val()) # if(option == "by_row") # return @alert(t('section.arrange_tables.by_row_no_row_count')) unless by_row_count && by_row_count > 0 # if(option == "by_column") # return @alert(t('section.arrange_tables.by_column_no_column_count')) unless by_column_count && by_column_count > 0 # $.post '/supplier/sections/'+current_section_id+'/arrange_tables', {option: option, row_count: by_row_count, column_count: by_column_count}, (response)=> # if response.ok then window.location.reload() else @alert(t(response.message)) # false # mustache: (selector, locals)-> # html = $(selector).html() # return '' unless html # template = Handlebars.compile(html) # container = $('
') # container.html(template(locals)) # setTranslations(container) # return container.html() # locs = $.extend(locals, # currency: -> # (val)-> # currency(Mustache.render(val, this)) # ) # Mustache.to_html(html, locs) # alert: Qwaiter.alert