1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import {hideElem, showElem, toggleElem} from '../utils/dom.js';
- import {GET} from '../modules/fetch.js';
-
- async function loadBranchesAndTags(area, loadingButton) {
- loadingButton.classList.add('disabled');
- try {
- const res = await GET(loadingButton.getAttribute('data-fetch-url'));
- const data = await res.json();
- hideElem(loadingButton);
- addTags(area, data.tags);
- addBranches(area, data.branches, data.default_branch);
- showElem(area.querySelectorAll('.branch-and-tag-detail'));
- } finally {
- loadingButton.classList.remove('disabled');
- }
- }
-
- function addTags(area, tags) {
- const tagArea = area.querySelector('.tag-area');
- toggleElem(tagArea.parentElement, tags.length > 0);
- for (const tag of tags) {
- addLink(tagArea, tag.web_link, tag.name);
- }
- }
-
- function addBranches(area, branches, defaultBranch) {
- const defaultBranchTooltip = area.getAttribute('data-text-default-branch-tooltip');
- const branchArea = area.querySelector('.branch-area');
- toggleElem(branchArea.parentElement, branches.length > 0);
- for (const branch of branches) {
- const tooltip = defaultBranch === branch.name ? defaultBranchTooltip : null;
- addLink(branchArea, branch.web_link, branch.name, tooltip);
- }
- }
-
- function addLink(parent, href, text, tooltip) {
- const link = document.createElement('a');
- link.classList.add('muted', 'tw-px-1');
- link.href = href;
- link.textContent = text;
- if (tooltip) {
- link.classList.add('tw-border', 'tw-border-secondary', 'tw-rounded');
- link.setAttribute('data-tooltip-content', tooltip);
- }
- parent.append(link);
- }
-
- export function initRepoDiffCommitBranchesAndTags() {
- for (const area of document.querySelectorAll('.branch-and-tag-area')) {
- const btn = area.querySelector('.load-branches-and-tags');
- btn.addEventListener('click', () => loadBranchesAndTags(area, btn));
- }
- }
|