]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4421 Improve issues bulk change ui
authorJulien Lancelot <julien.lancelot@gmail.com>
Wed, 3 Jul 2013 14:16:57 +0000 (16:16 +0200)
committerJulien Lancelot <julien.lancelot@gmail.com>
Wed, 3 Jul 2013 14:16:57 +0000 (16:16 +0200)
sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/views/issues/_bulk_change_form.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/issues/search.html.erb

index 41b1faa1f4bf3fd2ecf78794640fa1d2cd6e6578..8c336748b0e3f82a1994c90d0aec7d2c52268ca2 100644 (file)
@@ -204,6 +204,7 @@ class IssuesController < ApplicationController
     @issues = issues_result.issues.map { |issue| issue.key() }
     @project = issue_query.componentRoots.to_a.first if issue_query.componentRoots and issue_query.componentRoots.size == 1
     @criteria_params = criteria_params
+    @max_page_size_reached = issues_result.issues.size >= issues_result.paging.pageSize()
 
     render :partial => 'issues/bulk_change_form'
   end
index a4f8f8cb31183f350be6a4f350fa11d9dc95cf5c..1d2fce272867b3356de20bff97ce4d66c759e535 100644 (file)
@@ -8,7 +8,7 @@
     </div>
     <div class="modal-body">
       <div>
-      <% if params[:max_page_size_reached] %>
+      <% if @max_page_size_reached %>
         <p class="notes"><%= message('issue_filter.bulk_change.max_issues_reached', :params => @issues.size) -%></p>
       <% end %>
       </div>
@@ -19,7 +19,7 @@
         </label>
         <input id="assign-action" name="actions[]" type="checkbox" value="assign"/>
         <%= user_select_tag('assign.assignee', :html_id => 'assignee', :open => false,
-                            :include_choices => {'' => escape_javascript(message('unassigned')), current_user.login => escape_javascript(message('assigned_to_me'))}) -%>
+                            :include_choices => {'0' => escape_javascript(message('unassigned')), current_user.login => escape_javascript(message('assigned_to_me'))}) -%>
       </div>
       <%
          if @project && !@project.blank?
@@ -59,8 +59,8 @@
           <%= message('issue.transition') -%>
         </label>
         <% @transitions_by_issues.keys.each do |transition| %>
-          <input type="radio" name="transition.transition" value="<%= transition -%>" onClick="addTransitionAction();">&nbsp;<%= message("issue.transition.#{transition}") -%>
-          (<%= @transitions_by_issues[transition].to_s %>) <br>
+          <input type="radio" name="transition.transition" value="<%= transition -%>"
+                 onClick="addTransitionAction();">&nbsp;<%= message("issue.transition.#{transition}") -%>&nbsp;(<%= @transitions_by_issues[transition].to_s %>) <br>
         <% end %>
       </div>
       <div class="modal-field">
@@ -78,7 +78,8 @@
       </div>
     </div>
     <div class="modal-foot">
-      <input type="submit" value="<%= message('apply') -%>" id="bulk-change-submit" class="bulk-change"/>
+      <span id="bulk-change-loading-image" class="hidden"><%= image_tag 'loading.gif' %></span>
+      <input type="submit" value="<%= message('apply') -%>" id="bulk-change-submit" class="bulk-change" onclick="return displayLoadingImage()" />
       <a href="#" onclick="return closeModalWindow()" id="bulk-change-cancel"><%= message('cancel') -%></a>
     </div>
   </fieldset>
@@ -89,6 +90,7 @@
       window.location = baseUrl + '/issues/search?' + data;
     },
     error: function (xhr, textStatus, errorThrown) {
+      $j('#bulk-change-loading-image').addClass("hidden");
       var htmlClass = 'bulk-change';
       $j('input[type=submit].' + htmlClass).removeAttr('disabled');
       $j('.' + htmlClass + '.errors').show();
   function addTransitionAction() {
     $j('#bulk-change-transition-action').val("transition");
   }
+
+  function displayLoadingImage() {
+    $j('#bulk-change-loading-image').removeClass("hidden");
+  }
+
+  function check(id){
+    $j('#'+ id).prop('checked', true);
+  }
+
+  /**
+   * Attach some events on select boxes to automatically select associate check box when selecting an option
+   */
+  $j('#assignee').click(function() { check('assign-action'); });
+  $j('#plan').click(function() { check('plan-action'); });
+  $j('#severity').click(function() { check('set-severity-action'); });
 </script>
index f3a140220d501fec07b1a1083ca9e764bcd59bfd..1051925332e26a73c2a77e41b9bd6d7ade2283eb 100644 (file)
@@ -24,8 +24,7 @@
               </li>
             <% end %>
             <li>
-              <a id="bulk-change" href="<%= url_for params.merge({:action => 'bulk_change_form',
-                                                                  :max_page_size_reached => @issues_result.issues.size >= @issues_result.paging.pageSize()}) -%>"
+              <a id="bulk-change" href="<%= url_for params.merge({:action => 'bulk_change_form'}) -%>"
                  class="link-action open-modal"><%= message('bulk_change') -%></a>
             </li>
           </ul>