changeset 2849:2b672f04bfd9 beta

fixed few issues with autoselection of revisions on pull requests
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 19 Sep 2012 00:38:21 +0200
parents f3aee4585f39
children 867820342329
files rhodecode/controllers/pullrequests.py rhodecode/public/js/rhodecode.js rhodecode/templates/pullrequests/pullrequest.html
diffstat 3 files changed, 39 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/pullrequests.py	Wed Sep 19 00:04:07 2012 +0200
+++ b/rhodecode/controllers/pullrequests.py	Wed Sep 19 00:38:21 2012 +0200
@@ -81,6 +81,19 @@
 
         return hist_l
 
+    def _get_default_rev(self, repo):
+        """
+        Get's default revision to do compare on pull request
+
+        :param repo:
+        """
+        repo = repo.scm_instance
+        if 'default' in repo.branches:
+            return 'default'
+        else:
+            #if repo doesn't have default branch return first found
+            return repo.branches.keys()[0]
+
     def show_all(self, repo_name):
         c.pull_requests = PullRequestModel().get_all(repo_name)
         c.repo_name = repo_name
@@ -106,7 +119,8 @@
         # add org repo to other so we can open pull request agains itself
         c.other_repos.extend(c.org_repos)
 
-        c.default_pull_request = org_repo.repo_name
+        c.default_pull_request = org_repo.repo_name  # repo name pre-selected
+        c.default_pull_request_rev = self._get_default_rev(org_repo)  # revision pre-selected
         c.default_revs = self._get_repo_refs(org_repo.scm_instance)
         #add orginal repo
         other_repos_info[org_repo.repo_name] = {
@@ -130,6 +144,8 @@
         #add parents of this fork also
         if org_repo.parent:
             c.default_pull_request = org_repo.parent.repo_name
+            c.default_pull_request_rev = self._get_default_rev(org_repo.parent)
+            c.default_revs = self._get_repo_refs(org_repo.parent.scm_instance)
             c.other_repos.append((org_repo.parent.repo_name, '%s/%s' % (
                                         org_repo.parent.user.username,
                                         org_repo.parent.repo_name))
--- a/rhodecode/public/js/rhodecode.js	Wed Sep 19 00:04:07 2012 +0200
+++ b/rhodecode/public/js/rhodecode.js	Wed Sep 19 00:38:21 2012 +0200
@@ -86,7 +86,18 @@
     }
 }
 
-
+var setSelectValue = function(select, val){
+	var selection =  YUD.get(select);
+	
+    // select element
+    for(var i=0;i<selection.options.length;i++){
+    	console.log(selection.options[i].innerHTML);
+        if (selection.options[i].innerHTML == val) {
+            selection.selectedIndex = i;
+            break;
+        }
+    }	
+}
 
 
 /**
--- a/rhodecode/templates/pullrequests/pullrequest.html	Wed Sep 19 00:04:07 2012 +0200
+++ b/rhodecode/templates/pullrequests/pullrequest.html	Wed Sep 19 00:38:21 2012 +0200
@@ -53,7 +53,7 @@
                     <img id="other_repo_gravatar" alt="gravatar" src=""/>
                 </div>
                 <span style="font-size: 20px">
-                ${h.select('other_repo',c.default_pull_request ,c.other_repos,class_='refs')}:${h.select('other_ref','',c.default_revs,class_='refs')}
+                ${h.select('other_repo',c.default_pull_request ,c.other_repos,class_='refs')}:${h.select('other_ref',c.default_pull_request_rev,c.default_revs,class_='refs')}
                 </span>
                  <div id="other_repo_desc" style="padding:5px 3px 3px 42px;"></div>
             </div>
@@ -146,25 +146,29 @@
                          as_form=True)}";
 
       var select_refs = YUQ('#pull_request_form select.refs')
-
+      var rev_data = {}; // gather the org/other ref and repo here
       for(var i=0;i<select_refs.length;i++){
         var select_ref = select_refs[i];
         var select_ref_data = select_ref.value.split(':');
         var key = null;
         var val = null;
+        
         if(select_ref_data.length>1){
           key = select_ref.name+"_type";
           val = select_ref_data[0];
           url = url.replace(key,val);
-
+          rev_data[key] = val;
+          
           key = select_ref.name;
           val = select_ref_data[1];
           url = url.replace(key,val);
-
+          rev_data[key] = val;
+          
         }else{
           key = select_ref.name;
           val = select_ref.value;
           url = url.replace(key,val);
+          rev_data[key] = val;
         }
       }
 
@@ -182,6 +186,8 @@
     	  YUD.get('other_repo_gravatar').src = other_repos_info[repo_name]['gravatar'];
     	  YUD.get('other_repo_desc').innerHTML = other_repos_info[repo_name]['description'];
     	  YUD.get('other_ref').innerHTML = other_repos_info[repo_name]['revs'];
+    	  // select back the revision that was just compared
+    	  setSelectValue(YUD.get('other_ref'), rev_data['other_ref']);
       })
   }
   YUE.on('refresh','click',function(e){