123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <% if @error %>
- <div class="alert alert-danger"><%= @error %></div>
- <% elsif !@success %>
- <% if @only_chart %>
- <p class="text-muted">Select variables</p>
- <% else %>
- <div class="alert alert-info">Can’t preview queries with variables...yet!</div>
- <% end %>
- <% else %>
- <% unless @only_chart %>
- <% if @cached_at || @data_source.cache %>
- <p class="text-muted" style="float: right;">
- <% if @cached_at %>
- Cached <%= time_ago_in_words(@cached_at, include_seconds: true) %> ago
- <% elsif !params[:data_source] %>
- Cached just now
- <% end %>
- <% if @query && !params[:data_source] %>
- <%= link_to "Refresh", refresh_query_path(@query, variable_params), method: :post %>
- <% end %>
- </p>
- <% end %>
- <p class="text-muted"><%= pluralize(@rows.size, "row") %></p>
- <% end %>
- <% if @rows.any? %>
- <% values = @rows.first.values %>
- <% chart_id = SecureRandom.hex %>
- <% column_types = blazer_column_types(@columns, @rows, @boom) %>
- <% chart_options = {id: chart_id, min: nil} %>
- <% series_library = {} %>
- <% @columns.keys.select { |k| k.downcase == "target" }.each do |key| %>
- <% series_library[key] = {pointStyle: "line", hitRadius: 5, borderColor: "#109618", pointBackgroundColor: "#109618", backgroundColor: "#109618"} %>
- <% end %>
- <% if blazer_maps? && @markers.any? %>
- <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 = <%= 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++) {
- var marker = markers[i];
- geojson.push({
- type: 'Feature',
- geometry: {
- type: 'Point',
- coordinates: [
- marker.longitude,
- marker.latitude
- ]
- },
- properties: {
- description: marker.title,
- 'marker-color': '#f86767',
- 'marker-size': 'medium'
- }
- });
- }
- featureLayer.setGeoJSON(geojson);
- map.fitBounds(featureLayer.getBounds());
- </script>
- <% elsif values.size >= 2 && column_types.compact == ["time"] + (column_types.compact.size - 1).times.map { "numeric" } %>
- <% time_k = @columns.keys.first %>
- <%= line_chart @columns.keys[1..-1].map{ |k| {name: k, data: @rows.map{|r| [r[time_k], r[k]] }, library: series_library[k]} }, chart_options %>
- <% elsif values.size == 3 && column_types == ["time", "string", "numeric"] %>
- <% keys = @columns.keys %>
- <%= line_chart @rows.group_by { |r| k = keys[1]; v = r[k]; (@boom[k] || {})[v.to_s] || v }.map { |name, v| {name: name, data: v.map { |v2| [v2[keys[0]], v2[keys[2]]] }, library: series_library[name]} }, chart_options %>
- <% elsif values.size >= 2 && column_types == ["string"] + (values.size - 1).times.map { "numeric" } %>
- <% keys = @columns.keys %>
- <%= column_chart (values.size - 1).times.map { |i| name = @columns.keys[i + 1]; {name: name, data: @rows.first(20).map { |r| [(@boom[keys[0]] || {})[r[keys[0]].to_s] || r[keys[0]], r[keys[i + 1]]] } } }, id: chart_id %>
- <% elsif @only_chart %>
- <% if @rows.size == 1 && @rows.first.size == 1 %>
- <p style="font-size: 160px;"><%= blazer_format_value(@rows.first.keys.first, @rows.first.values.first) %></p>
- <% else %>
- <% @no_chart = true %>
- <% end %>
- <% end %>
- <% unless @only_chart && !@no_chart %>
- <% header_width = 100 / @rows.first.keys.size.to_f %>
- <div class="results-container">
- <% if @columns.keys == ["QUERY PLAN"] %>
- <pre><code><%= @rows.map { |r| r["QUERY PLAN"] }.join("\n") %></code></pre>
- <% else %>
- <table class="table results-table" style="margin-bottom: 0;">
- <thead>
- <tr>
- <% @columns.each do |key, type| %>
- <th style="width: <%= header_width %>%;" data-sort="<%= type %>">
- <div style="min-width: <%= @min_width_types.include?(key) ? 180 : 60 %>px;">
- <%= key %>
- </div>
- </th>
- <% end %>
- </tr>
- </thead>
- <tbody>
- <% @rows.each do |row| %>
- <tr>
- <% row.each do |k, v| %>
- <td>
- <% if v.is_a?(Time) %>
- <% v = blazer_time_value(k, v) %>
- <% end %>
- <% unless v.nil? %>
- <% if v == "" %>
- <div class="text-muted">empty string</div>
- <% elsif @linked_columns[k] %>
- <%= link_to blazer_format_value(k, v), @linked_columns[k].gsub("{value}", u(v.to_s)), target: "_blank" %>
- <% else %>
- <%= blazer_format_value(k, v) %>
- <% end %>
- <% if v2 = (@boom[k] || {})[v.to_s] %>
- <div class="text-muted"><%= v2 %></div>
- <% end %>
- <% end %>
- </td>
- <% end %>
- </tr>
- <% end %>
- </tbody>
- </table>
- <% end %>
- </div>
- <% end %>
- <% elsif @only_chart %>
- <p class="text-muted">No rows</p>
- <% end %>
- <% end %>
|