bouquet 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +7 -4
- data/LICENSE.txt +1 -1
- data/README.md +8 -25
- data/bouquet.gemspec +3 -2
- data/core/.gitignore +0 -1
- data/core/Gemfile +3 -4
- data/core/Gemfile.lock +205 -0
- data/core/MIT-LICENSE +1 -1
- data/core/README.md +3 -0
- data/core/Rakefile +2 -2
- data/core/app/controllers/bouquet/core/application_controller.rb +6 -0
- data/core/app/jobs/bouquet/core/application_job.rb +6 -0
- data/core/app/models/application_record.rb +7 -0
- data/core/app/models/bouquet/arrival.rb +7 -0
- data/core/app/models/bouquet/assembly.rb +8 -0
- data/core/app/models/bouquet/customer.rb +6 -0
- data/core/app/models/bouquet/delivery.rb +7 -0
- data/core/app/models/bouquet/location.rb +10 -0
- data/core/app/models/bouquet/material.rb +7 -0
- data/core/app/models/bouquet/product.rb +6 -1
- data/core/app/models/bouquet/purchase_order.rb +23 -0
- data/core/app/models/bouquet/retrieval.rb +7 -0
- data/core/app/models/bouquet/sales_order.rb +16 -0
- data/core/app/models/bouquet/shipment.rb +44 -0
- data/core/app/models/bouquet/stock.rb +7 -0
- data/core/app/models/bouquet/storage.rb +30 -0
- data/core/app/models/bouquet/supplier.rb +6 -0
- data/core/{bouquet_core.gemspec → bouquet-core.gemspec} +5 -5
- data/core/db/migrate/20160102155121_create_bouquet_products.rb +10 -0
- data/core/db/migrate/20160108154058_create_bouquet_materials.rb +12 -0
- data/core/db/migrate/20160108154107_create_bouquet_assemblies.rb +12 -0
- data/core/db/migrate/20160108154116_create_bouquet_customers.rb +10 -0
- data/core/db/migrate/20160108154144_create_bouquet_suppliers.rb +10 -0
- data/core/db/migrate/20160108154217_create_bouquet_locations.rb +10 -0
- data/core/db/migrate/20160108155617_create_bouquet_shipments.rb +12 -0
- data/core/db/migrate/20160108155648_create_bouquet_deliveries.rb +13 -0
- data/core/db/migrate/20160108155711_create_bouquet_purchase_orders.rb +14 -0
- data/core/db/migrate/20160108155732_create_bouquet_arrivals.rb +12 -0
- data/core/db/migrate/20160108155753_create_bouquet_stocks.rb +13 -0
- data/core/db/migrate/20160108160523_create_bouquet_sales_orders.rb +14 -0
- data/core/db/migrate/20160111072002_create_bouquet_storages.rb +12 -0
- data/core/db/migrate/20160111072201_create_bouquet_retrievals.rb +13 -0
- data/core/lib/bouquet/core/engine.rb +1 -2
- data/core/lib/bouquet/core/version.rb +1 -1
- data/core/lib/bouquet/core.rb +1 -0
- data/core/lib/tasks/{bouquet_core_tasks.rake → bouquet/core_tasks.rake} +0 -0
- data/core/spec/dummy/README.md +4 -0
- data/core/spec/dummy/Rakefile +6 -0
- data/core/spec/dummy/app/assets/config/manifest.js +3 -0
- data/core/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/{gate/app/assets/stylesheets/bouquet_gate → core/spec/dummy/app/assets/stylesheets}/application.css +3 -3
- data/core/spec/dummy/app/channels/application_cable/channel.rb +5 -0
- data/core/spec/dummy/app/channels/application_cable/connection.rb +5 -0
- data/core/spec/dummy/app/controllers/application_controller.rb +2 -0
- data/core/{app/assets/images/bouquet_core → spec/dummy/app/controllers/concerns}/.keep +0 -0
- data/core/spec/dummy/app/jobs/application_job.rb +2 -0
- data/core/spec/dummy/app/mailers/application_mailer.rb +4 -0
- data/core/spec/dummy/app/models/application_record.rb +3 -0
- data/{gate/app/assets/images/bouquet_gate → core/spec/dummy/app/models/concerns}/.keep +0 -0
- data/core/spec/dummy/bin/bundle +3 -0
- data/core/spec/dummy/bin/rails +4 -0
- data/core/spec/dummy/bin/rake +4 -0
- data/core/spec/dummy/bin/setup +34 -0
- data/core/spec/dummy/bin/update +29 -0
- data/core/spec/dummy/config/application.rb +26 -0
- data/core/spec/dummy/config/boot.rb +5 -0
- data/core/spec/dummy/config/database.yml +25 -0
- data/core/spec/dummy/config/environment.rb +5 -0
- data/core/spec/dummy/config/environments/development.rb +43 -0
- data/core/spec/dummy/config/environments/production.rb +70 -0
- data/core/spec/dummy/config/environments/test.rb +44 -0
- data/core/spec/dummy/config/initializers/active_record_belongs_to_required_by_default.rb +5 -0
- data/core/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/core/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/core/spec/dummy/config/initializers/callback_terminator.rb +5 -0
- data/core/spec/dummy/config/initializers/cors.rb +16 -0
- data/core/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/core/spec/dummy/config/initializers/inflections.rb +16 -0
- data/core/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/core/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/core/spec/dummy/config/locales/en.yml +23 -0
- data/core/spec/dummy/config/redis/cable.yml +9 -0
- data/core/spec/dummy/config/routes.rb +3 -0
- data/core/spec/dummy/config/secrets.yml +22 -0
- data/core/spec/dummy/config.ru +9 -0
- data/core/spec/dummy/db/schema.rb +156 -0
- data/core/spec/dummy/db/seeds.rb +36 -0
- data/core/spec/dummy/log/.keep +0 -0
- data/core/spec/dummy/public/404.html +67 -0
- data/core/spec/dummy/public/422.html +67 -0
- data/core/spec/dummy/public/500.html +66 -0
- data/core/spec/dummy/public/favicon.ico +0 -0
- data/core/spec/factories/bouquet_arrivals.rb +9 -0
- data/core/spec/factories/bouquet_assemblies.rb +8 -0
- data/core/spec/factories/bouquet_customers.rb +7 -0
- data/core/spec/factories/bouquet_deliveries.rb +10 -0
- data/core/spec/factories/bouquet_locations.rb +6 -0
- data/core/spec/factories/bouquet_materials.rb +9 -0
- data/core/spec/factories/bouquet_purchase_orders.rb +10 -0
- data/core/spec/factories/bouquet_retrievals.rb +10 -0
- data/core/spec/factories/bouquet_sales_orders.rb +10 -0
- data/core/spec/factories/bouquet_shipments.rb +9 -0
- data/core/spec/factories/bouquet_stocks.rb +10 -0
- data/core/spec/factories/bouquet_storage_retrievals.rb +10 -0
- data/core/spec/factories/bouquet_storages.rb +9 -0
- data/core/spec/factories/bouquet_suppliers.rb +6 -0
- data/core/spec/jobs/bouquet/shipment_job_spec.rb +7 -0
- data/core/spec/models/bouquet/arrival_spec.rb +7 -0
- data/core/spec/models/bouquet/assembly_spec.rb +7 -0
- data/core/spec/models/bouquet/customer_spec.rb +7 -0
- data/core/spec/models/bouquet/delivery_spec.rb +7 -0
- data/core/spec/models/bouquet/location_spec.rb +7 -0
- data/core/spec/models/bouquet/material_spec.rb +7 -0
- data/core/spec/models/bouquet/product_spec.rb +1 -1
- data/core/spec/models/bouquet/purchase_order_spec.rb +7 -0
- data/core/spec/models/bouquet/retrieval_spec.rb +7 -0
- data/core/spec/models/bouquet/sales_order_spec.rb +7 -0
- data/core/spec/models/bouquet/shipment_spec.rb +7 -0
- data/core/spec/models/bouquet/stock_spec.rb +7 -0
- data/core/spec/models/bouquet/storage_retrieval_spec.rb +7 -0
- data/core/spec/models/bouquet/storage_spec.rb +7 -0
- data/core/spec/models/bouquet/supplier_spec.rb +7 -0
- data/core/spec/rails_helper.rb +4 -11
- data/core/spec/spec_helper.rb +11 -18
- data/gate/.gitignore +0 -1
- data/gate/Gemfile +3 -7
- data/gate/Gemfile.lock +204 -0
- data/gate/MIT-LICENSE +1 -1
- data/gate/README.md +29 -0
- data/gate/Rakefile +2 -2
- data/gate/app/controllers/bouquet/gate/application_controller.rb +1 -1
- data/gate/app/controllers/bouquet/gate/materials_controller.rb +55 -0
- data/gate/app/controllers/bouquet/gate/products_controller.rb +62 -6
- data/gate/app/controllers/bouquet/gate/purchase_orders_controller.rb +56 -0
- data/gate/app/controllers/bouquet/gate/sales_orders_controller.rb +57 -0
- data/gate/app/controllers/bouquet/gate/storages_controller.rb +22 -0
- data/gate/app/jobs/bouquet/gate/application_job.rb +6 -0
- data/gate/app/jobs/bouquet/gate/shipment_job.rb +14 -0
- data/gate/app/models/application_record.rb +7 -0
- data/gate/{bouquet_gate.gemspec → bouquet-gate.gemspec} +5 -6
- data/gate/config/routes.rb +6 -4
- data/gate/lib/bouquet/gate/engine.rb +2 -6
- data/gate/lib/bouquet/gate/version.rb +1 -1
- data/gate/lib/bouquet/gate.rb +1 -1
- data/gate/lib/tasks/{bouquet_gate_tasks.rake → bouquet/gate_tasks.rake} +0 -0
- data/gate/spec/controllers/bouquet/gate/products_controller_spec.rb +13 -4
- data/gate/spec/controllers/bouquet/gate/purchase_orders_controller_spec.rb +14 -0
- data/gate/spec/controllers/bouquet/gate/sales_orders_controller_spec.rb +14 -0
- data/gate/spec/dummy/Rakefile +6 -0
- data/gate/spec/dummy/app/assets/config/manifest.js +3 -0
- data/gate/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/{core/app/assets/stylesheets/bouquet_core → gate/spec/dummy/app/assets/stylesheets}/application.css +3 -3
- data/gate/spec/dummy/app/channels/application_cable/channel.rb +5 -0
- data/gate/spec/dummy/app/channels/application_cable/connection.rb +5 -0
- data/gate/spec/dummy/app/controllers/application_controller.rb +2 -0
- data/gate/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/gate/spec/dummy/app/jobs/application_job.rb +2 -0
- data/gate/spec/dummy/app/mailers/application_mailer.rb +4 -0
- data/gate/spec/dummy/app/models/application_record.rb +3 -0
- data/gate/spec/dummy/app/models/concerns/.keep +0 -0
- data/gate/spec/dummy/bin/bundle +3 -0
- data/gate/spec/dummy/bin/rails +4 -0
- data/gate/spec/dummy/bin/rake +4 -0
- data/gate/spec/dummy/bin/setup +34 -0
- data/gate/spec/dummy/bin/update +29 -0
- data/gate/spec/dummy/config/application.rb +27 -0
- data/gate/spec/dummy/config/boot.rb +5 -0
- data/gate/spec/dummy/config/database.yml +25 -0
- data/gate/spec/dummy/config/environment.rb +5 -0
- data/gate/spec/dummy/config/environments/development.rb +43 -0
- data/gate/spec/dummy/config/environments/production.rb +70 -0
- data/gate/spec/dummy/config/environments/test.rb +44 -0
- data/gate/spec/dummy/config/initializers/active_record_belongs_to_required_by_default.rb +5 -0
- data/gate/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/gate/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/gate/spec/dummy/config/initializers/callback_terminator.rb +5 -0
- data/gate/spec/dummy/config/initializers/cors.rb +16 -0
- data/gate/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/gate/spec/dummy/config/initializers/inflections.rb +16 -0
- data/gate/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/gate/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/gate/spec/dummy/config/locales/en.yml +23 -0
- data/gate/spec/dummy/config/redis/cable.yml +9 -0
- data/gate/spec/dummy/config/routes.rb +3 -0
- data/gate/spec/dummy/config/secrets.yml +22 -0
- data/gate/spec/dummy/config.ru +9 -0
- data/gate/spec/dummy/db/migrate/20160118114717_create_bouquet_products.bouquet.rb +11 -0
- data/gate/spec/dummy/db/migrate/20160118114718_create_bouquet_materials.bouquet.rb +13 -0
- data/gate/spec/dummy/db/migrate/20160118114719_create_bouquet_assemblies.bouquet.rb +13 -0
- data/gate/spec/dummy/db/migrate/20160118114720_create_bouquet_customers.bouquet.rb +11 -0
- data/gate/spec/dummy/db/migrate/20160118114721_create_bouquet_suppliers.bouquet.rb +11 -0
- data/gate/spec/dummy/db/migrate/20160118114722_create_bouquet_locations.bouquet.rb +11 -0
- data/gate/spec/dummy/db/migrate/20160118114723_create_bouquet_shipments.bouquet.rb +13 -0
- data/gate/spec/dummy/db/migrate/20160118114724_create_bouquet_deliveries.bouquet.rb +14 -0
- data/gate/spec/dummy/db/migrate/20160118114725_create_bouquet_purchase_orders.bouquet.rb +15 -0
- data/gate/spec/dummy/db/migrate/20160118114726_create_bouquet_arrivals.bouquet.rb +13 -0
- data/gate/spec/dummy/db/migrate/20160118114727_create_bouquet_stocks.bouquet.rb +14 -0
- data/gate/spec/dummy/db/migrate/20160118114728_create_bouquet_sales_orders.bouquet.rb +15 -0
- data/gate/spec/dummy/db/migrate/20160118114729_create_bouquet_storages.bouquet.rb +13 -0
- data/gate/spec/dummy/db/migrate/20160118114730_create_bouquet_retrievals.bouquet.rb +14 -0
- data/gate/spec/dummy/db/schema.rb +156 -0
- data/gate/spec/dummy/db/seeds.rb +23 -0
- data/gate/spec/dummy/log/.keep +0 -0
- data/gate/spec/dummy/public/404.html +67 -0
- data/gate/spec/dummy/public/422.html +67 -0
- data/gate/spec/dummy/public/500.html +66 -0
- data/gate/spec/dummy/public/favicon.ico +0 -0
- data/gate/spec/factories/bouquet_products.rb +6 -0
- data/gate/spec/rails_helper.rb +6 -11
- data/gate/spec/spec_helper.rb +11 -18
- data/lib/bouquet/version.rb +1 -1
- data/lib/bouquet.rb +0 -2
- data/store/.gitignore +7 -0
- data/store/.rspec +2 -0
- data/store/Gemfile +20 -0
- data/store/Gemfile.lock +207 -0
- data/store/MIT-LICENSE +20 -0
- data/store/README.md +3 -0
- data/store/Rakefile +26 -0
- data/store/app/assets/config/bouquet_store_manifest.js +1 -0
- data/store/app/assets/images/bouquet/store/.keep +0 -0
- data/store/app/assets/javascripts/bouquet/store/application.js +1 -0
- data/store/app/assets/javascripts/bouquet/store/bundle.js +33 -0
- data/store/app/assets/stylesheets/bouquet/store/application.css +3 -0
- data/store/app/assets/stylesheets/bouquet/store/bundle.css +1 -0
- data/store/app/controllers/bouquet/store/application_controller.rb +6 -0
- data/store/app/controllers/bouquet/store/main_controller.rb +8 -0
- data/store/app/helpers/bouquet/store/application_helper.rb +15 -0
- data/store/app/jobs/bouquet/store/application_job.rb +6 -0
- data/store/app/models/application_record.rb +7 -0
- data/store/app/views/bouquet/store/main/index.html.erb +1 -0
- data/store/app/views/layouts/bouquet/store/application.html.erb +15 -0
- data/store/bin/rails +12 -0
- data/store/bouquet-store.gemspec +22 -0
- data/store/config/routes.rb +4 -0
- data/store/lib/bouquet/store/engine.rb +15 -0
- data/store/lib/bouquet/store/version.rb +5 -0
- data/store/lib/bouquet/store.rb +7 -0
- data/store/lib/tasks/bouquet/store_tasks.rake +4 -0
- data/store/package.json +56 -0
- data/store/private/static/.babelrc +20 -0
- data/store/private/static/app/actions/AccountActions.js +8 -0
- data/store/private/static/app/actions/CounterActions.js +40 -0
- data/store/private/static/app/actions/InventoryActions.js +20 -0
- data/store/private/static/app/actions/MaterialActions.js +54 -0
- data/store/private/static/app/actions/ProductActions.js +54 -0
- data/store/private/static/app/components/_globals.scss +7 -0
- data/store/private/static/app/components/layouts/_config.scss +8 -0
- data/store/private/static/app/components/layouts/contents/_config.scss +4 -0
- data/store/private/static/app/components/layouts/contents/about/index.js +15 -0
- data/store/private/static/app/components/layouts/contents/about/style.scss +1 -0
- data/store/private/static/app/components/layouts/contents/account/index.js +16 -0
- data/store/private/static/app/components/layouts/contents/account/layout.js +52 -0
- data/store/private/static/app/components/layouts/contents/account/style.scss +7 -0
- data/store/private/static/app/components/layouts/contents/content.scss +13 -0
- data/store/private/static/app/components/layouts/contents/counter/index.js +16 -0
- data/store/private/static/app/components/layouts/contents/counter/layout.js +62 -0
- data/store/private/static/app/components/layouts/contents/counter/style.scss +6 -0
- data/store/private/static/app/components/layouts/contents/index.js +7 -0
- data/store/private/static/app/components/layouts/contents/inventory/index.js +16 -0
- data/store/private/static/app/components/layouts/contents/inventory/layout.js +41 -0
- data/store/private/static/app/components/layouts/contents/inventory/style.scss +1 -0
- data/store/private/static/app/components/layouts/contents/main/index.js +36 -0
- data/store/private/static/app/components/layouts/contents/main/style.scss +1 -0
- data/store/private/static/app/components/layouts/contents/material/index.js +18 -0
- data/store/private/static/app/components/layouts/contents/material/layout.js +60 -0
- data/store/private/static/app/components/layouts/contents/material/style.scss +25 -0
- data/store/private/static/app/components/layouts/contents/product/index.js +18 -0
- data/store/private/static/app/components/layouts/contents/product/layout.js +69 -0
- data/store/private/static/app/components/layouts/contents/product/style.scss +30 -0
- data/store/private/static/app/components/layouts/header/index.js +27 -0
- data/store/private/static/app/components/layouts/header/style.scss +21 -0
- data/store/private/static/app/components/layouts/home/index.js +20 -0
- data/store/private/static/app/components/layouts/home/style.scss +23 -0
- data/store/private/static/app/components/layouts/sidebar/index.js +11 -0
- data/store/private/static/app/components/layouts/sidebar/layout.js +63 -0
- data/store/private/static/app/components/layouts/sidebar/style.scss +47 -0
- data/store/private/static/app/constants/ActionTypes.js +20 -0
- data/store/private/static/app/containers/dev_tools/index.js +13 -0
- data/store/private/static/app/containers/home/index.js +2 -0
- data/store/private/static/app/containers/index.js +2 -0
- data/store/private/static/app/containers/root/index.js +26 -0
- data/store/private/static/app/index.js +21 -0
- data/store/private/static/app/reducers/account.js +19 -0
- data/store/private/static/app/reducers/counter.js +14 -0
- data/store/private/static/app/reducers/index.js +18 -0
- data/store/private/static/app/reducers/inventory.js +17 -0
- data/store/private/static/app/reducers/material.js +30 -0
- data/store/private/static/app/reducers/product.js +30 -0
- data/store/private/static/app/routes/index.js +18 -0
- data/store/private/static/app/store/configureStore.development.js +27 -0
- data/store/private/static/app/store/configureStore.js +5 -0
- data/store/private/static/app/store/configureStore.production.js +11 -0
- data/store/private/static/app/toolbox-theme.scss +7 -0
- data/store/private/static/index.html +14 -0
- data/store/private/static/main.js +30 -0
- data/store/private/static/package.json +56 -0
- data/store/private/static/server.js +27 -0
- data/store/private/static/webpack.config.js +50 -0
- data/store/private/static/webpack.production.js +43 -0
- data/store/spec/controllers/bouquet/store/main_controller_spec.rb +15 -0
- data/store/spec/dummy/Procfile +2 -0
- data/store/spec/dummy/Rakefile +6 -0
- data/store/spec/dummy/app/assets/config/manifest.js +4 -0
- data/store/spec/dummy/app/assets/images/.keep +0 -0
- data/store/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/store/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/store/spec/dummy/app/channels/application_cable/channel.rb +5 -0
- data/store/spec/dummy/app/channels/application_cable/connection.rb +5 -0
- data/store/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/store/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/store/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/store/spec/dummy/app/jobs/application_job.rb +2 -0
- data/store/spec/dummy/app/mailers/application_mailer.rb +4 -0
- data/store/spec/dummy/app/models/application_record.rb +3 -0
- data/store/spec/dummy/app/models/concerns/.keep +0 -0
- data/store/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/store/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/store/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/store/spec/dummy/bin/bundle +3 -0
- data/store/spec/dummy/bin/rails +4 -0
- data/store/spec/dummy/bin/rake +4 -0
- data/store/spec/dummy/bin/setup +34 -0
- data/store/spec/dummy/bin/update +29 -0
- data/store/spec/dummy/config/application.rb +24 -0
- data/store/spec/dummy/config/boot.rb +5 -0
- data/store/spec/dummy/config/database.yml +25 -0
- data/store/spec/dummy/config/environment.rb +5 -0
- data/store/spec/dummy/config/environments/development.rb +56 -0
- data/store/spec/dummy/config/environments/production.rb +82 -0
- data/store/spec/dummy/config/environments/test.rb +44 -0
- data/store/spec/dummy/config/initializers/active_record_belongs_to_required_by_default.rb +5 -0
- data/store/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/store/spec/dummy/config/initializers/assets.rb +11 -0
- data/store/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/store/spec/dummy/config/initializers/callback_terminator.rb +5 -0
- data/store/spec/dummy/config/initializers/cookies_serializer.rb +4 -0
- data/store/spec/dummy/config/initializers/cors.rb +16 -0
- data/store/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/store/spec/dummy/config/initializers/inflections.rb +16 -0
- data/store/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/store/spec/dummy/config/initializers/request_forgery_protection.rb +4 -0
- data/store/spec/dummy/config/initializers/session_store.rb +3 -0
- data/store/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/store/spec/dummy/config/locales/en.yml +23 -0
- data/store/spec/dummy/config/redis/cable.yml +9 -0
- data/store/spec/dummy/config/routes.rb +4 -0
- data/store/spec/dummy/config/secrets.yml +22 -0
- data/store/spec/dummy/config.ru +9 -0
- data/store/spec/dummy/db/migrate/20160118140340_create_bouquet_products.bouquet.rb +11 -0
- data/store/spec/dummy/db/migrate/20160118140341_create_bouquet_materials.bouquet.rb +13 -0
- data/store/spec/dummy/db/migrate/20160118140342_create_bouquet_assemblies.bouquet.rb +13 -0
- data/store/spec/dummy/db/migrate/20160118140343_create_bouquet_customers.bouquet.rb +11 -0
- data/store/spec/dummy/db/migrate/20160118140344_create_bouquet_suppliers.bouquet.rb +11 -0
- data/store/spec/dummy/db/migrate/20160118140345_create_bouquet_locations.bouquet.rb +11 -0
- data/store/spec/dummy/db/migrate/20160118140346_create_bouquet_shipments.bouquet.rb +13 -0
- data/store/spec/dummy/db/migrate/20160118140347_create_bouquet_deliveries.bouquet.rb +14 -0
- data/store/spec/dummy/db/migrate/20160118140348_create_bouquet_purchase_orders.bouquet.rb +15 -0
- data/store/spec/dummy/db/migrate/20160118140349_create_bouquet_arrivals.bouquet.rb +13 -0
- data/store/spec/dummy/db/migrate/20160118140350_create_bouquet_stocks.bouquet.rb +14 -0
- data/store/spec/dummy/db/migrate/20160118140351_create_bouquet_sales_orders.bouquet.rb +15 -0
- data/store/spec/dummy/db/migrate/20160118140352_create_bouquet_storages.bouquet.rb +13 -0
- data/store/spec/dummy/db/migrate/20160118140353_create_bouquet_retrievals.bouquet.rb +14 -0
- data/store/spec/dummy/db/schema.rb +156 -0
- data/store/spec/dummy/db/seeds.rb +36 -0
- data/store/spec/dummy/lib/assets/.keep +0 -0
- data/store/spec/dummy/log/.keep +0 -0
- data/store/spec/dummy/public/404.html +67 -0
- data/store/spec/dummy/public/422.html +67 -0
- data/store/spec/dummy/public/500.html +66 -0
- data/store/spec/dummy/public/favicon.ico +0 -0
- data/store/spec/rails_helper.rb +50 -0
- data/store/spec/spec_helper.rb +85 -0
- data/store/spec/views/bouquet/store/main/index.html.erb_spec.rb +5 -0
- metadata +363 -24
- data/core/README.rdoc +0 -3
- data/core/app/controllers/bouquet_core/application_controller.rb +0 -4
- data/core/app/helpers/bouquet_core/application_helper.rb +0 -4
- data/core/app/views/layouts/bouquet_core/application.html.erb +0 -14
- data/core/db/migrate/20151122145140_create_bouquet_products.rb +0 -9
- data/gate/README.rdoc +0 -3
- data/gate/app/helpers/bouquet_gate/application_helper.rb +0 -4
- data/gate/app/views/bouquet/gate/products/index.json.jbuilder +0 -3
- data/gate/app/views/bouquet/gate/products/show.json.jbuilder +0 -1
- data/gate/app/views/layouts/bouquet_gate/application.html.erb +0 -14
@@ -0,0 +1,63 @@
|
|
1
|
+
import React, {Component, PropTypes} from 'react'
|
2
|
+
import {Link} from 'react-router'
|
3
|
+
import {List, ListItem} from 'react-toolbox/lib'
|
4
|
+
import Avatar from 'react-toolbox/lib/avatar'
|
5
|
+
import {Button} from 'react-toolbox/lib/button'
|
6
|
+
import style from './style'
|
7
|
+
|
8
|
+
class Layout extends Component {
|
9
|
+
items = [
|
10
|
+
{caption: 'Account', icon: 'person', to: 'account'},
|
11
|
+
{caption: 'Product', icon: 'card_giftcard', to: 'products'},
|
12
|
+
{caption: 'Material', icon: 'local_florist', to: 'materials'},
|
13
|
+
{caption: 'Inventory', icon: 'widgets', to: 'inventory'},
|
14
|
+
{caption: 'Counter', icon: 'plus_one', to: 'counter'},
|
15
|
+
{caption: 'About', icon: 'domain', to: 'about'}
|
16
|
+
]
|
17
|
+
|
18
|
+
itemNodes () {
|
19
|
+
const nodes = this.items.map((item, index) => {
|
20
|
+
let className = style.item
|
21
|
+
if (item.to === this.props.router.path) {
|
22
|
+
className += ` ${style.active}`
|
23
|
+
}
|
24
|
+
|
25
|
+
return (
|
26
|
+
<Link to={item.to} key={index} >
|
27
|
+
<ListItem className={className}
|
28
|
+
selectable
|
29
|
+
caption={item.caption}
|
30
|
+
leftIcon={item.icon} />
|
31
|
+
</Link>
|
32
|
+
)
|
33
|
+
})
|
34
|
+
|
35
|
+
return nodes
|
36
|
+
}
|
37
|
+
|
38
|
+
render () {
|
39
|
+
let className = style.root
|
40
|
+
if (this.props.className) {
|
41
|
+
className += ` ${this.props.className}`
|
42
|
+
}
|
43
|
+
|
44
|
+
return (
|
45
|
+
<dev className={className}>
|
46
|
+
<List className={style.list} selectable ripple>
|
47
|
+
{this.itemNodes()}
|
48
|
+
</List>
|
49
|
+
<footer className={style.footer}>
|
50
|
+
<div className={style.relative}>
|
51
|
+
<Avatar style={{backgroundColor: 'deepskyblue'}}
|
52
|
+
icon='person' />
|
53
|
+
|
54
|
+
<Button className={style.absolute}
|
55
|
+
label={this.props.account.username} />
|
56
|
+
</div>
|
57
|
+
</footer>
|
58
|
+
</dev>
|
59
|
+
)
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
export default Layout
|
@@ -0,0 +1,47 @@
|
|
1
|
+
@import "../config";
|
2
|
+
|
3
|
+
.root {
|
4
|
+
display: flex;
|
5
|
+
width: $sidebar-width;
|
6
|
+
flex-direction: column;
|
7
|
+
background-color: $color-background;
|
8
|
+
}
|
9
|
+
|
10
|
+
.list {
|
11
|
+
@include no-webkit-scrollbar;
|
12
|
+
flex-grow: 1;
|
13
|
+
overflow-y: auto;
|
14
|
+
}
|
15
|
+
|
16
|
+
.item {
|
17
|
+
padding: $sidebar-v-padding $sidebar-h-padding;
|
18
|
+
> span > span {
|
19
|
+
font-size: $font-size-normal;
|
20
|
+
font-weight: $font-weight-semi-bold;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
.active {
|
25
|
+
background: $color-divider;
|
26
|
+
}
|
27
|
+
|
28
|
+
.footer {
|
29
|
+
flex-grow: 0;
|
30
|
+
padding: $sidebar-h-padding;
|
31
|
+
overflow: hidden;
|
32
|
+
font-size: $font-size-small;
|
33
|
+
color: $color-text-secondary;
|
34
|
+
border-top: $sidebar-footer-border;
|
35
|
+
> * {
|
36
|
+
display: block;
|
37
|
+
}
|
38
|
+
.relative {
|
39
|
+
position: relative;
|
40
|
+
}
|
41
|
+
.absolute{
|
42
|
+
position: absolute;
|
43
|
+
top: 50%;
|
44
|
+
margin-top: -2 * $unit;
|
45
|
+
margin-left: 1 * $unit;
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// ACCOUNT
|
2
|
+
export const CHANGE_ACCOUNT = 'CHANGE_ACCOUNT'
|
3
|
+
|
4
|
+
// COUNTER
|
5
|
+
export const CHANGE_COUNTER = 'CHANGE_COUNTER'
|
6
|
+
export const INCREMENT_COUNTER = 'INCREMENT_COUNTER'
|
7
|
+
export const DECREMENT_COUNTER = 'DECREMENT_COUNTER'
|
8
|
+
|
9
|
+
// PRODUCT
|
10
|
+
export const PRODUCT_RECEIVE = 'PRODUCT_RECEIVE';
|
11
|
+
export const PRODUCT_SHOW_ORDER = 'PRODUCT_SHOW_ORDER';
|
12
|
+
export const PRODUCT_HIDE_SNACKBAR = 'PRODUCT_HIDE_SNACKBAR';
|
13
|
+
|
14
|
+
// MATERIAL
|
15
|
+
export const MATERIAL_RECEIVE = 'MATERIAL_RECEIVE';
|
16
|
+
export const MATERIAL_SHOW_ORDER = 'MATERIAL_SHOW_ORDER';
|
17
|
+
export const MATERIAL_HIDE_SNACKBAR = 'MATERIAL_HIDE_SNACKBAR';
|
18
|
+
|
19
|
+
// STORAGE
|
20
|
+
export const STORAGE_RECEIVE = 'STORAGE_RECEIVE';
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import {createDevTools} from 'redux-devtools'
|
3
|
+
import LogMonitor from 'redux-devtools-log-monitor'
|
4
|
+
import DockMonitor from 'redux-devtools-dock-monitor'
|
5
|
+
|
6
|
+
export default createDevTools(
|
7
|
+
<DockMonitor
|
8
|
+
toggleVisibilityKey="ctrl-h"
|
9
|
+
changePositionKey="ctrl-q"
|
10
|
+
>
|
11
|
+
<LogMonitor />
|
12
|
+
</DockMonitor>
|
13
|
+
)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import React, {Component, PropTypes} from 'react'
|
2
|
+
import App from 'react-toolbox/lib/app'
|
3
|
+
|
4
|
+
class Root extends Component {
|
5
|
+
render() {
|
6
|
+
return (
|
7
|
+
<App>
|
8
|
+
{this.props.children}
|
9
|
+
{
|
10
|
+
(() => {
|
11
|
+
if (process.env.NODE_ENV !== 'production') {
|
12
|
+
const DevTools = require('../dev_tools')
|
13
|
+
return <DevTools />
|
14
|
+
}
|
15
|
+
})()
|
16
|
+
}
|
17
|
+
</App>
|
18
|
+
)
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
Root.propTypes = {
|
23
|
+
children: PropTypes.element.isRequired
|
24
|
+
}
|
25
|
+
|
26
|
+
export default Root
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import ReactDOM from 'react-dom'
|
3
|
+
import {Provider} from 'react-redux'
|
4
|
+
import {Router} from 'react-router'
|
5
|
+
import {syncReduxAndRouter} from'redux-simple-router'
|
6
|
+
import {createHistory, useBasename} from 'history'
|
7
|
+
import routes from './routes'
|
8
|
+
import configureStore from './store/configureStore'
|
9
|
+
|
10
|
+
const store = configureStore()
|
11
|
+
const history = useBasename(createHistory)({basename: '/store'})
|
12
|
+
syncReduxAndRouter(history, store)
|
13
|
+
|
14
|
+
ReactDOM.render(
|
15
|
+
<Provider store={store}>
|
16
|
+
<Router history={history}>
|
17
|
+
{routes}
|
18
|
+
</Router>
|
19
|
+
</Provider>,
|
20
|
+
document.getElementById('main')
|
21
|
+
)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import * as types from '../constants/ActionTypes'
|
2
|
+
|
3
|
+
const initialState = {
|
4
|
+
username: 'foo',
|
5
|
+
password: 'pass'
|
6
|
+
}
|
7
|
+
|
8
|
+
export default function(state = initialState, action) {
|
9
|
+
switch (action.type) {
|
10
|
+
case types.CHANGE_ACCOUNT:
|
11
|
+
return {
|
12
|
+
...state,
|
13
|
+
username: action.account.username,
|
14
|
+
password: action.account.password
|
15
|
+
}
|
16
|
+
default:
|
17
|
+
return state
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import * as types from '../constants/ActionTypes'
|
2
|
+
|
3
|
+
export default function(state = 0, action) {
|
4
|
+
switch (action.type) {
|
5
|
+
case types.CHANGE_COUNTER:
|
6
|
+
return action.counter
|
7
|
+
case types.INCREMENT_COUNTER:
|
8
|
+
return state + 1
|
9
|
+
case types.DECREMENT_COUNTER:
|
10
|
+
return state - 1
|
11
|
+
default:
|
12
|
+
return state
|
13
|
+
}
|
14
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import {combineReducers} from 'redux'
|
2
|
+
import {routeReducer as routing} from 'redux-simple-router'
|
3
|
+
import account from './account'
|
4
|
+
import product from './product'
|
5
|
+
import material from './material'
|
6
|
+
import inventory from './inventory'
|
7
|
+
import counter from './counter'
|
8
|
+
|
9
|
+
const rootReducer = combineReducers({
|
10
|
+
routing,
|
11
|
+
account,
|
12
|
+
product,
|
13
|
+
material,
|
14
|
+
inventory,
|
15
|
+
counter
|
16
|
+
})
|
17
|
+
|
18
|
+
export default rootReducer
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import * as types from '../constants/ActionTypes'
|
2
|
+
|
3
|
+
const initialState = {
|
4
|
+
storages: []
|
5
|
+
}
|
6
|
+
|
7
|
+
export default function(state = initialState, action) {
|
8
|
+
switch (action.type) {
|
9
|
+
case types.STORAGE_RECEIVE:
|
10
|
+
return {
|
11
|
+
...state,
|
12
|
+
storages: action.storages
|
13
|
+
}
|
14
|
+
default:
|
15
|
+
return state
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import * as types from '../constants/ActionTypes'
|
2
|
+
|
3
|
+
const initialState = {
|
4
|
+
materials: [],
|
5
|
+
order: {},
|
6
|
+
snackbar_active: false
|
7
|
+
}
|
8
|
+
|
9
|
+
export default function(state = initialState, action) {
|
10
|
+
switch (action.type) {
|
11
|
+
case types.MATERIAL_RECEIVE:
|
12
|
+
return {
|
13
|
+
...state,
|
14
|
+
materials: action.materials
|
15
|
+
}
|
16
|
+
case types.MATERIAL_SHOW_ORDER:
|
17
|
+
return {
|
18
|
+
...state,
|
19
|
+
order: action.order,
|
20
|
+
snackbar_active: true
|
21
|
+
}
|
22
|
+
case types.MATERIAL_HIDE_SNACKBAR:
|
23
|
+
return {
|
24
|
+
...state,
|
25
|
+
snackbar_active: false
|
26
|
+
}
|
27
|
+
default:
|
28
|
+
return state
|
29
|
+
}
|
30
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import * as types from '../constants/ActionTypes'
|
2
|
+
|
3
|
+
const initialState = {
|
4
|
+
products: [],
|
5
|
+
order: {},
|
6
|
+
snackbar_active: false
|
7
|
+
}
|
8
|
+
|
9
|
+
export default function(state = initialState, action) {
|
10
|
+
switch (action.type) {
|
11
|
+
case types.PRODUCT_RECEIVE:
|
12
|
+
return {
|
13
|
+
...state,
|
14
|
+
products: action.products
|
15
|
+
}
|
16
|
+
case types.PRODUCT_SHOW_ORDER:
|
17
|
+
return {
|
18
|
+
...state,
|
19
|
+
order: action.order,
|
20
|
+
snackbar_active: true
|
21
|
+
}
|
22
|
+
case types.PRODUCT_HIDE_SNACKBAR:
|
23
|
+
return {
|
24
|
+
...state,
|
25
|
+
snackbar_active: false
|
26
|
+
}
|
27
|
+
default:
|
28
|
+
return state
|
29
|
+
}
|
30
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import {Route, IndexRoute} from 'react-router'
|
3
|
+
import {Root, Home} from '../containers'
|
4
|
+
import * as Contents from '../components/layouts/contents'
|
5
|
+
|
6
|
+
export default (
|
7
|
+
<Route component={Root}>
|
8
|
+
<Route path="/" component={Home}>
|
9
|
+
<IndexRoute component={Contents.Main} />
|
10
|
+
<Route path="/account" component={Contents.Account} />
|
11
|
+
<Route path="/products" component={Contents.Product} />
|
12
|
+
<Route path="/materials" component={Contents.Material} />
|
13
|
+
<Route path="/inventory" component={Contents.Inventory} />
|
14
|
+
<Route path="/counter" component={Contents.Counter} />
|
15
|
+
<Route path="/about" component={Contents.About} />
|
16
|
+
</Route>
|
17
|
+
</Route>
|
18
|
+
)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { createStore, applyMiddleware, compose } from 'redux'
|
2
|
+
import { persistState } from 'redux-devtools'
|
3
|
+
import thunk from 'redux-thunk'
|
4
|
+
import rootReducer from '../reducers'
|
5
|
+
import DevTools from '../containers/dev_tools'
|
6
|
+
|
7
|
+
const finalCreateStore = compose(
|
8
|
+
applyMiddleware(thunk),
|
9
|
+
DevTools.instrument(),
|
10
|
+
persistState(
|
11
|
+
window.location.href.match(
|
12
|
+
/[?&]debug_session=([^&]+)\b/
|
13
|
+
)
|
14
|
+
)
|
15
|
+
)(createStore)
|
16
|
+
|
17
|
+
export default function configureStore(initialState) {
|
18
|
+
const store = finalCreateStore(rootReducer, initialState)
|
19
|
+
|
20
|
+
if (module.hot) {
|
21
|
+
module.hot.accept('../reducers', () =>
|
22
|
+
store.replaceReducer(require('../reducers'))
|
23
|
+
)
|
24
|
+
}
|
25
|
+
|
26
|
+
return store
|
27
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import {createStore, applyMiddleware, compose} from 'redux'
|
2
|
+
import thunk from 'redux-thunk'
|
3
|
+
import rootReducer from '../reducers'
|
4
|
+
|
5
|
+
const finalCreateStore = compose(
|
6
|
+
applyMiddleware(thunk)
|
7
|
+
)(createStore)
|
8
|
+
|
9
|
+
export default function configureStore(initialState) {
|
10
|
+
return finalCreateStore(rootReducer, initialState)
|
11
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
$color-primary: $palette-blue-500 !default;
|
2
|
+
$color-primary-dark: $palette-blue-700 !default;
|
3
|
+
$color-primary-light: $palette-blue-500 !default;
|
4
|
+
$color-accent: $palette-pink-a200;
|
5
|
+
$color-accent-dark: $palette-pink-700;
|
6
|
+
$color-primary-contrast: $color-dark-contrast;
|
7
|
+
$color-accent-contrast: $color-dark-contrast;
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Redux/React App</title>
|
6
|
+
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
7
|
+
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
|
8
|
+
<link href="http://localhost:4000/assets/stylesheets/bouquet/store/application.css" rel="stylesheet" type="text/css" />
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div id="main"></div>
|
12
|
+
<script src="http://localhost:4000/assets/javascripts/bouquet/store/application.js"></script>
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
'use strict'
|
2
|
+
|
3
|
+
const electron = require('electron')
|
4
|
+
const app = electron.app
|
5
|
+
const BrowserWindow = electron.BrowserWindow
|
6
|
+
|
7
|
+
let mainWindow
|
8
|
+
|
9
|
+
function createWindow () {
|
10
|
+
mainWindow = new BrowserWindow({width: 800, height: 600})
|
11
|
+
mainWindow.loadURL('file://' + __dirname + '/index.html')
|
12
|
+
mainWindow.webContents.openDevTools()
|
13
|
+
mainWindow.on('closed', function() {
|
14
|
+
mainWindow = null
|
15
|
+
})
|
16
|
+
}
|
17
|
+
|
18
|
+
app.on('ready', createWindow)
|
19
|
+
|
20
|
+
app.on('window-all-closed', function () {
|
21
|
+
if (process.platform !== 'darwin') {
|
22
|
+
app.quit()
|
23
|
+
}
|
24
|
+
})
|
25
|
+
|
26
|
+
app.on('activate', function () {
|
27
|
+
if (mainWindow === null) {
|
28
|
+
createWindow()
|
29
|
+
}
|
30
|
+
})
|
@@ -0,0 +1,56 @@
|
|
1
|
+
{
|
2
|
+
"name": "static",
|
3
|
+
"version": "0.1.0",
|
4
|
+
"scripts": {
|
5
|
+
"start": "NODE_ENV=development node server.js",
|
6
|
+
"build": "NODE_ENV=production webpack -p --config webpack.production.js",
|
7
|
+
"elect": "electron main.js"
|
8
|
+
},
|
9
|
+
"dependencies": {
|
10
|
+
"babel-core": "^5.0.0",
|
11
|
+
"es6-promise": "^3.0.2",
|
12
|
+
"history": "^1.17.0",
|
13
|
+
"isomorphic-fetch": "^2.2.1",
|
14
|
+
"lodash": "^4.0.0",
|
15
|
+
"react": "^0.14.0",
|
16
|
+
"react-dom": "^0.14.0",
|
17
|
+
"react-redux": "^4.0.0",
|
18
|
+
"react-router": "^1.0.3",
|
19
|
+
"react-toolbox": "^0.14.0",
|
20
|
+
"redux": "^3.0.4",
|
21
|
+
"redux-simple-router": "^1.0.2",
|
22
|
+
"redux-thunk": "^1.0.0",
|
23
|
+
"whatwg-fetch": "^0.10.1"
|
24
|
+
},
|
25
|
+
"devDependencies": {
|
26
|
+
"autoprefixer": "^6.2.3",
|
27
|
+
"babel-core": "^5.0.0",
|
28
|
+
"babel-loader": "^5.0.0",
|
29
|
+
"babel-plugin-react-display-name": "^2.0.0",
|
30
|
+
"babel-plugin-react-transform": "^1.1.1",
|
31
|
+
"classnames": "^2.2.3",
|
32
|
+
"core-js": "^2.0.3",
|
33
|
+
"css-loader": "^0.23.1",
|
34
|
+
"cssnext-loader": "^1.0.1",
|
35
|
+
"electron-prebuilt": "^0.36.3",
|
36
|
+
"express": "^4.13.3",
|
37
|
+
"extract-text-webpack-plugin": "^1.0.1",
|
38
|
+
"node-sass": "^3.4.2",
|
39
|
+
"normalize.css": "^3.0.3",
|
40
|
+
"path": "^0.12.7",
|
41
|
+
"postcss-loader": "^0.8.0",
|
42
|
+
"react-addons-css-transition-group": "^0.14.6",
|
43
|
+
"react-transform-catch-errors": "^1.0.1",
|
44
|
+
"react-transform-hmr": "^1.0.1",
|
45
|
+
"redbox-react": "^1.2.0",
|
46
|
+
"redux-devtools": "^3.0.1",
|
47
|
+
"redux-devtools-dock-monitor": "^1.0.1",
|
48
|
+
"redux-devtools-log-monitor": "^1.0.2",
|
49
|
+
"sass-loader": "^3.1.2",
|
50
|
+
"style-loader": "^0.13.0",
|
51
|
+
"toolbox-loader": "0.0.3",
|
52
|
+
"webpack": "^1.12.11",
|
53
|
+
"webpack-dev-middleware": "^1.4.0",
|
54
|
+
"webpack-hot-middleware": "^2.6.0"
|
55
|
+
}
|
56
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
var path = require('path')
|
2
|
+
var webpack = require('webpack')
|
3
|
+
var express = require('express')
|
4
|
+
var config = require('./webpack.config')
|
5
|
+
|
6
|
+
var app = express()
|
7
|
+
var compiler = webpack(config)
|
8
|
+
|
9
|
+
app.use(require('webpack-dev-middleware')(compiler, {
|
10
|
+
noInfo: true,
|
11
|
+
publicPath: config.output.publicPath,
|
12
|
+
historyApiFallback: true
|
13
|
+
}))
|
14
|
+
|
15
|
+
app.use(require('webpack-hot-middleware')(compiler))
|
16
|
+
|
17
|
+
app.get('*', function(req, res) {
|
18
|
+
res.sendFile(path.join(__dirname, 'index.html'))
|
19
|
+
})
|
20
|
+
|
21
|
+
app.listen(4000, 'localhost', function (err, result) {
|
22
|
+
if (err) {
|
23
|
+
console.log(err)
|
24
|
+
}
|
25
|
+
|
26
|
+
console.log('Listening at localhost:4000')
|
27
|
+
})
|
@@ -0,0 +1,50 @@
|
|
1
|
+
var path = require('path')
|
2
|
+
var webpack = require('webpack')
|
3
|
+
var ExtractTextPlugin = require('extract-text-webpack-plugin')
|
4
|
+
var autoprefixer = require('autoprefixer')
|
5
|
+
|
6
|
+
module.exports = {
|
7
|
+
devtool: 'cheap-module-eval-source-map',
|
8
|
+
entry: [
|
9
|
+
'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000',
|
10
|
+
'./app/index.js'
|
11
|
+
],
|
12
|
+
output: {
|
13
|
+
path: __dirname + '/assets/',
|
14
|
+
publicPath: 'http://localhost:4000/assets/',
|
15
|
+
filename: 'javascripts/bouquet/store/application.js',
|
16
|
+
hot: true
|
17
|
+
},
|
18
|
+
plugins: [
|
19
|
+
new webpack.optimize.OccurenceOrderPlugin(),
|
20
|
+
new webpack.HotModuleReplacementPlugin(),
|
21
|
+
new webpack.NoErrorsPlugin(),
|
22
|
+
new webpack.DefinePlugin({
|
23
|
+
'__DEV__': true,
|
24
|
+
'process.env': {
|
25
|
+
'NODE_ENV': JSON.stringify('development')
|
26
|
+
}
|
27
|
+
}),
|
28
|
+
new ExtractTextPlugin('stylesheets/bouquet/store/application.css')
|
29
|
+
],
|
30
|
+
module: {
|
31
|
+
loaders: [
|
32
|
+
{
|
33
|
+
test: /(\.js|\.jsx)$/,
|
34
|
+
exclude: /(node_modules)/,
|
35
|
+
loaders: ['babel']
|
36
|
+
},
|
37
|
+
{
|
38
|
+
test: /(\.scss|\.css)$/,
|
39
|
+
loader: ExtractTextPlugin.extract('style', 'css?sourceMap&modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!postcss!sass?sourceMap!toolbox')
|
40
|
+
}
|
41
|
+
]
|
42
|
+
},
|
43
|
+
toolbox: {
|
44
|
+
theme: path.join(__dirname, 'app/toolbox-theme.scss')
|
45
|
+
},
|
46
|
+
postcss: [autoprefixer],
|
47
|
+
resolve: {
|
48
|
+
extensions: ['', '.js', '.jsx', '.json', '.scss']
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
var path = require('path')
|
2
|
+
var webpack = require('webpack')
|
3
|
+
var ExtractTextPlugin = require('extract-text-webpack-plugin')
|
4
|
+
|
5
|
+
module.exports = {
|
6
|
+
entry: [
|
7
|
+
'./app/index.js'
|
8
|
+
],
|
9
|
+
output: {
|
10
|
+
path: __dirname + '../../../app/assets/',
|
11
|
+
publicPath: '/static/',
|
12
|
+
filename: 'javascripts/bouquet/store/bundle.js',
|
13
|
+
},
|
14
|
+
plugins: [
|
15
|
+
new webpack.NoErrorsPlugin(),
|
16
|
+
new webpack.DefinePlugin({
|
17
|
+
'__DEV__': false,
|
18
|
+
'process.env': {
|
19
|
+
'NODE_ENV': JSON.stringify('production')
|
20
|
+
}
|
21
|
+
}),
|
22
|
+
new ExtractTextPlugin('stylesheets/bouquet/store/bundle.css')
|
23
|
+
],
|
24
|
+
module: {
|
25
|
+
loaders: [
|
26
|
+
{
|
27
|
+
test: /(\.js|\.jsx)$/,
|
28
|
+
exclude: /(node_modules)/,
|
29
|
+
loaders: ['babel']
|
30
|
+
},
|
31
|
+
{
|
32
|
+
test: /(\.scss|\.css)$/,
|
33
|
+
loader: ExtractTextPlugin.extract('style', 'css?sourceMap&modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!postcss!sass?sourceMap!toolbox')
|
34
|
+
}
|
35
|
+
]
|
36
|
+
},
|
37
|
+
toolbox: {
|
38
|
+
theme: path.join(__dirname, 'app/toolbox-theme.scss')
|
39
|
+
},
|
40
|
+
resolve: {
|
41
|
+
extensions: ['', '.js', '.jsx', '.json', '.scss']
|
42
|
+
}
|
43
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
module Bouquet
|
4
|
+
RSpec.describe Store::MainController, :type => :controller do
|
5
|
+
routes { Bouquet::Store::Engine.routes }
|
6
|
+
|
7
|
+
describe "GET index" do
|
8
|
+
it "returns http success" do
|
9
|
+
get :index
|
10
|
+
expect(response).to have_http_status(:success)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|