Jelajahi Sumber

Fixed query dropdown performance

Andrew Kane 8 tahun lalu
induk
melakukan
87c31a6430

+ 1 - 1
app/assets/javascripts/blazer/selectize.js

@@ -2236,7 +2236,7 @@
      */
     registerOption: function(data) {
       var key = hash_key(data[this.settings.valueField]);
-      if ((!key || this.options.hasOwnProperty(key)) && !this.settings.allowEmptyOption) return false;
+      if (!key || this.options.hasOwnProperty(key)) return false;
       data.$order = data.$order || ++this.order;
       this.options[key] = data;
       return key;

+ 5 - 2
app/views/blazer/checks/_form.html.erb

@@ -10,10 +10,13 @@
   <div class="form-group">
     <%= f.label :query_id, "Query" %>
     <div class="hide">
-      <%= f.select :query_id, Blazer::Query.named.order(:name).map { |q| [q.name, q.id] }, {include_blank: true} %>
+      <%= f.select :query_id, [], {include_blank: true} %>
     </div>
     <script>
-      $("#check_query_id").selectize().parents(".hide").removeClass("hide");
+      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 %>;
+
+      $("#check_query_id").selectize({options: queries, items: items}).parents(".hide").removeClass("hide");
     </script>
   </div>
 

+ 3 - 2
app/views/blazer/dashboards/_form.html.erb

@@ -38,10 +38,11 @@ li:hover .glyphicon-remove {
   <div class="form-group">
     <%= f.label :query_id, "Add Chart" %>
     <div class="hide">
-      <%= select_tag :query_id, options_for_select(Blazer::Query.named.order(:name).map { |q| [q.name, q.id] }), {include_blank: true, placeholder: "Select chart"} %>
+      <%= select_tag :query_id, nil, {include_blank: true, placeholder: "Select chart"} %>
     </div>
     <script>
-      $("#query_id").selectize().parents(".hide").removeClass("hide");
+      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 %>;
+      $("#query_id").selectize({options: queries}).parents(".hide").removeClass("hide");
       $("#query_id").change( function () {
         var $option = $(this).find("option:selected");
         if ($option.val() !== "") {