give some love to the waiter app

This commit is contained in:
2016-06-02 16:38:09 +02:00
parent e4461d3d29
commit ca8cc80b22
19 changed files with 124 additions and 26 deletions
@@ -0,0 +1,27 @@
#App.ApplicationAdapter = DS.ActiveModelAdapter.extend
# namespace: 'supplier'
# headers:
# "Accept": "application/json, text/javascript; q=0.01"
App.ApplicationAdapter = DS.JSONAPIAdapter.extend
namespace: 'waiter'
pathForType: (type)->
type.underscore().pluralize()
# Code for createRecord and updateRecord taken from ember data v2.0.0 restadapter
createRecord: (store, type, snapshot)->
data = {}
#var serializer = store.serializerFor(type.modelName);
serializer = Ember.get(snapshot.record, 'store').serializerFor('creation')
url = @buildURL(type.modelName, null, snapshot, 'createRecord')
serializer.serializeIntoHash data, type, snapshot, includeId: true
@ajax url, "POST", data: data
updateRecord: (store, type, snapshot)->
data = {}
#var serializer = store.serializerFor(type.modelName);
serializer = Ember.get(snapshot.record, 'store').serializerFor('creation')
id = snapshot.id
url = @buildURL(type.modelName, id, snapshot, 'updateRecord')
serializer.serializeIntoHash data, type, snapshot, includeId: true
@ajax url, "PUT", data: data
@@ -3,6 +3,6 @@ App.SectionHeaderComponent = Ember.Component.extend
tagName: 'dd' tagName: 'dd'
classNameBindings: ['active'] classNameBindings: ['active']
active: (-> #active: Ember.computed.equal "section.id", "globals.active_section.id"
if @get('context.id') == @get('controller.controllers.section.model.id') then 'active' else '' active: Ember.computed "section.id", "globals.active_section.id", ->
).property('controller.controllers.section.model.id') if @get('section.id') is @get('globals.active_section.id') then 'active' else ''
@@ -1,4 +1,4 @@
App.ProductCategoriesController = Ember.ArrayController.extend App.ProductCategoriesController = Ember.Controller.extend
#needs: ['table'] #needs: ['table']
actions: actions:
addProduct: (product)-> addProduct: (product)->
@@ -1 +1 @@
App.SectionController = Ember.ObjectController.extend {} App.SectionController = Ember.Controller.extend {}
@@ -1,2 +1,2 @@
App.SectionsController = Ember.ArrayController.extend App.SectionsController = Ember.Controller.extend
needs: ['section'] needs: ['section']
@@ -1,4 +1,4 @@
App.TableController = Ember.ObjectController.extend App.TableController = Ember.Controller.extend
orderTotal: (-> orderTotal: (->
@get('product_orders').getEach('total').reduce(((sum, total) -> sum + total), 0) @get('product_orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
).property('product_orders.@each.quantity') ).property('product_orders.@each.quantity')
@@ -0,0 +1,20 @@
Globals = Ember.Object.extend
current_employee: null
current_supplier: null
active_section: null
flash_message: ''
modal_active: false
#locale: Qstorage.getItem('locale')
App.initializer
name: 'injectCurrent'
initialize: (container, app)->
#container.optionsForType 'globals', instantiate: false, singleton: true
app.register 'global:variables', Globals, singleton: true
app.inject 'controller', 'globals', 'global:variables'
app.inject 'component', 'globals', 'global:variables'
app.inject 'view', 'globals', 'global:variables'
app.inject 'route', 'globals', 'global:variables'
app.inject 'component', 'store', 'service:store'
@@ -2,7 +2,8 @@
#= require handlebars #= require handlebars
#= require ember #= require ember
#= require ember-data #= require ember-data
#= require shared-ember-helpers/all #= require active-model-adapter
#= require ./app #= require ./app
#= require shared-ember-helpers/all
#= require_tree . #= require_tree .
@EmberENV = {FEATURES: {'query-params-new': true}} @EmberENV = {FEATURES: {'query-params-new': true}}
@@ -1,4 +1,4 @@
attr = DS.attr attr = DS.attr
App.ProductCategory = DS.Model.extend App.ProductCategory = DS.Model.extend
name: attr 'string' name: attr 'string'
products: DS.hasMany('product') products: DS.hasMany('product', async: false)
@@ -1,10 +1,18 @@
App.ApplicationRoute = Ember.Route.extend App.ApplicationRoute = Ember.Route.extend
beforeModel: -> beforeModel: ->
@supplier = @store.push 'supplier', supplier_object @supplier = @store.push
@employee = @store.push 'employee', employee_object data:
id: supplier_object.id
type: 'supplier'
attributes: supplier_object
@employee = @store.push
data:
id: employee_object.id
type: 'employee'
attributes: employee_object
@supplier.reload().then => @supplier.reload().then =>
#@store.find('list', state: 'active') #@store.find('list', state: 'active')
setupController: (controller, model)-> setupController: (controller, model)->
controller.set 'supplier', @supplier controller.set 'supplier', @supplier
controller.set 'employee', @employee controller.set 'employee', @employee
@controllerFor('product_categories').set 'model', @store.find('product_category') @controllerFor('product_categories').set 'model', @store.findAll('product_category')
@@ -0,0 +1,3 @@
App.SectionRoute = Ember.Route.extend
model: (options) -> @store.peekRecord('section', options.section_id)
afterModel: (model) -> @set('globals.active_section', model)
@@ -1,2 +1,2 @@
App.SectionsRoute = Ember.Route.extend App.SectionsRoute = Ember.Route.extend
model: -> @store.find('section') model: -> @store.findAll('section')
@@ -2,15 +2,18 @@
#DS.RESTAdapter.reopen #DS.RESTAdapter.reopen
#namespace: 'waiter' #namespace: 'waiter'
App.ApplicationSerializer = DS.ActiveModelSerializer #App.ApplicationSerializer = DS.ActiveModelSerializer
App.CustomAdapter = DS.RESTAdapter.extend #App.CustomAdapter = DS.RESTAdapter.extend
# user underscored paths # # user underscored paths
pathForType: (type)-> # pathForType: (type)->
decamelized = Ember.String.decamelize(type) # decamelized = Ember.String.decamelize(type)
Ember.String.pluralize(decamelized) # Ember.String.pluralize(decamelized)
#App.Store = DS.Store.extend ##App.Store = DS.Store.extend
#adapter: App.CustomAdapter # #adapter: App.CustomAdapter
App.ApplicationStore = DS.Store.extend #App.ApplicationStore = DS.Store.extend
adapter: DS.ActiveModelAdapter.extend # adapter: DS.ActiveModelAdapter.extend
namespace: 'waiter' # namespace: 'waiter'
App.ApplicationSerializer = DS.JSONAPISerializer.extend {}
App.CreationSerializer = DS.ActiveModelSerializer.extend {}
@@ -1,2 +1,2 @@
= link-to 'section' section = link-to 'section' section
span= title span= section.title
@@ -0,0 +1,8 @@
class Waiter::ProductCategoriesController < Waiter::ApplicationController
def index
records = current_supplier.product_categories.include_relation(product: :product_variants)
render json: records, each_serializer: Waiter::ProductCategorySerializer, include: %w[products]
end
end
@@ -0,0 +1,8 @@
class Waiter::ProductCategorySerializer
include Qwaiter::WaiterBaseSerializer
attributes :name, :supplier_id, :active_on_sunday, :active_on_monday, :active_on_tuesday, :active_on_wednesday,
:active_on_thursday, :active_on_friday, :active_on_saturday, :full_day, :start_from, :end_on,
:position
has_many :products, serializer: Waiter::ProductSerializer
has_one :supplier, serializer: Waiter::SupplierSerializer
end
@@ -0,0 +1,14 @@
class Waiter::ProductSerializer
include Qwaiter::WaiterBaseSerializer
attributes :name, :price, :description, :code, :position, :visible, :active
attribute :image do
if object.image.present?
{small: object.image.url(:small)}
else
{small: object.image.url}
end
end
has_many :product_variants, serializer: Waiter::ProductVariantSerializer
has_one :product_category, serializer: Waiter::ProductCategorySerializer
end
@@ -0,0 +1,5 @@
class Waiter::ProductVariantSerializer
include Qwaiter::WaiterBaseSerializer
attributes :name
has_one :product, serializer: Waiter::ProductSerializer
end
+2 -1
View File
@@ -41,11 +41,12 @@ Qwaiter::Application.routes.draw do
#WAITER #WAITER
#get '/waiter' => 'waiter#index' #, controller: 'waiter', action: 'index' #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/product_categories' => 'waiter#product_categories'
post '/waiter/order_products' => 'waiter#order_products', as: :order_products_waiter post '/waiter/order_products' => 'waiter#order_products', as: :order_products_waiter
namespace :waiter do namespace :waiter do
resources :sections resources :sections
resources :suppliers resources :suppliers
resources :product_categories, only: %i[index]
root to: 'dashboard#index' root to: 'dashboard#index'
get '/*rest' => redirect('/waiter') # Ember app refresh get '/*rest' => redirect('/waiter') # Ember app refresh