cloudrider 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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