run.html.erb 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <% if @error %>
  2. <div class="alert alert-danger"><%= @error %></div>
  3. <% elsif !@success %>
  4. <div class="alert alert-info">Can’t preview queries with variables...yet!</div>
  5. <% else %>
  6. <p class="text-muted"><%= pluralize(@rows.size, "row") %></p>
  7. <% if @rows.any? %>
  8. <% values = @rows.first.values %>
  9. <% if values.size >= 2 && values.first.is_a?(Time) && values[1..-1].all?{|v| v.is_a?(Numeric) } %>
  10. <% time_k = @columns.keys.first %>
  11. <%= line_chart @columns.keys[1..-1].map{|k| {name: k, data: @rows.map{|r| [r[time_k], r[k]] }} } %>
  12. <% elsif values.size == 3 && values.first.is_a?(Time) && values[1].is_a?(String) && values[2].is_a?(Numeric) %>
  13. <% keys = @columns.keys %>
  14. <%= line_chart @rows.group_by { |v| v[keys[1]] }.map { |name, v| {name: name, data: v.map { |v2| [v2[keys[0]], v2[keys[2]]] } } } %>
  15. <% elsif values.size == 2 && values.first.is_a?(String) && values.last.is_a?(Numeric) %>
  16. <%= pie_chart @rows.map(&:values), library: {sliceVisibilityThreshold: 1 / 40.0} %>
  17. <% end %>
  18. <% header_width = 100 / @rows.first.keys.size.to_f %>
  19. <table class="table">
  20. <thead>
  21. <tr>
  22. <% @columns.each do |key, type| %>
  23. <th style="width: <%= header_width %>%;" data-sort="<%= type %>">
  24. <div style="min-width: <%= @min_width_types.include?(key) ? 180 : 60 %>px;">
  25. <%= key %>
  26. </div>
  27. </th>
  28. <% end %>
  29. </tr>
  30. </thead>
  31. <tbody>
  32. <% @rows.each do |row| %>
  33. <tr>
  34. <% row.each do |k, v| %>
  35. <td>
  36. <% if v.is_a?(Time) %>
  37. <% v = v.in_time_zone(Blazer.time_zone) %>
  38. <% end %>
  39. <% unless v.nil? %>
  40. <% if v == "" %>
  41. <div class="text-muted">empty string</div>
  42. <% elsif @linked_columns[k] %>
  43. <%= link_to format_value(k, v), @linked_columns[k].gsub("{value}", u(v.to_s)), target: "_blank" %>
  44. <% else %>
  45. <%= format_value(k, v) %>
  46. <% end %>
  47. <% if v2 = (@boom[k] || {})[v] %>
  48. <div class="text-muted"><%= v2 %></div>
  49. <% end %>
  50. <% end %>
  51. </td>
  52. <% end %>
  53. </tr>
  54. <% end %>
  55. </tbody>
  56. </table>
  57. <% end %>
  58. <% end %>