root = exports ? this root.Qsupplier= watch_events: -> faye = new Faye.Client(event_host) faye.subscribe "/supplier/#{supplier_object.id}", (e)=> console.log "Event: #{e.event}" console.log e.data if(e.event == 'new_order') if Qsupplier.App Qsupplier.App.store().pushPayload(e.data) # Fix for ember pushPayload bug not creating the proper relations/triggers setTimeout -> if order = Qsupplier.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') isnt list table.set 'active_list', list , 200 else if(e.event == 'list_needs_help') if Qsupplier.App and list = Qsupplier.App.List.findCached(e.data.id) list.markNeedsHelp() # old stuff # $('#list-needs-help-indicator-'+e.data.id).removeClass('hide') # $('#list-is-helped-button-'+e.data.id).removeClass('hide') # $('.section-table-list-'+e.data.id).addClass('needs_help') else if(e.event == 'list_needs_payment') if Qsupplier.App and list = Qsupplier.App.List.findCached(e.data.id) list.markNeedsPayment() # old stuff $('#list-needs-payment-indicator-'+e.data.id).removeClass('hide') $('.section-table-list-'+e.data.id).addClass('needs_payment') else if(e.event == 'list_is_paid') if list = Qsupplier.App.List.findCached(e.data.id) list.markIsPaid() else if e.event == 'list_update' if Qsupplier.App list = Qsupplier.App.List.updateOrAdd(e.data.list) else if e.event == 'list_closed' if Qsupplier.App and list = Qsupplier.App.List.findCached(e.data.id) list.markClosed() $('.list-row-'+e.data.id).remove() $('.of-list-'+e.data.id).remove() table_list_class = 'section-table-list-'+e.data.id $('.'+table_list_class).removeClass('occupied needs_help needs_payment active_order').removeClass(table_list_class) else if e.event == 'order_closed' order.markClosed() if Qsupplier.App and order = Qsupplier.App.Order.findCached(e.data.id) else if e.event == 'list_helped' if Qsupplier.App and list = Qsupplier.App.List.findCached(e.data.id) list.markHelped() # list_id = e.data.id # $('#list-needs-help-indicator-'+list_id).addClass('hide') # $('#list-is-helped-button-'+list_id).addClass('hide') # $('.section-table-list-'+list_id).removeClass('needs_help') else if e.event == 'order_being_processed' if Qsupplier.App and order = Qsupplier.App.Order.findCached(e.data.id) order.markActive() # $('#order-in-process-button-'+e.data.id).hide() # $('.order-row-'+e.data.id).removeClass('placed').addClass('active') else if e.event == 'order_being_delivered' if Qsupplier.App and order = Qsupplier.App.Order.findCached(e.data.id) order.markDelivered() # $('.order-row-'+e.data.id).remove() # $('.section-table-list-'+e.data.list_id).removeClass('active_order') 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' Qsupplier.App && Qsupplier.App.List.updateOrAdd(e.data.list) else if e.event == 'order_cancelled' if Qsupplier.App and order = Qsupplier.App.Order.findCached(e.data.id) order.markCancelled() $('.supplier-orders-placed-count-number').text(e.data.orders_placed_count) if e.data.orders_placed_count == 0 or e.data.orders_placed_count $('.supplier-orders-in-process-count-number').text(e.data.orders_in_process_count) if e.data.orders_in_process_count == 0 or e.data.orders_in_process_count # old stuff #list = new List(e.data.list) #list_row = $('.list-row-'+list.id()) #list_row.find('.table_number').text(list.table_number()).addClass('changed') #list_row.find('.section_title').text(e.data.section_title) #order_rows = $('.of-list-'+list.id()) #order_rows.find('.table_number').text(list.table_number()).addClass('changed') #order_rows.find('.section_title').text(e.data.section_title) ## Move properties from table in section tables view #window.last_data = e.data #from_table = $('#section-table-'+e.data.from_table_id) #to_table = $('#section-table-'+list.table_id()) #if to_table.length #to_table.addClass('section-table-list-'+list.id()) #to_table.addClass('occupied') #to_table.addClass('needs_help') if list.needs_help() #to_table.addClass('needs_payment') if list.needs_payment() #to_table.addClass('active_order') if list.has_active_orders() #from_table.removeClass('occupied needs_help needs_payment active_order section-table-list-'+list.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