Merge branch 'master' of uflows.com:/var/git/qwaiter
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
# git config --global core.excludesfile ~/.gitignore_global
|
# git config --global core.excludesfile ~/.gitignore_global
|
||||||
|
|
||||||
# Ignore bundler config
|
# Ignore bundler config
|
||||||
/.bundle
|
.bundle
|
||||||
|
|
||||||
# Ignore the default SQLite database.
|
# Ignore the default SQLite database.
|
||||||
/db/*.sqlite3
|
/db/*.sqlite3
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
gem 'rails', '4.2.0.rc2'
|
gem 'rails', '4.2.0'
|
||||||
gem 'rack-cors', :require => 'rack/cors'
|
gem 'rack-cors', :require => 'rack/cors'
|
||||||
|
|
||||||
# Bundle edge Rails instead:
|
# Bundle edge Rails instead:
|
||||||
@@ -20,12 +20,12 @@ group :assets do
|
|||||||
gem 'ember-source', '1.8.1'#, github: 'emberjs/ember.js', require: 'ember/source'
|
gem 'ember-source', '1.8.1'#, github: 'emberjs/ember.js', require: 'ember/source'
|
||||||
gem 'ember-rails'
|
gem 'ember-rails'
|
||||||
gem 'ember_script-rails', github: 'ghempton/ember-script-rails'
|
gem 'ember_script-rails', github: 'ghempton/ember-script-rails'
|
||||||
gem 'sass-rails', '5.0.0.beta1'
|
gem 'sass-rails', '~> 5.0.0'
|
||||||
gem 'coffee-rails' #, '~> 3.2.1'
|
gem 'coffee-rails' #, '~> 3.2.1'
|
||||||
#gem 'twitter-bootstrap-rails'
|
#gem 'twitter-bootstrap-rails'
|
||||||
# Only for mobile assets precompile, not used in this project
|
# Only for mobile assets precompile, not used in this project
|
||||||
gem 'bootstrap-sass', '~>2.3'
|
#gem 'bootstrap-sass', '~>2.3'
|
||||||
gem 'bourbon', '4.0.2'
|
gem 'bourbon' #, '4.0.2'
|
||||||
#gem 'compass-rails'
|
#gem 'compass-rails'
|
||||||
gem 'js-routes'
|
gem 'js-routes'
|
||||||
gem "font-awesome-rails"
|
gem "font-awesome-rails"
|
||||||
@@ -35,7 +35,9 @@ group :assets do
|
|||||||
#gem 'therubyracer', :platforms => :ruby
|
#gem 'therubyracer', :platforms => :ruby
|
||||||
|
|
||||||
gem 'uglifier', '>= 1.0.3'
|
gem 'uglifier', '>= 1.0.3'
|
||||||
|
#gem "emblem-source", github: "machty/emblem.js"
|
||||||
gem 'emblem-rails'
|
gem 'emblem-rails'
|
||||||
|
gem 'ember-validations-rails'
|
||||||
|
|
||||||
gem 'foundation-rails' #, github: 'bterkuile/foundation-rails'
|
gem 'foundation-rails' #, github: 'bterkuile/foundation-rails'
|
||||||
#gem 'mustache' #, :require => 'mustache/railtie'
|
#gem 'mustache' #, :require => 'mustache/railtie'
|
||||||
@@ -96,7 +98,6 @@ group :development do
|
|||||||
gem 'spring'
|
gem 'spring'
|
||||||
gem 'spring-commands-rspec'
|
gem 'spring-commands-rspec'
|
||||||
gem 'web-console', '~> 2.0.0'
|
gem 'web-console', '~> 2.0.0'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
|
|||||||
+111
-110
@@ -1,6 +1,6 @@
|
|||||||
GIT
|
GIT
|
||||||
remote: git://github.com/bterkuile/cmtool.git
|
remote: git://github.com/bterkuile/cmtool.git
|
||||||
revision: 323e68bcad3b21cd580d3aff5771d99a805fc985
|
revision: e2f8459960eb4eff12365c6ebd60278d79eaab8f
|
||||||
specs:
|
specs:
|
||||||
cmtool (1.0.0)
|
cmtool (1.0.0)
|
||||||
bourbon
|
bourbon
|
||||||
@@ -28,7 +28,7 @@ GIT
|
|||||||
|
|
||||||
GIT
|
GIT
|
||||||
remote: git://github.com/bterkuile/simply_stored.git
|
remote: git://github.com/bterkuile/simply_stored.git
|
||||||
revision: 8f00644f7a8e82dba057c01f86dbb8bc3154d5d8
|
revision: 652caf8c2cfe4f828477f8b76d0cd201851cd53d
|
||||||
specs:
|
specs:
|
||||||
simply_stored (1.0.0)
|
simply_stored (1.0.0)
|
||||||
activesupport
|
activesupport
|
||||||
@@ -59,60 +59,58 @@ GIT
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actionmailer (4.2.0.rc2)
|
actionmailer (4.2.0)
|
||||||
actionpack (= 4.2.0.rc2)
|
actionpack (= 4.2.0)
|
||||||
actionview (= 4.2.0.rc2)
|
actionview (= 4.2.0)
|
||||||
activejob (= 4.2.0.rc2)
|
activejob (= 4.2.0)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||||
actionpack (4.2.0.rc2)
|
actionpack (4.2.0)
|
||||||
actionview (= 4.2.0.rc2)
|
actionview (= 4.2.0)
|
||||||
activesupport (= 4.2.0.rc2)
|
activesupport (= 4.2.0)
|
||||||
rack (~> 1.6.0.beta2)
|
rack (~> 1.6.0)
|
||||||
rack-test (~> 0.6.2)
|
rack-test (~> 0.6.2)
|
||||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
||||||
actionview (4.2.0.rc2)
|
actionview (4.2.0)
|
||||||
activesupport (= 4.2.0.rc2)
|
activesupport (= 4.2.0)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubis (~> 2.7.0)
|
erubis (~> 2.7.0)
|
||||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
||||||
active_decorator (0.3.4)
|
active_decorator (0.4.0)
|
||||||
active_model_serializers (0.9.0)
|
active_model_serializers (0.9.0)
|
||||||
activemodel (>= 3.2)
|
activemodel (>= 3.2)
|
||||||
activejob (4.2.0.rc2)
|
activejob (4.2.0)
|
||||||
activesupport (= 4.2.0.rc2)
|
activesupport (= 4.2.0)
|
||||||
globalid (>= 0.3.0)
|
globalid (>= 0.3.0)
|
||||||
activemodel (4.2.0.rc2)
|
activemodel (4.2.0)
|
||||||
activesupport (= 4.2.0.rc2)
|
activesupport (= 4.2.0)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
activerecord (4.2.0.rc2)
|
activerecord (4.2.0)
|
||||||
activemodel (= 4.2.0.rc2)
|
activemodel (= 4.2.0)
|
||||||
activesupport (= 4.2.0.rc2)
|
activesupport (= 4.2.0)
|
||||||
arel (~> 6.0)
|
arel (~> 6.0)
|
||||||
activesupport (4.2.0.rc2)
|
activesupport (4.2.0)
|
||||||
i18n (>= 0.7.0.beta1, < 0.8)
|
i18n (~> 0.7)
|
||||||
json (~> 1.7, >= 1.7.7)
|
json (~> 1.7, >= 1.7.7)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.3, >= 0.3.4)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
addressable (2.3.6)
|
addressable (2.3.7)
|
||||||
arel (6.0.0)
|
arel (6.0.0)
|
||||||
barber (0.5.0)
|
barber (0.6.0)
|
||||||
ember-source
|
ember-source
|
||||||
execjs
|
execjs
|
||||||
handlebars-source (>= 1.0.0.rc.4)
|
handlebars-source (>= 1.0.0.rc.4)
|
||||||
barber-emblem (0.1.1)
|
barber-emblem (0.1.2)
|
||||||
barber (>= 0.4.1)
|
barber (>= 0.4.1)
|
||||||
emblem-source
|
emblem-source
|
||||||
bcrypt (3.1.9)
|
bcrypt (3.1.10)
|
||||||
binding_of_caller (0.7.2)
|
binding_of_caller (0.7.2)
|
||||||
debug_inspector (>= 0.0.1)
|
debug_inspector (>= 0.0.1)
|
||||||
bootstrap-sass (2.3.2.2)
|
bourbon (4.2.0)
|
||||||
sass (~> 3.2)
|
sass (~> 3.4)
|
||||||
bourbon (4.0.2)
|
|
||||||
sass (~> 3.3)
|
|
||||||
thor
|
thor
|
||||||
builder (3.2.2)
|
builder (3.2.2)
|
||||||
capistrano (3.3.5)
|
capistrano (3.3.5)
|
||||||
@@ -120,7 +118,7 @@ GEM
|
|||||||
i18n
|
i18n
|
||||||
rake (>= 10.0.0)
|
rake (>= 10.0.0)
|
||||||
sshkit (~> 1.3)
|
sshkit (~> 1.3)
|
||||||
capistrano-bundler (1.1.3)
|
capistrano-bundler (1.1.4)
|
||||||
capistrano (~> 3.1)
|
capistrano (~> 3.1)
|
||||||
sshkit (~> 1.2)
|
sshkit (~> 1.2)
|
||||||
capistrano-local-precompile (0.0.2)
|
capistrano-local-precompile (0.0.2)
|
||||||
@@ -138,7 +136,7 @@ GEM
|
|||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
rack-test (>= 0.5.4)
|
rack-test (>= 0.5.4)
|
||||||
xpath (~> 2.0)
|
xpath (~> 2.0)
|
||||||
capybara-screenshot (1.0.3)
|
capybara-screenshot (1.0.5)
|
||||||
capybara (>= 1.0, < 3)
|
capybara (>= 1.0, < 3)
|
||||||
colored
|
colored
|
||||||
launchy
|
launchy
|
||||||
@@ -155,7 +153,7 @@ GEM
|
|||||||
coffee-script (2.3.0)
|
coffee-script (2.3.0)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.8.0)
|
coffee-script-source (1.9.0)
|
||||||
colored (1.2)
|
colored (1.2)
|
||||||
colorize (0.7.5)
|
colorize (0.7.5)
|
||||||
cookiejar (0.3.2)
|
cookiejar (0.3.2)
|
||||||
@@ -178,80 +176,82 @@ GEM
|
|||||||
eventmachine (>= 1.0.0.beta.4)
|
eventmachine (>= 1.0.0.beta.4)
|
||||||
email_validator (1.5.0)
|
email_validator (1.5.0)
|
||||||
activemodel
|
activemodel
|
||||||
ember-data-source (1.0.0.beta.12)
|
ember-data-source (1.0.0.beta.14.1)
|
||||||
ember-source
|
ember-source (~> 1.8)
|
||||||
ember-rails (0.15.1)
|
ember-rails (0.16.3)
|
||||||
active_model_serializers
|
active_model_serializers
|
||||||
barber (>= 0.4.1)
|
barber (>= 0.6.0)
|
||||||
ember-data-source (>= 1.0.0.beta.5)
|
ember-data-source (>= 1.0.0.beta.5)
|
||||||
ember-source (>= 1.1.0)
|
ember-source (>= 1.1.0)
|
||||||
execjs (>= 1.2)
|
execjs (>= 1.2)
|
||||||
handlebars-source (> 1.0.0)
|
handlebars-source (> 1.0.0, < 3)
|
||||||
jquery-rails (>= 1.0.17)
|
jquery-rails (>= 1.0.17)
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
ember-source (1.8.1)
|
ember-source (1.8.1)
|
||||||
handlebars-source (~> 1.0)
|
handlebars-source (~> 1.0)
|
||||||
|
ember-validations-rails (1.0.0)
|
||||||
|
railties
|
||||||
ember_script (0.0.5)
|
ember_script (0.0.5)
|
||||||
ember_script-source (>= 0.0.2)
|
ember_script-source (>= 0.0.2)
|
||||||
execjs
|
execjs
|
||||||
tilt
|
tilt
|
||||||
ember_script-source (0.0.14)
|
ember_script-source (0.0.14)
|
||||||
emblem-rails (0.2.1)
|
emblem-rails (0.2.2)
|
||||||
barber-emblem (~> 0.1.1)
|
barber-emblem (~> 0.1.1)
|
||||||
ember-rails (>= 0.14.0)
|
ember-rails (>= 0.14.0)
|
||||||
emblem-source (0.3.17)
|
emblem-source (0.3.18)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
eventmachine (1.0.4)
|
eventmachine (1.0.7)
|
||||||
execjs (2.2.2)
|
execjs (2.3.0)
|
||||||
factory_girl (4.5.0)
|
factory_girl (4.5.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
factory_girl_rails (4.5.0)
|
factory_girl_rails (4.5.0)
|
||||||
factory_girl (~> 4.5.0)
|
factory_girl (~> 4.5.0)
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
faraday (0.9.0)
|
faraday (0.9.1)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
faye (1.0.3)
|
faye (1.1.0)
|
||||||
cookiejar (>= 0.3.0)
|
cookiejar (>= 0.3.0)
|
||||||
em-http-request (>= 0.3.0)
|
em-http-request (>= 0.3.0)
|
||||||
eventmachine (>= 0.12.0)
|
eventmachine (>= 0.12.0)
|
||||||
faye-websocket (>= 0.7.0)
|
faye-websocket (>= 0.9.1)
|
||||||
multi_json (>= 1.0.0)
|
multi_json (>= 1.0.0)
|
||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
websocket-driver (>= 0.3.0)
|
websocket-driver (>= 0.5.1)
|
||||||
faye-websocket (0.9.2)
|
faye-websocket (0.9.2)
|
||||||
eventmachine (>= 0.12.0)
|
eventmachine (>= 0.12.0)
|
||||||
websocket-driver (>= 0.5.1)
|
websocket-driver (>= 0.5.1)
|
||||||
ffi (1.9.6)
|
ffi (1.9.6)
|
||||||
font-awesome-rails (4.2.0.0)
|
font-awesome-rails (4.3.0.0)
|
||||||
railties (>= 3.2, < 5.0)
|
railties (>= 3.2, < 5.0)
|
||||||
foundation-rails (5.5.0.0)
|
foundation-rails (5.5.1.0)
|
||||||
railties (>= 3.1.0)
|
railties (>= 3.1.0)
|
||||||
sass (>= 3.2.0, < 3.4)
|
sass (>= 3.3.0, < 3.5)
|
||||||
fuubar (2.0.0)
|
fuubar (2.0.0)
|
||||||
rspec (~> 3.0)
|
rspec (~> 3.0)
|
||||||
ruby-progressbar (~> 1.4)
|
ruby-progressbar (~> 1.4)
|
||||||
gherkin (2.12.2)
|
gherkin (2.12.2)
|
||||||
multi_json (~> 1.3)
|
multi_json (~> 1.3)
|
||||||
globalid (0.3.0)
|
globalid (0.3.3)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
handlebars-source (1.3.0)
|
handlebars-source (1.3.0)
|
||||||
hashie (3.3.2)
|
hashie (3.4.0)
|
||||||
hike (1.2.3)
|
hike (1.2.3)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
i18n (0.7.0)
|
i18n (0.7.0)
|
||||||
iso_country_codes (0.6.1)
|
iso_country_codes (0.6.1)
|
||||||
jquery-rails (4.0.1)
|
jquery-rails (4.0.3)
|
||||||
rails-dom-testing (~> 1.0)
|
rails-dom-testing (~> 1.0)
|
||||||
railties (>= 4.2.0.beta)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
jquery-ui-rails (5.0.3)
|
jquery-ui-rails (5.0.3)
|
||||||
railties (>= 3.2.16)
|
railties (>= 3.2.16)
|
||||||
js-routes (0.9.9)
|
js-routes (1.0.0)
|
||||||
railties (>= 3.2)
|
railties (>= 3.2)
|
||||||
sprockets-rails
|
sprockets-rails
|
||||||
json (1.8.2)
|
json (1.8.2)
|
||||||
jwt (1.2.0)
|
jwt (1.2.1)
|
||||||
kaminari (0.16.1)
|
kaminari (0.16.3)
|
||||||
actionpack (>= 3.0.0)
|
actionpack (>= 3.0.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
launchy (2.4.3)
|
launchy (2.4.3)
|
||||||
@@ -264,7 +264,7 @@ GEM
|
|||||||
mime-types (>= 1.16, < 3)
|
mime-types (>= 1.16, < 3)
|
||||||
method_source (0.8.2)
|
method_source (0.8.2)
|
||||||
mime-types (1.25.1)
|
mime-types (1.25.1)
|
||||||
mini_magick (4.0.1)
|
mini_magick (4.0.4)
|
||||||
mini_portile (0.6.2)
|
mini_portile (0.6.2)
|
||||||
minitest (5.5.1)
|
minitest (5.5.1)
|
||||||
multi_json (1.10.1)
|
multi_json (1.10.1)
|
||||||
@@ -272,8 +272,8 @@ GEM
|
|||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
net-scp (1.2.1)
|
net-scp (1.2.1)
|
||||||
net-ssh (>= 2.6.5)
|
net-ssh (>= 2.6.5)
|
||||||
net-ssh (2.9.1)
|
net-ssh (2.9.2)
|
||||||
nokogiri (1.6.5)
|
nokogiri (1.6.6.2)
|
||||||
mini_portile (~> 0.6.0)
|
mini_portile (~> 0.6.0)
|
||||||
oauth2 (1.0.0)
|
oauth2 (1.0.0)
|
||||||
faraday (>= 0.8, < 0.10)
|
faraday (>= 0.8, < 0.10)
|
||||||
@@ -304,24 +304,24 @@ GEM
|
|||||||
coderay (~> 1.1.0)
|
coderay (~> 1.1.0)
|
||||||
method_source (~> 0.8.1)
|
method_source (~> 0.8.1)
|
||||||
slop (~> 3.4)
|
slop (~> 3.4)
|
||||||
pry-rails (0.3.2)
|
pry-rails (0.3.3)
|
||||||
pry (>= 0.9.10)
|
pry (>= 0.9.10)
|
||||||
quiet_assets (1.0.3)
|
quiet_assets (1.1.0)
|
||||||
railties (>= 3.1, < 5.0)
|
railties (>= 3.1, < 5.0)
|
||||||
rack (1.6.0)
|
rack (1.6.0)
|
||||||
rack-cors (0.3.0)
|
rack-cors (0.3.1)
|
||||||
rack-test (0.6.3)
|
rack-test (0.6.3)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rails (4.2.0.rc2)
|
rails (4.2.0)
|
||||||
actionmailer (= 4.2.0.rc2)
|
actionmailer (= 4.2.0)
|
||||||
actionpack (= 4.2.0.rc2)
|
actionpack (= 4.2.0)
|
||||||
actionview (= 4.2.0.rc2)
|
actionview (= 4.2.0)
|
||||||
activejob (= 4.2.0.rc2)
|
activejob (= 4.2.0)
|
||||||
activemodel (= 4.2.0.rc2)
|
activemodel (= 4.2.0)
|
||||||
activerecord (= 4.2.0.rc2)
|
activerecord (= 4.2.0)
|
||||||
activesupport (= 4.2.0.rc2)
|
activesupport (= 4.2.0)
|
||||||
bundler (>= 1.3.0, < 2.0)
|
bundler (>= 1.3.0, < 2.0)
|
||||||
railties (= 4.2.0.rc2)
|
railties (= 4.2.0)
|
||||||
sprockets-rails
|
sprockets-rails
|
||||||
rails-deprecated_sanitizer (1.0.3)
|
rails-deprecated_sanitizer (1.0.3)
|
||||||
activesupport (>= 4.2.0.alpha)
|
activesupport (>= 4.2.0.alpha)
|
||||||
@@ -331,52 +331,53 @@ GEM
|
|||||||
rails-deprecated_sanitizer (>= 1.0.1)
|
rails-deprecated_sanitizer (>= 1.0.1)
|
||||||
rails-html-sanitizer (1.0.1)
|
rails-html-sanitizer (1.0.1)
|
||||||
loofah (~> 2.0)
|
loofah (~> 2.0)
|
||||||
railties (4.2.0.rc2)
|
railties (4.2.0)
|
||||||
actionpack (= 4.2.0.rc2)
|
actionpack (= 4.2.0)
|
||||||
activesupport (= 4.2.0.rc2)
|
activesupport (= 4.2.0)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
rake (10.4.2)
|
rake (10.4.2)
|
||||||
rdoc (4.2.0)
|
rdoc (4.2.0)
|
||||||
json (~> 1.4)
|
responders (2.1.0)
|
||||||
responders (2.0.2)
|
railties (>= 4.2.0, < 5)
|
||||||
railties (>= 4.2.0.alpha, < 5)
|
|
||||||
rest-client (1.6.8)
|
rest-client (1.6.8)
|
||||||
mime-types (~> 1.16)
|
mime-types (~> 1.16)
|
||||||
rdoc (>= 2.4.2)
|
rdoc (>= 2.4.2)
|
||||||
rqrcode (0.4.2)
|
rqrcode (0.4.2)
|
||||||
rspec (3.1.0)
|
rspec (3.2.0)
|
||||||
rspec-core (~> 3.1.0)
|
rspec-core (~> 3.2.0)
|
||||||
rspec-expectations (~> 3.1.0)
|
rspec-expectations (~> 3.2.0)
|
||||||
rspec-mocks (~> 3.1.0)
|
rspec-mocks (~> 3.2.0)
|
||||||
rspec-core (3.1.7)
|
rspec-core (3.2.0)
|
||||||
rspec-support (~> 3.1.0)
|
rspec-support (~> 3.2.0)
|
||||||
rspec-expectations (3.1.2)
|
rspec-expectations (3.2.0)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.1.0)
|
rspec-support (~> 3.2.0)
|
||||||
rspec-its (1.1.0)
|
rspec-its (1.1.0)
|
||||||
rspec-core (>= 3.0.0)
|
rspec-core (>= 3.0.0)
|
||||||
rspec-expectations (>= 3.0.0)
|
rspec-expectations (>= 3.0.0)
|
||||||
rspec-mocks (3.1.3)
|
rspec-mocks (3.2.0)
|
||||||
rspec-support (~> 3.1.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-rails (3.1.0)
|
rspec-support (~> 3.2.0)
|
||||||
actionpack (>= 3.0)
|
rspec-rails (3.2.0)
|
||||||
activesupport (>= 3.0)
|
actionpack (>= 3.0, <= 4.2)
|
||||||
railties (>= 3.0)
|
activesupport (>= 3.0, <= 4.2)
|
||||||
rspec-core (~> 3.1.0)
|
railties (>= 3.0, <= 4.2)
|
||||||
rspec-expectations (~> 3.1.0)
|
rspec-core (~> 3.2.0)
|
||||||
rspec-mocks (~> 3.1.0)
|
rspec-expectations (~> 3.2.0)
|
||||||
rspec-support (~> 3.1.0)
|
rspec-mocks (~> 3.2.0)
|
||||||
rspec-support (3.1.2)
|
rspec-support (~> 3.2.0)
|
||||||
|
rspec-support (3.2.1)
|
||||||
ruby-progressbar (1.7.1)
|
ruby-progressbar (1.7.1)
|
||||||
rubyzip (1.1.6)
|
rubyzip (1.1.7)
|
||||||
safe_yaml (1.0.4)
|
safe_yaml (1.0.4)
|
||||||
sass (3.3.14)
|
sass (3.4.11)
|
||||||
sass-rails (5.0.0.beta1)
|
sass-rails (5.0.1)
|
||||||
railties (>= 4.0.0, < 5.0)
|
railties (>= 4.0.0, < 5.0)
|
||||||
sass (~> 3.2)
|
sass (~> 3.1)
|
||||||
sprockets (~> 2.12)
|
sprockets (>= 2.8, < 4.0)
|
||||||
sprockets-rails (>= 2.0, < 4.0)
|
sprockets-rails (>= 2.0, < 4.0)
|
||||||
|
tilt (~> 1.1)
|
||||||
selenium-webdriver (2.44.0)
|
selenium-webdriver (2.44.0)
|
||||||
childprocess (~> 0.5)
|
childprocess (~> 0.5)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
@@ -387,7 +388,7 @@ GEM
|
|||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
simplecov-html (~> 0.8.0)
|
simplecov-html (~> 0.8.0)
|
||||||
simplecov-html (0.8.0)
|
simplecov-html (0.8.0)
|
||||||
slim (3.0.1)
|
slim (3.0.2)
|
||||||
temple (~> 0.7.3)
|
temple (~> 0.7.3)
|
||||||
tilt (>= 1.3.3, < 2.1)
|
tilt (>= 1.3.3, < 2.1)
|
||||||
slim-rails (3.0.1)
|
slim-rails (3.0.1)
|
||||||
@@ -397,7 +398,7 @@ GEM
|
|||||||
railties (>= 3.1, < 5.0)
|
railties (>= 3.1, < 5.0)
|
||||||
slim (~> 3.0)
|
slim (~> 3.0)
|
||||||
slop (3.6.0)
|
slop (3.6.0)
|
||||||
spring (1.2.0)
|
spring (1.3.1)
|
||||||
spring-commands-rspec (1.0.4)
|
spring-commands-rspec (1.0.4)
|
||||||
spring (>= 0.9.1)
|
spring (>= 0.9.1)
|
||||||
sprockets (2.12.3)
|
sprockets (2.12.3)
|
||||||
@@ -405,7 +406,7 @@ GEM
|
|||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
rack (~> 1.0)
|
rack (~> 1.0)
|
||||||
tilt (~> 1.1, != 1.3.0)
|
tilt (~> 1.1, != 1.3.0)
|
||||||
sprockets-rails (2.2.2)
|
sprockets-rails (2.2.4)
|
||||||
actionpack (>= 3.0)
|
actionpack (>= 3.0)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
sprockets (>= 2.8, < 4.0)
|
sprockets (>= 2.8, < 4.0)
|
||||||
@@ -424,7 +425,7 @@ GEM
|
|||||||
rspec (>= 2.14.0, < 4.0)
|
rspec (>= 2.14.0, < 4.0)
|
||||||
tzinfo (1.2.2)
|
tzinfo (1.2.2)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
uglifier (2.6.0)
|
uglifier (2.7.0)
|
||||||
execjs (>= 0.3.0)
|
execjs (>= 0.3.0)
|
||||||
json (>= 1.8.0)
|
json (>= 1.8.0)
|
||||||
warden (1.2.3)
|
warden (1.2.3)
|
||||||
@@ -450,8 +451,7 @@ PLATFORMS
|
|||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
active_decorator
|
active_decorator
|
||||||
active_model_serializers (= 0.9.0)
|
active_model_serializers (= 0.9.0)
|
||||||
bootstrap-sass (~> 2.3)
|
bourbon
|
||||||
bourbon (= 4.0.2)
|
|
||||||
capistrano (~> 3.0)
|
capistrano (~> 3.0)
|
||||||
capistrano-local-precompile
|
capistrano-local-precompile
|
||||||
capistrano-rails (~> 1.1)
|
capistrano-rails (~> 1.1)
|
||||||
@@ -464,6 +464,7 @@ DEPENDENCIES
|
|||||||
devise_simply_stored!
|
devise_simply_stored!
|
||||||
ember-rails
|
ember-rails
|
||||||
ember-source (= 1.8.1)
|
ember-source (= 1.8.1)
|
||||||
|
ember-validations-rails
|
||||||
ember_script-rails!
|
ember_script-rails!
|
||||||
emblem-rails
|
emblem-rails
|
||||||
factory_girl_rails
|
factory_girl_rails
|
||||||
@@ -485,11 +486,11 @@ DEPENDENCIES
|
|||||||
pry-rails
|
pry-rails
|
||||||
quiet_assets
|
quiet_assets
|
||||||
rack-cors
|
rack-cors
|
||||||
rails (= 4.2.0.rc2)
|
rails (= 4.2.0)
|
||||||
rqrcode
|
rqrcode
|
||||||
rspec-its
|
rspec-its
|
||||||
rspec-rails
|
rspec-rails
|
||||||
sass-rails (= 5.0.0.beta1)
|
sass-rails (~> 5.0.0)
|
||||||
selenium-webdriver
|
selenium-webdriver
|
||||||
simplecov
|
simplecov
|
||||||
simply_stored!
|
simply_stored!
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -2,12 +2,13 @@
|
|||||||
#= require handlebars
|
#= require handlebars
|
||||||
#= require ember
|
#= require ember
|
||||||
#= require ember-data
|
#= require ember-data
|
||||||
|
#= require ember-validations
|
||||||
#= require_directory ./modifications
|
#= require_directory ./modifications
|
||||||
#= require shared-ember-helpers/all
|
#= require shared-ember-helpers/all
|
||||||
#= require ./app
|
#= require ./app
|
||||||
#= require ./controllers/modals/base_controller
|
#= require ./controllers/modals/base_controller
|
||||||
#= require ion.sound
|
#= require ion.sound
|
||||||
#= require_tree .
|
#= require_tree .
|
||||||
@$assets_path = '/assets/';
|
@$assets_path = '/assets/'
|
||||||
@EmberENV = {FEATURES: {'query-params-new': true}}
|
@EmberENV = {FEATURES: {'query-params-new': true}}
|
||||||
@$days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
|
@$days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ App.MenuProductComponent = Ember.Component.extend
|
|||||||
save: ->
|
save: ->
|
||||||
return unless @get('product.isValid')
|
return unless @get('product.isValid')
|
||||||
if @get('product.isDirty')
|
if @get('product.isDirty')
|
||||||
@get('product').save().then((-> true), (-> true))
|
@get('product').save().then((=> @set 'editMode', false), (-> true))
|
||||||
@set 'editMode', false
|
|
||||||
destroyProduct: (product)->
|
destroyProduct: (product)->
|
||||||
if product.get('isNew')
|
if product.get('isNew')
|
||||||
product.deleteRecord()
|
product.deleteRecord()
|
||||||
|
|||||||
@@ -24,3 +24,7 @@ App.ApplicationController = Ember.Controller.extend
|
|||||||
markSupplierOpen: ->
|
markSupplierOpen: ->
|
||||||
return unless supplier = @get('supplier')
|
return unless supplier = @get('supplier')
|
||||||
supplier.open_the_place()
|
supplier.open_the_place()
|
||||||
|
showSupplierStatusInfo: ->
|
||||||
|
@modal 'supplier_status_info',
|
||||||
|
model: @get('supplier')
|
||||||
|
title_path: 'supplier_status_info.title'
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
App.EmployeesIndexController = Ember.ArrayController.extend
|
||||||
|
employees: (-> @get('model').sortBy('name')).property('model.@each.name')
|
||||||
|
actions:
|
||||||
|
newEmployee: ->
|
||||||
|
employee = @store.createRecord('employee')
|
||||||
|
@modal 'employee_edit',
|
||||||
|
model: employee
|
||||||
|
close: -> employee.deleteRecord()
|
||||||
|
editEmployee: (employee)->
|
||||||
|
@modal 'employee_edit',
|
||||||
|
model: employee
|
||||||
|
close: -> employee.rollback()
|
||||||
|
destroyEmployee: (employee)->
|
||||||
|
@modal 'confirm',
|
||||||
|
title: t('employee.destroy.modal.title', employee.serialize())
|
||||||
|
ok: -> employee.destroyRecord()
|
||||||
@@ -7,14 +7,15 @@
|
|||||||
translation_params = {}
|
translation_params = {}
|
||||||
if model = @get('model')
|
if model = @get('model')
|
||||||
translation_params = model.serialize() if model.serialize
|
translation_params = model.serialize() if model.serialize
|
||||||
return new Ember.Handlebars.SafeString(tspan(@title_path, translation_params)) if @title_path
|
|
||||||
|
return tspan(@title_path, translation_params).htmlSafe() if @title_path
|
||||||
# return translated title_path if directly set by options
|
# return translated title_path if directly set by options
|
||||||
return new Ember.Handlebars.SafeString(tspan(@get('modal_options.title_path'), translation_params)) if @get('modal_options.title_path')
|
return tspan(@get('modal_options.title_path'), translation_params).htmlSafe() if @get('modal_options.title_path')
|
||||||
# infer title path based on controller name App.modals.AddSectionController => add_section
|
# infer title path based on controller name App.modals.AddSectionController => add_section
|
||||||
underscored = `this.constructor.toString().substr(11).replace(/Controller$/, '').underscore()`
|
underscored = `this.constructor.toString().substr(11).replace(/Controller$/, '').underscore()`
|
||||||
# find translated title or humanize the controller name
|
# find translated title or humanize the controller name
|
||||||
if convention_translation = ttry("modal.#{underscored}.title", translation_params)
|
if convention_translation = ttry("modal.#{underscored}.title", translation_params)
|
||||||
new Ember.Handlebars.SafeString(tspan(@get("modal.#{underscored}.title"), translation_params))
|
tspan(@get("modal.#{underscored}.title"), translation_params).htmlSafe()
|
||||||
else
|
else
|
||||||
underscored.capitalize().replace(/_/, ' ')
|
underscored.capitalize().replace(/_/, ' ')
|
||||||
).property('model.id')
|
).property('model.id')
|
||||||
@@ -35,8 +36,9 @@
|
|||||||
@send 'closeModal' unless @preventClose
|
@send 'closeModal' unless @preventClose
|
||||||
confirm: -> @send('ok')
|
confirm: -> @send('ok')
|
||||||
save: ->
|
save: ->
|
||||||
@get('model').save()
|
if @get('model.isValid')
|
||||||
@send 'closeModal' unless @preventClose
|
@get('model').save().then((=> @send 'closeModal' ), (-> true))
|
||||||
|
#@send 'closeModal' unless @preventClose
|
||||||
destroy: ->
|
destroy: ->
|
||||||
@modal 'confirm',
|
@modal 'confirm',
|
||||||
title_path: @get('modal_options.destroy_text_path') || 'general.destroy.text'
|
title_path: @get('modal_options.destroy_text_path') || 'general.destroy.text'
|
||||||
|
|||||||
+30
-15
@@ -1,35 +1,50 @@
|
|||||||
App.modals.SectionArrangeTablesController = App.modals.BaseController.extend
|
App.modals.SectionArrangeTablesController = App.modals.BaseController.extend
|
||||||
|
title_path: 'section.arrange_tables.modal.title'
|
||||||
arrange_type: 'distributed' # can be distributed, by_row or by_column
|
arrange_type: 'distributed' # can be distributed, by_row or by_column
|
||||||
row_count: 2
|
row_count: 2
|
||||||
column_count: 2
|
column_count: 2
|
||||||
|
alert_message: ''
|
||||||
#isDistributed: ~> @arrange_type is 'distributed'
|
#isDistributed: ~> @arrange_type is 'distributed'
|
||||||
#isByRow: ~> @arrange_type is 'by_row'
|
#isByRow: ~> @arrange_type is 'by_row'
|
||||||
#isByColumn: ~> @arrange_type is 'by_column'
|
#isByColumn: ~> @arrange_type is 'by_column'
|
||||||
isDistributed: (->@get('arrange_type') is 'distributed').property('arrange_type')
|
isDistributed: (->@get('arrange_type') is 'distributed').property('arrange_type')
|
||||||
isByRow: (->@get('arrange_type') is 'by_row').property('arrange_type')
|
isByRow: (->@get('arrange_type') is 'by_row').property('arrange_type')
|
||||||
isByColumn: (->@get('arrange_type') is 'by_column').property('arrange_type')
|
isByColumn: (->@get('arrange_type') is 'by_column').property('arrange_type')
|
||||||
|
canArrangeTables: (->
|
||||||
|
unless parseFloat(@get('model.width')) > 0 and parseFloat(@get('model.height')) > 0
|
||||||
|
@set 'alert_message', t('section.arrange_tables.modal.cannot_arrange')
|
||||||
|
return false
|
||||||
|
@set 'alert_message', ''
|
||||||
|
true
|
||||||
|
).property('model.width', 'model.height')
|
||||||
actions:
|
actions:
|
||||||
arrangeTables: ->
|
arrangeTables: ->
|
||||||
|
return unless @isValid()
|
||||||
Ember.$.post Routes.arrange_tables_suppliers_section_path(@get('model.id')),
|
Ember.$.post Routes.arrange_tables_suppliers_section_path(@get('model.id')),
|
||||||
option: @get('arrange_type')
|
option: @get('arrange_type')
|
||||||
row_count: @get('row_count')
|
row_count: @get('row_count')
|
||||||
column_count: @get('column_count')
|
column_count: @get('column_count')
|
||||||
, (result,state,xhr)=>
|
, (result,state,xhr)=>
|
||||||
#@store.pushPayload 'table', result
|
|
||||||
@store.pushPayload result
|
@store.pushPayload result
|
||||||
@send 'close'
|
@send 'close'
|
||||||
|
|
||||||
##TODO remove followin code if Ember pushPayload is working
|
|
||||||
##properly with associations
|
|
||||||
#section_id = @get('model.id')
|
|
||||||
#tables_that_should_be_in_section = @store.all('table').filter((t)->t.get('section.id') == section_id)
|
|
||||||
#current_table_ids = @get('model.tables').mapProperty('id')
|
|
||||||
#for table in tables_that_should_be_in_section.toArray()
|
|
||||||
#@get('model.tables').pushObject(table) unless table.get('id') in current_table_ids
|
|
||||||
##TODO it still does not work for the second client side action,
|
|
||||||
##soo the good old reload for now for the failing case
|
|
||||||
#window.location.reload() if result.tables.length != tables_that_should_be_in_section.toArray().length
|
|
||||||
return
|
return
|
||||||
makeDistributed: -> @set 'arrange_type', 'distributed'
|
makeDistributed: ->
|
||||||
makeByRow: -> @set 'arrange_type', 'by_row'
|
@set 'arrange_type', 'distributed'
|
||||||
makeByColumn: -> @set 'arrange_type', 'by_column'
|
@set 'alert_message', ''
|
||||||
|
makeByRow: ->
|
||||||
|
@set 'arrange_type', 'by_row'
|
||||||
|
@set 'alert_message', ''
|
||||||
|
makeByColumn: ->
|
||||||
|
@set 'arrange_type', 'by_column'
|
||||||
|
@set 'alert_message', ''
|
||||||
|
isValid: ->
|
||||||
|
switch @get('arrange_type')
|
||||||
|
when 'by_row'
|
||||||
|
if parseInt(@get('row_count')) < 1
|
||||||
|
@set 'alert_message', "Must at least be 1"
|
||||||
|
return false
|
||||||
|
when 'by_column'
|
||||||
|
if parseInt(@get('column_count')) < 1
|
||||||
|
@set 'alert_message', "Must at least be 1"
|
||||||
|
return false
|
||||||
|
true
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ App.SectionController = Ember.ObjectController.extend
|
|||||||
finishEditable: ->
|
finishEditable: ->
|
||||||
@set('editmode', false)
|
@set('editmode', false)
|
||||||
@get('model').save()
|
@get('model').save()
|
||||||
|
rollbackEditable: ->
|
||||||
|
@get('model').rollback()
|
||||||
|
@set('editmode', false)
|
||||||
addSection: -> @modal 'add_section', model: @get('model')
|
addSection: -> @modal 'add_section', model: @get('model')
|
||||||
addTables: -> @modal 'section_add_tables', model: @get('model')
|
addTables: -> @modal 'section_add_tables', model: @get('model')
|
||||||
arrangeTables: -> @modal 'section_arrange_tables', model: @get('model')
|
arrangeTables: -> @modal 'section_arrange_tables', model: @get('model')
|
||||||
|
|||||||
@@ -3,10 +3,13 @@ Ember.Handlebars.helper 'errors', (errors, params..., options)->
|
|||||||
result = ""
|
result = ""
|
||||||
model_name = options.hash.includeAttribute
|
model_name = options.hash.includeAttribute
|
||||||
for error in errors
|
for error in errors
|
||||||
if model_name
|
if typeof error is "string"
|
||||||
attribute = ttry("attributes.#{model_name}.#{error.attribute}")
|
message = error
|
||||||
message = "#{attribute} #{error.message}"
|
|
||||||
else
|
else
|
||||||
message = error.message
|
if model_name
|
||||||
|
attribute = ttry("attributes.#{model_name}.#{error.attribute}")
|
||||||
|
message = "#{attribute} #{error.message}"
|
||||||
|
else
|
||||||
|
message = error.message
|
||||||
result += "<div class='error'>#{message}</div>"
|
result += "<div class='error'>#{message}</div>"
|
||||||
new Ember.Handlebars.SafeString(result)
|
result.htmlSafe()
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
attr = DS.attr
|
||||||
|
App.Employee= DS.Model.extend Ember.Validations.Mixin,
|
||||||
|
name: attr 'string'
|
||||||
|
email: attr 'string'
|
||||||
|
|
||||||
|
validations:
|
||||||
|
name:
|
||||||
|
presence: true
|
||||||
@@ -12,6 +12,8 @@ App.Router.map ->
|
|||||||
@resource 'table', path: ':table_id'
|
@resource 'table', path: ':table_id'
|
||||||
@resource 'lists', ->
|
@resource 'lists', ->
|
||||||
@resource 'list', path: ':list_id'
|
@resource 'list', path: ':list_id'
|
||||||
|
@resource 'employees', ->
|
||||||
|
@resource 'employee', path: ':employee_id'
|
||||||
@route 'orders_display' # chromecast etc
|
@route 'orders_display' # chromecast etc
|
||||||
@route 'menu'
|
@route 'menu'
|
||||||
@route 'settings'
|
@route 'settings'
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
App.EmployeesRoute = Ember.Route.extend
|
||||||
|
model: -> @store.find 'employee'
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
= partial "global/top_menu"
|
= partial "global/top_menu"
|
||||||
|
= partial "global/side_menu"
|
||||||
.main-section= outlet
|
.main-section= outlet
|
||||||
= view flash_message
|
= view flash_message
|
||||||
= outlet modal
|
= outlet modal
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
= outlet
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
.row: .small-12.columns
|
||||||
|
h1=t 'models.plural.employee'
|
||||||
|
if employees
|
||||||
|
table.table
|
||||||
|
thead
|
||||||
|
tr
|
||||||
|
th.name=t 'attributes.employee.name'
|
||||||
|
th.email=t 'attributes.employee.email'
|
||||||
|
th.actions=t 'helpers.actions.title'
|
||||||
|
tbody
|
||||||
|
each employee in employees
|
||||||
|
tr
|
||||||
|
td: link-to 'employee' employee: span= employee.name
|
||||||
|
td.email
|
||||||
|
= employee.email
|
||||||
|
= errors employee.errors.email
|
||||||
|
td.actions
|
||||||
|
a.table-edit{ action 'editEmployee' employee }: span
|
||||||
|
a.table-destroy{ action 'destroyEmployee' employee }: span
|
||||||
|
.form-actions
|
||||||
|
a.form-action-new.new-employee-button{action "newEmployee"}= t 'employee.new_button'
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
aside.side-menu
|
||||||
|
ul
|
||||||
|
li.title: h3 Menu
|
||||||
|
li.supplier-name= supplier.name
|
||||||
|
if supplier.open
|
||||||
|
li: a.supplier-close-shop{action "markSupplierClosed"}= t 'supplier.close_for_orders'
|
||||||
|
else
|
||||||
|
li: a.supplier-open-shop{action "markSupplierOpen"}= t 'supplier.open_for_orders'
|
||||||
|
li
|
||||||
|
=link-to 'settings' class="supplier-settings-link"
|
||||||
|
span.settings-icon
|
||||||
|
span= t 'supplier.settings'
|
||||||
|
li class="supplier-sign-out-link"
|
||||||
|
a{action "signOut"}
|
||||||
|
span.sign-out-icon
|
||||||
|
= t 'supplier.sign_out'
|
||||||
@@ -13,7 +13,9 @@ header.top-menu
|
|||||||
= t 'models.plural.table'
|
= t 'models.plural.table'
|
||||||
= link-to "lists" class="top-menu-lists"
|
= link-to "lists" class="top-menu-lists"
|
||||||
= t 'models.plural.list'
|
= t 'models.plural.list'
|
||||||
.extra-info
|
= link-to "employees" class="top-menu-employees"
|
||||||
|
= t 'models.plural.employee'
|
||||||
|
.extra-info{action "showSupplierStatusInfo"}
|
||||||
.supplier-info-row
|
.supplier-info-row
|
||||||
.counter.supplier-orders-placed-count
|
.counter.supplier-orders-placed-count
|
||||||
span.supplier-orders-placed-count-number= supplier.orders_placed_count
|
span.supplier-orders-placed-count-number= supplier.orders_placed_count
|
||||||
@@ -22,14 +24,3 @@ header.top-menu
|
|||||||
.counter.supplier-orders-in-process-count
|
.counter.supplier-orders-in-process-count
|
||||||
span.supplier-orders-in-process-count-number= supplier.orders_in_process_count
|
span.supplier-orders-in-process-count-number= supplier.orders_in_process_count
|
||||||
span.orders-in-process-count-icon
|
span.orders-in-process-count-icon
|
||||||
aside.side-menu
|
|
||||||
ul
|
|
||||||
li.title: h3 Menu
|
|
||||||
li.supplier-name= supplier.name
|
|
||||||
if supplier.open
|
|
||||||
li: a.supplier-close-shop{action "markSupplierClosed"}= t 'supplier.close_for_orders'
|
|
||||||
else
|
|
||||||
li: a.supplier-open-shop{action "markSupplierOpen"}= t 'supplier.open_for_orders'
|
|
||||||
= link-to "settings" class="supplier-settings-link"
|
|
||||||
= t 'supplier.settings'
|
|
||||||
li class="supplier-sign-out-link": a{action "signOut"}= t 'supplier.sign_out'
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
p=t 'employee.edit.modal.body_header'
|
||||||
|
.form-row.name
|
||||||
|
.form-label=t 'attributes.employee.name'
|
||||||
|
.form-field
|
||||||
|
= input valueBinding="model.name"
|
||||||
|
= errors model.errors.name
|
||||||
|
.form-row.name
|
||||||
|
.form-label=t 'attributes.employee.email'
|
||||||
|
.form-field
|
||||||
|
= input type="email" valueBinding="model.email"
|
||||||
|
= errors model.errors.email
|
||||||
|
hr
|
||||||
|
button.modal-close{action "close"}=t 'section.add_employees.modal.close_button'
|
||||||
|
button.modal-confirm.right{action "save"}=t 'section.add_employees.modal.add_button'
|
||||||
+27
-49
@@ -1,52 +1,30 @@
|
|||||||
.modal-alert== alert_message
|
|
||||||
p=t 'section.arrange_tables.modal.body_header'
|
p=t 'section.arrange_tables.modal.body_header'
|
||||||
.arrange-type-buttons
|
if canArrangeTables
|
||||||
if isDistributed
|
.arrange-type-buttons
|
||||||
span.arrange-tables-current-type.distributed=t 'section.arrange_tables.modal.distributed.title'
|
if isDistributed
|
||||||
else
|
span.arrange-tables-current-type.distributed=t 'section.arrange_tables.modal.distributed.title'
|
||||||
button.arrange-tables-type-button.distributed{action "makeDistributed"}=t 'section.arrange_tables.modal.distributed.title'
|
else
|
||||||
if isByRow
|
button.arrange-tables-type-button.distributed{action "makeDistributed"}=t 'section.arrange_tables.modal.distributed.title'
|
||||||
span.arrange-tables-current-type.by_row=t 'section.arrange_tables.modal.by_row.title'
|
if isByRow
|
||||||
else
|
span.arrange-tables-current-type.by_row=t 'section.arrange_tables.modal.by_row.title'
|
||||||
button.arrange-tables-type-button.by_row{action "makeByRow"}=t 'section.arrange_tables.modal.by_row.title'
|
else
|
||||||
if isByColumn
|
button.arrange-tables-type-button.by_row{action "makeByRow"}=t 'section.arrange_tables.modal.by_row.title'
|
||||||
span.arrange-tables-current-type.by_column=t 'section.arrange_tables.modal.by_column.title'
|
if isByColumn
|
||||||
else
|
span.arrange-tables-current-type.by_column=t 'section.arrange_tables.modal.by_column.title'
|
||||||
button.arrange-tables-type-button.by_column{action "makeByColumn"}=t 'section.arrange_tables.modal.by_column.title'
|
else
|
||||||
.arrange-content
|
button.arrange-tables-type-button.by_column{action "makeByColumn"}=t 'section.arrange_tables.modal.by_column.title'
|
||||||
if isDistributed
|
.arrange-content
|
||||||
==t 'section.arrange_tables.modal.distributed.explanation'
|
if isDistributed
|
||||||
if isByRow
|
==t 'section.arrange_tables.modal.distributed.explanation'
|
||||||
==t 'section.arrange_tables.modal.by_row.before_field'
|
if isByRow
|
||||||
App.NumberField valueBinding="row_count"
|
=t 'section.arrange_tables.modal.by_row.before_field'
|
||||||
==t 'section.arrange_tables.modal.by_row.after_field'
|
App.NumberField valueBinding="row_count"
|
||||||
if isByColumn
|
=t 'section.arrange_tables.modal.by_row.after_field'
|
||||||
==t 'section.arrange_tables.modal.by_column.before_field'
|
if isByColumn
|
||||||
App.NumberField valueBinding="column_count"
|
=t 'section.arrange_tables.modal.by_column.before_field'
|
||||||
==t 'section.arrange_tables.modal.by_column.after_field'
|
App.NumberField valueBinding="column_count"
|
||||||
|
=t 'section.arrange_tables.modal.by_column.after_field'
|
||||||
hr
|
hr
|
||||||
button.modal-close{action "close"}=t 'section.arrange_tables.modal.close_button'
|
button.modal-close{action "close"}=t 'section.arrange_tables.modal.close_button'
|
||||||
button.modal-confirm.right{action "arrangeTables"}=t 'section.arrange_tables.modal.arrange_button'
|
if canArrangeTables
|
||||||
|
button.modal-confirm.right{action "arrangeTables"}=t 'section.arrange_tables.modal.arrange_button'
|
||||||
|
|
||||||
/form.form-horizontal
|
|
||||||
.control-group
|
|
||||||
label.control-label for='arrange-tables-distributed' data-t='section.arrange_tables.modal.distributed' = t('supplier.section.arrange_tables.modal.distributed')
|
|
||||||
.controls
|
|
||||||
input#arrange-tables-distributed type="radio" name="arrange-table-option" checked=true value="distributed"
|
|
||||||
.control-group
|
|
||||||
label.control-label for='arrange-tables-by_row' data-t='section.arrange_tables.modal.by_row' = t('supplier.section.arrange_tables.modal.by_row')
|
|
||||||
.controls
|
|
||||||
input#arrange-tables-by_row type="radio" name="arrange-table-option" value="by_row"
|
|
||||||
label for="arrange-tables-by-row-count" data-t='section.arrange_tables.modal.by_row_count' = t('supplier.section.arrange_tables.modal.by_row_count')
|
|
||||||
input.input-mini#arrange-tables-by-row-count type="text" value=0
|
|
||||||
'
|
|
||||||
span data-t='models.plural.table'
|
|
||||||
.control-group
|
|
||||||
label.control-label for='arrange-tables-by_column' data-t='section.arrange_tables.modal.by_column' = t('supplier.section.arrange_tables.modal.by_column')
|
|
||||||
.controls
|
|
||||||
input#arrange-tables-by_column type="radio" name="arrange-table-option" value="by_column"
|
|
||||||
label for="arrange-tables-by-column-count" data-t='section.arrange_tables.modal.by_column_count' = t('supplier.section.arrange_tables.modal.by_column_count')
|
|
||||||
input.input-mini#arrange-tables-by-column-count type="text" value=0
|
|
||||||
'
|
|
||||||
span data-t='models.plural.table'
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
p== t 'supplier_status_info.header'
|
||||||
|
.row: .small-12.columns
|
||||||
|
.counter.supplier-orders-placed-count
|
||||||
|
= model.orders_placed_count
|
||||||
|
span.orders-placed-count-icon
|
||||||
|
= t 'supplier_status_info.orders_placed_count_explanation' count=model.orders_placed_count
|
||||||
|
.row: .small-12.columns
|
||||||
|
.counter.supplier-orders-in-process-count
|
||||||
|
= model.orders_in_process_count
|
||||||
|
span.orders-in-process-count-icon
|
||||||
|
= t 'supplier_status_info.orders_in_process_count_explanation' count=model.orders_in_process_count
|
||||||
|
hr
|
||||||
|
button.modal-confirm.right{action "close"}= t 'supplier_status_info.close'
|
||||||
@@ -4,33 +4,18 @@
|
|||||||
= view "section-tab-header" context=section
|
= view "section-tab-header" context=section
|
||||||
a.add-section{action "addSection"}: span
|
a.add-section{action "addSection"}: span
|
||||||
.section-manage-tables.pull-right
|
.section-manage-tables.pull-right
|
||||||
|
App.DropdownLink title="Action"
|
||||||
|
ul
|
||||||
|
li: a{action "addTables"}: span.section-add-tables-icon=t 'section.add_tables.button_label'
|
||||||
|
li: a{action "arrangeTables"}: span.section-arrange-tables-icon=t 'section.arrange_tables.modal.title'
|
||||||
|
li: a href="{{route 'qr_codes_suppliers_tables_path' section_id=id}}" target="_blank": span.qr-icon=t 'table.print_qr_codes'
|
||||||
|
li: a.section-destroy{action "destroySection"}: span.section-remove-icon=t 'helpers.links.destroy'
|
||||||
if editmode
|
if editmode
|
||||||
/.btn-group
|
|
||||||
/a.btn.dropdown-toggle data-toggle="dropdown" href="#section-background"
|
|
||||||
span Background
|
|
||||||
span.caret
|
|
||||||
ul#section-background.dropdown-menu
|
|
||||||
each texture in textures
|
|
||||||
li
|
|
||||||
a{ action "setTexture" texture }= texture
|
|
||||||
/a.tiny.button.dropdown.section-actions-menu-header href="#" data-dropdown="section-action-list" Action
|
|
||||||
/button.btn.dropdown-toggle data-toggle="dropdown"
|
|
||||||
span Action
|
|
||||||
span.caret
|
|
||||||
App.DropdownLink title="Action"
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a{action "addTables"}: span.section-add-tables-icon=t 'section.add_tables.button_label'
|
|
||||||
li
|
|
||||||
a{action "arrangeTables"}: span.section-arrange-tables-icon=t 'section.arrange_tables.modal.title'
|
|
||||||
li
|
|
||||||
a href="{{route 'qr_codes_suppliers_tables_path' section_id=id}}": span.table-qr-codes=t 'tables.qr_codes.link'
|
|
||||||
li
|
|
||||||
a.section-destroy{action "destroySection"}: span.section-remove-icon=t 'helpers.links.destroy'
|
|
||||||
= input type="text" valueBinding="title" class="section-edit-title-field"
|
= input type="text" valueBinding="title" class="section-edit-title-field"
|
||||||
App.NumberField valueBinding="width" class="dimension section-edit-width-field"
|
App.NumberField valueBinding="width" class="dimension section-edit-width-field"
|
||||||
span.fa.fa-lg.fa-times
|
span.fa.fa-lg.fa-times
|
||||||
App.NumberField valueBinding="height" class="dimension section-edit-height-field"
|
App.NumberField valueBinding="height" class="dimension section-edit-height-field"
|
||||||
|
a.section-rollback-button{ action "rollbackEditable" }: span
|
||||||
a.section-normal-mode-button{ action "finishEditable" }: span
|
a.section-normal-mode-button{ action "finishEditable" }: span
|
||||||
else
|
else
|
||||||
a.section-edit-mode-button{ action "makeEditable" }: span
|
a.section-edit-mode-button{ action "makeEditable" }: span
|
||||||
|
|||||||
@@ -32,8 +32,7 @@
|
|||||||
/td.timestamp=time list.created_at
|
/td.timestamp=time list.created_at
|
||||||
td.actions
|
td.actions
|
||||||
a.section-dashboard-orders{action showDashboardOrders section}: span
|
a.section-dashboard-orders{action showDashboardOrders section}: span
|
||||||
a.table-qr-codes{path qr_codes_suppliers_tables section_id=section.id}
|
a.table-qr-codes{path qr_codes_suppliers_tables section_id=section.id} target="_blank": span.qr-icon
|
||||||
span
|
|
||||||
else
|
else
|
||||||
.row: .small-12.columns
|
.row: .small-12.columns
|
||||||
.panel=t 'section.none_found'
|
.panel=t 'section.none_found'
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
h2=t 'settings.title'
|
.row: .small-12.columns: h2=t 'settings.title'
|
||||||
.form-row
|
.form-row
|
||||||
.form-label: label=t 'attributes.supplier.name'
|
.form-label: label=t 'attributes.supplier.name'
|
||||||
.form-field: Ember.TextField valueBinding="controller.model.name" classNames="supplier-name"
|
.form-field: Ember.TextField valueBinding="controller.model.name" classNames="supplier-name"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tr
|
tr
|
||||||
th=t 'attributes.table.number'
|
th=t 'attributes.table.number'
|
||||||
th.link=t 'models.section'
|
th.link=t 'models.section'
|
||||||
th.timestamp= t 'attributes.table.created_at'
|
/th.timestamp= t 'attributes.table.created_at'
|
||||||
th.actions=t 'helpers.actions.title'
|
th.actions=t 'helpers.actions.title'
|
||||||
tbody
|
tbody
|
||||||
each table in tables
|
each table in tables
|
||||||
@@ -16,8 +16,13 @@
|
|||||||
if table.section
|
if table.section
|
||||||
= link-to 'section' table.section
|
= link-to 'section' table.section
|
||||||
= table.section.title
|
= table.section.title
|
||||||
td.numeric=time table.created_at
|
/td.timestamp=time table.created_at
|
||||||
td.actions
|
td.actions
|
||||||
a.table-edit{ action 'editTable' table }: span
|
a.table-edit{ action 'editTable' table }: span
|
||||||
a.table-destroy{ action 'destroyTable' table }: span
|
a.table-destroy{ action 'destroyTable' table }: span
|
||||||
a.button.new-table-button{action "newTable"}= t 'table.new_button'
|
.form-actions
|
||||||
|
a.form-action-new.new-table-button{action "newTable"}= t 'table.new_button'
|
||||||
|
if tables
|
||||||
|
a.table-qr-codes{path qr_codes_suppliers_tables} target="_blank"
|
||||||
|
span.qr-icon
|
||||||
|
= t 'table.print_qr_codes'
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ App.BooleanButtonView = Ember.View.extend
|
|||||||
href: '#'
|
href: '#'
|
||||||
classNames: "button"
|
classNames: "button"
|
||||||
# templateName: "form_elements/boolean_switch"
|
# templateName: "form_elements/boolean_switch"
|
||||||
template: Ember.Handlebars.compile "<span>{{view.text}}</span>"
|
#template: Ember.Handlebars.compile "<span>{{view.text}}</span>"
|
||||||
classNameBindings: ['rounded:round', 'active:active:disabled']
|
classNameBindings: ['rounded:round', 'active:active:disabled']
|
||||||
|
|
||||||
text: Ember.computed 'text_path', ->
|
text: Ember.computed 'text_path', ->
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
App.SideMenuItemView = Ember.View.extend
|
||||||
|
classNames: 'menu-list-item'
|
||||||
|
classNameBindings: ['active']
|
||||||
|
click: ->
|
||||||
|
if @route_param
|
||||||
|
@get('controller').transitionToRoute(@route, @route_param)
|
||||||
|
else
|
||||||
|
@get('controller').transitionToRoute(@route)
|
||||||
|
active: (->
|
||||||
|
if @get('controller.currentPath') == @route then 'active' else ''
|
||||||
|
).property('controller.currentPath')
|
||||||
|
init: ->
|
||||||
|
@templateName = "side_menu/#{@route}"
|
||||||
|
@_super()
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
selector = $( selector || document)
|
selector = $( selector || document)
|
||||||
selector.find(".locale-select").show()
|
selector.find(".locale-select").show()
|
||||||
selector.find(".locale-select-" + locale).hide()
|
selector.find(".locale-select-" + locale).hide()
|
||||||
moment.lang locale
|
moment.locale locale
|
||||||
if selector
|
if selector
|
||||||
selector.find("[data-t]").each ->
|
selector.find("[data-t]").each ->
|
||||||
$(this).html t($(this).data("t"), $(this).data("tAttributes"))
|
$(this).html t($(this).data("t"), $(this).data("tAttributes"))
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ App.ApplicationController = Ember.Controller.extend
|
|||||||
@set 'notice', ''
|
@set 'notice', ''
|
||||||
).observes('currentPath')
|
).observes('currentPath')
|
||||||
events:
|
events:
|
||||||
|
notify: (notification) -> @set 'notice', notification.message
|
||||||
list_helped: -> @set 'list.needs_help', false
|
list_helped: -> @set 'list.needs_help', false
|
||||||
list_needs_help: -> @set 'list.needs_help', true # incoming from other users
|
list_needs_help: -> @set 'list.needs_help', true # incoming from other users
|
||||||
list_is_paid: -> @set 'list.needs_payment', false
|
list_is_paid: -> @set 'list.needs_payment', false
|
||||||
|
|||||||
@@ -1,74 +1,5 @@
|
|||||||
.top-menu
|
= partial "global/top_menu"
|
||||||
.top-menu-bar
|
= partial "global/side_menu"
|
||||||
.menu-content
|
|
||||||
section.main-buttons
|
|
||||||
if list.id
|
|
||||||
link-to 'index' class="top-menu-logo with-list"
|
|
||||||
= image_tag 'user/logo-small.png'
|
|
||||||
= view "menu-item" route="active_list"
|
|
||||||
= view "menu-item" route="table" route_param=list.table.id
|
|
||||||
= view "menu-item-list-needs-help"
|
|
||||||
= view "menu-item-list-needs-payment"
|
|
||||||
else
|
|
||||||
link-to 'index' class="top-menu-logo without-list"
|
|
||||||
= image_tag 'user/logo-small.png'
|
|
||||||
= view "menu-item-scan-qr"
|
|
||||||
= view "menu-item-product-orders"
|
|
||||||
if list
|
|
||||||
.extra-info{action "showSupplierStatusInfo"}
|
|
||||||
.supplier-info-row
|
|
||||||
/ .supplier-name= list.supplier.name
|
|
||||||
.table-number
|
|
||||||
|#
|
|
||||||
= list.table.number
|
|
||||||
.supplier-info-row
|
|
||||||
.counter.supplier-orders-placed-count
|
|
||||||
= list.supplier.orders_placed_count
|
|
||||||
span.orders-placed-count-icon
|
|
||||||
.supplier-info-row
|
|
||||||
.counter.supplier-orders-in-process-count
|
|
||||||
= list.supplier.orders_in_process_count
|
|
||||||
span.orders-in-process-count-icon
|
|
||||||
.side-menu
|
|
||||||
.toggle-side-menu: span
|
|
||||||
ul
|
|
||||||
li.title: h3 Menu
|
|
||||||
li
|
|
||||||
= link-to 'index'
|
|
||||||
span Home
|
|
||||||
li
|
|
||||||
a{action "scanQr" bubbles=false}
|
|
||||||
span.scan-qr-icon
|
|
||||||
span Scan QR
|
|
||||||
if list.id
|
|
||||||
li
|
|
||||||
=link-to 'table' list.table.id class="side-menu-list-products"
|
|
||||||
span.fa.fa-cutlery
|
|
||||||
span.fa.fa-glass
|
|
||||||
= t 'list_products.title'
|
|
||||||
li
|
|
||||||
=link-to 'active_list' class="side-menu-active-list"
|
|
||||||
span.active-list-icon
|
|
||||||
span= t 'active_list.title'
|
|
||||||
if list.join_requests
|
|
||||||
li
|
|
||||||
=link-to 'join_requests'
|
|
||||||
span= t 'models.plural.join_request'
|
|
||||||
li
|
|
||||||
=link-to 'lists' class="side-menu-lists"
|
|
||||||
span= t 'models.plural.list'
|
|
||||||
li
|
|
||||||
=link-to 'settings'
|
|
||||||
span.settings-icon
|
|
||||||
span= t 'settings.title'
|
|
||||||
li
|
|
||||||
=link-to 'about' class="side-menu-about"
|
|
||||||
span.about-mozo-icon
|
|
||||||
span=t 'about.title'
|
|
||||||
li.hide
|
|
||||||
a{action "openDebugger"}
|
|
||||||
span.fa.fa-wrench.fa-lg
|
|
||||||
span Debugger
|
|
||||||
.main-section
|
.main-section
|
||||||
.main-section-content
|
.main-section-content
|
||||||
if notice
|
if notice
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
.side-menu
|
||||||
|
.toggle-side-menu: span
|
||||||
|
ul
|
||||||
|
li.title: h3 Menu
|
||||||
|
li
|
||||||
|
= link-to 'index'
|
||||||
|
span Home
|
||||||
|
li
|
||||||
|
a{action "scanQr" bubbles=false}
|
||||||
|
span.scan-qr-icon
|
||||||
|
span Scan QR
|
||||||
|
if list.id
|
||||||
|
li
|
||||||
|
=link-to 'table' list.table.id class="side-menu-list-products"
|
||||||
|
span.fa.fa-cutlery
|
||||||
|
span.fa.fa-glass
|
||||||
|
= t 'list_products.title'
|
||||||
|
li
|
||||||
|
=link-to 'active_list' class="side-menu-active-list"
|
||||||
|
span.active-list-icon
|
||||||
|
span= t 'active_list.title'
|
||||||
|
if list.join_requests
|
||||||
|
li
|
||||||
|
=link-to 'join_requests'
|
||||||
|
span= t 'models.plural.join_request'
|
||||||
|
li
|
||||||
|
=link-to 'lists' class="side-menu-lists"
|
||||||
|
span= t 'models.plural.list'
|
||||||
|
li
|
||||||
|
=link-to 'settings'
|
||||||
|
span.settings-icon
|
||||||
|
span= t 'settings.title'
|
||||||
|
li
|
||||||
|
=link-to 'about' class="side-menu-about"
|
||||||
|
span.about-mozo-icon
|
||||||
|
span=t 'about.title'
|
||||||
|
li.hide
|
||||||
|
a{action "openDebugger"}
|
||||||
|
span.fa.fa-wrench.fa-lg
|
||||||
|
span Debugger
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
.top-menu
|
||||||
|
.top-menu-bar
|
||||||
|
.menu-content
|
||||||
|
section.main-buttons
|
||||||
|
if list.id
|
||||||
|
link-to 'index' class="top-menu-logo with-list"
|
||||||
|
= image_tag 'user/logo-small.png'
|
||||||
|
= view "menu-item" route="active_list"
|
||||||
|
= view "menu-item" route="table" route_param=list.table.id
|
||||||
|
= view "menu-item-list-needs-help"
|
||||||
|
= view "menu-item-list-needs-payment"
|
||||||
|
else
|
||||||
|
link-to 'index' class="top-menu-logo without-list"
|
||||||
|
= image_tag 'user/logo-small.png'
|
||||||
|
= view "menu-item-scan-qr"
|
||||||
|
= view "menu-item-product-orders"
|
||||||
|
if list
|
||||||
|
.extra-info{action "showSupplierStatusInfo"}
|
||||||
|
.supplier-info-row
|
||||||
|
/ .supplier-name= list.supplier.name
|
||||||
|
.table-number
|
||||||
|
|#
|
||||||
|
= list.table.number
|
||||||
|
.supplier-info-row
|
||||||
|
.counter.supplier-orders-placed-count
|
||||||
|
= list.supplier.orders_placed_count
|
||||||
|
span.orders-placed-count-icon
|
||||||
|
.supplier-info-row
|
||||||
|
.counter.supplier-orders-in-process-count
|
||||||
|
= list.supplier.orders_in_process_count
|
||||||
|
span.orders-in-process-count-icon
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
+button($bg: $button-index-color, $padding: $button-sml)
|
+button($bg: $button-index-color, $padding: $button-sml)
|
||||||
margin-right: $button-margin
|
margin-right: $button-margin
|
||||||
&.form-action-new
|
&.form-action-new
|
||||||
+button($bg: $button-new-color, $padding: $button-sml)
|
+button($padding: $button-sml)
|
||||||
margin-right: $button-margin
|
margin-right: $button-margin
|
||||||
&.form-action-edit
|
&.form-action-edit
|
||||||
+button($bg: $button-edit-color, $padding: $button-sml)
|
+button($bg: $button-edit-color, $padding: $button-sml)
|
||||||
|
|||||||
@@ -1258,8 +1258,8 @@ $alert-color: #ee3e41
|
|||||||
$button-margin: rem-calc(10)
|
$button-margin: rem-calc(10)
|
||||||
$button-qr-code-color: #555
|
$button-qr-code-color: #555
|
||||||
$button-index-color: $secondary-color
|
$button-index-color: $secondary-color
|
||||||
$button-new-color: #afa
|
$button-new-color: $primary-color
|
||||||
$button-edit-color: #ffa
|
$button-edit-color: $warning-color
|
||||||
$button-destroy-color: #faa
|
$button-destroy-color: $alert-color
|
||||||
$button-submit-color: $primary-color
|
$button-submit-color: $primary-color
|
||||||
$button-cancel-color: $secondary-color
|
$button-cancel-color: $secondary-color
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
.section-edit-mode-button
|
.section-edit-mode-button
|
||||||
+button
|
margin-left: 5px
|
||||||
margin: 0
|
|
||||||
padding: 2px
|
|
||||||
span
|
span
|
||||||
@extend .fa
|
@extend .fa
|
||||||
@extend .fa-lg
|
@extend .fa-lg
|
||||||
@extend .fa-edit
|
@extend .fa-edit
|
||||||
.section-normal-mode-button
|
.section-normal-mode-button
|
||||||
+button
|
margin-left: 5px
|
||||||
margin: 0
|
|
||||||
padding: 2px
|
|
||||||
margin-left: 8px
|
|
||||||
span
|
span
|
||||||
@extend .fa
|
@extend .fa
|
||||||
@extend .fa-lg
|
@extend .fa-lg
|
||||||
@extend .fa-save
|
@extend .fa-save
|
||||||
|
.section-rollback-button
|
||||||
|
margin-left: 5px
|
||||||
|
span
|
||||||
|
@extend .fa
|
||||||
|
@extend .fa-lg
|
||||||
|
@extend .fa-undo
|
||||||
.arrange-tables-type-button
|
.arrange-tables-type-button
|
||||||
+button($bg: $secondary-color, $padding: $button-tny)
|
+button($bg: $secondary-color, $padding: $button-tny)
|
||||||
.arrange-tables-current-type
|
.arrange-tables-current-type
|
||||||
@@ -31,7 +32,7 @@
|
|||||||
.section-manage-tables
|
.section-manage-tables
|
||||||
.dropdown-container
|
.dropdown-container
|
||||||
margin-right: 10px
|
margin-right: 10px
|
||||||
$icon-right-margin: 8px
|
$icon-right-margin: 12px
|
||||||
ul
|
ul
|
||||||
list-style: none
|
list-style: none
|
||||||
margin: 0
|
margin: 0
|
||||||
@@ -44,7 +45,7 @@
|
|||||||
padding: 4px 7px
|
padding: 4px 7px
|
||||||
&:hover
|
&:hover
|
||||||
background-color: #ddd
|
background-color: #ddd
|
||||||
span.table-qr-codes
|
span.qr-icon
|
||||||
margin-right: $icon-right-margin
|
margin-right: $icon-right-margin
|
||||||
.section-destroy
|
.section-destroy
|
||||||
color: $alert-color
|
color: $alert-color
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
+grid-column($columns: 9, $last-column:true)
|
+grid-column($columns: 9, $last-column:true)
|
||||||
&.half
|
&.half
|
||||||
+grid-column(6)
|
+grid-column(6)
|
||||||
|
.error
|
||||||
|
color: $alert-color
|
||||||
&.form-actions
|
&.form-actions
|
||||||
padding-top: 12px
|
padding-top: 12px
|
||||||
body
|
body
|
||||||
|
|||||||
@@ -20,6 +20,15 @@ aside.side-menu
|
|||||||
.title
|
.title
|
||||||
border-bottom: 1px solid #aaa
|
border-bottom: 1px solid #aaa
|
||||||
margin-bottom: 4px
|
margin-bottom: 4px
|
||||||
|
.settings-icon
|
||||||
|
margin-right: 18px
|
||||||
|
@extend .fa, .fa-gears
|
||||||
|
.about-mozo-icon
|
||||||
|
margin-right: 18px
|
||||||
|
@extend .fa, .fa-info-circle
|
||||||
|
.sign-out-icon
|
||||||
|
margin-right: 18px
|
||||||
|
@extend .fa, .fa-caret-square-o-left
|
||||||
.supplier-close-shop
|
.supplier-close-shop
|
||||||
+alert($bg: $alert-color, $radius: true)
|
+alert($bg: $alert-color, $radius: true)
|
||||||
padding: 3px
|
padding: 3px
|
||||||
|
|||||||
@@ -16,26 +16,29 @@ table
|
|||||||
text-align: right
|
text-align: right
|
||||||
&.date
|
&.date
|
||||||
text-align: right
|
text-align: right
|
||||||
|
.error
|
||||||
|
display: inline-block
|
||||||
|
padding-left: 5px
|
||||||
|
color: $alert-color
|
||||||
|
a.table-qr-codes
|
||||||
|
+button-icon-only
|
||||||
.table-edit
|
.table-edit
|
||||||
+button($bg: $secondary-color)
|
+button($bg: $secondary-color)
|
||||||
+button-icon-only
|
+button-icon-only
|
||||||
span
|
span
|
||||||
@extend .fa
|
@extend .fa
|
||||||
@extend .fa-pencil
|
@extend .fa-pencil
|
||||||
a.table-qr-codes
|
span.qr-icon
|
||||||
+button($bg: $secondary-color)
|
|
||||||
+button-icon-only
|
|
||||||
span
|
|
||||||
@extend .fa
|
|
||||||
@extend .fa-qrcode
|
|
||||||
span.table-qr-codes
|
|
||||||
@extend .fa
|
@extend .fa
|
||||||
@extend .fa-qrcode
|
@extend .fa-qrcode
|
||||||
|
+ span
|
||||||
|
padding-left: 7px
|
||||||
|
a.table-qr-codes
|
||||||
|
+button($bg: $secondary-color, $padding: $button-sml)
|
||||||
.table-destroy
|
.table-destroy
|
||||||
+button($bg: $secondary-color)
|
+button($bg: $secondary-color)
|
||||||
+button-icon-only
|
+button-icon-only
|
||||||
color: $warning-color
|
color: $warning-color
|
||||||
|
|
||||||
margin-left: 8px
|
margin-left: 8px
|
||||||
span
|
span
|
||||||
@extend .fa
|
@extend .fa
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
class DashboardController < ApplicationController
|
class DashboardController < ApplicationController
|
||||||
layout 'theme1'
|
layout 'theme1'
|
||||||
before_action :allow_all_origins, only: :error_report
|
before_action :allow_all_origins, only: :error_report
|
||||||
|
|
||||||
@@ -13,6 +13,10 @@
|
|||||||
render nothing: true
|
render nothing: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def scan
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
def close_window
|
def close_window
|
||||||
render layout: false
|
render layout: false
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
module Suppliers
|
||||||
|
class EmployeesController < Suppliers::ApplicationController
|
||||||
|
|
||||||
|
# GET /employees
|
||||||
|
# GET /employees.json
|
||||||
|
def index
|
||||||
|
@employees = current_supplier.employees
|
||||||
|
render json: @employees, each_serializer: Suppliers::EmployeeSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /employees/1
|
||||||
|
# GET /employees/1.json
|
||||||
|
def show
|
||||||
|
@employee = Employee.find(params[:id])
|
||||||
|
render json: @employee, serializer: Suppliers::EmployeeSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
# POST /employees
|
||||||
|
# POST /employees.json
|
||||||
|
def create
|
||||||
|
@employee = Employee.new(employee_params)
|
||||||
|
@employee.supplier = current_supplier
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @employee.save
|
||||||
|
render json: @employee, serializer: Suppliers::EmployeeSerializer, status: :created
|
||||||
|
else
|
||||||
|
render json: {errors: @employee.errors}, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# PUT /employees/1
|
||||||
|
# PUT /employees/1.json
|
||||||
|
def update
|
||||||
|
@employee = Employee.find(params[:id])
|
||||||
|
render json: {}, status: 404 unless @employee.supplier_id == current_supplier.id
|
||||||
|
respond_to do |format|
|
||||||
|
if @employee.update_attributes(employee_params)
|
||||||
|
format.json { head :no_content }
|
||||||
|
else
|
||||||
|
format.json { render json: {errors: @employee.errors}, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# DELETE /employees/1
|
||||||
|
# DELETE /employees/1.json
|
||||||
|
def destroy
|
||||||
|
@employee = Employee.find(params[:id])
|
||||||
|
render json: {}, status: :forbidden unless @employee.supplier_id == current_supplier.id
|
||||||
|
@employee.destroy
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.json { head :no_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def employee_params
|
||||||
|
params.require(:employee).permit(:name, :email)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,8 +1,14 @@
|
|||||||
class Employee
|
class Employee
|
||||||
include SimplyStored::Couch
|
include SimplyStored::Couch
|
||||||
|
include ActiveModel::SerializerSupport
|
||||||
|
|
||||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable #, :omniauthable, :omniauth_providers => [:facebook] #, :token_authenticatable , :registerable
|
devise :database_authenticatable, :recoverable, :rememberable, :trackable #, :omniauthable, :omniauth_providers => [:facebook] #, :token_authenticatable , :registerable
|
||||||
|
property :name
|
||||||
|
property :email
|
||||||
|
|
||||||
|
view :by_email, key: :email
|
||||||
|
|
||||||
|
validates :email, email: true
|
||||||
belongs_to :supplier
|
belongs_to :supplier
|
||||||
has_many :orders
|
has_many :orders
|
||||||
has_and_belongs_to_many :lists, storing_keys: false
|
has_and_belongs_to_many :lists, storing_keys: false
|
||||||
|
|||||||
@@ -52,6 +52,14 @@ class List
|
|||||||
}
|
}
|
||||||
}], reduce_function: '_sum'
|
}], reduce_function: '_sum'
|
||||||
|
|
||||||
|
view :active_users_view, type: :custom, map_function: %[function(doc){
|
||||||
|
if(doc.ruby_class == 'List' && doc.state == 'active'){
|
||||||
|
doc.user_ids && doc.user_ids.forEach(function(uid){
|
||||||
|
emit([doc.supplier_id, uid], 1);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}], reduce_function: '_sum'
|
||||||
|
|
||||||
view :for_user_view, type: :custom, map_function: %|function(doc){
|
view :for_user_view, type: :custom, map_function: %|function(doc){
|
||||||
if(doc.ruby_class == 'List' && doc.user_ids && doc.user_ids.length){
|
if(doc.ruby_class == 'List' && doc.user_ids && doc.user_ids.length){
|
||||||
doc.user_ids.forEach(function(uid){
|
doc.user_ids.forEach(function(uid){
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
class Suppliers::EmployeeSerializer < Qwaiter::Serializer
|
||||||
|
self.root = :employee
|
||||||
|
embed :ids, include: true
|
||||||
|
attributes :supplier_id, :name, :email
|
||||||
|
has_many :orders
|
||||||
|
end
|
||||||
+15
-1
@@ -60,7 +60,21 @@ namespace :deploy do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
after :publishing, :restart
|
task :update_remote_cache do
|
||||||
|
on roles(:app), in: :sequence, wait: 5 do
|
||||||
|
within shared_path.join('cached-copy') do
|
||||||
|
execute :git, :pull
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
task :build_drb_counter do
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
after :publishing, :restart do
|
||||||
|
update_remote_cache
|
||||||
|
end
|
||||||
|
|
||||||
after :restart, :clear_cache do
|
after :restart, :clear_cache do
|
||||||
on roles(:web), in: :groups, limit: 3, wait: 10 do
|
on roles(:web), in: :groups, limit: 3, wait: 10 do
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ en:
|
|||||||
section: Section
|
section: Section
|
||||||
join_request: Join request
|
join_request: Join request
|
||||||
user_feedback: User feedback
|
user_feedback: User feedback
|
||||||
|
employee: Employee
|
||||||
plural:
|
plural:
|
||||||
user: Users
|
user: Users
|
||||||
supplier: Restaurants
|
supplier: Restaurants
|
||||||
@@ -22,6 +23,7 @@ en:
|
|||||||
section: Sections
|
section: Sections
|
||||||
join_request: Join requests
|
join_request: Join requests
|
||||||
user_feedback: User feedbacks
|
user_feedback: User feedbacks
|
||||||
|
employee: Employees
|
||||||
attributes:
|
attributes:
|
||||||
product_category:
|
product_category:
|
||||||
name: Name
|
name: Name
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ nl:
|
|||||||
product_category: Product categorie
|
product_category: Product categorie
|
||||||
section: Afdeling
|
section: Afdeling
|
||||||
join_request: Deelname verzoek
|
join_request: Deelname verzoek
|
||||||
|
employee: Werknemer
|
||||||
plural:
|
plural:
|
||||||
user: Gebruikers
|
user: Gebruikers
|
||||||
supplier: Restaurants
|
supplier: Restaurants
|
||||||
@@ -20,6 +21,7 @@ nl:
|
|||||||
product_category: Product categorieen
|
product_category: Product categorieen
|
||||||
section: Afdelingen
|
section: Afdelingen
|
||||||
join_request: Deelname verzoeken
|
join_request: Deelname verzoeken
|
||||||
|
employee: Werknemers
|
||||||
attributes:
|
attributes:
|
||||||
product_category:
|
product_category:
|
||||||
name: Naam
|
name: Naam
|
||||||
|
|||||||
@@ -19,11 +19,6 @@ en:
|
|||||||
no_lists: No active lists
|
no_lists: No active lists
|
||||||
active_orders:
|
active_orders:
|
||||||
no_orders: No active orders
|
no_orders: No active orders
|
||||||
messages:
|
|
||||||
could_not_arrange_tables: 'The tables could not be arranged'
|
|
||||||
could_not_arrange_tables_distributed: 'The tables could not be arranged. Does the ${models.section|downcase} have a width and a height?'
|
|
||||||
could_not_arrange_tables_by_row: 'The tables could not be arranged. Does the ${models.section|downcase} have a width and a height?'
|
|
||||||
could_not_arrange_tables_by_column: 'The tables could not be arranged. Does the ${models.section|downcase} have a width and a height?'
|
|
||||||
top_menu:
|
top_menu:
|
||||||
menu: Menu
|
menu: Menu
|
||||||
active_lists:
|
active_lists:
|
||||||
@@ -39,11 +34,8 @@ en:
|
|||||||
settings: Settings
|
settings: Settings
|
||||||
sign_out: Sign out
|
sign_out: Sign out
|
||||||
table_number: Table
|
table_number: Table
|
||||||
tables:
|
|
||||||
qr_codes:
|
|
||||||
link: Print Qr codes sheet
|
|
||||||
has_no_section: "Not placed"
|
|
||||||
table:
|
table:
|
||||||
|
print_qr_codes: Print Qr codes
|
||||||
destroy:
|
destroy:
|
||||||
modal:
|
modal:
|
||||||
title: Are you sure you want to delete ${models.table} %{number}
|
title: Are you sure you want to delete ${models.table} %{number}
|
||||||
@@ -122,6 +114,7 @@ en:
|
|||||||
after_field: ' ${models.plural.table}'
|
after_field: ' ${models.plural.table}'
|
||||||
close_button: Close
|
close_button: Close
|
||||||
arrange_button: Distribute
|
arrange_button: Distribute
|
||||||
|
cannot_arrange: 'The tables could not be arranged. Does the ${models.section|downcase} have a width and a height?'
|
||||||
settings:
|
settings:
|
||||||
title: Settings
|
title: Settings
|
||||||
save: Save settings
|
save: Save settings
|
||||||
@@ -183,3 +176,17 @@ en:
|
|||||||
modal:
|
modal:
|
||||||
info:
|
info:
|
||||||
close: OK
|
close: OK
|
||||||
|
supplier_status_info:
|
||||||
|
title: "%{name} info"
|
||||||
|
header: The icons at the top right corner contain information about the current orders
|
||||||
|
orders_placed_count_explanation: " means that there are %{count} orders placed and not yet processing or finished"
|
||||||
|
orders_in_process_count_explanation: " means that there are %{count} orders currently processing"
|
||||||
|
close: Got it
|
||||||
|
employee:
|
||||||
|
new_button: 'Add ${models.employee}'
|
||||||
|
destroy:
|
||||||
|
modal:
|
||||||
|
title: 'Delete ${models.employee} %{name}?'
|
||||||
|
edit:
|
||||||
|
modal:
|
||||||
|
body_header: ''
|
||||||
|
|||||||
@@ -18,11 +18,6 @@ nl:
|
|||||||
no_lists: Geen actieve ${models.plural.list}
|
no_lists: Geen actieve ${models.plural.list}
|
||||||
active_orders:
|
active_orders:
|
||||||
no_orders: Geen actieve ${models.plural.order}
|
no_orders: Geen actieve ${models.plural.order}
|
||||||
messages:
|
|
||||||
could_not_arrange_tables: 'De ${models.plural.table} konden niet worden gepositioneerd'
|
|
||||||
could_not_arrange_tables_distributed: 'De ${models.plural.table} konden niet worden gepositioneerd. Heeft de ${models.section|downcase} een hoogte en breedte?'
|
|
||||||
could_not_arrange_tables_by_row: 'De ${models.plural.table} konden niet worden gepositioneerd. Heeft de ${models.section|downcase} een hoogte en breedte?'
|
|
||||||
could_not_arrange_tables_by_column: 'De ${models.plural.table} konden niet worden gepositioneerd. Heeft de ${models.section|downcase} een hoogte en breedte?'
|
|
||||||
top_menu:
|
top_menu:
|
||||||
menu: Menu
|
menu: Menu
|
||||||
active_lists:
|
active_lists:
|
||||||
@@ -38,11 +33,8 @@ nl:
|
|||||||
settings: Instellingen
|
settings: Instellingen
|
||||||
sign_out: Afmelden
|
sign_out: Afmelden
|
||||||
table_number: Tafel
|
table_number: Tafel
|
||||||
tables:
|
|
||||||
qr_codes:
|
|
||||||
link: Print Qr codes
|
|
||||||
has_no_section: "Niet geplaatst"
|
|
||||||
table:
|
table:
|
||||||
|
print_qr_codes: Print Qr codes
|
||||||
destroy:
|
destroy:
|
||||||
modal:
|
modal:
|
||||||
title: Weet je zeker dat je ${models.table} %{number} wilt verwijderen
|
title: Weet je zeker dat je ${models.table} %{number} wilt verwijderen
|
||||||
@@ -121,6 +113,7 @@ nl:
|
|||||||
after_field: ' ${models.plural.table}'
|
after_field: ' ${models.plural.table}'
|
||||||
close_button: Sluiten
|
close_button: Sluiten
|
||||||
arrange_button: Positioneer
|
arrange_button: Positioneer
|
||||||
|
cannot_arrange: 'De ${models.plural.table} konden niet worden gepositioneerd. Heeft de ${models.section|downcase} een hoogte en breedte?'
|
||||||
settings:
|
settings:
|
||||||
title: Instellingen
|
title: Instellingen
|
||||||
save: Instellingen opslaan
|
save: Instellingen opslaan
|
||||||
@@ -186,3 +179,14 @@ nl:
|
|||||||
modal:
|
modal:
|
||||||
info:
|
info:
|
||||||
close: OK
|
close: OK
|
||||||
|
supplier_status_info:
|
||||||
|
title: "%{name} info"
|
||||||
|
header: The icons at the top right corner contain information about the current orders
|
||||||
|
orders_placed_count_explanation: " means that there are %{count} orders placed and not yet processing or finished"
|
||||||
|
orders_in_process_count_explanation: " means that there are %{count} orders currently processing"
|
||||||
|
close: Got it
|
||||||
|
employee:
|
||||||
|
new_button: '${models.employee} toevoegen'
|
||||||
|
destroy:
|
||||||
|
modal:
|
||||||
|
title: '${models.employee} %{name} verwijderen?'
|
||||||
|
|||||||
+3
-1
@@ -87,7 +87,7 @@ Qwaiter::Application.routes.draw do
|
|||||||
#get '/bars-restaurants' => 'dashboard#bars_restaurants', as: :bars_restaurants
|
#get '/bars-restaurants' => 'dashboard#bars_restaurants', as: :bars_restaurants
|
||||||
#get '/clients' => 'dashboard#clients'
|
#get '/clients' => 'dashboard#clients'
|
||||||
#get '/contact' => 'dashboard#contact'
|
#get '/contact' => 'dashboard#contact'
|
||||||
get '/s' => redirect('/scan'), as: :scan
|
get '/s' => 'dashboard#scan', as: :scan
|
||||||
|
|
||||||
# DEVELOPMENT ONLY
|
# DEVELOPMENT ONLY
|
||||||
get '/qr' => 'dashboard#qr'
|
get '/qr' => 'dashboard#qr'
|
||||||
@@ -128,6 +128,8 @@ Qwaiter::Application.routes.draw do
|
|||||||
get :qr_codes
|
get :qr_codes
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :employees
|
||||||
resources :products do
|
resources :products do
|
||||||
collection do
|
collection do
|
||||||
get :preview_products
|
get :preview_products
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
FROM ruby:2.2.0
|
||||||
|
|
||||||
|
# throw errors if Gemfile has been modified since Gemfile.lock
|
||||||
|
RUN bundle config --global frozen 1
|
||||||
|
|
||||||
|
RUN mkdir -p /usr/src/app
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Test
|
||||||
|
#RUN apt-get update && apt-get install -y qt5-default libqt5webkit5-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
# Standard
|
||||||
|
#RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
#RUN apt-get update && apt-get install -y mysql-client postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
# Specific
|
||||||
|
#RUN apt-get update && apt-get install -y dos2unix --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY Gemfile /usr/src/app/
|
||||||
|
COPY Gemfile.lock /usr/src/app/
|
||||||
|
#COPY vendor/cache /usr/src/app/vendor/cache
|
||||||
|
#RUN bundle install --local
|
||||||
|
RUN rm -rf /usr/src/app/.bundle
|
||||||
|
RUN bundle install
|
||||||
|
|
||||||
|
COPY . /usr/src/app
|
||||||
|
|
||||||
|
EXPOSE 9022
|
||||||
|
ENTRYPOINT ["ruby", "drb_counter.rb"]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem "couchrest"
|
||||||
|
gem "pry"
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
coderay (1.1.0)
|
||||||
|
couchrest (1.2.0)
|
||||||
|
mime-types (~> 1.15)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
rest-client (~> 1.6.1)
|
||||||
|
method_source (0.8.2)
|
||||||
|
mime-types (1.25.1)
|
||||||
|
multi_json (1.10.1)
|
||||||
|
pry (0.10.1)
|
||||||
|
coderay (~> 1.1.0)
|
||||||
|
method_source (~> 0.8.1)
|
||||||
|
slop (~> 3.4)
|
||||||
|
rdoc (4.2.0)
|
||||||
|
rest-client (1.6.8)
|
||||||
|
mime-types (~> 1.16)
|
||||||
|
rdoc (>= 2.4.2)
|
||||||
|
slop (3.6.0)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
couchrest
|
||||||
|
pry
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
views:
|
||||||
|
by_supplier_id_and_state:
|
||||||
|
map: |
|
||||||
|
function(doc) {
|
||||||
|
if(doc.ruby_class && doc.ruby_class == 'Order') emit([doc['supplier_id'], doc['state']], 1);
|
||||||
|
}
|
||||||
|
reduce: _sum
|
||||||
|
language: "javascript"
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
# Make drb server
|
# Make drb server
|
||||||
require 'rubygems'
|
require 'rubygems'
|
||||||
|
require 'drb'
|
||||||
|
require 'pry'
|
||||||
#require File.expand_path('../lib/in_memory_q_counter', File.dirname(__FILE__))
|
#require File.expand_path('../lib/in_memory_q_counter', File.dirname(__FILE__))
|
||||||
# This is a non thread safe replacement for the
|
# This is a non thread safe replacement for the
|
||||||
# couchbase counter mechanism since every test needs
|
# couchbase counter mechanism since every test needs
|
||||||
@@ -16,14 +18,18 @@ class InMemoryQCounter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get(key, options = {})
|
def get(key, options = {})
|
||||||
store[key]
|
value = store[key]
|
||||||
|
debug "Get key #{key} (#{value})"
|
||||||
|
value
|
||||||
end
|
end
|
||||||
|
|
||||||
def set(key, value)
|
def set(key, value)
|
||||||
|
debug "Set key #{key} to #{value}"
|
||||||
store[key] = value
|
store[key] = value
|
||||||
end
|
end
|
||||||
|
|
||||||
def incr(key, options = {})
|
def incr(key, options = {})
|
||||||
|
debug "Increment key #{key}"
|
||||||
# store[key] ||= options[:initial].to_i
|
# store[key] ||= options[:initial].to_i
|
||||||
# store[key] += 1
|
# store[key] += 1
|
||||||
if store[key]
|
if store[key]
|
||||||
@@ -34,6 +40,7 @@ class InMemoryQCounter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def decr(key, options = {})
|
def decr(key, options = {})
|
||||||
|
debug "Decrement key #{key}"
|
||||||
# store[key] ||= options[:initial].to_i
|
# store[key] ||= options[:initial].to_i
|
||||||
# store[key] -= 1
|
# store[key] -= 1
|
||||||
if store[key]
|
if store[key]
|
||||||
@@ -44,22 +51,45 @@ class InMemoryQCounter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def flush
|
def flush
|
||||||
|
debug "Flushing store"
|
||||||
store.clear
|
store.clear
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def debug(message)
|
||||||
|
puts message
|
||||||
|
end
|
||||||
|
|
||||||
def reload_stats!
|
def reload_stats!
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
require 'couchrest'
|
require 'couchrest'
|
||||||
require 'pry'
|
require 'pry'
|
||||||
binding.pry
|
couch_settings_path = 'config/couchdb.yml'
|
||||||
couch_settings_path = File.join(ENV['MOZO_PATH'], 'config/couchdb.yml')
|
|
||||||
puts "Couch settings path: #{couch_settings_path}"
|
puts "Couch settings path: #{couch_settings_path}"
|
||||||
puts "Environment: #{environment.inspect}"
|
puts "Environment: #{environment.inspect}"
|
||||||
couch_settings = YAML.load_file(couch_settings_path)[environment]
|
couch_settings = YAML.load_file(couch_settings_path)[environment]
|
||||||
database = couch_settings['database']
|
database = couch_settings['database']
|
||||||
db = CouchRest.database(database)
|
db = CouchRest.database(database)
|
||||||
view_result = db.view("_design/order/_view/by_supplier_id_and_state", reduce: true, group_level: 2)
|
design_doc = "_design/order_counter"
|
||||||
|
view_path = File.join design_doc, "_view/by_supplier_id_and_state"
|
||||||
|
tries = 0
|
||||||
|
begin
|
||||||
|
view_result = db.view(view_path, reduce: true, group: true, group_level: 2)
|
||||||
|
rescue RestClient::ResourceNotFound => e
|
||||||
|
puts "Database view #{view_path} not found"
|
||||||
|
design_doc_path = File.expand_path('../couchdb_design.yml', __FILE__)
|
||||||
|
doc = YAML.load_file design_doc_path
|
||||||
|
doc['_id'] = design_doc
|
||||||
|
db.save_doc(doc)
|
||||||
|
if tries < 3
|
||||||
|
tries += 1
|
||||||
|
retry
|
||||||
|
else
|
||||||
|
raise e
|
||||||
|
end
|
||||||
|
# view not available, initialize as zero
|
||||||
|
end
|
||||||
counts = view_result ? view_result['rows'] : nil
|
counts = view_result ? view_result['rows'] : nil
|
||||||
|
puts "Initialize with: #{counts.to_yaml}"
|
||||||
if counts
|
if counts
|
||||||
counts.each do |count_spec|
|
counts.each do |count_spec|
|
||||||
supplier_id, order_state = count_spec['key']
|
supplier_id, order_state = count_spec['key']
|
||||||
@@ -70,17 +100,11 @@ class InMemoryQCounter
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue RestClient::ResourceNotFound
|
|
||||||
# view not available, initialize as zero
|
|
||||||
rescue => e
|
rescue => e
|
||||||
raise e
|
raise e
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
require 'drb'
|
|
||||||
require 'daemons'
|
|
||||||
drb_port = 9022
|
drb_port = 9022
|
||||||
Daemons.run_proc('DRBcounter', dir_mode: :normal, dir: File.expand_path("#{File.dirname(__FILE__)}/../tmp/pids")) do
|
environment = (%w[production staging development test] & ARGV).first || 'development'
|
||||||
environment = (%w[production staging development test] & ARGV).first
|
DRb.start_service "druby://:#{drb_port}", InMemoryQCounter.new(reload_stats: true, environment: environment)
|
||||||
DRb.start_service "druby://:#{drb_port}", InMemoryQCounter.new(reload_stats: true, environment: environment)
|
DRb.thread.join
|
||||||
DRb.thread.join
|
|
||||||
end
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
FROM ruby:2.2.0
|
||||||
|
|
||||||
|
# throw errors if Gemfile has been modified since Gemfile.lock
|
||||||
|
RUN bundle config --global frozen 1
|
||||||
|
|
||||||
|
RUN mkdir -p /usr/src/app
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
RUN apt-get update
|
||||||
|
# Test
|
||||||
|
#RUN apt-get update && apt-get install -y qt5-default libqt5webkit5-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
# Standard
|
||||||
|
#RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
#RUN apt-get update && apt-get install -y mysql-client postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
# Specific
|
||||||
|
#RUN apt-get update && apt-get install -y dos2unix --no-install-recommends && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY Gemfile /usr/src/app/
|
||||||
|
COPY Gemfile.lock /usr/src/app/
|
||||||
|
#COPY vendor/cache /usr/src/app/vendor/cache
|
||||||
|
#RUN bundle install --local
|
||||||
|
RUN rm -rf /usr/src/app/.bundle
|
||||||
|
RUN bundle install
|
||||||
|
|
||||||
|
COPY . /usr/src/app
|
||||||
|
ENV FAYE_PORT=9296
|
||||||
|
EXPOSE $FAYE_PORT
|
||||||
|
CMD thin start -R config.ru -p $FAYE_PORT
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem "faye"
|
||||||
|
gem "thin"
|
||||||
|
gem "pry"
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
addressable (2.3.7)
|
||||||
|
coderay (1.1.0)
|
||||||
|
cookiejar (0.3.2)
|
||||||
|
daemons (1.1.9)
|
||||||
|
em-http-request (1.1.2)
|
||||||
|
addressable (>= 2.3.4)
|
||||||
|
cookiejar
|
||||||
|
em-socksify (>= 0.3)
|
||||||
|
eventmachine (>= 1.0.3)
|
||||||
|
http_parser.rb (>= 0.6.0)
|
||||||
|
em-socksify (0.3.0)
|
||||||
|
eventmachine (>= 1.0.0.beta.4)
|
||||||
|
eventmachine (1.0.7)
|
||||||
|
faye (1.1.0)
|
||||||
|
cookiejar (>= 0.3.0)
|
||||||
|
em-http-request (>= 0.3.0)
|
||||||
|
eventmachine (>= 0.12.0)
|
||||||
|
faye-websocket (>= 0.9.1)
|
||||||
|
multi_json (>= 1.0.0)
|
||||||
|
rack (>= 1.0.0)
|
||||||
|
websocket-driver (>= 0.5.1)
|
||||||
|
faye-websocket (0.9.2)
|
||||||
|
eventmachine (>= 0.12.0)
|
||||||
|
websocket-driver (>= 0.5.1)
|
||||||
|
http_parser.rb (0.6.0)
|
||||||
|
method_source (0.8.2)
|
||||||
|
multi_json (1.10.1)
|
||||||
|
pry (0.10.1)
|
||||||
|
coderay (~> 1.1.0)
|
||||||
|
method_source (~> 0.8.1)
|
||||||
|
slop (~> 3.4)
|
||||||
|
rack (1.6.0)
|
||||||
|
slop (3.6.0)
|
||||||
|
thin (1.6.3)
|
||||||
|
daemons (~> 1.0, >= 1.0.9)
|
||||||
|
eventmachine (~> 1.0)
|
||||||
|
rack (~> 1.0)
|
||||||
|
websocket-driver (0.5.1)
|
||||||
|
websocket-extensions (>= 0.1.0)
|
||||||
|
websocket-extensions (0.1.1)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
faye
|
||||||
|
pry
|
||||||
|
thin
|
||||||
@@ -6,14 +6,19 @@ db:
|
|||||||
- 5984
|
- 5984
|
||||||
net: host
|
net: host
|
||||||
counters:
|
counters:
|
||||||
image: ruby:2.2
|
build: drb_counter
|
||||||
web:
|
net: host
|
||||||
build: .
|
|
||||||
#command: bundle exec unicorn -p 3000 -c ./config/unicorn.rb
|
|
||||||
command: rails s
|
|
||||||
volumes:
|
volumes:
|
||||||
- .:/usr/src/app
|
- config:/usr/src/app/config
|
||||||
ports:
|
command: development
|
||||||
- "3000:3000"
|
faye:
|
||||||
#links:
|
build: faye
|
||||||
# #- db
|
net: host
|
||||||
|
#web:
|
||||||
|
#build: .
|
||||||
|
#command: bundle exec unicorn -p 3000 -c ./config/unicorn.rb
|
||||||
|
#command: rails s
|
||||||
|
#volumes:
|
||||||
|
#- .:/usr/src/app
|
||||||
|
#ports:
|
||||||
|
#- "3000:3000"
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
require 'pry'
|
||||||
|
require 'yaml'
|
||||||
|
require 'active_support/all'
|
||||||
|
|
||||||
|
shared_dir = Pathname.new File.expand_path('../../', __FILE__)
|
||||||
|
app_dir = Pathname.new File.expand_path('../', __FILE__)
|
||||||
|
class Runner
|
||||||
|
def execute(cmd)
|
||||||
|
puts "Running: #{cmd}"
|
||||||
|
`#{cmd}`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
runner = Runner.new
|
||||||
|
|
||||||
|
prefix = "mozo_"
|
||||||
|
containers = YAML.load <<-YML.strip_heredoc
|
||||||
|
drb_counter:
|
||||||
|
directory: drb_counter
|
||||||
|
volumes:
|
||||||
|
- #{app_dir.join('config')}:config
|
||||||
|
ports:
|
||||||
|
- 9022
|
||||||
|
arguments:
|
||||||
|
- production
|
||||||
|
faye:
|
||||||
|
directory: faye
|
||||||
|
ports:
|
||||||
|
- 9296
|
||||||
|
YML
|
||||||
|
container_names = containers.keys.map{|c| [prefix, c].join }
|
||||||
|
#container_name_list = container_names.join(' ')
|
||||||
|
|
||||||
|
#REBUILD
|
||||||
|
containers.each do |name, settings|
|
||||||
|
runner.execute "docker build -t #{prefix}#{name} #{settings['directory']}"
|
||||||
|
end
|
||||||
|
|
||||||
|
running_containers = runner.execute("docker ps -q #{container_names.map{|cname| "-f name=#{cname}" }.join(' ')}").to_s.strip.split(/\s+/)
|
||||||
|
runner.execute("docker stop #{running_containers.join(' ')}") if running_containers.any?
|
||||||
|
|
||||||
|
existing_containers = runner.execute("docker ps -a -q #{container_names.map{|cname| "-f name=#{cname}" }.join(' ')}").to_s.strip.split(/\s+/)
|
||||||
|
runner.execute("docker rm #{existing_containers.join(' ')}") if existing_containers.any?
|
||||||
|
|
||||||
|
# RUN THE CONTAINERS
|
||||||
|
containers.each do |name, settings|
|
||||||
|
volumes = Array.wrap(settings['volumes']).map{|v| "-v #{v}"}.join(' ')
|
||||||
|
arguments = Array.wrap(settings['arguments']).join(' ')
|
||||||
|
runner.execute "docker run -d --net=host --restart=always #{volumes} --name=#{prefix}#{name} #{prefix}#{name} #{arguments}"
|
||||||
|
end
|
||||||
@@ -23,7 +23,8 @@ User
|
|||||||
- product variants
|
- product variants
|
||||||
- remove active orders on list close
|
- remove active orders on list close
|
||||||
- fix ajaxError duplicity
|
- fix ajaxError duplicity
|
||||||
- rename "I am signed in as a user" to "there is a signed in user"
|
- rename "I am signed in as a user" to "there is a signed in user" in
|
||||||
|
the specs
|
||||||
|
|
||||||
Bugs
|
Bugs
|
||||||
----
|
----
|
||||||
|
|||||||
Reference in New Issue
Block a user