@@ -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
@@ -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);
@@ -13,8 +13,8 @@
<%= f.select :query_id, [], {include_blank: true} %>
- 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>
@@ -31,8 +31,8 @@
<% end %>
- var dashboardQueries = <%= blazer_json_escape((@queries || @dashboard.dashboard_queries.order(:position).map(&:query)).to_json).html_safe %>
+ <%= 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])
}
- });
+ })
@@ -35,13 +35,13 @@
- 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)
});
@@ -65,8 +65,8 @@
- 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] }] %>
@@ -51,7 +51,7 @@
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++) {
@@ -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);