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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 98e60585e40a7bbb0badb0540a0cde8b3106596a
4
- data.tar.gz: 0e4d0cb0a0e4f5664405228b5e48ee050bd474b0
3
+ metadata.gz: 03060f9be1960c9c0efbf42c8e9c70ded3d12597
4
+ data.tar.gz: d29bad6873347937457febd5994547d7eb1fc195
5
5
  SHA512:
6
- metadata.gz: ef1838716cc271c667e04b872039458d2540cf9d0686feab8390842b1fe9472d6ab3944cacaca92fbf7e4693ae343246a72a6037495de8f408464be31276c4eb
7
- data.tar.gz: 53c6409409fb8522ce836a88846208b357571a0a73e83a239fcdb69c16d0f8833b1324c986d88dea94261e081c1b02a0b96b0fdbf74ac733d7012945bb605dd8
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-sass-rails'
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'
@@ -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 (4.0.3)
164
- jquery-rails
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-sass-rails
337
+ jquery-ui-rails (>= 5.0.2)
343
338
  kaminari (~> 0.16.1)
344
339
  livescript-rails
345
340
  modernizr-rails (~> 2.7.1)
@@ -1,5 +1,7 @@
1
1
  #= require_self
2
+ #= require generica/image-preload
2
3
  #= require ./packages/flash
4
+ #= require ./packages/image_preloader
3
5
  #= require_tree ./mixins
4
6
  #= require_tree ./helpers
5
7
  #= require_tree ./controllers
@@ -12,6 +12,8 @@
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
+ //= require jquery-ui/effect.all
16
+ //= require jquery-ui/effect
15
17
  //= require foundation
16
18
  //= require underscore
17
19
  //= require handlebars
@@ -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
- .application-container.toggle-shift.shifted
2
- #canvas-menu-top
3
- site-nav
4
- #page-wrapper
5
- .site-content
6
- .not-site-footer
7
- == outlet
8
- site-footer action="displayModal"
9
- #fixed-bottom
10
- .row
11
- flash-message
12
- .modal-background
13
- .modal-vertical-container
14
- == outlet "modal"
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"
@@ -0,0 +1,12 @@
1
+ #billboard-holder
2
+ .row
3
+ .small-12.columns
4
+ h2.bill-title.capitalize.bold
5
+ i.fa.fa-cog.fa-spin
6
+ tr-span en="loading"
7
+ .small-12.columns
8
+ .progress.small-12.success
9
+ span.meter.filling
10
+
11
+ #everything-else-holder
12
+ == yield
@@ -1,7 +1,7 @@
1
1
  if product
2
2
  .media-object
3
3
  link-to "products.product.show" product.id
4
- img.product-image src=product.pictures.firstObject.picUrl
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
 
@@ -0,0 +1,12 @@
1
+ #billboard-holder {
2
+ position: absolute;
3
+ left: 0px;
4
+ top: 0px;
5
+ width: 100%;
6
+ height: 100%;
7
+ z-index: 9999999999;
8
+ background-color: #fff;
9
+ @include display-flex;
10
+ @include justify-content(center);
11
+ @include flex-direction(column);
12
+ }
@@ -1,4 +1,5 @@
1
1
  module Generica
2
2
  require File.join __dir__, "generica", "seed_generator"
3
3
  require File.join __dir__, "generica", "yaml_writer"
4
+ require File.join __dir__, "generica", "image_preloader"
4
5
  end
@@ -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"];
@@ -1,3 +1,3 @@
1
1
  module Cloudrider
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -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
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-08 00:00:00.000000000 Z
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