From 391c8a761345110f20c8d5bbd5a3fed71a5d5c26 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Wed, 11 Dec 2013 18:31:32 +0100 Subject: [PATCH] Supplier main board section selector --- app/assets/javascripts/supplier/app/app.js.coffee | 2 +- .../controllers/application_controller.js.coffee | 4 ++++ .../app/controllers/index_controller.js.coffee | 14 +++++++------- .../supplier/app/models/supplier.js.coffee | 3 +++ .../supplier/app/routes/index_route.js.coffee | 3 ++- .../supplier/app/templates/index.emblem | 3 +++ .../app/views/home_section_jumper_view.js.coffee | 6 ++++++ .../app/views/home_section_selector_view.js.coffee | 8 ++++++++ .../javascripts/supplier/qsupplier.js.coffee | 4 ++-- app/controllers/supplier_controller.rb | 6 ++++++ app/models/supplier.rb | 11 +++++++++++ app/views/layouts/tablet.html.slim | 2 +- app/views/supplier/home.html.slim | 3 --- config/routes.rb | 1 + .../acceptance_steps/suppliers/main_board_steps.rb | 6 +++--- 15 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee create mode 100644 app/assets/javascripts/supplier/app/models/supplier.js.coffee create mode 100644 app/assets/javascripts/supplier/app/views/home_section_jumper_view.js.coffee create mode 100644 app/assets/javascripts/supplier/app/views/home_section_selector_view.js.coffee diff --git a/app/assets/javascripts/supplier/app/app.js.coffee b/app/assets/javascripts/supplier/app/app.js.coffee index 64f15ca1..84143d35 100644 --- a/app/assets/javascripts/supplier/app/app.js.coffee +++ b/app/assets/javascripts/supplier/app/app.js.coffee @@ -1,3 +1,3 @@ Qsupplier.App = Ember.Application.create LOG_TRANSITIONS: true - rootElement: '#app' + rootElement: '#ember-app-container' diff --git a/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee new file mode 100644 index 00000000..1ec03012 --- /dev/null +++ b/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee @@ -0,0 +1,4 @@ +Qsupplier.App.ApplicationController = Ember.Controller.extend + init: -> + #@set 'supplier', @store.createRecord('supplier', name: 'kkkl') + @set 'supplier', @store.find('supplier', 'current') 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 c9eb90bc..fdc2e50a 100644 --- a/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/index_controller.js.coffee @@ -1,17 +1,18 @@ Qsupplier.App.IndexController = Ember.ObjectController.extend + needs: ['application'] active_lists: (-> - if @get('sectionId') - @get('lists').filter (l)=>( l.get('section.id') == @get('sectionId') && l.get('state') == 'active' ) + if @get('active_section_id') + @get('lists').filter (l)=>( l.get('section.id') == @get('active_section_id') && l.get('state') == 'active' ) else @get('lists').filterProperty('state', 'active') - ).property('lists.@each.state', 'sectionId') + ).property('lists.@each.state', 'active_section_id') active_orders: (-> - if @get('sectionId') - @get('orders').filter (o)=>( o.get('section.id') == @get('sectionId') && o.get('needs_supplier_attention') ) + if @get('active_section_id') + @get('orders').filter (o)=>( o.get('section.id') == @get('active_section_id') && o.get('needs_supplier_attention') ) else @get('orders').filter (o)->( o.get('needs_supplier_attention') ) - ).property('orders.@each.state', 'sectionId') + ).property('orders.@each.state', 'active_section_id') markListAsHelped: (id)-> if list = Qsupplier.App.List.findCached(id) @@ -30,4 +31,3 @@ Qsupplier.App.IndexController = Ember.ObjectController.extend $.post('/supplier/mark_order_in_process', order_id: id) if order = Qsupplier.App.Order.findCached(id) order.set('state', 'active') - sectionId: '' diff --git a/app/assets/javascripts/supplier/app/models/supplier.js.coffee b/app/assets/javascripts/supplier/app/models/supplier.js.coffee new file mode 100644 index 00000000..5f9aeba0 --- /dev/null +++ b/app/assets/javascripts/supplier/app/models/supplier.js.coffee @@ -0,0 +1,3 @@ +attr = DS.attr +Qsupplier.App.Supplier = DS.Model.extend + name: attr 'string' diff --git a/app/assets/javascripts/supplier/app/routes/index_route.js.coffee b/app/assets/javascripts/supplier/app/routes/index_route.js.coffee index 24a803f9..a1e2feb9 100644 --- a/app/assets/javascripts/supplier/app/routes/index_route.js.coffee +++ b/app/assets/javascripts/supplier/app/routes/index_route.js.coffee @@ -11,9 +11,10 @@ Qsupplier.App.IndexRoute = Ember.Route.extend # use filter to create a scope on all the records lists: @store.filter 'list', -> true orders: @store.filter 'order', -> true + sections: @store.find 'section' setupController: (controller, model)-> controller.set('model', model) - $('#section_selector').on 'change', (-> controller.set('sectionId', $(this).val())) + #$('#section_selector').on 'change', (-> controller.set('sectionId', $(this).val())) #controller.set 'lists', @store.all('list') #controller.set 'lists', Qsupplier.App.List.all() #.filterProperty('state', 'active') #controller.set 'orders', Qsupplier.App.Order.all() diff --git a/app/assets/javascripts/supplier/app/templates/index.emblem b/app/assets/javascripts/supplier/app/templates/index.emblem index 560e7e8c..4d0b75cd 100644 --- a/app/assets/javascripts/supplier/app/templates/index.emblem +++ b/app/assets/javascripts/supplier/app/templates/index.emblem @@ -1,4 +1,7 @@ .page-header + div.pull-right + '{{view 'Qsupplier.App.HomeSectionSelectorView' content=controller.sections prompt=controllers.application.supplier.name}} + '{{view 'Qsupplier.App.HomeSectionJumperView'}} h3 {{t 'active_lists.title'}} .well table.active-lists-table.table diff --git a/app/assets/javascripts/supplier/app/views/home_section_jumper_view.js.coffee b/app/assets/javascripts/supplier/app/views/home_section_jumper_view.js.coffee new file mode 100644 index 00000000..1f22e7e3 --- /dev/null +++ b/app/assets/javascripts/supplier/app/views/home_section_jumper_view.js.coffee @@ -0,0 +1,6 @@ +Qsupplier.App.HomeSectionJumperView = Ember.View.extend + tagName: 'a' + attributeBindings: ['href'] + href: (-> Routes.suppliers_section_path(@get('controller.active_section_id') || 'nothing')).property('controller.active_section_id') + isVisible: (-> !!@get('controller.active_section_id') ).property('controller.active_section_id') + template: Ember.Handlebars.compile('=>') diff --git a/app/assets/javascripts/supplier/app/views/home_section_selector_view.js.coffee b/app/assets/javascripts/supplier/app/views/home_section_selector_view.js.coffee new file mode 100644 index 00000000..24bbfb8d --- /dev/null +++ b/app/assets/javascripts/supplier/app/views/home_section_selector_view.js.coffee @@ -0,0 +1,8 @@ +HomeSectionOption = Ember.SelectOption.extend + select_label: (-> "- #{@get('content.title')}").property('content.title') +Qsupplier.App.HomeSectionSelectorView = Ember.Select.extend + classNames: 'section_selector' + optionView: HomeSectionOption + valueBinding: 'controller.active_section_id' + optionValuePath: 'content.id' + optionLabelPath: 'select_label' diff --git a/app/assets/javascripts/supplier/qsupplier.js.coffee b/app/assets/javascripts/supplier/qsupplier.js.coffee index eb1ff14e..9b988722 100644 --- a/app/assets/javascripts/supplier/qsupplier.js.coffee +++ b/app/assets/javascripts/supplier/qsupplier.js.coffee @@ -146,7 +146,7 @@ root.Qsupplier= ) load_active_lists: () -> - $.get('/supplier/active_lists.json?section_id='+($('#section_selector').val() || ''), (res) => + $.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') @@ -161,7 +161,7 @@ root.Qsupplier= ) load_active_orders: () -> - $.get('/supplier/active_orders.json?section_id='+($('#section_selector').val() || ''), (res) => + $.get('/supplier/active_orders.json?section_id='+($('.section_selector').val() || ''), (res) => body = $('#active-orders-table tbody') body.html('') foot = $('#active-orders-table tfoot') diff --git a/app/controllers/supplier_controller.rb b/app/controllers/supplier_controller.rb index f5400d8a..67a76f71 100644 --- a/app/controllers/supplier_controller.rb +++ b/app/controllers/supplier_controller.rb @@ -11,6 +11,12 @@ class SupplierController < ApplicationController @supplier = current_supplier end + def current + respond_to do |format| + format.json { render json: {supplier: current_supplier.as_json} } + end + end + # POST /supplier/settings def update @supplier = current_supplier diff --git a/app/models/supplier.rb b/app/models/supplier.rb index 252ef20c..2ec7f87f 100644 --- a/app/models/supplier.rb +++ b/app/models/supplier.rb @@ -88,6 +88,17 @@ class Supplier save end + def serializable_hash(*) + { + id: id, + name: name + } + end + + def as_json(*) + serializable_hash + end + # Find a user by its confirmation token and try to confirm it. # If no user is found, returns a new user with an error. diff --git a/app/views/layouts/tablet.html.slim b/app/views/layouts/tablet.html.slim index 3d80d7b7..0c2a4147 100644 --- a/app/views/layouts/tablet.html.slim +++ b/app/views/layouts/tablet.html.slim @@ -71,7 +71,7 @@ html lang="en" .row= yield :row .row .span12 - #app + #ember-app-container script#alert-template[type="text/html"]= mustache_template 'supplier/alert' = yield :footer javascript: diff --git a/app/views/supplier/home.html.slim b/app/views/supplier/home.html.slim index 7a400e61..8d380758 100644 --- a/app/views/supplier/home.html.slim +++ b/app/views/supplier/home.html.slim @@ -1,8 +1,5 @@ - content_for :head do = javascript_include_tag 'supplier/app/application' -.pull-right - = select_tag('current_section_selector', options_for_select([[current_supplier.name, '']] + current_supplier.sections.map{|s| ["- #{s.title}", s.id]}, params[:section_id]), id: :section_selector) - a.icon-arrow-right.go-to-tables-view.hide href=tables_view_suppliers_section_path('0000') - content_for :footer do javascript: $(function(){ diff --git a/config/routes.rb b/config/routes.rb index db234056..aedd2710 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -61,6 +61,7 @@ Qwaiter::Application.routes.draw do get '/user/obtain_token' => 'user#obtain_token', as: :user_obtain_token post '/user/obtain_token' => 'user#obtain_token', constraints: {format: :json} + get '/supplier/suppliers/current' => 'supplier#current' #ember #match '/show_products' => 'dashboard#show_products', as: :user_products diff --git a/spec/acceptance_steps/suppliers/main_board_steps.rb b/spec/acceptance_steps/suppliers/main_board_steps.rb index 2c7bb86f..826d7130 100644 --- a/spec/acceptance_steps/suppliers/main_board_steps.rb +++ b/spec/acceptance_steps/suppliers/main_board_steps.rb @@ -108,12 +108,12 @@ step "I should see the new list and new order but not the list and order" do end step "I select the section in the supplier dashboard" do - find(%|#section_selector option[value="#{@section.id}"]|).select_option + find(%|.section_selector option[value="#{@section.id}"]|).select_option end step "I select the new section in the supplier dashboard" do - find(%|#section_selector option[value="#{@new_section.id}"]|).select_option + find(%|.section_selector option[value="#{@new_section.id}"]|).select_option end step "I reset the section selector in the supplier dashboard" do - find(%|#section_selector option[value=""]|).select_option + find(%|.section_selector option[value=""]|).select_option end