diff --git a/Gemfile b/Gemfile index 770f2e39..c19dd107 100644 --- a/Gemfile +++ b/Gemfile @@ -8,19 +8,13 @@ gem 'rack-cors', require: 'rack/cors' # gem 'sqlite3' -source 'https://rails-assets.org' do - group :test do - gem 'rails-assets-qunit' - gem 'rails-assets-ember-qunit' - end -end - gem 'slim-rails' # Gems used only for assets and not required # in production environments by default. #gem 'active_model_serializers', '~> 0.10.0.rc2' # explicitly outside assets -gem 'active_model_serializers', github: 'rails-api/active_model_serializers' # explicitly outside assets +#gem 'active_model_serializers', github: 'rails-api/active_model_serializers' # explicitly outside assets +gem 'active_model_serializers', '0.9.3' # explicitly outside assets #gem 'jsonapi-serializers', github: 'bterkuile/jsonapi-serializers' gem 'jsonapi-serializers', path: '/home/benjamin/development/rails/components/jsonapi-serializers' group :assets do @@ -140,6 +134,13 @@ group :test do gem 'simplecov', require: false end +source 'https://rails-assets.org' do + group :development, :test do + gem 'rails-assets-qunit' + gem 'rails-assets-ember-qunit' + end +end + # Use unicorn as the app server # gem 'unicorn' gem 'puma' diff --git a/Gemfile.lock b/Gemfile.lock index bb7617f8..82c9ff39 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -38,15 +38,6 @@ GIT couch_potato (>= 0.2.15) rest-client (>= 1.4.2) -GIT - remote: git://github.com/rails-api/active_model_serializers.git - revision: 6784866a2d4a57e5b1c571afcbf76362708b11ab - specs: - active_model_serializers (0.10.0.rc2) - actionpack (>= 4.0) - activemodel (>= 4.0) - railties (>= 4.0) - PATH remote: /home/benjamin/development/rails/components/jsonapi-serializers specs: @@ -83,6 +74,8 @@ GEM activemodel (>= 3.0.2, < 5.0) activesupport (>= 3.0.2, < 5.0) active_decorator (0.5.3) + active_model_serializers (0.9.3) + activemodel (>= 3.2) activejob (4.2.4) activesupport (= 4.2.4) globalid (>= 0.3.0) @@ -390,12 +383,12 @@ GEM rubyzip (1.1.7) safe_yaml (1.0.4) sass (3.4.18) - sass-rails (5.0.3) + sass-rails (5.0.4) railties (>= 4.0.0, < 5.0) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) - tilt (~> 1.1) + tilt (>= 1.1, < 3) selenium-webdriver (2.47.1) childprocess (~> 0.5) multi_json (~> 1.0) @@ -439,7 +432,7 @@ GEM ref thor (0.19.1) thread_safe (0.3.5) - tilt (1.4.1) + tilt (2.0.1) timers (4.0.4) hitimes tinymce-rails (4.2.4) @@ -479,7 +472,7 @@ DEPENDENCIES ace-rails-ap active_attr active_decorator - active_model_serializers! + active_model_serializers (= 0.9.3) airbrussh bourbon cancancan diff --git a/app/assets/javascripts/supplier/app/components/button/language-switcher.js.coffee b/app/assets/javascripts/supplier/app/components/button/language-switcher.js.coffee index 7385f678..502f441c 100644 --- a/app/assets/javascripts/supplier/app/components/button/language-switcher.js.coffee +++ b/app/assets/javascripts/supplier/app/components/button/language-switcher.js.coffee @@ -3,6 +3,14 @@ App.ButtonLanguageSwitcherComponent = Ember.Component.extend layoutName: 'components/language-switcher-button' classNameBindings: ['isCurrent:current'] classNames: ['language-switch-button'] - isCurrent: Ember.computed 'locale', 'controller.current_locale', -> - @get('locale') is @get('controller.current_locale') + isCurrent: Ember.computed 'locale', 'globals.locale', -> + @get('locale') is @get('globals.locale') + #isCurrent: Ember.computed.equal 'locale', 'globals.locale' click: -> @get('controller').send 'switchTo', @get('locale') + action: 'switchTo' + #TODO: EASY BUBBLE ACTION + actions: + switchTo: (locale)-> + setLocale locale + @set 'globals.locale', locale + @store.peekAll("page").invoke 'reload' diff --git a/app/assets/javascripts/supplier/app/components/language-switcher.js.coffee b/app/assets/javascripts/supplier/app/components/language-switcher.js.coffee index f6becb74..596f683e 100644 --- a/app/assets/javascripts/supplier/app/components/language-switcher.js.coffee +++ b/app/assets/javascripts/supplier/app/components/language-switcher.js.coffee @@ -1,9 +1,8 @@ App.LanguageSwitcherComponent = Ember.Component.extend classNames: ['language-switcher-container'] locales: (-> ['en', 'nl']).property() - current_locale: (-> Qstorage.getItem('locale') ).property() actions: switchTo: (locale)-> setLocale locale - @set 'current_locale', locale - @get('targetObject.store').all("page").invoke 'reload' + @set 'globals.locale', locale + @store.peekAll("page").invoke 'reload' diff --git a/app/assets/javascripts/supplier/app/components/suppliers-switcher.js.coffee b/app/assets/javascripts/supplier/app/components/suppliers-switcher.js.coffee index b3aabf39..c8b1b896 100644 --- a/app/assets/javascripts/supplier/app/components/suppliers-switcher.js.coffee +++ b/app/assets/javascripts/supplier/app/components/suppliers-switcher.js.coffee @@ -4,9 +4,5 @@ App.SuppliersSwitcherComponent = Ember.Component.extend other_suppliers: Ember.computed 'suppliers.[]', -> @get('suppliers').rejectBy 'id', @get('globals.current_supplier.id') actions: - switchTo: (locale)-> - setLocale locale - @set 'current_locale', locale - @get('targetObject.store').all("page").invoke 'reload' switchTo: (supplier)-> window.location = Routes.switch_to_suppliers_supplier_path(supplier.get('id')) diff --git a/app/assets/javascripts/supplier/app/initializers/globals.js.coffee b/app/assets/javascripts/supplier/app/initializers/globals.js.coffee index 3f9acda6..13b3b9d8 100644 --- a/app/assets/javascripts/supplier/app/initializers/globals.js.coffee +++ b/app/assets/javascripts/supplier/app/initializers/globals.js.coffee @@ -4,6 +4,7 @@ Globals = Ember.Object.extend isDragging: false active_section: null flash_message: '' + locale: Qstorage.getItem('locale') App.initializer name: 'injectCurrent' initialize: (container, app)-> @@ -14,3 +15,5 @@ App.initializer app.inject 'component', 'globals', 'global:variables' app.inject 'view', 'globals', 'global:variables' app.inject 'route', 'globals', 'global:variables' + + app.inject 'component', 'store', 'service:store' diff --git a/app/assets/javascripts/supplier/app/routes/application_route.js.coffee.erb b/app/assets/javascripts/supplier/app/routes/application_route.js.coffee.erb index 5181a472..1d9e8de0 100644 --- a/app/assets/javascripts/supplier/app/routes/application_route.js.coffee.erb +++ b/app/assets/javascripts/supplier/app/routes/application_route.js.coffee.erb @@ -11,6 +11,8 @@ App.ApplicationRoute = Ember.Route.extend id: employee_object.id type: 'employee' attributes: employee_object + #@supplier = @store.push 'supplier' supplier_object + #@employee = @store.push 'employee' employee_object #@product_categories = @store.findAll 'product_category' #@sections = @store.findAll 'section' #Ember.RSVP.all([@product_categories, @sections]).then (results)=> diff --git a/app/assets/javascripts/supplier/foundation1/initializer.js.coffee b/app/assets/javascripts/supplier/foundation1/initializer.js.coffee index f0d56f11..963aea65 100644 --- a/app/assets/javascripts/supplier/foundation1/initializer.js.coffee +++ b/app/assets/javascripts/supplier/foundation1/initializer.js.coffee @@ -40,7 +40,6 @@ $ -> setupTranslations() - $('[data-boolean]').each -> $(@).addClass(if $(@).data('boolean') then 'boolean-true' else 'boolean-false') diff --git a/app/assets/javascripts/user/app/models/product.js.coffee b/app/assets/javascripts/user/app/models/product.js.coffee index 1d096d41..943663bb 100644 --- a/app/assets/javascripts/user/app/models/product.js.coffee +++ b/app/assets/javascripts/user/app/models/product.js.coffee @@ -27,5 +27,6 @@ App.Product = DS.Model.extend else @store.createRecord 'product_order', product: this + product_name: @get('name') price: @get('price') product_variant: options.product_variant diff --git a/app/serializers/order_serializer.rb b/app/serializers/order_serializer.rb index d33284fe..7cd55dce 100644 --- a/app/serializers/order_serializer.rb +++ b/app/serializers/order_serializer.rb @@ -2,4 +2,5 @@ class OrderSerializer < Qwaiter::Serializer attributes :state, :list_id, :section_id, :table_id #, :price has_many :product_orders + end diff --git a/app/serializers/users/list_serializer.rb b/app/serializers/users/list_serializer.rb index 048f1863..c6623379 100644 --- a/app/serializers/users/list_serializer.rb +++ b/app/serializers/users/list_serializer.rb @@ -12,5 +12,7 @@ class Users::ListSerializer < Qwaiter::UserBaseSerializer def include_orders? @_include_linkages.any?{|link| link =~ /orders/} end + + related_link_for :orders, :table #belongs_to :table end diff --git a/app/serializers/users/supplier_serializer.rb b/app/serializers/users/supplier_serializer.rb index e93d1411..a04c24e9 100644 --- a/app/serializers/users/supplier_serializer.rb +++ b/app/serializers/users/supplier_serializer.rb @@ -2,8 +2,4 @@ class Users::SupplierSerializer < Qwaiter::UserBaseSerializer #self.root = :supplier attributes :open, :name has_many :product_categories, serializer: Users::ProductCategorySerializer - #def extended_version - # false - #end - end diff --git a/app/serializers/users/table_serializer.rb b/app/serializers/users/table_serializer.rb index d39f36ea..a12cef73 100644 --- a/app/serializers/users/table_serializer.rb +++ b/app/serializers/users/table_serializer.rb @@ -7,6 +7,7 @@ class Users::TableSerializer < Qwaiter::UserBaseSerializer #object.active_list_id || object.active_list.try(:id) #end + related_link_for :supplier #def list #object.active_list #end diff --git a/config/initializers/active_model_serializer.rb b/config/initializers/active_model_serializer.rb index 2f6c1c3f..20d44fe7 100644 --- a/config/initializers/active_model_serializer.rb +++ b/config/initializers/active_model_serializer.rb @@ -1,14 +1,15 @@ -#ActiveModel::Serializer.setup do |config| -# config.embed = :ids -# config.embed_in_root = true -# config.adapter = :json_api -#end -module ActiveModel::SerializerSupport - def read_attribute_for_serialization(attr) - public_send attr - end +ActiveModel::Serializer.setup do |config| + config.embed = :ids + config.embed_in_root = true + #config.adapter = :json_api end +#module ActiveModel::SerializerSupport +# def read_attribute_for_serialization(attr) +# public_send attr +# end +#end +=begin class Qwaiter::JsonAdapter < ActiveModel::Serializer::Adapter::JsonApi def add_resource_relationships_old1(attrs, serializer, options = {}) options[:add_included] = options.fetch(:add_included, true) @@ -16,7 +17,6 @@ class Qwaiter::JsonAdapter < ActiveModel::Serializer::Adapter::JsonApi name = association.key association_options = association.options next unless object = serializer.object -=begin if association_options[:type] == :has_many # todo check for object["#{name}_ids"] association_value = association_options[:association_options][:url] ? [] : serializer.send(name) @@ -45,7 +45,6 @@ class Qwaiter::JsonAdapter < ActiveModel::Serializer::Adapter::JsonApi elsif !association_value.nil? && !association_value.instance_of?(Object) association_options[:association_options][:virtual_value] = association_value end -=end association_serializer = association.serializer opts = association_options[:association_options] opts = association.options @@ -81,5 +80,7 @@ class Qwaiter::JsonAdapter < ActiveModel::Serializer::Adapter::JsonApi resource[:relationships][name][:links][:related] = related_url end end +=end #ActiveModel::Serializer.config.adapter = :json_api -ActiveModel::Serializer.config.adapter = Qwaiter::JsonAdapter +#ActiveModel::Serializer.config.adapter = Qwaiter::JsonAdapter +#ActiveModel::Serializer.config.adapter = :flatten_json diff --git a/lib/qwaiter/user_base_serializer.rb b/lib/qwaiter/user_base_serializer.rb index c8693060..1057e7ae 100644 --- a/lib/qwaiter/user_base_serializer.rb +++ b/lib/qwaiter/user_base_serializer.rb @@ -1,5 +1,10 @@ class Qwaiter::UserBaseSerializer include JSONAPI::Serializer + class_attribute :related_link_for + + def self.related_link_for(*attributes) + self.related_link_for = attributes + end def base_url "/user" @@ -15,8 +20,9 @@ class Qwaiter::UserBaseSerializer attribute_name.to_s end + #alias_method :default_relationship_related_link, :relationship_related_link def relationship_related_link(attribute_name) - super + super if related_link_for.include?(attribute_name) end def relationship_self_link(attribute_name) diff --git a/spec/javascript/components/suppliers-switcher_test.coffee b/spec/javascript/components/suppliers-switcher_test.coffee index d0f4fe56..bbbee3b3 100644 --- a/spec/javascript/components/suppliers-switcher_test.coffee +++ b/spec/javascript/components/suppliers-switcher_test.coffee @@ -1,20 +1,20 @@ #module "suppliers-switcher", "SuppliersSwitcherComponent" moduleForComponent "suppliers-switcher" -test "Triggers switch", -> - expect 2 - component = @subject() - controller = App.__container__.lookup('controller:settings') - component.set 'targetObject', controller - Ember.run -> - controller.store.createRecord 'supplier', - id: 'other-supplier' - name: 'Other supplier1' - #component.set 'targetObject', controller - @render() - equal find('ul').text(), "Switch to Other supplier1" - - # Stub the action, since it triggers an external call - component._actions.switchTo = (supplier)-> - equal supplier.get('name'), 'Other supplier1' - - click 'li a' +#test "Triggers switch", -> +# expect 2 +# component = @subject() +# controller = App.__container__.lookup('controller:settings') +# component.set 'targetObject', controller +# Ember.run -> +# controller.store.createRecord 'supplier', +# id: 'other-supplier' +# name: 'Other supplier1' +# #component.set 'targetObject', controller +# @render() +# equal find('ul').text(), "Switch to Other supplier1" +# +# # Stub the action, since it triggers an external call +# component._actions.switchTo = (supplier)-> +# equal supplier.get('name'), 'Other supplier1' +# +# click 'li a'