Browse Source

Added blazer_js_var helper

Andrew Kane 7 years ago
parent
commit
3026031883

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

@@ -32,6 +32,10 @@ module Blazer
       ENV["MAPBOX_ACCESS_TOKEN"].present?
     end
 
+    def blazer_js_var(name, value)
+      "var #{name} = #{blazer_json_escape(value.to_json)}".html_safe
+    end
+
     JSON_ESCAPE = { '&' => '\u0026', '>' => '\u003e', '<' => '\u003c', "\u2028" => '\u2028', "\u2029" => '\u2029' }
     JSON_ESCAPE_REGEXP = /[\u2028\u2029&><]/u
 

+ 1 - 1
app/views/blazer/_variables.html.erb

@@ -44,7 +44,7 @@
       </div>
 
       <script>
-        var timeZone = "<%= Blazer.time_zone.tzinfo.name %>";
+        <%= blazer_js_var "timeZone", Blazer.time_zone.tzinfo.name %>
         var format = "YYYY-MM-DD";
         var now = moment.tz(timeZone);
 

+ 2 - 2
app/views/blazer/checks/_form.html.erb

@@ -13,8 +13,8 @@
       <%= f.select :query_id, [], {include_blank: true} %>
     </div>
     <script>
-      var queries = <%= blazer_json_escape(Blazer::Query.named.order(:name).select("id, name").map { |q| {text: q.name, value: q.id} }.to_json).html_safe %>;
-      var items = <%= blazer_json_escape([@check.query_id].compact.to_json).html_safe %>;
+      <%= blazer_js_var "queries", Blazer::Query.named.order(:name).select("id, name").map { |q| {text: q.name, value: q.id} } %>
+      <%= blazer_js_var "items", [@check.query_id].compact %>
 
       $("#check_query_id").selectize({options: queries, items: items, highlight: false, maxOptions: 100}).parents(".hide").removeClass("hide");
     </script>

+ 4 - 4
app/views/blazer/dashboards/_form.html.erb

@@ -31,8 +31,8 @@
 <% end %>
 
 <script>
-  var queries = <%= blazer_json_escape(Blazer::Query.named.order(:name).select("id, name").map { |q| {text: q.name, value: q.id} }.to_json).html_safe %>;
-  var dashboardQueries = <%= blazer_json_escape((@queries || @dashboard.dashboard_queries.order(:position).map(&:query)).to_json).html_safe %>
+  <%= blazer_js_var "queries", Blazer::Query.named.order(:name).select("id, name").map { |q| {text: q.name, value: q.id} } %>
+  <%= blazer_js_var "dashboardQueries", @queries || @dashboard.dashboard_queries.order(:position).map(&:query) %>
 
   var app = new Vue({
     el: "#app",
@@ -61,7 +61,7 @@
   })
   Sortable.create($("#queries").get(0), {
     onEnd: function(e) {
-      app.queries.splice(e.newIndex, 0, app.queries.splice(e.oldIndex, 1)[0]);
+      app.queries.splice(e.newIndex, 0, app.queries.splice(e.oldIndex, 1)[0])
     }
-  });
+  })
 </script>

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

@@ -35,13 +35,13 @@
     </div>
   </div>
   <script>
-    var data = <%= blazer_json_escape({statement: query.statement, query_id: query.id, only_chart: true}.to_json).html_safe %>;
+    <%= blazer_js_var "data", {statement: query.statement, query_id: query.id, only_chart: true} %>
 
     runQuery(data, function (data) {
-      $("#chart-<%= i %>").html(data);
-      $("#chart-<%= i %> table").stupidtable();
+      $("#chart-<%= i %>").html(data)
+      $("#chart-<%= i %> table").stupidtable()
     }, function (message) {
-      $("#chart-<%= i %>").css("color", "red").html(message);
+      $("#chart-<%= i %>").css("color", "red").html(message)
     });
   </script>
 <% end %>

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

@@ -65,8 +65,8 @@
 </div>
 
 <script>
-  var params = <%= raw blazer_json_escape(variable_params.to_json) %>;
-  var previewStatement = <%= raw blazer_json_escape(Hash[Blazer.data_sources.map { |k, v| [k, v.preview_statement] }].to_json) %>;
+  <%= blazer_js_var "params", variable_params %>
+  <%= blazer_js_var "previewStatement", Hash[Blazer.data_sources.map { |k, v| [k, v.preview_statement] }] %>
 
   var app = new Vue({
     el: "#app",

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

@@ -51,7 +51,7 @@
       <script>
         L.mapbox.accessToken = '<%= ENV["MAPBOX_ACCESS_TOKEN"] %>';
         var map = L.mapbox.map('map', 'ankane.ioo8nki0');
-        var markers = <%= blazer_json_escape(@markers.to_json).html_safe %>;
+        <%= blazer_js_var "markers", @markers %>
         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

@@ -56,7 +56,7 @@
       $("#results").css("color", "red").html(message);
     }
 
-    var data = <%= blazer_json_escape(variable_params.merge(statement: @statement, query_id: @query.id).to_json).html_safe %>;
+    <%= blazer_js_var "data", variable_params.merge(statement: @statement, query_id: @query.id) %>
 
     runQuery(data, showRun, showError);
   </script>