|
1 |
| -import {showElem} from '../utils/dom.js'; |
| 1 | +import {showElem, toggleElem} from '../utils/dom.js'; |
2 | 2 |
|
3 |
| -async function loadBranchesAndTags(loadingButton, addHere) { |
| 3 | +async function loadBranchesAndTags(area, loadingButton) { |
4 | 4 | loadingButton.classList.add('disabled');
|
5 |
| - let res; |
6 | 5 | try {
|
7 |
| - res = await fetch(loadingButton.getAttribute('data-fetch-url'), { |
8 |
| - method: 'GET', |
9 |
| - }); |
| 6 | + const res = await fetch(loadingButton.getAttribute('data-fetch-url')); |
| 7 | + const data = await res.json(); |
| 8 | + loadingButton.classList.add('gt-hidden'); |
| 9 | + addTags(area, data.tags); |
| 10 | + addBranches(area, data.branches, data.default_branch); |
| 11 | + showElem(area.querySelectorAll('.branch-and-tag-detail')); |
10 | 12 | } finally {
|
11 | 13 | loadingButton.classList.remove('disabled');
|
12 | 14 | }
|
13 |
| - |
14 |
| - if (!res.ok) { |
15 |
| - return; |
16 |
| - } |
17 |
| - |
18 |
| - const data = await res.json(); |
19 |
| - showAreas('.branch-tag-area-divider'); |
20 |
| - loadingButton.classList.add('gt-hidden'); |
21 |
| - addHere.querySelector('.branch-tag-area-text').textContent = loadingButton.getAttribute('data-contained-in-text'); |
22 |
| - addTags(data.tags, addHere.querySelector('.tag-area')); |
23 |
| - const branchArea = addHere.querySelector('.branch-area'); |
24 |
| - addBranches( |
25 |
| - data.branches, |
26 |
| - data.default_branch, |
27 |
| - branchArea.getAttribute('data-defaultbranch-tooltip'), |
28 |
| - branchArea, |
29 |
| - ); |
30 | 15 | }
|
31 | 16 |
|
32 |
| -function addTags(tags, addHere) { |
33 |
| - if (tags.length > 0) showAreas('.tag-area,.tag-area-parent'); |
| 17 | +function addTags(area, tags) { |
| 18 | + toggleElem(area.querySelectorAll('.tag-area-parent'), tags.length > 0); |
| 19 | + const tagArea = area.querySelector('.tag-area'); |
34 | 20 | for (const tag of tags) {
|
35 |
| - addLink(tag.web_link, tag.name, addHere); |
| 21 | + addLink(tagArea, tag.web_link, tag.name); |
36 | 22 | }
|
37 | 23 | }
|
38 | 24 |
|
39 |
| -function addBranches(branches, defaultBranch, defaultBranchTooltip, addHere) { |
40 |
| - if (branches.length > 0) showAreas('.branch-area,.branch-area-parent'); |
| 25 | +function addBranches(area, branches, defaultBranch) { |
| 26 | + const defaultBranchTooltip = area.getAttribute('data-text-default-branch-tooltip'); |
| 27 | + toggleElem(area.querySelectorAll('.branch-area-parent'), branches.length > 0); |
| 28 | + const branchArea = area.querySelector('.branch-area'); |
41 | 29 | for (const branch of branches) {
|
42 |
| - addLink( |
43 |
| - branch.web_link, |
44 |
| - branch.name, |
45 |
| - addHere, |
46 |
| - defaultBranch === branch.name ? defaultBranchTooltip : undefined, |
47 |
| - ); |
| 30 | + const tooltip = defaultBranch === branch.name ? defaultBranchTooltip : null; |
| 31 | + addLink(branchArea, branch.web_link, branch.name, tooltip); |
48 | 32 | }
|
49 | 33 | }
|
50 | 34 |
|
51 |
| -function showAreas(selector) { |
52 |
| - for (const branchArea of document.querySelectorAll(selector)) showElem(branchArea); |
53 |
| -} |
54 |
| - |
55 |
| -function addLink(href, text, addHere, tooltip) { |
| 35 | +function addLink(parent, href, text, tooltip) { |
56 | 36 | const link = document.createElement('a');
|
57 |
| - link.classList.add('muted', 'gt-px-3', 'gt-rounded'); |
| 37 | + link.classList.add('muted', 'gt-px-2', 'gt-rounded'); |
| 38 | + link.href = href; |
| 39 | + link.textContent = text; |
58 | 40 | if (tooltip) {
|
59 | 41 | link.classList.add('gt-border-secondary');
|
60 | 42 | link.setAttribute('data-tooltip-content', tooltip);
|
61 | 43 | }
|
62 |
| - link.href = href; |
63 |
| - link.textContent = text; |
64 |
| - addHere.append(link); |
| 44 | + parent.append(link); |
65 | 45 | }
|
66 | 46 |
|
67 | 47 | export function initLoadBranchesAndTagsButton() {
|
68 |
| - for (const loadButton of document.querySelectorAll('.load-tags-and-branches')) { |
69 |
| - loadButton.addEventListener('click', () => { |
70 |
| - loadBranchesAndTags( |
71 |
| - loadButton, |
72 |
| - document.querySelector('.branch-and-tag-area'), |
73 |
| - ); |
74 |
| - }); |
| 48 | + for (const area of document.querySelectorAll('.branch-and-tag-area')) { |
| 49 | + const loadButton = area.querySelector('.load-branches-and-tags'); |
| 50 | + loadButton.addEventListener('click', () => loadBranchesAndTags(area, loadButton)); |
75 | 51 | }
|
76 | 52 | }
|
0 commit comments