Browse Source

Use partial for variables

Andrew Kane 8 năm trước cách đây
mục cha
commit
1a9694fef7

+ 97 - 0
app/views/blazer/_variables.html.erb

@@ -0,0 +1,97 @@
+<% if @bind_vars.any? %>
+  <form id="bind" method="get" action="<%= action %>" class="form-inline" style="margin-bottom: 10px;">
+    <% date_vars = ["start_time", "end_time"] %>
+    <% if (date_vars - @bind_vars).empty? %>
+      <% @bind_vars = @bind_vars - date_vars %>
+    <% else %>
+      <% date_vars = nil %>
+    <% end %>
+
+    <% @bind_vars.each_with_index do |var, i| %>
+      <%= label_tag var, var %>
+      <% if (data = @smart_vars[var]) %>
+        <%= select_tag var, options_for_select([[nil, nil]] + data, selected: params[var]), style: "margin-right: 20px; width: 200px; display: none;" %>
+        <script>
+          $("#<%= var %>").selectize({
+            create: true
+          });
+        </script>
+      <% else %>
+        <%= text_field_tag var, params[var], style: "width: 120px; margin-right: 20px;", autofocus: i == 0 && !var.end_with?("_at") && !params[var], class: "form-control" %>
+        <% if var.end_with?("_at") %>
+          <script>
+            $("#<%= var %>").daterangepicker({singleDatePicker: true, locale: {format: "YYYY-MM-DD"}});
+          </script>
+        <% end %>
+      <% end %>
+    <% end %>
+
+    <% if date_vars %>
+      <% date_vars.each do |var| %>
+        <%= hidden_field_tag var, params[var] %>
+      <% end %>
+
+      <%= label_tag nil, date_vars.join(" & ") %>
+      <div class="selectize-control single" style="width: 300px;">
+        <div id="reportrange" class="selectize-input" style="display: inline-block;">
+          <span>Select a time range</span>
+        </div>
+      </div>
+
+      <script>
+        var timeZone = "<%= Blazer.time_zone.tzinfo.name %>";
+        var format = "YYYY-MM-DD";
+        var now = moment.tz(timeZone);
+
+        function dateStr(daysAgo) {
+          return now.clone().subtract(daysAgo || 0, "days").format(format);
+        }
+
+        function toDate(time) {
+          return moment.tz(time.format(format), timeZone);
+        }
+
+        function setTimeInputs(start, end) {
+          $("#start_time").val(toDate(start).utc().format());
+          $("#end_time").val(toDate(end).endOf("day").utc().format());
+        }
+
+        $('#reportrange').daterangepicker(
+          {
+            ranges: {
+             "Today": [dateStr(), dateStr()],
+             "Last 7 Days": [dateStr(6), dateStr()],
+             "Last 30 Days": [dateStr(29), dateStr()]
+            },
+            locale: {
+              format: format
+            },
+            startDate: dateStr(29),
+            endDate: dateStr(),
+            opens: "right"
+          },
+          function(start, end) {
+            setTimeInputs(start, end);
+            submitIfCompleted($("#start_time").closest("form"));
+          }
+        ).on('apply.daterangepicker', function(ev, picker) {
+          setTimeInputs(picker.startDate, picker.endDate);
+          $('#reportrange span').html(toDate(picker.startDate).format('MMMM D, YYYY') + ' - ' + toDate(picker.endDate).format('MMMM D, YYYY'));
+        })
+
+        if ($("#start_time").val().length > 0) {
+          var picker = $("#reportrange").data('daterangepicker');
+          picker.setStartDate(moment.tz($("#start_time").val(), timeZone));
+          picker.setEndDate(moment.tz($("#end_time").val(), timeZone));
+          $("#reportrange").trigger('apply.daterangepicker', picker)
+        } else {
+          var picker = $("#reportrange").data('daterangepicker');
+          $("#reportrange").trigger('apply.daterangepicker', picker);
+          submitIfCompleted($("#start_time").closest("form"));
+        }
+      </script>
+    <% end %>
+
+    <input type="submit" class="btn btn-success" value="Run" style="vertical-align: top;" />
+  </form>
+<% end %>

+ 1 - 95
app/views/blazer/dashboards/show.html.erb

