Commit a4397d394e15d2c18fce19ecd9f972fd6d864368

Authored by Rafael Manzo
Committed by Heitor
1 parent 6791fa1b

Refatored Repository form JS fetch_branches into JS Branch class

app/assets/javascripts/repository/branch.js.coffee
@@ -3,14 +3,14 @@ class Repository.Branch @@ -3,14 +3,14 @@ class Repository.Branch
3 @names = {} 3 @names = {}
4 @request = null 4 @request = null
5 5
6 - @toggle: -> 6 + toggle: ->
7 scm_type_field = document.getElementById("repository_scm_type") 7 scm_type_field = document.getElementById("repository_scm_type")
8 index = scm_type_field.selectedIndex 8 index = scm_type_field.selectedIndex
9 option = scm_type_field.options[index] 9 option = scm_type_field.options[index]
10 10
11 if option.value != "SVN" 11 if option.value != "SVN"
12 $("#branches").show() 12 $("#branches").show()
13 - fetch_branches (document.getElementById("repository_address")) 13 + @fetch_branches(document.getElementById("repository_address"))
14 else 14 else
15 $("#branches").hide() 15 $("#branches").hide()
16 16
@@ -27,3 +27,29 @@ class Repository.Branch @@ -27,3 +27,29 @@ class Repository.Branch
27 el.append($("<option></option>") 27 el.append($("<option></option>")
28 .attr("value", option) 28 .attr("value", option)
29 .text(option)) 29 .text(option))
  30 +
  31 + fetch_branches: (address_field) ->
  32 + @cancel_request()
  33 + address = address_field.value
  34 +
  35 + # Prevent a call with blank address
  36 + if address == ""
  37 + return
  38 +
  39 + el = $("#repository_branch")
  40 + el.empty() # remove old options
  41 +
  42 + if @names[address]?
  43 + @fill_options(@names[address], el)
  44 + return
  45 +
  46 + scm_type = $("#repository_scm_type option:selected").text()
  47 +
  48 + context = this
  49 + @request = $.get '/repository_branches',
  50 + {'url': address, 'scm_type': scm_type},
  51 + (data) ->
  52 + options = data["branches"]
  53 + if options != null
  54 + context.names[address] = options
  55 + context.fill_options(options, el)
app/views/repositories/_form.html.erb
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 <div class="form-row"> 43 <div class="form-row">
44 <div class="field-container"> 44 <div class="field-container">
45 <%= f.label :scm_type, class: 'control-label' %> 45 <%= f.label :scm_type, class: 'control-label' %>
46 - <%= f.select( :scm_type, @repository_types, {}, class: 'tooltip-control', onchange: "Repository.Branch.toggle();" ) %> 46 + <%= f.select( :scm_type, @repository_types, {}, class: 'tooltip-control', onchange: "_repository_branch.toggle();" ) %>
47 </div> 47 </div>
48 <div class="help-container"> 48 <div class="help-container">
49 <p> 49 <p>
@@ -55,7 +55,7 @@ @@ -55,7 +55,7 @@
55 <div class="form-row"> 55 <div class="form-row">
56 <div class="field-container"> 56 <div class="field-container">
57 <%= f.label :address, class: 'control-label' %> 57 <%= f.label :address, class: 'control-label' %>
58 - <%= f.text_field :address, :required => true, class: 'text-field form-control', onchange: "fetch_branches(this);" %> 58 + <%= f.text_field :address, :required => true, class: 'text-field form-control', onchange: "_repository_branch.fetch_branches(this);" %>
59 </div> 59 </div>
60 <div class="help-container"> 60 <div class="help-container">
61 <p> 61 <p>
@@ -109,41 +109,10 @@ @@ -109,41 +109,10 @@
109 <%= link_to t('back'), project_path(@project_id), class: 'btn btn-default' %> 109 <%= link_to t('back'), project_path(@project_id), class: 'btn btn-default' %>
110 </div> 110 </div>
111 111
112 -<script> 112 +<script type="text/javascript">
  113 + var _repository_branch = new Repository.Branch;
  114 +
113 $(document).on('page:load ready', function() { 115 $(document).on('page:load ready', function() {
114 - Repository.Branch.toggle(); 116 + _repository_branch.toggle();
115 }); 117 });
116 </script> 118 </script>
117 -  
118 -<script>  
119 - var repository_branch = new Repository.Branch;  
120 - function fetch_branches (address_field) {  
121 - repository_branch.cancel_request();  
122 - var address = address_field.value;  
123 -  
124 - var el = $("#repository_branch");  
125 - el.empty(); // remove old options  
126 -  
127 - if(repository_branch.names[address] != null) {  
128 - repository_branch.fill_options(repository_branch.names[address], el);  
129 - return;  
130 - }  
131 -  
132 - var scm_type = $("#repository_scm_type option:selected").text();  
133 -  
134 - repository_branch.request = ($.ajax({  
135 - url: "<%= repository_branches_path() %>",  
136 - data: {'url': address, 'scm_type': scm_type},  
137 - type: 'GET',  
138 - timeout: 30000,  
139 - success: function (data){  
140 - options = data["branches"];  
141 - if (options != null) {  
142 - repository_branch.names[address] = options;  
143 - repository_branch.fill_options(options, el);  
144 - }  
145 - }  
146 - }));  
147 - }  
148 -  
149 -</script>