Merge remote-tracking branch 'upstream/pull/2196'
authorTom Hughes <tom@compton.nu>
Wed, 3 Apr 2019 18:06:18 +0000 (19:06 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 3 Apr 2019 18:06:18 +0000 (19:06 +0100)
.travis.yml
Gemfile
Gemfile.lock
app/assets/javascripts/index.js
app/assets/javascripts/index/directions.js
app/assets/javascripts/index/note.js
app/assets/javascripts/index/search.js
app/assets/javascripts/piwik.js
app/assets/javascripts/richtext.js
config/eslint.json [new file with mode: 0644]
config/jshint.yml [deleted file]

index 9b848200fb127855e839de0d0b7adfbb07dee7f5..a0ed70c19601565c24634c0e5ecbc6f2bc34757f 100644 (file)
@@ -27,6 +27,6 @@ before_script:
   - bundle exec rake i18n:js:export
 script:
   - bundle exec rubocop -f fuubar
-  - bundle exec rake jshint
+  - bundle exec rake eslint:run_all
   - bundle exec erblint .
   - bundle exec rake test:db
diff --git a/Gemfile b/Gemfile
index ce37b7c440e4d3cb402339bb68a27cb293e014d9..d2e0167a5878011461ed735075f915601fc90791 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -145,8 +145,10 @@ group :development, :test do
   gem "capybara", "~> 2.13"
   gem "coveralls", :require => false
   gem "erb_lint", :require => false
+  gem "eslint-rails-ee"
+  gem "execjs"
   gem "factory_bot_rails"
-  gem "jshint"
   gem "poltergeist"
   gem "puma", "~> 3.7"
+  gem "therubyracer", :platforms => :ruby
 end
index 32496e129ba67fbba417a796d355f64e28e60cd9..d850c7aebe3219d2d3741259523858f8021d6b02 100644 (file)
@@ -99,6 +99,7 @@ GEM
       coffee-script-source
       execjs
     coffee-script-source (1.12.2)
+    colorize (0.8.1)
     composite_primary_keys (11.1.0)
       activerecord (~> 5.2.1)
     concurrent-ruby (1.1.5)
@@ -161,6 +162,10 @@ GEM
       rubocop (~> 0.51)
       smart_properties
     erubi (1.8.0)
+    eslint-rails-ee (1.0.2)
+      colorize
+      execjs
+      railties (>= 3.2)
     execjs (2.7.0)
     exifr (1.3.6)
     factory_bot (5.0.2)
@@ -204,10 +209,6 @@ GEM
       rails-dom-testing (>= 1, < 3)
       railties (>= 4.2.0)
       thor (>= 0.14, < 2.0)
-    jshint (1.5.0)
-      execjs (>= 1.4.0)
-      multi_json (~> 1.0)
-      therubyracer (~> 0.12.1)
     json (2.2.0)
     jsonify (0.3.1)
       multi_json (~> 1.0)
@@ -459,6 +460,8 @@ DEPENDENCIES
   delayed_job_active_record
   dynamic_form
   erb_lint
+  eslint-rails-ee
+  execjs
   factory_bot_rails
   fakefs
   faraday
@@ -469,7 +472,6 @@ DEPENDENCIES
   i18n-js (>= 3.0.0)
   image_optim_rails
   jquery-rails
-  jshint
   json
   jsonify-rails
   kgio
@@ -506,6 +508,7 @@ DEPENDENCIES
   sanitize
   sassc-rails
   secure_headers
+  therubyracer
   uglifier (>= 1.3.0)
   validates_email_format_of (>= 1.5.1)
   vendorer
index e8e566f53a2ca698ae09000cb73d54118282fd8d..d1527207ff6bd7a7e2a16b1cd3fea3a702d9ecc5 100644 (file)
 $(document).ready(function () {
   var loaderTimeout;
 
+  var map = new L.OSM.Map("map", {
+    zoomControl: false,
+    layerControl: false,
+    contextmenu: true
+  });
+
   OSM.loadSidebarContent = function(path, callback) {
     map.setSidebarOverlaid(false);
 
@@ -78,12 +84,6 @@ $(document).ready(function () {
 
   var params = OSM.mapParams();
 
-  var map = new L.OSM.Map("map", {
-    zoomControl: false,
-    layerControl: false,
-    contextmenu: true
-  });
-
   map.attributionControl.setPrefix('');
 
   map.updateLayers(params.layers);
index bdba41ec25c2aca44f7c439a639abda38f036d27..dd408debcf1301fd0d68234283db28e5f158c91d 100644 (file)
@@ -28,6 +28,20 @@ OSM.Directions = function (map) {
   var expiry = new Date();
   expiry.setYear(expiry.getFullYear() + 10);
 
+  var engines = OSM.Directions.engines;
+
+  engines.sort(function (a, b) {
+    a = I18n.t('javascripts.directions.engines.' + a.id);
+    b = I18n.t('javascripts.directions.engines.' + b.id);
+    return a.localeCompare(b);
+  });
+
+  var select = $('select.routing_engines');
+
+  engines.forEach(function(engine, i) {
+    select.append("<option value='" + i + "'>" + I18n.t('javascripts.directions.engines.' + engine.id) + "</option>");
+  });
+
   function Endpoint(input, iconUrl) {
     var endpoint = {};
 
@@ -60,7 +74,7 @@ OSM.Directions = function (map) {
 
     input.on("change", function (e) {
       awaitingGeocode = true;
-      
+
       // make text the same in both text boxes
       var value = e.target.value;
       endpoint.setValue(value);
@@ -245,7 +259,6 @@ OSM.Directions = function (map) {
         .html(html);
 
       // Add each row
-      var cumulative = 0;
       route.steps.forEach(function (step) {
         var ll        = step[0],
           direction   = step[1],
@@ -253,8 +266,6 @@ OSM.Directions = function (map) {
           dist        = step[3],
           lineseg     = step[4];
 
-        cumulative += dist;
-
         if (dist < 5) {
           dist = "";
         } else if (dist < 200) {
@@ -304,20 +315,6 @@ OSM.Directions = function (map) {
     });
   }
 
-  var engines = OSM.Directions.engines;
-
-  engines.sort(function (a, b) {
-    a = I18n.t('javascripts.directions.engines.' + a.id);
-    b = I18n.t('javascripts.directions.engines.' + b.id);
-    return a.localeCompare(b);
-  });
-
-  var select = $('select.routing_engines');
-
-  engines.forEach(function(engine, i) {
-    select.append("<option value='" + i + "'>" + I18n.t('javascripts.directions.engines.' + engine.id) + "</option>");
-  });
-
   var chosenEngineIndex = findEngine('fossgis_osrm_car');
   if ($.cookie('_osm_directions_engine')) {
     chosenEngineIndex = findEngine($.cookie('_osm_directions_engine'));
index 3973420bdd3d3536682aa0b87b6720c65b7e9874..85267ab93ed5d53f9c47fadf4123cf37f01c8a21 100644 (file)
@@ -40,7 +40,7 @@ OSM.Note = function (map) {
       initialize(function() {
         var data = $('.details').data(),
           latLng = L.latLng(data.coordinates.split(','));
-        if (!map.getBounds().contains(latLng)) moveToNote();        
+        if (!map.getBounds().contains(latLng)) moveToNote();
       });
     });
   };
index ea6140e582db78dea993eccdbde6eb1659124bb9..6ca145c0325f9c8d4148a3635200f905380be46b 100644 (file)
@@ -55,6 +55,8 @@ OSM.Search = function(map) {
       });
     });
 
+  var markers = L.layerGroup().addTo(map);
+
   function clickSearchMore(e) {
     e.preventDefault();
     e.stopPropagation();
@@ -115,8 +117,6 @@ OSM.Search = function(map) {
     e.stopPropagation();
   }
 
-  var markers = L.layerGroup().addTo(map);
-
   var page = {};
 
   page.pushstate = page.popstate = function(path) {
index 19b5619a2558cef99ab7deec512841dd487d9eff..5353a99ac199609cd763903e953083625501cdc0 100644 (file)
@@ -9,14 +9,14 @@ if (OSM.PIWIK) {
       cache: true,
       success: function () {
         piwikTracker = Piwik.getTracker(base + "piwik.php", OSM.PIWIK.site);
-      
+
         if (OSM.user) {
           piwikTracker.setUserId(OSM.user.toString());
         }
 
         piwikTracker.trackPageView();
         piwikTracker.enableLinkTracking();
-      
+
         $("meta[name=piwik-goal]").each(function () {
           piwikTracker.trackGoal($(this).attr("content"));
         });
index a5323bc0774c3adcd81ba28a191c27c88ffcce0f..ea2efcfadc33b74e5b7f11a4988ed47ada2e0f68 100644 (file)
@@ -2,12 +2,12 @@ $(document).ready(function () {
   /* Hide the preview panes */
   $(".richtext_preview").hide();
 
-  /* 
+  /*
    * When the text in an edit pane is changed, clear the contents of
    * the associated preview pne so that it will be regenerated when
    * the user next switches to it.
    */
-  $(".richtext_content textarea").change(function () { 
+  $(".richtext_content textarea").change(function () {
     $(this).parents(".richtext_container").find(".richtext_preview").empty();
   });
 
diff --git a/config/eslint.json b/config/eslint.json
new file mode 100644 (file)
index 0000000..28ec4d3
--- /dev/null
@@ -0,0 +1,30 @@
+{
+  "env": {
+    "browser": true,
+    "jquery": true
+  },
+  "extends": [
+    "eslint:recommended"
+  ],
+  "globals": {
+    "bowser": "readonly",
+    "I18n": "readonly",
+    "L": "readonly",
+    "OSM": "writable",
+    "Piwik": "readonly",
+    "querystring": "readonly",
+    "require": "readonly",
+    "updateLinks": "readonly"
+  },
+  "rules": {
+    "eqeqeq": ["error", "smart"],
+    "no-caller": "error",
+    "no-extend-native": "error",
+    "no-new": "error",
+    "no-trailing-spaces": "error",
+    "no-undef": "error",
+    "no-unused-vars": "error",
+    "no-use-before-define": ["error", {"functions": false}],
+    "semi": ["error", "always"]
+  }
+}
diff --git a/config/jshint.yml b/config/jshint.yml
deleted file mode 100644 (file)
index a7e2248..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-files:
-  - "**/*.js"
-exclude_paths:
-  - "app/assets/javascripts/i18n"
-  - "vendor/assets/javascripts"
-options:
-  eqeqeq: true
-  freeze: true
-  latedef: "nofunc"
-  noarg: true
-  noempty: true
-  nonew: true
-  undef: true
-  browser: true
-  jquery: true
-  unused: true
-  trailing: true
-  globals:
-    I18n: false
-    L: true
-    OSM: true
-    Piwik: false
-    alert: false
-    escape: false
-    maximiseMap: false
-    minimiseMap: false
-    querystring: true
-    require: false
-    updateLinks: false
-    bowser: false