Commit 96d582a35ed798815d6553634a4059c896d1923e
1 parent
9bfd459e
Exists in
colab
and in
4 other branches
Fixed repeated request for the same address, prevents multiple requests
Signed off by: Pedro Scocco <pedroscocco@gmail.com>
Showing
1 changed file
with
35 additions
and
12 deletions
Show diff stats
app/views/repositories/_form.html.erb
... | ... | @@ -125,26 +125,49 @@ |
125 | 125 | </script> |
126 | 126 | |
127 | 127 | <script> |
128 | + var branches = {}; | |
129 | + var request = null; | |
128 | 130 | function fetch_branches (address_field) { |
131 | + cancel_previous_request(); | |
129 | 132 | var address = address_field.value; |
133 | + | |
134 | + var el = $("#repository_branch"); | |
135 | + el.empty(); // remove old options | |
136 | + | |
130 | 137 | console.log(address); |
131 | - var scm_type = $("#repository_scm_type option:selected").text(); | |
138 | + if(branches[address] != undefined) { | |
139 | + fill_options(branches[address], el); | |
140 | + return; | |
141 | + } | |
132 | 142 | |
133 | - var $el = $("#repository_branch"); | |
134 | - $el.empty(); // remove old options | |
143 | + var scm_type = $("#repository_scm_type option:selected").text(); | |
135 | 144 | |
136 | - $.ajax({ | |
145 | + request = ($.ajax({ | |
137 | 146 | url: "<%= repository_branches_path() %>", |
138 | 147 | data: {'url': address, 'scm_type': scm_type}, |
139 | 148 | type: 'GET', |
140 | - complete: function (data){ | |
141 | - var newOptions = JSON.parse(data["responseText"])["branches"]; | |
142 | - | |
143 | - $.each(newOptions, function(index, value) { | |
144 | - $el.append($("<option></option>") | |
145 | - .attr("value", value).text(value)); | |
146 | - }); | |
149 | + timeout: 30000, | |
150 | + success: function (data){ | |
151 | + options = data["branches"]; | |
152 | + if (options != null) { | |
153 | + branches[address] = options; | |
154 | + fill_options(options, el); | |
155 | + } | |
156 | + } | |
157 | + })); | |
158 | + | |
159 | + function cancel_previous_request() { | |
160 | + if (request != null) { | |
161 | + request.abort(); | |
162 | + request = null; | |
147 | 163 | } |
148 | - }) | |
164 | + } | |
165 | + } | |
166 | + | |
167 | + function fill_options (options, el) { | |
168 | + $.each(options, function(index, value) { | |
169 | + el.append($("<option></option>") | |
170 | + .attr("value", value).text(value)); | |
171 | + }); | |
149 | 172 | } |
150 | 173 | </script> | ... | ... |