Sfoglia il codice sorgente

Merge branch 'master' into groupdate_hack

Andrew Kane 9 anni fa
parent
commit
0674017806

+ 5 - 0
CHANGELOG.md

@@ -1,3 +1,8 @@
+## 1.0.3 [unreleased]
+
+- Added maps
+- Added support for Rails 4.0
+
 ## 1.0.2
 
 - Fixed error when installing

+ 14 - 0
app/helpers/blazer/base_helper.rb

@@ -19,5 +19,19 @@ module Blazer
     def blazer_maps?
       ENV["MAPBOX_ACCESS_TOKEN"].present?
     end
+
+    JSON_ESCAPE = { '&' => '\u0026', '>' => '\u003e', '<' => '\u003c', "\u2028" => '\u2028', "\u2029" => '\u2029' }
+    JSON_ESCAPE_REGEXP = /[\u2028\u2029&><]/u
+
+    # Prior to version 4.1 of rails double quotes were inadventently removed in json_escape.
+    # This adds the correct json_escape functionality to rails versions < 4.1
+    def blazer_json_escape(s)
+      if Rails::VERSION::STRING < "4.1"
+        result = s.to_s.gsub(JSON_ESCAPE_REGEXP, JSON_ESCAPE)
+        s.html_safe? ? result.html_safe : result
+      else
+        json_escape(s)
+      end
+    end
   end
 end

+ 1 - 1
app/views/blazer/checks/run.html.erb

@@ -1,7 +1,7 @@
 <p style="text-muted">Running check...</p>
 
 <script>
-  $.post("<%= run_queries_path %>", <%= json_escape({statement: @query.statement, query_id: @query.id, check: true}.to_json).html_safe %>, function (data) {
+  $.post("<%= run_queries_path %>", <%= blazer_json_escape({statement: @query.statement, query_id: @query.id, check: true}.to_json).html_safe %>, function (data) {
     setTimeout( function () {
       window.location.href = "<%= checks_path %>";
     }, 200);

+ 1 - 1
app/views/blazer/dashboards/show.html.erb

@@ -137,7 +137,7 @@
     var request = $.ajax({
       url: "<%= run_queries_path %>",
       method: "POST",
-      data: <%= json_escape({statement: query.statement, query_id: query.id, only_chart: true}.to_json).html_safe %>,
+      data: <%= blazer_json_escape({statement: query.statement, query_id: query.id, only_chart: true}.to_json).html_safe %>,
       dataType: "html"
     }).done(function(data) {
       $("#chart-<%= i %>").html(data);

+ 1 - 1
app/views/blazer/queries/_form.html.erb

@@ -97,7 +97,7 @@
 
   var error_line = null;
   var xhr;
-  var params = <%= raw json_escape(variable_params.to_json) %>;
+  var params = <%= raw blazer_json_escape(variable_params.to_json) %>;
 
   $("#run").click(function (e) {
     e.preventDefault();

+ 2 - 2
app/views/blazer/queries/run.html.erb

@@ -35,11 +35,11 @@
     <% elsif values.size == 2 && values.first.is_a?(String) && values.last.is_a?(Numeric) %>
       <%= pie_chart @rows.map(&:values), library: {sliceVisibilityThreshold: 1 / 40.0}, id: chart_id %>
     <% elsif blazer_maps? && @markers.any? %>
-      <div id="map" style="height: 300px;"></div>
+      <div id="map" style="height: <%= @only_chart ? 300 : 500 %>px;"></div>
       <script>
         L.mapbox.accessToken = '<%= ENV["MAPBOX_ACCESS_TOKEN"] %>';
         var map = L.mapbox.map('map', 'ankane.ioo8nki0');
-        var markers = <%= json_escape(@markers.to_json).html_safe %>;
+        var markers = <%= blazer_json_escape(@markers.to_json).html_safe %>;
         var featureLayer = L.mapbox.featureLayer().addTo(map);
         var geojson = [];
         for (var i = 0; i < markers.length; i++) {

+ 1 - 1
app/views/blazer/queries/show.html.erb

@@ -158,7 +158,7 @@
     var request = $.ajax({
       url: "<%= run_queries_path %>",
       method: "POST",
-      data: <%= json_escape(variable_params.merge(statement: @statement, query_id: @query.id).to_json).html_safe %>,
+      data: <%= blazer_json_escape(variable_params.merge(statement: @statement, query_id: @query.id).to_json).html_safe %>,
       dataType: "html"
     }).done(function(data) {
       $("#results").html(data);