show.html.erb 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <% title @query.name %>
  2. <div style="position: fixed; top: 0; left: 0; right: 0; background-color: whitesmoke; height: 60px; z-index: 1001;">
  3. <div class="container">
  4. <div class="row" style="padding-top: 13px;">
  5. <div class="col-sm-9">
  6. <h3 style="margin: 0; line-height: 34px;">
  7. <%= @query.name %>
  8. </h3>
  9. </div>
  10. <div class="col-sm-3 text-right">
  11. <%= link_to "Home", root_path, class: "btn btn-primary" %>
  12. <%= link_to "Edit", edit_query_path(@query), class: "btn btn-default" %>
  13. <% if !@error and @success %>
  14. <%= button_to "Download", run_queries_path(statement: @query.statement, query_id: @query.id, format: "csv"), class: "btn btn-info" %>
  15. <% end %>
  16. </div>
  17. </div>
  18. </div>
  19. </div>
  20. <div style="margin-bottom: 60px;"></div>
  21. <% if @sql_errors.any? %>
  22. <div class="alert alert-danger">
  23. <ul>
  24. <% @sql_errors.each do |message| %>
  25. <li><%= message %></li>
  26. <% end %>
  27. </ul>
  28. </div>
  29. <% end %>
  30. <% if @query.description.present? %>
  31. <p><%= @query.description %></p>
  32. <% end %>
  33. <% if @bind_vars.any? %>
  34. <form id="bind" method="get" action="<%= url_for(params) %>" class="form-inline" style="margin-bottom: 10px;">
  35. <% date_vars = ["start_time", "end_time"] %>
  36. <% if (date_vars - @bind_vars).empty? %>
  37. <% @bind_vars = @bind_vars - date_vars %>
  38. <% else %>
  39. <% date_vars = nil %>
  40. <% end %>
  41. <% @bind_vars.each_with_index do |var, i| %>
  42. <%= label_tag var, var %>
  43. <% if (data = @smart_vars[var]) %>
  44. <%= select_tag var, options_for_select([[nil, nil]] + data, selected: params[var]), style: "margin-right: 20px; width: 200px;" %>
  45. <script>
  46. $("#<%= var %>").selectize({
  47. create: true
  48. });
  49. </script>
  50. <% else %>
  51. <%= text_field_tag var, params[var], style: "width: 120px; margin-right: 20px;", autofocus: i == 0 && !var.end_with?("_at") && !params[var], class: "form-control" %>
  52. <% if var.end_with?("_at") %>
  53. <script>
  54. $("#<%= var %>").datepicker({format: "yyyy-mm-dd", autoclose: true, todayBtn: "linked"})
  55. </script>
  56. <% end %>
  57. <% end %>
  58. <% end %>
  59. <% if date_vars %>
  60. <% date_vars.each do |var| %>
  61. <%= hidden_field_tag var, params[var] %>
  62. <% end %>
  63. <%= label_tag nil, date_vars.join(" & ") %>
  64. <div class="selectize-control single" style="width: 300px;">
  65. <div id="reportrange" class="selectize-input" style="display: inline-block;">
  66. <span>Select a time range</span>
  67. </div>
  68. </div>
  69. <script>
  70. $('#reportrange').daterangepicker(
  71. {
  72. ranges: {
  73. 'Today': [moment(), moment()],
  74. 'Last 7 Days': [moment().subtract('days', 6), moment()],
  75. 'Last 30 Days': [moment().subtract('days', 29), moment()]
  76. },
  77. startDate: moment().subtract('days', 29),
  78. endDate: moment(),
  79. opens: "left"
  80. },
  81. function(start, end) {
  82. $("#start_time").val(start.toISOString());
  83. $("#end_time").val(end.endOf("day").toISOString());
  84. $("#start_time").closest("form").submit();
  85. }
  86. ).on('apply.daterangepicker', function(ev, picker) {
  87. $("#start_time").val(picker.startDate.toISOString());
  88. $("#end_time").val(picker.endDate.endOf("day").toISOString());
  89. $('#reportrange span').html(picker.startDate.format('MMMM D, YYYY') + ' - ' + picker.endDate.format('MMMM D, YYYY'));
  90. })
  91. if ($("#start_time").val().length > 0) {
  92. var picker = $("#reportrange").data('daterangepicker');
  93. picker.setStartDate(moment($("#start_time").val()));
  94. picker.setEndDate(moment($("#end_time").val()));
  95. $("#reportrange").trigger('apply.daterangepicker', picker)
  96. }
  97. </script>
  98. <% end %>
  99. <input type="submit" class="btn btn-success" value="Run" style="vertical-align: top;" />
  100. </form>
  101. <% end %>
  102. <pre><code><%= @query.statement %></code></pre>
  103. <% if @success %>
  104. <div id="results">
  105. <p class="text-muted">Loading...</p>
  106. </div>
  107. <script>
  108. $.post("<%= run_queries_path %>", <%= json_escape({statement: @query.statement, query_id: @query.id}.to_json).html_safe %>, function (data) {
  109. $("#results").html(data);
  110. $("#results table").stupidtable().stickyTableHeaders({fixedOffset: 60});
  111. });
  112. $(".form-inline input, .form-inline select").change( function () {
  113. if ($(this).val() != "") {
  114. $(this).closest("form").submit();
  115. }
  116. });
  117. </script>
  118. <% end %>
  119. <script>
  120. hljs.initHighlightingOnLoad();
  121. </script>