loading up the forgejo repo on tangled to test page performance
1import $ from 'jquery';
2import {htmlEscape} from 'escape-goat';
3import {hideElem, showElem} from '../utils/dom.js';
4
5const {appSubUrl} = window.config;
6
7export function initRepoTemplateSearch() {
8 const $repoTemplate = $('#repo_template');
9 const checkTemplate = function () {
10 const $templateUnits = $('#template_units');
11 const $nonTemplate = $('#non_template');
12 if ($repoTemplate.val() !== '' && $repoTemplate.val() !== '0') {
13 showElem($templateUnits);
14 hideElem($nonTemplate);
15 } else {
16 hideElem($templateUnits);
17 showElem($nonTemplate);
18 }
19 };
20 $repoTemplate.on('change', checkTemplate);
21 checkTemplate();
22
23 const changeOwner = function () {
24 $('#repo_template_search')
25 .dropdown({
26 apiSettings: {
27 url: `${appSubUrl}/repo/search?q={query}&template=true&priority_owner_id=${$('#uid').val()}`,
28 onResponse(response) {
29 const filteredResponse = {success: true, results: []};
30 filteredResponse.results.push({
31 name: '',
32 value: '',
33 });
34 // Parse the response from the api to work with our dropdown
35 for (const repo of response.data) {
36 filteredResponse.results.push({
37 name: htmlEscape(repo.repository.full_name),
38 value: repo.repository.id,
39 });
40 }
41 return filteredResponse;
42 },
43 cache: false,
44 },
45
46 fullTextSearch: true,
47 });
48 };
49 $('#uid').on('change', changeOwner);
50 changeOwner();
51}