cloudrider 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/generica/Gemfile +1 -1
- data/generica/Gemfile.lock +3 -8
- data/generica/app/assets/javascripts/apiv1.js.ls +2 -0
- data/generica/app/assets/javascripts/application.js +2 -0
- data/generica/app/assets/javascripts/components/preload-billboard.js.em +20 -0
- data/generica/app/assets/javascripts/components/preload-image.js.em +16 -0
- data/generica/app/assets/javascripts/packages/image_preloader.js.em +23 -0
- data/generica/app/assets/javascripts/templates/application.emblem +15 -14
- data/generica/app/assets/javascripts/templates/components/preload-billboard.emblem +12 -0
- data/generica/app/assets/javascripts/templates/components/product-display.emblem +1 -1
- data/generica/app/assets/stylesheets/apiv1/_application.css.scss +1 -0
- data/generica/app/assets/stylesheets/apiv1/components/_preload-billboard.css.scss +12 -0
- data/generica/lib/generica.rb +1 -0
- data/generica/lib/generica/image-preload.js.erb +1 -0
- data/generica/lib/generica/image_preloader.rb +61 -0
- data/generica/lib/tasks/cloudrider.rake +1 -1
- data/generica/lib/tasks/production.rake +7 -0
- data/generica/spec/generica/image_preloader_spec.rb +24 -0
- data/generica/vendor/assets/javascripts/generica/image-preload.js +1 -0
- data/lib/cloudrider/version.rb +1 -1
- data/lib/generators/cloudrider/client/client_generator.rb +2 -0
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03060f9be1960c9c0efbf42c8e9c70ded3d12597
|
4
|
+
data.tar.gz: d29bad6873347937457febd5994547d7eb1fc195
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f1f856e646d165cdd3acca7edf7faa5e3d290e58aac4c1f7f77dde0dede00bf5b0b1bb319ab496e2651cc99699f08a4669037622514435889a4e4bb5955f171
|
7
|
+
data.tar.gz: 817ae43bec67630191acfdb84cb957c6cf7c653e15ebe4747f42f81076020d2a1cd6ad1591c38f9e799fb05f2b5990bce265bfe34209e20af1139625d0a1ab56
|
data/generica/Gemfile
CHANGED
@@ -28,7 +28,7 @@ gem "font-awesome-sass", "~> 4.1.0.0"
|
|
28
28
|
gem 'font-awesome-rails', '~> 4.1.0.0'
|
29
29
|
gem 'compass-rails', '~> 1.1.7'
|
30
30
|
gem 'compass-flexbox', '~>1.1.3'
|
31
|
-
gem 'jquery-ui-
|
31
|
+
gem 'jquery-ui-rails', '>=5.0.2'
|
32
32
|
gem 'jquery-rails'
|
33
33
|
gem 'foundation-rails', '~> 5.3.1.0'
|
34
34
|
gem 'modernizr-rails', '~> 2.7.1'
|
data/generica/Gemfile.lock
CHANGED
@@ -160,13 +160,8 @@ GEM
|
|
160
160
|
jquery-rails (3.1.2)
|
161
161
|
railties (>= 3.0, < 5.0)
|
162
162
|
thor (>= 0.14, < 2.0)
|
163
|
-
jquery-ui-rails (
|
164
|
-
|
165
|
-
railties (>= 3.1.0)
|
166
|
-
jquery-ui-sass-rails (4.0.3.0)
|
167
|
-
jquery-rails
|
168
|
-
jquery-ui-rails (= 4.0.3)
|
169
|
-
railties (>= 3.1.0)
|
163
|
+
jquery-ui-rails (5.0.2)
|
164
|
+
railties (>= 3.2.16)
|
170
165
|
json (1.8.1)
|
171
166
|
jwt (1.0.0)
|
172
167
|
kaminari (0.16.1)
|
@@ -339,7 +334,7 @@ DEPENDENCIES
|
|
339
334
|
i18n-js
|
340
335
|
jbuilder (~> 1.2)
|
341
336
|
jquery-rails
|
342
|
-
jquery-ui-
|
337
|
+
jquery-ui-rails (>= 5.0.2)
|
343
338
|
kaminari (~> 0.16.1)
|
344
339
|
livescript-rails
|
345
340
|
modernizr-rails (~> 2.7.1)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class Apiv1.PreloadBillboardComponent extends Ember.Component
|
2
|
+
classNames: ["preload-billboard"]
|
3
|
+
|
4
|
+
+computed Apiv1.ImagePreloader.instance.isLoading
|
5
|
+
stillLoading: -> Apiv1.ImagePreloader.instance.get "isLoading"
|
6
|
+
|
7
|
+
+computed Apiv1.ImagePreloader.instance.isLoading
|
8
|
+
finishedLoading: -> not Apiv1.ImagePreloader.instance.get "isLoading"
|
9
|
+
|
10
|
+
+observer Apiv1.ImagePreloader.instance.isLoading
|
11
|
+
manageWhichToHide: ->
|
12
|
+
if @stillLoading
|
13
|
+
$("#billboard-holder").show()
|
14
|
+
$("#everything-else-holder").hide()
|
15
|
+
if @finishedLoading
|
16
|
+
$("#everything-else-holder").show()
|
17
|
+
$("#billboard-holder").hide "puff", 750
|
18
|
+
|
19
|
+
didInsertElement: ->
|
20
|
+
@manageWhichToHide()
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Apiv1.PreloadImageComponent extends Ember.Component
|
2
|
+
attributeBindings: ["id", "class", "alt", "src"]
|
3
|
+
classNames: ["preload-image"]
|
4
|
+
tagName: ['img']
|
5
|
+
alreadyQueuedPreloader: false
|
6
|
+
|
7
|
+
+observer source
|
8
|
+
manageSourcePreloading: ->
|
9
|
+
return if @alreadyQueuedPreloader or Ember.isBlank @source
|
10
|
+
@alreadyQueuedPreloader = true
|
11
|
+
Apiv1.ImagePreloader.registerImage @source, (img) =>
|
12
|
+
console.log img
|
13
|
+
@src = img.src
|
14
|
+
|
15
|
+
didInsertElement: ->
|
16
|
+
@manageSourcePreloading()
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Apiv1.ImagePreloader extends Ember.Object
|
2
|
+
areWeUsingPreloader: false
|
3
|
+
stillLoadingImages: []
|
4
|
+
registerImage: (source, callback) ->
|
5
|
+
img = new Image()
|
6
|
+
@areWeUsingPreloader = true
|
7
|
+
@stillLoadingImages.pushObject img
|
8
|
+
img.onload = =>
|
9
|
+
@stillLoadingImages.removeObject img
|
10
|
+
callback img if typeof callback is "function"
|
11
|
+
img.src = source
|
12
|
+
|
13
|
+
preloadImagesFromCSS: ->
|
14
|
+
Apiv1.ImagesToPreload.map _.bind @registerImage, @
|
15
|
+
|
16
|
+
+computed stillLoadingImages.length, areWeUsingPreloader
|
17
|
+
isLoading: ->
|
18
|
+
@areWeUsingPreloader and @stillLoadingImages.length > 0
|
19
|
+
|
20
|
+
|
21
|
+
Apiv1.ImagePreloader.instance = new Apiv1.ImagePreloader()
|
22
|
+
Apiv1.ImagePreloader.instance.preloadImagesFromCSS()
|
23
|
+
Apiv1.ImagePreloader.registerImage = _.bind Apiv1.ImagePreloader.instance.registerImage, Apiv1.ImagePreloader.instance
|
@@ -1,14 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
.modal-
|
14
|
-
|
1
|
+
preload-billboard
|
2
|
+
.application-container.toggle-shift.shifted
|
3
|
+
#canvas-menu-top
|
4
|
+
site-nav
|
5
|
+
#page-wrapper
|
6
|
+
.site-content
|
7
|
+
.not-site-footer
|
8
|
+
== outlet
|
9
|
+
site-footer action="displayModal"
|
10
|
+
#fixed-bottom
|
11
|
+
.row
|
12
|
+
flash-message
|
13
|
+
.modal-background
|
14
|
+
.modal-vertical-container
|
15
|
+
== outlet "modal"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
if product
|
2
2
|
.media-object
|
3
3
|
link-to "products.product.show" product.id
|
4
|
-
|
4
|
+
preload-image class="product-image" source=product.pictures.firstObject.picUrl
|
5
5
|
.media-texts
|
6
6
|
h2.product-title
|
7
7
|
link-to "products.product.show" product.id
|
@@ -17,6 +17,7 @@
|
|
17
17
|
@import 'apiv1/components/promise-button';
|
18
18
|
@import 'apiv1/components/block-grid-pictures';
|
19
19
|
@import 'apiv1/components/fancy-paginator';
|
20
|
+
@import 'apiv1/components/preload-billboard';
|
20
21
|
@import "apiv1/modals/login";
|
21
22
|
@import 'apiv1/products/product/show';
|
22
23
|
|
data/generica/lib/generica.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
Apiv1.ImagesToPreload = <%= file_image_urls.inspect %>;
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'tilt'
|
2
|
+
require 'erb'
|
3
|
+
module Generica; end
|
4
|
+
class Generica::ImagePreloader
|
5
|
+
include Thor::Base
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
def write_preloader_js_file
|
9
|
+
create_file _destination, _file_contents
|
10
|
+
end
|
11
|
+
private
|
12
|
+
def _destination
|
13
|
+
Rails.root.join "vendor", "assets", "javascripts", "generica", "image-preload.js"
|
14
|
+
end
|
15
|
+
def _file_contents
|
16
|
+
_template.render _context
|
17
|
+
end
|
18
|
+
def _template
|
19
|
+
@template ||= Tilt::ERBTemplate.new _source
|
20
|
+
end
|
21
|
+
def _source
|
22
|
+
@source ||= File.join __dir__, "image-preload.js.erb"
|
23
|
+
end
|
24
|
+
def _context
|
25
|
+
@context ||= Context.new
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Generica::ImagePreloader::Context
|
30
|
+
def file_image_urls
|
31
|
+
_css_files.map { |file| _get_image_urls_from_file.call file }.flatten.uniq
|
32
|
+
end
|
33
|
+
private
|
34
|
+
def _css_files
|
35
|
+
Dir.glob(Rails.root.join "app", "assets", "stylesheets", "**", "*").reject { |f| Dir.exists? f }
|
36
|
+
end
|
37
|
+
def _get_image_urls_from_file
|
38
|
+
_filename_to_string >> _string_to_raw_css_urls >> _clean_css_urls
|
39
|
+
end
|
40
|
+
def _filename_to_string
|
41
|
+
-> (file) { File.read file }
|
42
|
+
end
|
43
|
+
def _string_to_raw_css_urls
|
44
|
+
-> (string) { string.to_s.scan /url\(*[a-z0-9_\-\s,\/]+\.[a-z]*\)/i }
|
45
|
+
end
|
46
|
+
def _clean_css_urls
|
47
|
+
-> (css_urls) { css_urls.map { |css_url| _clean_css_url.call css_url } }
|
48
|
+
end
|
49
|
+
def _clean_css_url
|
50
|
+
_clean_front_css_url >> _clean_rear_css_url >> _append_asset_path
|
51
|
+
end
|
52
|
+
def _append_asset_path
|
53
|
+
-> (url) { File.join "assets", url }
|
54
|
+
end
|
55
|
+
def _clean_front_css_url
|
56
|
+
-> (css_url) { css_url.gsub /^url\(('|")*/i, "" }
|
57
|
+
end
|
58
|
+
def _clean_rear_css_url
|
59
|
+
-> (css_url) { css_url.gsub /('|")*\)$/, "" }
|
60
|
+
end
|
61
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require Rails.root.join "lib", "generica"
|
2
1
|
namespace :cloudrider do
|
3
2
|
desc "Creates a default seed file using the google translate api"
|
4
3
|
task make_translation_seed: :environment do
|
4
|
+
require Rails.root.join "lib", "generica"
|
5
5
|
Generica::SeedGenerator.new.write_file
|
6
6
|
end
|
7
7
|
end
|
@@ -7,9 +7,16 @@ namespace :production do
|
|
7
7
|
|
8
8
|
desc "These tasks should be run everytime you restart the server"
|
9
9
|
task on_restart: :environment do
|
10
|
+
Rake::Task["production:image_preload"].invoke
|
10
11
|
Rake::Task["assets:clobber"].invoke
|
11
12
|
Rake::Task["assets:precompile"].invoke
|
12
13
|
Rake::Task["assets:unretardify"].invoke
|
13
14
|
Rake::Task["elasticsearch:simple_import"].invoke
|
14
15
|
end
|
16
|
+
|
17
|
+
desc "generates the image-preload.js file"
|
18
|
+
task image_preload: :environment do
|
19
|
+
require Rails.root.join "lib", "generica", "image_preloader"
|
20
|
+
Generica::ImagePreloader.new.write_preloader_js_file
|
21
|
+
end
|
15
22
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "rails_helper"
|
2
|
+
require Rails.root.join "lib", "generica", "image_preloader"
|
3
|
+
|
4
|
+
describe Generica::ImagePreloader do
|
5
|
+
context 'sanity' do
|
6
|
+
subject { described_class }
|
7
|
+
specify { should be_present }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Generica::ImagePreloader::Context do
|
12
|
+
let(:context) { described_class.new }
|
13
|
+
context '#_clean_css_url' do
|
14
|
+
subject { context.send('_clean_css_url').call 'url("dog/cat/bat.jpg")' }
|
15
|
+
specify { should eq "dog/cat/bat.jpg" }
|
16
|
+
end
|
17
|
+
context '#_clean_css_urls' do
|
18
|
+
let(:css_urls) { ["url(hero-splash/dog.jpg)", "url(dogs/bag.png)"] }
|
19
|
+
let(:expected) { ["hero-splash/dog.jpg", "dogs/bag.png"] }
|
20
|
+
subject { context.send('_clean_css_urls').call css_urls }
|
21
|
+
specify { should eq expected }
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Apiv1.ImagesToPreload = ["assets/hero-splash/albatross.jpg", "assets/hero-splash/seaweed.png", "assets/cookie-splash/albatross.jpg"];
|
data/lib/cloudrider/version.rb
CHANGED
@@ -85,6 +85,7 @@ class Cloudrider::Generators::ClientGenerator < Rails::Generators::Base
|
|
85
85
|
"select-locale",
|
86
86
|
"tree-taxon-li",
|
87
87
|
"tree-taxon-ul",
|
88
|
+
"preload-billboard",
|
88
89
|
"tree-taxon-wrapper"
|
89
90
|
].each do |component|
|
90
91
|
copy_file "app/assets/javascripts/templates/components/#{component}.emblem", "app/assets/javascripts/templates/components/#{component}.emblem"
|
@@ -106,6 +107,7 @@ class Cloudrider::Generators::ClientGenerator < Rails::Generators::Base
|
|
106
107
|
"select-locale",
|
107
108
|
"site-footer",
|
108
109
|
"type-ahead",
|
110
|
+
"preload-billboard",
|
109
111
|
"tree-taxon-wrapper"].each do |file|
|
110
112
|
copy_file "app/assets/stylesheets/apiv1/components/_#{file}.css.scss", "app/assets/stylesheets/apiv1/components/_#{file}.css.scss"
|
111
113
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudrider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -143,6 +143,8 @@ files:
|
|
143
143
|
- generica/app/assets/javascripts/components/form-for.js.em
|
144
144
|
- generica/app/assets/javascripts/components/hero-splash.js.em
|
145
145
|
- generica/app/assets/javascripts/components/introductory-lobby.js.em
|
146
|
+
- generica/app/assets/javascripts/components/preload-billboard.js.em
|
147
|
+
- generica/app/assets/javascripts/components/preload-image.js.em
|
146
148
|
- generica/app/assets/javascripts/components/product-display.js.em
|
147
149
|
- generica/app/assets/javascripts/components/product-listing.js.em
|
148
150
|
- generica/app/assets/javascripts/components/products-catalog.js.em
|
@@ -204,6 +206,7 @@ files:
|
|
204
206
|
- generica/app/assets/javascripts/models/taxon.js.em
|
205
207
|
- generica/app/assets/javascripts/models/translation.js.em
|
206
208
|
- generica/app/assets/javascripts/packages/flash.js.em
|
209
|
+
- generica/app/assets/javascripts/packages/image_preloader.js.em
|
207
210
|
- generica/app/assets/javascripts/packages/tranny.js.ls
|
208
211
|
- generica/app/assets/javascripts/routes/.gitkeep
|
209
212
|
- generica/app/assets/javascripts/routes/admin/employees/index_route.js.em
|
@@ -257,6 +260,7 @@ files:
|
|
257
260
|
- generica/app/assets/javascripts/templates/components/hero-splash/_splash-cta.emblem
|
258
261
|
- generica/app/assets/javascripts/templates/components/hero-splash/_splash-tagline.emblem
|
259
262
|
- generica/app/assets/javascripts/templates/components/introductory-lobby.emblem
|
263
|
+
- generica/app/assets/javascripts/templates/components/preload-billboard.emblem
|
260
264
|
- generica/app/assets/javascripts/templates/components/product-display.emblem
|
261
265
|
- generica/app/assets/javascripts/templates/components/product-listing.emblem
|
262
266
|
- generica/app/assets/javascripts/templates/components/products-catalog.emblem
|
@@ -300,6 +304,7 @@ files:
|
|
300
304
|
- generica/app/assets/stylesheets/apiv1/components/_flash-message.css.scss
|
301
305
|
- generica/app/assets/stylesheets/apiv1/components/_hero-splash.css.scss
|
302
306
|
- generica/app/assets/stylesheets/apiv1/components/_introductory-lobby.css.scss
|
307
|
+
- generica/app/assets/stylesheets/apiv1/components/_preload-billboard.css.scss
|
303
308
|
- generica/app/assets/stylesheets/apiv1/components/_product-display.css.scss
|
304
309
|
- generica/app/assets/stylesheets/apiv1/components/_product-listing.css.scss
|
305
310
|
- generica/app/assets/stylesheets/apiv1/components/_products-catalog.css.scss
|
@@ -455,6 +460,8 @@ files:
|
|
455
460
|
- generica/db/seeds/users.rb
|
456
461
|
- generica/lib/assets/.keep
|
457
462
|
- generica/lib/generica.rb
|
463
|
+
- generica/lib/generica/image-preload.js.erb
|
464
|
+
- generica/lib/generica/image_preloader.rb
|
458
465
|
- generica/lib/generica/locale.yml.erb
|
459
466
|
- generica/lib/generica/seed.en.yml
|
460
467
|
- generica/lib/generica/seed_generator.rb
|
@@ -492,6 +499,7 @@ files:
|
|
492
499
|
- generica/spec/factories/apiv1/product_factory.rb
|
493
500
|
- generica/spec/factories/apiv1/taxon_factory.rb
|
494
501
|
- generica/spec/factories/base_factory.rb
|
502
|
+
- generica/spec/generica/image_preloader_spec.rb
|
495
503
|
- generica/spec/models/admin/pictures_factory_spec.rb
|
496
504
|
- generica/spec/models/admin/product_factory_spec.rb
|
497
505
|
- generica/spec/models/admin/product_modifier_spec.rb
|
@@ -503,6 +511,7 @@ files:
|
|
503
511
|
- generica/spec/rails_helper.rb
|
504
512
|
- generica/spec/spec_helper.rb
|
505
513
|
- generica/vendor/assets/javascripts/.keep
|
514
|
+
- generica/vendor/assets/javascripts/generica/image-preload.js
|
506
515
|
- generica/vendor/assets/stylesheets/.keep
|
507
516
|
- lib/cloudrider.rb
|
508
517
|
- lib/cloudrider/apiv1.rb
|