From 792a31edfdef9d781b489dda3cec6735205a91b9 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Tue, 24 Mar 2015 18:40:55 +0100 Subject: [PATCH] Waiter app progress --- .../waiter/app/models/employee.js.coffee | 7 +++++ .../waiter/app/models/supplier.js.coffee | 28 +++++++++++++++++++ .../app/routes/application_route.js.coffee | 9 +++++- .../waiter/app/templates/application.emblem | 2 +- app/controllers/waiter/sections_controller.rb | 8 ++++++ .../waiter/suppliers_controller.rb | 7 +++++ app/controllers/waiter_controller.rb | 16 ----------- app/serializers/waiter/section_serializer.rb | 3 +- app/serializers/waiter/supplier_serializer.rb | 5 ++++ app/views/layouts/waiter.html.slim | 1 + config/routes.rb | 8 ++++-- 11 files changed, 72 insertions(+), 22 deletions(-) create mode 100644 app/assets/javascripts/waiter/app/models/employee.js.coffee create mode 100644 app/assets/javascripts/waiter/app/models/supplier.js.coffee create mode 100644 app/controllers/waiter/sections_controller.rb create mode 100644 app/controllers/waiter/suppliers_controller.rb create mode 100644 app/serializers/waiter/supplier_serializer.rb diff --git a/app/assets/javascripts/waiter/app/models/employee.js.coffee b/app/assets/javascripts/waiter/app/models/employee.js.coffee new file mode 100644 index 00000000..e0993632 --- /dev/null +++ b/app/assets/javascripts/waiter/app/models/employee.js.coffee @@ -0,0 +1,7 @@ +attr = DS.attr +App.Employee= DS.Model.extend + name: attr 'string' + email: attr 'string' + manager: attr 'boolean', defaultValue: false + active: attr 'boolean', defaultValue: true + color: attr 'string', defaultValue: '#3a87ad' diff --git a/app/assets/javascripts/waiter/app/models/supplier.js.coffee b/app/assets/javascripts/waiter/app/models/supplier.js.coffee new file mode 100644 index 00000000..267c71b4 --- /dev/null +++ b/app/assets/javascripts/waiter/app/models/supplier.js.coffee @@ -0,0 +1,28 @@ +attr = DS.attr +App.Supplier = DS.Model.extend + name: attr 'string' + email: attr 'string' + time_zone: attr 'string' + address: attr 'string' + house_number: attr 'number' + house_number_addition: attr 'string' + postal_code: attr 'string' + city: attr 'string' + open: attr 'boolean' + country: attr 'string' + facebook_promotion_url: attr 'string' + iens_profile: attr 'string' + lat: attr 'number' + lng: attr 'number' + week_starts_on_monday: attr 'boolean' + product_categories: DS.hasMany 'product_category' + orders_in_process_count: attr('number') + orders_placed_count: attr('number') + + close: -> + $.post Routes.mark_as_closed_suppliers_supplier_path(@id), => + @set 'open', false + open_the_place: -> + $.post Routes.mark_as_open_suppliers_supplier_path(@id), => + @set 'open', true + diff --git a/app/assets/javascripts/waiter/app/routes/application_route.js.coffee b/app/assets/javascripts/waiter/app/routes/application_route.js.coffee index 32bb94c5..2ccff375 100644 --- a/app/assets/javascripts/waiter/app/routes/application_route.js.coffee +++ b/app/assets/javascripts/waiter/app/routes/application_route.js.coffee @@ -1,3 +1,10 @@ App.ApplicationRoute = Ember.Route.extend - setupController: -> + beforeModel: -> + @supplier = @store.push 'supplier', supplier_object + @employee = @store.push 'employee', employee_object + @supplier.reload().then => + #@store.find('list', state: 'active') + setupController: (controller, model)-> + controller.set 'supplier', @supplier + controller.set 'employee', @employee @controllerFor('product_categories').set 'model', @store.find('product_category') diff --git a/app/assets/javascripts/waiter/app/templates/application.emblem b/app/assets/javascripts/waiter/app/templates/application.emblem index 1fbec5f9..25f32cf4 100644 --- a/app/assets/javascripts/waiter/app/templates/application.emblem +++ b/app/assets/javascripts/waiter/app/templates/application.emblem @@ -1,5 +1,5 @@ .row .twelve.columns - h1 Qwaiter + h1= supplier.name hr .waiter-application-container= outlet diff --git a/app/controllers/waiter/sections_controller.rb b/app/controllers/waiter/sections_controller.rb new file mode 100644 index 00000000..e451ee1e --- /dev/null +++ b/app/controllers/waiter/sections_controller.rb @@ -0,0 +1,8 @@ +class Waiter::SectionsController < Waiter::ApplicationController + + def index + sections = current_supplier.sections.include_relation(:tables) + render json: sections, each_serializer: Waiter::SectionSerializer + end + +end diff --git a/app/controllers/waiter/suppliers_controller.rb b/app/controllers/waiter/suppliers_controller.rb new file mode 100644 index 00000000..db15e957 --- /dev/null +++ b/app/controllers/waiter/suppliers_controller.rb @@ -0,0 +1,7 @@ +class Waiter::SuppliersController < Waiter::ApplicationController + def show + @supplier = Supplier.find(params[:id]) + head 404 and return unless @supplier.employee_ids.include?(current_employee.id) + render json: @supplier, serializer: Waiter::SupplierSerializer + end +end diff --git a/app/controllers/waiter_controller.rb b/app/controllers/waiter_controller.rb index eed19fe6..d3b454d3 100644 --- a/app/controllers/waiter_controller.rb +++ b/app/controllers/waiter_controller.rb @@ -4,14 +4,6 @@ class WaiterController < ApplicationController end - def sections - sections = current_supplier.sections.include_relation(:tables) - respond_to do |format| - format.html { redirect_to '/waiter'} - format.json { render json: sections, each_serializer: Waiter::SectionSerializer } - end - end - def product_categories respond_to do |format| format.html { redirect_to '/waiter'} @@ -25,12 +17,4 @@ class WaiterController < ApplicationController @list.place_order products: params[:order], employee: current_employee render nothing: true end - - def current_supplier - @current_supplier ||= Supplier.first - end - - def current_employee - @current_employee ||= current_supplier.employees.first - end end diff --git a/app/serializers/waiter/section_serializer.rb b/app/serializers/waiter/section_serializer.rb index a28079a1..bbf60e84 100644 --- a/app/serializers/waiter/section_serializer.rb +++ b/app/serializers/waiter/section_serializer.rb @@ -1,4 +1,5 @@ class Waiter::SectionSerializer < Qwaiter::Serializer - self.root = :section + root 'section' attributes :title, :path, :width, :height + has_many :tables, serializer: Waiter::TableSerializer end diff --git a/app/serializers/waiter/supplier_serializer.rb b/app/serializers/waiter/supplier_serializer.rb new file mode 100644 index 00000000..21fbeb90 --- /dev/null +++ b/app/serializers/waiter/supplier_serializer.rb @@ -0,0 +1,5 @@ +class Waiter::SupplierSerializer < Qwaiter::Serializer + root 'supplier' + attributes :open, :name, :lat, :lng, :time_zone, :address, :house_number, :house_number_addition, :postal_code, :city, :country, + :facebook_promotion_url, :iens_profile, :week_starts_on_monday, :orders_in_process_count, :orders_placed_count +end diff --git a/app/views/layouts/waiter.html.slim b/app/views/layouts/waiter.html.slim index c3aa50d3..8b3fb866 100644 --- a/app/views/layouts/waiter.html.slim +++ b/app/views/layouts/waiter.html.slim @@ -6,6 +6,7 @@ html lang="en" meta name="viewport" content="width=device-width, initial-scale=1.0" title= waiter_page_title /= stylesheet_link_tag "waiter/application", media: "all" + = render 'suppliers/application/head' = stylesheet_link_tag "waiter/application" = javascript_include_tag "vendor/modernizr" = javascript_include_tag "waiter/application" diff --git a/config/routes.rb b/config/routes.rb index 7ae3b4e2..045001df 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -39,13 +39,15 @@ Qwaiter::Application.routes.draw do #WAITER #get '/waiter' => 'waiter#index' #, controller: 'waiter', action: 'index' - get '/waiter/sections' => 'waiter#sections' + #get '/waiter/sections' => 'waiter#sections' get '/waiter/product_categories' => 'waiter#product_categories' - get '/waiter/*rest' => redirect('/waiter') # Ember app refresh post '/waiter/order_products' => 'waiter#order_products', as: :order_products_waiter namespace :waiter do - root to: 'dashboard#index' + resources :sections + resources :suppliers + root to: 'dashboard#index' + get '/*rest' => redirect('/waiter') # Ember app refresh end