@@ -25,101 +25,7 @@
   </p>
 <% end %>
 
-<% if @bind_vars.any? %>
-  <form id="bind" method="get" action="<%= dashboard_path(@dashboard) %>" class="form-inline" style="margin-bottom: 10px;">
-    <% date_vars = ["start_time", "end_time"] %>
-    <% if (date_vars - @bind_vars).empty? %>
-      <% @bind_vars = @bind_vars - date_vars %>
-    <% else %>
-      <% date_vars = nil %>
-    <% end %>
-
-    <% @bind_vars.each_with_index do |var, i| %>
-      <%= label_tag var, var %>
-      <% if (data = @smart_vars[var]) %>
-        <%= select_tag var, options_for_select([[nil, nil]] + data, selected: params[var]), style: "margin-right: 20px; width: 200px; display: none;" %>
-        <script>
-          $("#<%= var %>").selectize({
-            create: true
-          });
-        </script>
-      <% else %>
-        <%= text_field_tag var, params[var], style: "width: 120px; margin-right: 20px;", autofocus: i == 0 && !var.end_with?("_at") && !params[var], class: "form-control" %>
-        <% if var.end_with?("_at") %>
-          <script>
-            $("#<%= var %>").daterangepicker({singleDatePicker: true, locale: {format: "YYYY-MM-DD"}});
-          </script>
-        <% end %>
-      <% end %>
-    <% end %>
-
-    <% if date_vars %>
-      <% date_vars.each do |var| %>
-        <%= hidden_field_tag var, params[var] %>
-      <% end %>
-
-      <%= label_tag nil, date_vars.join(" & ") %>
-      <div class="selectize-control single" style="width: 300px;">
-        <div id="reportrange" class="selectize-input" style="display: inline-block;">
-          <span>Select a time range</span>
-        </div>
-      </div>
-
-      <script>
-        var timeZone = "<%= Blazer.time_zone.tzinfo.name %>";
-        var format = "YYYY-MM-DD";
-        var now = moment.tz(timeZone);
-
-        function dateStr(daysAgo) {
-          return now.clone().subtract(daysAgo || 0, "days").format(format);
-        }
-
-        function toDate(time) {
-          return moment.tz(time.format(format), timeZone);
-        }
-
-        function setTimeInputs(start, end) {
-          $("#start_time").val(toDate(start).utc().format());
-          $("#end_time").val(toDate(end).endOf("day").utc().format());
-        }
-
-        $('#reportrange').daterangepicker(
-          {
-            ranges: {
-             "Today": [dateStr(), dateStr()],
-             "Last 7 Days": [dateStr(6), dateStr()],
-             "Last 30 Days": [dateStr(29), dateStr()]
-            },
-            locale: {
-              format: format
-            },
-            startDate: dateStr(29),
-            endDate: dateStr(),
-            opens: "left"
-          },
-          function(start, end) {
-            setTimeInputs(start, end);
-            submitIfCompleted($("#start_time").closest("form"));
-          }
-        ).on('apply.daterangepicker', function(ev, picker) {
-          setTimeInputs(picker.startDate, picker.endDate);
-          $('#reportrange span').html(toDate(picker.startDate).format('MMMM D, YYYY') + ' - ' + toDate(picker.endDate).format('MMMM D, YYYY'));
-        })
-
-        if ($("#start_time").val().length > 0) {
-          var picker = $("#reportrange").data('daterangepicker');
-          picker.setStartDate(moment.tz($("#start_time").val(), timeZone));
-          picker.setEndDate(moment.tz($("#end_time").val(), timeZone));
-          $("#reportrange").trigger('apply.daterangepicker', picker)
-        } else {
-          var picker = $("#reportrange").data('daterangepicker');
-          $("#reportrange").trigger('apply.daterangepicker', picker);
-          submitIfCompleted($("#start_time").closest("form"));
-        }
-      </script>
-    <% end %>
-  </form>
-<% end %>
+<%= render partial: "blazer/variables", locals: {action: dashboard_path(@dashboard)} %>
 
 <% @queries.each_with_index do |query, i| %>
   <div style="padding-top: 10px; clear: both;">

+ 1 - 97
app/views/blazer/queries/show.html.erb

