]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6520 Refactor WS to select2 format conversion function to utilities
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Tue, 12 May 2015 12:07:42 +0000 (14:07 +0200)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Mon, 18 May 2015 08:10:41 +0000 (10:10 +0200)
server/sonar-web/src/main/coffee/issues/facets/assignee-facet.coffee
server/sonar-web/src/main/coffee/issues/facets/reporter-facet.coffee
server/sonar-web/src/main/js/application.js
server/sonar-web/src/main/js/navigator/filters/ajax-select-filters.js
server/sonar-web/src/main/webapp/WEB-INF/app/helpers/application_helper.rb

index dfeb669741c2bb0ed02fc60795d7855ef99cdf2a..b1b91c7e2073376e7faeb913f826794b0630ea37 100644 (file)
@@ -39,12 +39,7 @@ define [
       quietMillis: 300
       url: @getUrl()
       data: (term, page) -> { q: term, p: page }
-      results: (data) ->
-        more: false,
-        results: _.map(data.users, (user) ->
-            id: user.login,
-            text: "#{user.name} (#{user.login})"
-          )
+      results: window.usersToSelect2
 
     onRender: ->
       super
index af5be0934e7d38e88c6c40e3cf5210b3192cfb82..aa2c9dcd659403d0fcba5897964722f3712ec36a 100644 (file)
@@ -34,12 +34,7 @@ define [
       quietMillis: 300
       url: @getUrl()
       data: (term, page) -> { q: term, p: page }
-      results: (data) ->
-        more: false,
-        results: _.map(data.users, (user) ->
-            id: user.login,
-            text: "#{user.name} (#{user.login})"
-          )
+      results: window.usersToSelect2
 
     getValuesWithLabels: ->
       values = @model.getValues()
index 0e33e7b2d71db5732a3e9a043af35c9578afffec..2d16dd4ff5ddba6474d2f601ffde3729501304b6 100644 (file)
@@ -473,6 +473,31 @@ function closeModalWindow () {
 
 
 
+/*
+ * Users
+ */
+
+(function() {
+
+  /**
+   * Convert the result of api/users/search to select2 format
+   */
+  window.usersToSelect2 = function (response) {
+    return {
+      more: false,
+      results: _.map(response.users, function(user) {
+        return {
+          id: user.login,
+          text: user.name + ' (' + user.login + ')'
+        };
+      })
+    };
+  };
+
+})();
+
+
+
 /*
  * Misc
  */
index 3f240b0c33e8317b76e677d19aa9d6c9ce47a3eb..fecdcada306fcdc6169e334317a18bca7018820a 100644 (file)
@@ -72,13 +72,9 @@ define([
     },
 
     parse: function(response) {
-      this.more = false;
-      this.results = _.map(response.users, function(user) {
-        return {
-          id: user.login,
-          text: user.name + ' (' + user.login + ')'
-        };
-      });
+      var parsedResponse = window.usersToSelect2(response);
+      this.more = parsedResponse.more;
+      this.results = parsedResponse.results;
     }
 
   });
index 0c156479c5403e411805fd52cfa3fe7919b63deb..780779064ce7daadf3d37ab49ffec9b2c86dab08 100644 (file)
@@ -594,6 +594,14 @@ module ApplicationHelper
     js_options['placeholder']= "'#{options[:placeholder]}'" if options.has_key?(:placeholder)
     js_options['width']= "'#{width}'" if width
 
+    ajax_options={
+      'quietMillis' => 300,
+      'url' => "'#{ws_url}'",
+      'data' => 'function (term, page) {return {s:term, p:page}}',
+      'results' => 'function (data, page) {return {more: data.more, results: data.results}}'
+    }
+    ajax_options.merge!(options[:select2_ajax_options]) if options[:select2_ajax_options]
+
     choices = options[:include_choices]
     if choices && !choices.empty?
       js_options['minimumInputLength']=0
@@ -602,22 +610,16 @@ module ApplicationHelper
           if (query.term.length == 0) {
             query.callback({results: [{#{ choices.map { |id, text| "id:'#{id}',text:'#{text}'" }.join('}, {')}}]});
           } else if (query.term.length >= #{min_length}) {
+            var dataFormatter = #{ajax_options['data']};
+            var resultFormatter = #{ajax_options['results']};
             $j.ajax('#{ws_url}', {
-                data: {s: query.term},
-                dataType: 'jsonp'
+                data: dataFormatter(query.term)
               }).done(function(data) {
-                query.callback(data);
+                query.callback(resultFormatter(data));
             });
           }
       }"
     else
-      ajax_options={
-          'quietMillis' => 300,
-          'url' => "'#{ws_url}'",
-          'data' => 'function (term, page) {return {s:term, p:page}}',
-          'results' => 'function (data, page) {return {more: data.more, results: data.results}}'
-      }
-      ajax_options.merge!(options[:select2_ajax_options]) if options[:select2_ajax_options]
       js_options['ajax']='{' + ajax_options.map { |k, v| "#{k}:#{v}" }.join(',') + '}'
     end
 
@@ -726,24 +728,8 @@ module ApplicationHelper
     ws_url="#{ApplicationController::root_context}/api/users/search2"
     options[:min_length]=2
     options[:select2_ajax_options]={
-      'data' => %{
-        function (term, page) {
-          return { q: term, p: page };
-        }
-      },
-      'results' => %{
-        function (data, page) {
-          return {
-            more: false,
-            results: _.map(data.users, function(user) {
-              return {
-                id: user.login,
-                text: '' +  user.name + ' (' + user.login + ')'
-              };
-            })
-          };
-        }
-      }
+      'data' => 'function (term, page) { return { q: term, p: page } }',
+      'results' => 'window.usersToSelect2'
     }
 
     user = options[:selected_user]