From 1c1ae0cc705993e61dc13fd36ef9c92cba5fbe7c Mon Sep 17 00:00:00 2001 From: Nikolai B Date: Sun, 7 Aug 2016 23:03:13 +0100 Subject: [PATCH 1/5] Move js into browserfiy --- .gitignore | 1 + Gemfile | 2 +- Gemfile.lock | 6 +- app/assets/javascripts/application.js | 7 - .../javascripts/library_message.js.coffee | 15 +- .../javascripts/map_display.js.coffee.erb | 6 + app/assets/javascripts/ui.js.coffee | 2 + app/assets/stylesheets/maps.scss | 1 - config/application.rb | 36 + package.json | 19 + vendor/assets/javascripts/geojson-bbox.js | 51 - vendor/assets/javascripts/jquery.autosize.js | 175 - vendor/assets/javascripts/knockout.js | 96 - .../assets/javascripts/leaflet-search.src.js | 961 ------ vendor/assets/javascripts/leaflet.draw-src.js | 2942 ----------------- vendor/assets/javascripts/slick.min.js | 18 - 16 files changed, 78 insertions(+), 4260 deletions(-) create mode 100644 package.json delete mode 100644 vendor/assets/javascripts/geojson-bbox.js delete mode 100644 vendor/assets/javascripts/jquery.autosize.js delete mode 100644 vendor/assets/javascripts/knockout.js delete mode 100644 vendor/assets/javascripts/leaflet-search.src.js delete mode 100644 vendor/assets/javascripts/leaflet.draw-src.js delete mode 100644 vendor/assets/javascripts/slick.min.js diff --git a/.gitignore b/.gitignore index 1e6a15778..d3fc40aba 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ routes.txt public/system .DS_Store resque_web.url +node_modules/ diff --git a/Gemfile b/Gemfile index baf17d901..9b484f869 100644 --- a/Gemfile +++ b/Gemfile @@ -19,8 +19,8 @@ gem 'kaminari-i18n' gem 'rails_autolink' gem 'tweet-button' gem 'chartkick' -gem 'leaflet-rails' gem 'jqcloud-rails', github: 'GovSciences/jqcloud-rails' +gem 'browserify-rails' # gem 'jquery-turbolinks' # Back-end gems diff --git a/Gemfile.lock b/Gemfile.lock index 757d0cea5..f897c8427 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,6 +75,9 @@ GEM ice_nine (~> 0.11.0) thread_safe (~> 0.3, >= 0.3.1) bcrypt (3.1.11) + browserify-rails (3.1.0) + railties (>= 4.0.0, < 5.1) + sprockets (>= 3.5.2) builder (3.2.2) bullet (5.2.0) activesupport (>= 3.0.0) @@ -221,7 +224,6 @@ GEM rails launchy (2.4.3) addressable (~> 2.3) - leaflet-rails (0.7.7) letter_opener (1.4.1) launchy (~> 2.2) loofah (2.0.3) @@ -465,6 +467,7 @@ DEPENDENCIES activerecord-postgis-adapter annotate (>= 2.5.0) attribute_normalizer + browserify-rails bullet capybara chartkick @@ -496,7 +499,6 @@ DEPENDENCIES kaminari kaminari-i18n launchy - leaflet-rails letter_opener map_layers mustache diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index e8ebc30b7..bfc81cffc 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -6,7 +6,6 @@ // //= require jquery //= require jquery_ujs -//= require jquery.autosize //= require jquery.cookie //= require jquery.selectboxes //= require jquery-ui/autocomplete @@ -15,20 +14,14 @@ //= require jquery-ui/dialog //= require jquery-ui/slider //= require autocomplete-rails -//= require knockout //= require superbly-tagfield.min //= require map_display //= require ui //= require tags //= require library_message //= require thread_scroller -//= require leaflet -//= require slick.min //= require jquery.tagsinput //= require jquery-ui-sliderAccess //= require jquery-ui-timepicker-addon.min -//= require geojson-bbox.js -//= require leaflet-search.src.js -//= require leaflet.draw-src.js //= require leaflet-layerjson.src.js //= require jqcloud diff --git a/app/assets/javascripts/library_message.js.coffee b/app/assets/javascripts/library_message.js.coffee index d3f037943..3c5c769de 100644 --- a/app/assets/javascripts/library_message.js.coffee +++ b/app/assets/javascripts/library_message.js.coffee @@ -1,3 +1,6 @@ +ko = require('knockout') +slick = require('slick-carousel-browserify') + class LibraryMessageView constructor: (@panel) -> # Items loaded at the start @@ -30,7 +33,7 @@ class LibraryMessageView @results(data) $("#library-recent").hide() $("#library-results").show() - $('.scrollable').slick('setPosition') + slick($('.scrollable'), 'setPosition') show_error: (xhr, status, error) => console.log xhr, status, error @@ -47,23 +50,23 @@ class LibraryMessageView jQuery -> scroller = $('.scrollable') - scroller.slick( + slick(scroller, { dots: false arrows: false adaptiveHeight: true draggable: false - ) + }) if $("#from-library").length > 0 library_message_view = new LibraryMessageView($("#from-library")) # Select button $("#from-library").on "click", "a.select", (e) -> - scroller.slick('slickNext') + slick(scroller, 'slickNext') false $("#add-library-item > a.prev").click -> - scroller.slick('slickPrev') + slick(scroller, 'slickPrev') $('a[href="#from-library"]').click -> - scroller.slick('setPosition') + slick(scroller, 'setPosition') diff --git a/app/assets/javascripts/map_display.js.coffee.erb b/app/assets/javascripts/map_display.js.coffee.erb index c6293a3c8..5eacded11 100644 --- a/app/assets/javascripts/map_display.js.coffee.erb +++ b/app/assets/javascripts/map_display.js.coffee.erb @@ -1,3 +1,9 @@ +L = require('leaflet') +require('leaflet-search.src.js') +require('leaflet-draw') + +L.Icon.Default.imagePath = "<%= image_path('map-icons/m-misc.png') %>" + jQuery -> class LeafletMap @OpenCycle: 'https://{s}.tile.cyclestreets.net/opencyclemap/{z}/{x}/{y}@2x.png' diff --git a/app/assets/javascripts/ui.js.coffee b/app/assets/javascripts/ui.js.coffee index 9053dcfc4..866ad566c 100644 --- a/app/assets/javascripts/ui.js.coffee +++ b/app/assets/javascripts/ui.js.coffee @@ -1,3 +1,5 @@ +require('autosize/build/jquery.autosize.js') + jQuery -> # Tabs $(".tabs").parent().tabs() diff --git a/app/assets/stylesheets/maps.scss b/app/assets/stylesheets/maps.scss index 0aeeb3fe5..d5ab3c849 100644 --- a/app/assets/stylesheets/maps.scss +++ b/app/assets/stylesheets/maps.scss @@ -1,4 +1,3 @@ - // Maps #map { diff --git a/config/application.rb b/config/application.rb index c87a10c45..5e1495d99 100644 --- a/config/application.rb +++ b/config/application.rb @@ -47,6 +47,7 @@ class Application < Rails::Application # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' + config.assets.paths << "node_modules" # Set cache storage config.cache_store = :redis_store @@ -70,5 +71,40 @@ class Application < Rails::Application # Active Job config.active_job.queue_adapter = :resque + + # Specify the file paths that should be browserified. We browserify everything that + # matches (===) one of the paths. So you will most likely put lambdas + # regexes in here. + # + # By default only files in /app and /node_modules are browserified, + # vendor stuff is normally not made for browserification and may stop + # working. + config.browserify_rails.paths << /vendor\/assets\/javascripts\/module\.js/ + + # Environments in which to generate source maps + # + # The default is none + config.browserify_rails.source_map_environments << "development" + + # Should the node_modules directory be evaluated for changes on page load + # + # The default is `false` + # config.browserify_rails.evaluate_node_modules = true + + # Force browserify on every found JavaScript asset if true. + # Can be a proc. + # + # The default is `false` + # config.browserify_rails.force = ->(file) { File.extname(file) == ".ts" } + + # Command line options used when running browserify + # + # can be provided as a string: + config.browserify_rails.commandline_options = "-t coffeeify --extension=\".js.coffee\"" + + # Define NODE_ENV to be used with envify + # + # defaults to Rails.env + # config.browserify_rails.node_env = "production" end end diff --git a/package.json b/package.json new file mode 100644 index 000000000..274a11ac4 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "cyclescape", + "dependencies": { + "autosize": "^1.18.13", + "browserify": "~10.2.4", + "browserify-incremental": "^3.0.1", + "coffeeify": "~0.6", + "jquery-ui-timepicker-addon": "^1.5.5", + "knockout": "^3.4.0", + "leaflet": "^0.7.7", + "leaflet-draw": "0.2.4", + "leaflet-search": "^1.9.8", + "slick-carousel-browserify": "^1.6.12" + }, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } +} diff --git a/vendor/assets/javascripts/geojson-bbox.js b/vendor/assets/javascripts/geojson-bbox.js deleted file mode 100644 index 183a495ec..000000000 --- a/vendor/assets/javascripts/geojson-bbox.js +++ /dev/null @@ -1,51 +0,0 @@ -// Ammended version of -// https://github.com/geosquare/geojson-bbox/tree/08443c2da61414de6396f80b11d0519f2f4048fa -// - -GeojsonBbox = { - _getCoordinatesDump: function (gj) { - var coords; - if (gj.type == 'Point') { - coords = [gj.coordinates]; - } else if (gj.type == 'LineString' || gj.type == 'MultiPoint') { - coords = gj.coordinates; - } else if (gj.type == 'Polygon' || gj.type == 'MultiLineString') { - coords = gj.coordinates.reduce(function(dump,part) { - return dump.concat(part); - }, []); - } else if (gj.type == 'MultiPolygon') { - coords = gj.coordinates.reduce(function(dump,poly) { - return dump.concat(poly.reduce(function(points,part) { - return points.concat(part); - },[])); - },[]); - } else if (gj.type == 'Feature') { - coords = this._getCoordinatesDump(gj.geometry); - } else if (gj.type == 'GeometryCollection') { - coords = gj.geometries.reduce(function(dump,g) { - return dump.concat(this._getCoordinatesDump(g)); - },[]); - } else if (gj.type == 'FeatureCollection') { - coords = gj.features.reduce(function(dump,f) { - return dump.concat(this._getCoordinatesDump(f)); - },[]); - } - return coords; - }, - - bbox: function(gj) { - var coords, _bbox; - if (!gj.hasOwnProperty('type')) return; - coords = this._getCoordinatesDump(gj); - _bbox = [ Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY, - Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY,]; - return coords.reduce(function(prev,coord) { - return [ - Math.min(coord[0], prev[0]), - Math.min(coord[1], prev[1]), - Math.max(coord[0], prev[2]), - Math.max(coord[1], prev[3]) - ]; - }, _bbox); - } -}; diff --git a/vendor/assets/javascripts/jquery.autosize.js b/vendor/assets/javascripts/jquery.autosize.js deleted file mode 100644 index 375afc604..000000000 --- a/vendor/assets/javascripts/jquery.autosize.js +++ /dev/null @@ -1,175 +0,0 @@ -// Autosize 1.13 - jQuery plugin for textareas -// (c) 2012 Jack Moore - jacklmoore.com -// license: www.opensource.org/licenses/mit-license.php - -(function ($) { - var - hidden = 'hidden', - borderBox = 'border-box', - lineHeight = 'lineHeight', - copy = '