@@ -37,103 +37,7 @@
   <p><%= @query.description %></p>
 <% end %>
 
-<% if @bind_vars.any? %>
-  <form id="bind" method="get" action="<%= query_path(@query) %>" class="form-inline" style="margin-bottom: 10px;">
-    <% date_vars = ["start_time", "end_time"] %>
-    <% if (date_vars - @bind_vars).empty? %>
-      <% @bind_vars = @bind_vars - date_vars %>
-    <% else %>
-      <% date_vars = nil %>
-    <% end %>
-
-    <% @bind_vars.each_with_index do |var, i| %>
-      <%= label_tag var, var %>
-      <% if (data = @smart_vars[var]) %>
-        <%= select_tag var, options_for_select([[nil, nil]] + data, selected: params[var]), style: "margin-right: 20px; width: 200px; display: none;" %>
-        <script>
-          $("#<%= var %>").selectize({
-            create: true
-          });
-        </script>
-      <% else %>
-        <%= text_field_tag var, params[var], style: "width: 120px; margin-right: 20px;", autofocus: i == 0 && !var.end_with?("_at") && !params[var], class: "form-control" %>
-        <% if var.end_with?("_at") %>
-          <script>
-            $("#<%= var %>").daterangepicker({singleDatePicker: true, locale: {format: "YYYY-MM-DD"}});
-          </script>
-        <% end %>
-      <% end %>
-    <% end %>
-
-    <% if date_vars %>
-      <% date_vars.each do |var| %>
-        <%= hidden_field_tag var, params[var] %>
-      <% end %>
-
-      <%= label_tag nil, date_vars.join(" & ") %>
-      <div class="selectize-control single" style="width: 300px;">
-        <div id="reportrange" class="selectize-input" style="display: inline-block;">
-          <span>Select a time range</span>
-        </div>
-      </div>
-
-      <script>
-        var timeZone = "<%= Blazer.time_zone.tzinfo.name %>";
-        var format = "YYYY-MM-DD";
-        var now = moment.tz(timeZone);
-
-        function dateStr(daysAgo) {
-          return now.clone().subtract(daysAgo || 0, "days").format(format);
-        }
-
-        function toDate(time) {
-          return moment.tz(time.format(format), timeZone);
-        }
-
-        function setTimeInputs(start, end) {
-          $("#start_time").val(toDate(start).utc().format());
-          $("#end_time").val(toDate(end).endOf("day").utc().format());
-        }
-
-        $('#reportrange').daterangepicker(
-          {
-            ranges: {
-             "Today": [dateStr(), dateStr()],
-             "Last 7 Days": [dateStr(6), dateStr()],
-             "Last 30 Days": [dateStr(29), dateStr()]
-            },
-            locale: {
-              format: format
-            },
-            startDate: dateStr(29),
-            endDate: dateStr(),
-            opens: "right"
-          },
-          function(start, end) {
-            setTimeInputs(start, end);
-            submitIfCompleted($("#start_time").closest("form"));
-          }
-        ).on('apply.daterangepicker', function(ev, picker) {
-          setTimeInputs(picker.startDate, picker.endDate);
-          $('#reportrange span').html(toDate(picker.startDate).format('MMMM D, YYYY') + ' - ' + toDate(picker.endDate).format('MMMM D, YYYY'));
-        })
-
-        if ($("#start_time").val().length > 0) {
-          var picker = $("#reportrange").data('daterangepicker');
-          picker.setStartDate(moment.tz($("#start_time").val(), timeZone));
-          picker.setEndDate(moment.tz($("#end_time").val(), timeZone));
-          $("#reportrange").trigger('apply.daterangepicker', picker)
-        } else {
-          var picker = $("#reportrange").data('daterangepicker');
-          $("#reportrange").trigger('apply.daterangepicker', picker);
-          submitIfCompleted($("#start_time").closest("form"));
-        }
-      </script>
-    <% end %>
-
-    <input type="submit" class="btn btn-success" value="Run" style="vertical-align: top;" />
-  </form>
-<% end %>
+<%= render partial: "blazer/variables", locals: {action: query_path(@query)} %>
 
 <pre id="code"><code><%= @statement %></code></pre>