From 3202ba8f190f944c82052c301a360ac2e60265a8 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Tue, 22 Jul 2014 17:37:33 +0200 Subject: [PATCH] Many improvements and fixes --- .../application_controller.js.coffee | 1 + .../controllers/index_controller.js.coffee | 2 +- .../sections_index_controller.js.coffee | 3 ++ .../supplier/app/models/order.js.coffee | 2 +- .../app/models/product_order.js.coffee | 3 +- .../supplier/app/templates/active_list.emblem | 4 +-- .../app/templates/active_order.emblem | 11 +++--- .../active_order_table_number.emblem | 3 -- .../supplier/app/templates/index.emblem | 2 +- .../supplier/app/templates/section.emblem | 2 +- .../app/templates/sections/index.emblem | 3 +- .../templates/table_number_with_info.emblem | 3 ++ .../active_order_table_number_view.js.coffee | 10 ------ .../views/section_tab_header_view.js.coffee | 1 + .../table_number_with_info_view.js.coffee | 10 ++++++ .../supplier/foundation1/qsupplier.js.coffee | 10 +++--- .../base1-shared/active_lists.css.sass | 36 +++++++++---------- .../supplier/foundation1/_qstructure.css.sass | 6 +++- .../user/foundation/_structure.css.sass | 9 +++++ app/controllers/suppliers/lists_controller.rb | 2 +- .../suppliers/supplier_main_board.feature | 8 ++--- .../suppliers/main_board_steps.rb | 3 +- spec/spec_helper.rb | 2 +- 23 files changed, 75 insertions(+), 61 deletions(-) delete mode 100644 app/assets/javascripts/supplier/app/templates/active_order_table_number.emblem create mode 100644 app/assets/javascripts/supplier/app/templates/table_number_with_info.emblem delete mode 100644 app/assets/javascripts/supplier/app/views/active_order_table_number_view.js.coffee create mode 100644 app/assets/javascripts/supplier/app/views/table_number_with_info_view.js.coffee diff --git a/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee index 89acc15a..67a55878 100644 --- a/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee @@ -1,4 +1,5 @@ Qsupplier.App.ApplicationController = Ember.Controller.extend + active_section: null init: -> #success = (supplier)=> ## A supplier record with id current and with the content of the returned supplier is created diff --git a/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee index 15474581..de517fda 100644 --- a/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee @@ -7,6 +7,7 @@ Qsupplier.App.IndexController = Ember.ObjectController.extend @get('lists').filterProperty('state', 'active') ).property('lists.@each.state', 'active_section.id') + active_section: (-> @get('controllers.application.active_section')).property('controllers.application.active_section') active_orders: (-> if @get('active_section.id') @get('orders').filter (o)=>( o.get('section.id') == @get('active_section.id') && o.get('needs_supplier_attention') ) @@ -39,4 +40,3 @@ Qsupplier.App.IndexController = Ember.ObjectController.extend @transitionToRoute 'list', id showListInfo: (view, link)-> debugger - diff --git a/app/assets/javascripts/supplier/app/controllers/sections_index_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/sections_index_controller.js.coffee index 1b5ddbd2..33c3a1bd 100644 --- a/app/assets/javascripts/supplier/app/controllers/sections_index_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/sections_index_controller.js.coffee @@ -13,3 +13,6 @@ Qsupplier.App.SectionsIndexController = Ember.ArrayController.extend @transitionToRoute('index').then => @get('controllers.index').set 'active_section', section addSection: -> @send 'openModal', 'modal_add_section', @get('model') + goToSection: (section)-> + @set 'controllers.application.active_section', section + @transitionToRoute 'section', section.id diff --git a/app/assets/javascripts/supplier/app/models/order.js.coffee b/app/assets/javascripts/supplier/app/models/order.js.coffee index bcd488c0..3a4b210b 100644 --- a/app/assets/javascripts/supplier/app/models/order.js.coffee +++ b/app/assets/javascripts/supplier/app/models/order.js.coffee @@ -23,7 +23,7 @@ Qsupplier.App.Order = DS.Model.extend @set 'state', 'cancelled' total: (-> @get('product_orders').getEach('total').reduce(((sum, total) -> sum + total), 0) - ).property('product_orders.@each.quantity', 'product_orders.@each.product.@each.price') + ).property('product_orders.@each.total') display: (-> @get('product_orders').map((po) -> "#{po.get('quantity')} x #{po.get('product.name')}").join(', ') diff --git a/app/assets/javascripts/supplier/app/models/product_order.js.coffee b/app/assets/javascripts/supplier/app/models/product_order.js.coffee index ace25d8e..d6490edc 100644 --- a/app/assets/javascripts/supplier/app/models/product_order.js.coffee +++ b/app/assets/javascripts/supplier/app/models/product_order.js.coffee @@ -1,8 +1,9 @@ attr = DS.attr Qsupplier.App.ProductOrder = DS.Model.extend quantity: attr 'number', defaultValue: 1 + price: attr 'number' product: DS.belongsTo('product') order: DS.belongsTo('order') increment: -> @set('quantity', @get('quantity') + 1) - total: (-> @get('quantity') * @get('product.price')).property('quantity', 'product.price') + total: (-> @get('quantity') * @get('price')).property('quantity', 'price') diff --git a/app/assets/javascripts/supplier/app/templates/active_list.emblem b/app/assets/javascripts/supplier/app/templates/active_list.emblem index 7cb24be5..05548a8b 100644 --- a/app/assets/javascripts/supplier/app/templates/active_list.emblem +++ b/app/assets/javascripts/supplier/app/templates/active_list.emblem @@ -2,9 +2,9 @@ td.status-icons if view.content.needs_help span.icon.needs-help if view.content.needs_payment - | + | span.icon.needs-payment -td.numeric.table_number {{view.content.table.number}} +td.numeric.table_number: Qsupplier.App.TableNumberWithInfoView contextBinding="view.content" td.section_title {{view.content.section.title}} td.currency.total_list_amount {{currency view.content.total}} td.actions diff --git a/app/assets/javascripts/supplier/app/templates/active_order.emblem b/app/assets/javascripts/supplier/app/templates/active_order.emblem index 650ca492..e181eee1 100644 --- a/app/assets/javascripts/supplier/app/templates/active_order.emblem +++ b/app/assets/javascripts/supplier/app/templates/active_order.emblem @@ -1,10 +1,9 @@ td.status-icons span.active-order.fa.fa-check.fa-lg -td {{view.content.display}} -td.numeric.table_number - view Qsupplier.App.ActiveOrderTableNumberView contextBinding="view.content" -td.section_title {{view.content.list.section.title}} -td.currency {{currency view.content.total }} +td= view.content.display +td.numeric.table_number: Qsupplier.App.TableNumberWithInfoView contextBinding="view.content.list" +td.section_title= view.content.list.section.title +td.currency=currency view.content.total td.actions if view.content.placed button.mark_order_active{ action markOrderActive view.content.id} @@ -13,7 +12,7 @@ td.actions /button.hide.mark-order-active{ action markOrderActive view.content.id} span.button-icon span.button-text=t 'order.being_processed' - button.mark_order_delivered{ action markOrderDelivered view.content.id} + button.mark_order_delivered{ action markOrderDelivered view.content.id } span.fa.fa-2x.fa-shifted-stack span.fa-shifted.fa-check span.fa-shifted.fa-check diff --git a/app/assets/javascripts/supplier/app/templates/active_order_table_number.emblem b/app/assets/javascripts/supplier/app/templates/active_order_table_number.emblem deleted file mode 100644 index e48c45c9..00000000 --- a/app/assets/javascripts/supplier/app/templates/active_order_table_number.emblem +++ /dev/null @@ -1,3 +0,0 @@ -.number= list.table.number -.extra-list-info - img.spinner src="/assets/spinner.gif" alt="" diff --git a/app/assets/javascripts/supplier/app/templates/index.emblem b/app/assets/javascripts/supplier/app/templates/index.emblem index e8b42be2..c3f28039 100644 --- a/app/assets/javascripts/supplier/app/templates/index.emblem +++ b/app/assets/javascripts/supplier/app/templates/index.emblem @@ -1,6 +1,6 @@ .page-header div.dashboard-section-selection - Qsupplier.App.HomeSectionSelectorView selectionBinding="controller.active_section" content=controller.sections prompt=controllers.application.supplier.name + Qsupplier.App.HomeSectionSelectorView selectionBinding="controller.controllers.application.active_section" content=controller.sections prompt=controllers.application.supplier.name Qsupplier.App.HomeSectionJumperView h3=t 'active_lists.title' .well diff --git a/app/assets/javascripts/supplier/app/templates/section.emblem b/app/assets/javascripts/supplier/app/templates/section.emblem index 5d891eb8..fa9278e4 100644 --- a/app/assets/javascripts/supplier/app/templates/section.emblem +++ b/app/assets/javascripts/supplier/app/templates/section.emblem @@ -1,7 +1,7 @@ .section-tabs-container link-to 'sections' class="goto-sections-index-tab-header": span each section in sections - view Qsupplier.App.SectionTabHeaderView context=section + Qsupplier.App.SectionTabHeaderView context=section a.add-section{action "addSection"}: span .section-manage-tables.pull-right if editmode diff --git a/app/assets/javascripts/supplier/app/templates/sections/index.emblem b/app/assets/javascripts/supplier/app/templates/sections/index.emblem index aa30c7e6..7f07c42b 100644 --- a/app/assets/javascripts/supplier/app/templates/sections/index.emblem +++ b/app/assets/javascripts/supplier/app/templates/sections/index.emblem @@ -18,8 +18,7 @@ if sections each section in sections tr td - link-to 'section' section - =section.title + a{ action "goToSection" section}= section.title td span.table-count= section.tables.length td.numeric= section.width diff --git a/app/assets/javascripts/supplier/app/templates/table_number_with_info.emblem b/app/assets/javascripts/supplier/app/templates/table_number_with_info.emblem new file mode 100644 index 00000000..0edc68d6 --- /dev/null +++ b/app/assets/javascripts/supplier/app/templates/table_number_with_info.emblem @@ -0,0 +1,3 @@ +.number= table.number +.extra-list-info + span.loading.medium diff --git a/app/assets/javascripts/supplier/app/views/active_order_table_number_view.js.coffee b/app/assets/javascripts/supplier/app/views/active_order_table_number_view.js.coffee deleted file mode 100644 index 13798e76..00000000 --- a/app/assets/javascripts/supplier/app/views/active_order_table_number_view.js.coffee +++ /dev/null @@ -1,10 +0,0 @@ -Qsupplier.App.ActiveOrderTableNumberView = Ember.View.extend - tagName: 'span' - templateName: 'active_order_table_number' - classNames: 'active_order_table_number' - click: -> - $el = $(@get('element')).find('.extra-list-info') - return $el.hide() if $el.is(':visible') - $el.show() - $.get Routes.extra_info_suppliers_list_path(@get('context.list.id')), (res)-> - $el.html(res) diff --git a/app/assets/javascripts/supplier/app/views/section_tab_header_view.js.coffee b/app/assets/javascripts/supplier/app/views/section_tab_header_view.js.coffee index 1054c601..091d173a 100644 --- a/app/assets/javascripts/supplier/app/views/section_tab_header_view.js.coffee +++ b/app/assets/javascripts/supplier/app/views/section_tab_header_view.js.coffee @@ -3,6 +3,7 @@ Qsupplier.App.SectionTabHeaderView = Ember.View.extend DragNDrop.Droppable, classNames: ['section-tab-header'] classNameBindings: ['section_header_class', 'controller.controllers.application.isDragging:table-dragging', 'section_active'] click: (e)-> + @set 'controller.controllers.application.active_section', @get('context') @get('controller').transitionToRoute 'section', @get('context.id') section_header_class: (-> "section-tab-header-#{@get('context.id')}").property() diff --git a/app/assets/javascripts/supplier/app/views/table_number_with_info_view.js.coffee b/app/assets/javascripts/supplier/app/views/table_number_with_info_view.js.coffee new file mode 100644 index 00000000..0e485c85 --- /dev/null +++ b/app/assets/javascripts/supplier/app/views/table_number_with_info_view.js.coffee @@ -0,0 +1,10 @@ +Qsupplier.App.TableNumberWithInfoView = Ember.View.extend + tagName: 'span' + templateName: 'table_number_with_info' + classNames: 'table-number-with-info' + click: -> + $el = $(@get('element')).find('.extra-list-info') + return $el.hide() if $el.is(':visible') + $el.show() + $.get Routes.extra_info_suppliers_list_path(@get('context.id')), (res)-> + $el.html(res) diff --git a/app/assets/javascripts/supplier/foundation1/qsupplier.js.coffee b/app/assets/javascripts/supplier/foundation1/qsupplier.js.coffee index 39939dc2..24a0be93 100644 --- a/app/assets/javascripts/supplier/foundation1/qsupplier.js.coffee +++ b/app/assets/javascripts/supplier/foundation1/qsupplier.js.coffee @@ -3,16 +3,18 @@ root.Qsupplier= watch_events: -> faye = new Faye.Client(event_host) faye.subscribe "/supplier/"+supplier_id, (e)=> - console.log(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 - , 100 + , 200 else if(e.event == 'list_needs_help') if Qsupplier.App and list = Qsupplier.App.List.findCached(e.data.id) list.markNeedsHelp() @@ -63,8 +65,8 @@ root.Qsupplier= 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 Number.isInteger(e.data.orders_placed_count) - $('.supplier-orders-in-process-count-number').text(e.data.orders_in_process_count) if Number.isInteger(e.data.orders_in_process_count) + $('.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 diff --git a/app/assets/stylesheets/supplier/base1-shared/active_lists.css.sass b/app/assets/stylesheets/supplier/base1-shared/active_lists.css.sass index 85cab2d7..d58cbfa8 100644 --- a/app/assets/stylesheets/supplier/base1-shared/active_lists.css.sass +++ b/app/assets/stylesheets/supplier/base1-shared/active_lists.css.sass @@ -9,23 +9,19 @@ .status-icons .active-order display: inline-block -.active-orders-table - tbody - tr - td - .active_order_table_number - position: relative - .extra-list-info - // Facebook profiles - display: none - $extra-info-width: 220px - position: absolute - width: $extra-info-width - // 7px is padding + border, 5px is extra spacing - right: -$extra-info-width - 7px*2 - 5px - top: -7px*2 - padding: 4px - border: 3px solid #aaa - border-radius: 3px - background-color: white - text-align: left +.table-number-with-info + position: relative + .extra-list-info + // Facebook profiles + display: none + $extra-info-width: 220px + position: absolute + width: $extra-info-width + // 7px is padding + border, 5px is extra spacing + right: -$extra-info-width - 7px*2 - 5px + top: -7px*2 + padding: 4px + border: 3px solid #aaa + border-radius: 3px + background-color: white + text-align: left diff --git a/app/assets/stylesheets/supplier/foundation1/_qstructure.css.sass b/app/assets/stylesheets/supplier/foundation1/_qstructure.css.sass index 11aeef45..5c3386ad 100644 --- a/app/assets/stylesheets/supplier/foundation1/_qstructure.css.sass +++ b/app/assets/stylesheets/supplier/foundation1/_qstructure.css.sass @@ -50,8 +50,12 @@ main.main-section .hide, .hidden display: none + span.loading @extend .fa @extend .fa-spinner - @extend .fa-lg @extend .fa-spin + &.medium + @extend .fa-lg + &.large + @extend .fa-2x diff --git a/app/assets/stylesheets/user/foundation/_structure.css.sass b/app/assets/stylesheets/user/foundation/_structure.css.sass index aa7358c9..2382ad15 100644 --- a/app/assets/stylesheets/user/foundation/_structure.css.sass +++ b/app/assets/stylesheets/user/foundation/_structure.css.sass @@ -19,3 +19,12 @@ span.icon li span.currency float: right + +span.loading + @extend .fa + @extend .fa-spinner + @extend .fa-spin + &.medium + @extend .fa-lg + &.large + @extend .fa-2x diff --git a/app/controllers/suppliers/lists_controller.rb b/app/controllers/suppliers/lists_controller.rb index 772b017e..f07cf53d 100644 --- a/app/controllers/suppliers/lists_controller.rb +++ b/app/controllers/suppliers/lists_controller.rb @@ -105,7 +105,7 @@ module Suppliers else format.html do @tables = current_supplier.active_tables - render action: "new" + render action: "new" end format.json { render json: @list.errors, status: :unprocessable_entity } end diff --git a/spec/acceptance/suppliers/supplier_main_board.feature b/spec/acceptance/suppliers/supplier_main_board.feature index 73f36c56..03ffcdac 100644 --- a/spec/acceptance/suppliers/supplier_main_board.feature +++ b/spec/acceptance/suppliers/supplier_main_board.feature @@ -1,6 +1,6 @@ Feature: Supplier main board - @javascript @broken + @javascript Scenario: the active list should be present and contained in row having its id Given there is an active list and order And I am signed in as supplier @@ -47,7 +47,7 @@ Feature: Supplier main board Then the list in the supplier dashboard should not be displayed anymore And the list should be marked as closed - @javascript @broken + @javascript Scenario: Selecting a specific section limits the result to the lists and orders of those sections Given there is an active list and order And I am signed in as supplier @@ -62,7 +62,7 @@ Feature: Supplier main board Then I should see the list and the new list And I should see the order and the new order - @javascript @broken + @javascript Scenario: Selecting a specific section and jumping towards section view Given there is an active list and order And I am signed in as supplier @@ -71,7 +71,7 @@ Feature: Supplier main board And I click on the section main board section jumper Then I should be redirected to the supplier section view - @javascript @broken + @javascript Scenario: Update table number if table chanes Given there is an active list and order And I am signed in as supplier diff --git a/spec/acceptance_steps/suppliers/main_board_steps.rb b/spec/acceptance_steps/suppliers/main_board_steps.rb index c23ea9b3..3c46672c 100644 --- a/spec/acceptance_steps/suppliers/main_board_steps.rb +++ b/spec/acceptance_steps/suppliers/main_board_steps.rb @@ -51,6 +51,7 @@ step "the list on the supplier dashboard should be marked as in need of payment" end step "the supplier dashboard list should display the updated price" do + sleep 0.5 el = find(".list-row-#{@list.id} .total_list_amount") # original order is 3 * 2.11 = 6.33 # new order price = 5 * 2.22 = 11.10 @@ -160,7 +161,5 @@ end step "the supplier placed orders counter should be reduced" do sleep 0.5 - binding.pry - puts page.driver.error_messages find('.supplier-orders-placed-count-number').text.should == "10" end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c51dc52f..9642a177 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -77,7 +77,7 @@ RSpec.configure do |config| OmniAuth.config.add_mock :facebook, { info: { nickname: 'Joey', - name: "Facebook Joe", + name: "Facebook Joe", first_name: "Facebook Joe" }, credentials: {