changeset 5469:047ac9eefb71

compare: deduplicate copy-paste code
author Søren Løvborg <sorenl@unity3d.com>
date Mon, 31 Aug 2015 17:42:56 +0200
parents a6bc489cc536
children 4b9370a01c4d
files kallithea/templates/compare/compare_diff.html
diffstat 1 files changed, 12 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/templates/compare/compare_diff.html	Mon Aug 31 17:42:56 2015 +0200
+++ b/kallithea/templates/compare/compare_diff.html	Mon Aug 31 17:42:56 2015 +0200
@@ -95,15 +95,17 @@
     <script type="text/javascript">
 
    $(document).ready(function(){
-    var cache = {}
-    $("#compare_org").select2({
-        placeholder: "${'%s@%s' % (c.a_repo.repo_name, c.a_ref_name)}",
+    var cache = {};
+
+    function make_revision_dropdown(css_selector, placeholder, repo_name, cache_key) {
+      $(css_selector).select2({
+        placeholder: placeholder,
         formatSelection: function(obj){
-            return '{0}@{1}'.format("${c.a_repo.repo_name}", obj.text);
+            return '{0}@{1}'.format(repo_name, obj.text);
         },
         dropdownAutoWidth: true,
         query: function(query){
-          var key = 'cache';
+          var key = cache_key;
           var cached = cache[key] ;
           if(cached) {
             var data = {results: []};
@@ -124,7 +126,7 @@
             query.callback(data);
           }else{
               $.ajax({
-                url: pyroutes.url('repo_refs_data', {'repo_name': '${c.a_repo.repo_name}'}),
+                url: pyroutes.url('repo_refs_data', {'repo_name': repo_name}),
                 data: {},
                 dataType: 'json',
                 type: 'GET',
@@ -136,46 +138,10 @@
           }
         }
     });
-    $("#compare_other").select2({
-        placeholder: "${'%s@%s' % (c.cs_repo.repo_name, c.cs_ref_name)}",
-        dropdownAutoWidth: true,
-        formatSelection: function(obj){
-            return '{0}@{1}'.format("${c.cs_repo.repo_name}", obj.text);
-        },
-        query: function(query){
-          var key = 'cache2';
-          var cached = cache[key] ;
-          if(cached) {
-            var data = {results: []};
-            //filter results
-            $.each(cached.results, function(){
-                var section = this.text;
-                var children = [];
-                $.each(this.children, function(){
-                    if(query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0 ){
-                        children.push({'id': this.id, 'text': this.text});
-                    }
-                });
-                data.results.push({'text': section, 'children': children});
-            });
-            //push the typed in changeset
-            data.results.push({'text':_TM['Specify changeset'],
-                               'children': [{'id': query.term, 'text': query.term, 'type': 'rev'}]});
-            query.callback(data);
-          }else{
-              $.ajax({
-                url: pyroutes.url('repo_refs_data', {'repo_name': '${c.cs_repo.repo_name}'}),
-                data: {},
-                dataType: 'json',
-                type: 'GET',
-                success: function(data) {
-                  cache[key] = data;
-                  query.callback({results: data.results});
-                }
-              });
-          }
-        }
-    });
+    }
+
+    make_revision_dropdown("#compare_org",   "${'%s@%s' % (c.a_repo.repo_name, c.a_ref_name)}",   "${c.a_repo.repo_name}",  'cache');
+    make_revision_dropdown("#compare_other", "${'%s@%s' % (c.cs_repo.repo_name, c.cs_ref_name)}", "${c.cs_repo.repo_name}", 'cache2');
 
     var values_changed = function() {
         var values = $('#compare_org').select2('data') && $('#compare_other').select2('data');