Show More
@@ -319,8 +319,7 b' class RepoSummaryView(RepoAppView):' | |||||
319 | (_("Tag"), repo.tags, 'tag'), |
|
319 | (_("Tag"), repo.tags, 'tag'), | |
320 | (_("Bookmark"), repo.bookmarks, 'book'), |
|
320 | (_("Bookmark"), repo.bookmarks, 'book'), | |
321 | ] |
|
321 | ] | |
322 | res = self._create_reference_data( |
|
322 | res = self._create_reference_data(repo, self.db_repo_name, refs_to_create) | |
323 | repo, self.db_repo_name, refs_to_create) |
|
|||
324 | data = { |
|
323 | data = { | |
325 | 'more': False, |
|
324 | 'more': False, | |
326 | 'results': res |
|
325 | 'results': res |
@@ -265,6 +265,60 b'' | |||||
265 | } |
|
265 | } | |
266 |
|
266 | |||
267 | var loadUrl = pyroutes.url('repo_refs_data', {'repo_name': templateContext.repo_name}); |
|
267 | var loadUrl = pyroutes.url('repo_refs_data', {'repo_name': templateContext.repo_name}); | |
|
268 | var cacheKey = '__ALL_FILE_REFS__'; | |||
|
269 | var cachedDataSource = {}; | |||
|
270 | ||||
|
271 | var loadRefsData = function (query) { | |||
|
272 | $.ajax({ | |||
|
273 | url: loadUrl, | |||
|
274 | data: {}, | |||
|
275 | dataType: 'json', | |||
|
276 | type: 'GET', | |||
|
277 | success: function (data) { | |||
|
278 | cachedDataSource[cacheKey] = data; | |||
|
279 | query.callback({results: data.results}); | |||
|
280 | } | |||
|
281 | }); | |||
|
282 | }; | |||
|
283 | ||||
|
284 | var feedRefsData = function (query, cachedData) { | |||
|
285 | var data = {results: []}; | |||
|
286 | //filter results | |||
|
287 | $.each(cachedData.results, function () { | |||
|
288 | var section = this.text; | |||
|
289 | var children = []; | |||
|
290 | $.each(this.children, function () { | |||
|
291 | if (query.term.length === 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) { | |||
|
292 | children.push(this) | |||
|
293 | } | |||
|
294 | }); | |||
|
295 | data.results.push({ | |||
|
296 | 'text': section, | |||
|
297 | 'children': children | |||
|
298 | }) | |||
|
299 | }); | |||
|
300 | ||||
|
301 | //push the typed in commit idx | |||
|
302 | if (!isNaN(query.term)) { | |||
|
303 | var files_url = pyroutes.url('repo_files', | |||
|
304 | {'repo_name': templateContext.repo_name, | |||
|
305 | 'commit_id': query.term, 'f_path': state.f_path}); | |||
|
306 | ||||
|
307 | data.results.push({ | |||
|
308 | 'text': _gettext('go to numeric commit'), | |||
|
309 | 'children': [{ | |||
|
310 | at_ref: null, | |||
|
311 | id: null, | |||
|
312 | text: 'r{0}'.format(query.term), | |||
|
313 | type: 'sha', | |||
|
314 | raw_id: query.term, | |||
|
315 | idx: query.term, | |||
|
316 | files_url: files_url, | |||
|
317 | }] | |||
|
318 | }); | |||
|
319 | } | |||
|
320 | query.callback(data); | |||
|
321 | }; | |||
268 |
|
322 | |||
269 | var select2RefFileSwitcher = function (targetElement, loadUrl, initialData) { |
|
323 | var select2RefFileSwitcher = function (targetElement, loadUrl, initialData) { | |
270 | var formatResult = function (result, container, query) { |
|
324 | var formatResult = function (result, container, query) { | |
@@ -288,34 +342,22 b'' | |||||
288 | tmpl = tmpl.concat(escapeHtml(commit_ref.text)); |
|
342 | tmpl = tmpl.concat(escapeHtml(commit_ref.text)); | |
289 | } |
|
343 | } | |
290 |
|
344 | |||
291 | tmpl = tmpl.concat('<span class="select-index-number">{0}</span>'.format(commit_ref.idx)); |
|
345 | tmpl = tmpl.concat('<span class="select-index-number">r{0}</span>'.format(commit_ref.idx)); | |
292 | return tmpl |
|
346 | return tmpl | |
293 | }; |
|
347 | }; | |
294 |
|
348 | |||
295 | $(targetElement).select2({ |
|
349 | $(targetElement).select2({ | |
296 | cachedDataSource: {}, |
|
|||
297 | dropdownAutoWidth: true, |
|
350 | dropdownAutoWidth: true, | |
298 | width: "resolve", |
|
351 | width: "resolve", | |
299 | containerCssClass: "drop-menu", |
|
352 | containerCssClass: "drop-menu", | |
300 | dropdownCssClass: "drop-menu-dropdown", |
|
353 | dropdownCssClass: "drop-menu-dropdown", | |
301 | query: function(query) { |
|
354 | query: function(query) { | |
302 | var self = this; |
|
355 | ||
303 | var cacheKey = '__ALL_FILE_REFS__'; |
|
356 | var cachedData = cachedDataSource[cacheKey]; | |
304 | var cachedData = self.cachedDataSource[cacheKey]; |
|
|||
305 | if (cachedData) { |
|
357 | if (cachedData) { | |
306 |
|
|
358 | feedRefsData(query, cachedData) | |
307 | query.callback({results: data.results}); |
|
|||
308 | } else { |
|
359 | } else { | |
309 |
|
|
360 | loadRefsData(query) | |
310 | url: loadUrl, |
|
|||
311 | data: {}, |
|
|||
312 | dataType: 'json', |
|
|||
313 | type: 'GET', |
|
|||
314 | success: function(data) { |
|
|||
315 | self.cachedDataSource[cacheKey] = data; |
|
|||
316 | query.callback({results: data.results}); |
|
|||
317 | } |
|
|||
318 | }); |
|
|||
319 | } |
|
361 | } | |
320 | }, |
|
362 | }, | |
321 | initSelection: function(element, callback) { |
|
363 | initSelection: function(element, callback) { |
General Comments 0
You need to be logged in to leave comments.
Login now