1
1
mirror of https://github.com/go-gitea/gitea synced 2025-01-09 09:24:25 +00:00

Refactor legacy JS (#33115)

This commit is contained in:
wxiaoguang 2025-01-06 17:38:42 +08:00 committed by GitHub
parent 40765b5d45
commit ef736b7e27
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 31 additions and 29 deletions

View File

@ -9,7 +9,7 @@
{{template "org/team/navbar" .}} {{template "org/team/navbar" .}}
{{$canAddRemove := and $.IsOrganizationOwner (not $.Team.IncludesAllRepositories)}} {{$canAddRemove := and $.IsOrganizationOwner (not $.Team.IncludesAllRepositories)}}
{{if $canAddRemove}} {{if $canAddRemove}}
<div class="ui attached segment tw-flex tw-flex-wrap tw-gap-2"> <div class="ui top attached segment tw-flex tw-flex-wrap tw-gap-2">
<form class="ui form ignore-dirty tw-flex-1 tw-flex" action="{{$.OrgLink}}/teams/{{$.Team.LowerName | PathEscape}}/action/repo/add" method="post"> <form class="ui form ignore-dirty tw-flex-1 tw-flex" action="{{$.OrgLink}}/teams/{{$.Team.LowerName | PathEscape}}/action/repo/add" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div id="search-repo-box" data-uid="{{.Org.ID}}" class="ui search"> <div id="search-repo-box" data-uid="{{.Org.ID}}" class="ui search">

View File

@ -1,6 +1,5 @@
import $ from 'jquery';
import {GET} from '../modules/fetch.ts'; import {GET} from '../modules/fetch.ts';
import {toggleElem, type DOMEvent} from '../utils/dom.ts'; import {toggleElem, type DOMEvent, createElementFromHTML} from '../utils/dom.ts';
import {logoutFromWorker} from '../modules/worker.ts'; import {logoutFromWorker} from '../modules/worker.ts';
const {appSubUrl, notificationSettings, assetVersionEncoded} = window.config; const {appSubUrl, notificationSettings, assetVersionEncoded} = window.config;
@ -158,7 +157,8 @@ async function updateNotificationTable() {
} }
const data = await response.text(); const data = await response.text();
if ($(data).data('sequence-number') === notificationSequenceNumber) { const el = createElementFromHTML(data);
if (parseInt(el.getAttribute('data-sequence-number')) === notificationSequenceNumber) {
notificationDiv.outerHTML = data; notificationDiv.outerHTML = data;
initNotificationsTable(); initNotificationsTable();
} }

View File

@ -1,35 +1,34 @@
import $ from 'jquery'; import {queryElems, toggleElem} from '../utils/dom.ts';
import {hideElem, showElem} from '../utils/dom.ts'; import {fomanticQuery} from '../modules/fomantic/base.ts';
const {appSubUrl} = window.config; const {appSubUrl} = window.config;
export function initOrgTeamSettings() { function initOrgTeamSettings() {
// Change team access mode // on the page "page-content organization new team"
$('.organization.new.team input[name=permission]').on('change', () => { const pageContent = document.querySelector('.page-content.organization.new.team');
const val = $('input[name=permission]:checked', '.organization.new.team').val(); if (!pageContent) return;
if (val === 'admin') { queryElems(pageContent, 'input[name=permission]', (el) => el.addEventListener('change', () => {
hideElem('.organization.new.team .team-units'); // Change team access mode
} else { const val = pageContent.querySelector<HTMLInputElement>('input[name=permission]:checked')?.value;
showElem('.organization.new.team .team-units'); toggleElem(pageContent.querySelectorAll('.team-units'), val !== 'admin');
} }));
});
} }
export function initOrgTeamSearchRepoBox() { function initOrgTeamSearchRepoBox() {
const $searchRepoBox = $('#search-repo-box'); // on the page "page-content organization teams"
const $searchRepoBox = fomanticQuery('#search-repo-box');
$searchRepoBox.search({ $searchRepoBox.search({
minCharacters: 2, minCharacters: 2,
apiSettings: { apiSettings: {
url: `${appSubUrl}/repo/search?q={query}&uid=${$searchRepoBox.data('uid')}`, url: `${appSubUrl}/repo/search?q={query}&uid=${$searchRepoBox.data('uid')}`,
onResponse(response) { onResponse(response) {
const items = []; const items = [];
$.each(response.data, (_i, item) => { for (const item of response.data) {
items.push({ items.push({
title: item.repository.full_name.split('/')[1], title: item.repository.full_name.split('/')[1],
description: item.repository.full_name, description: item.repository.full_name,
}); });
}); }
return {results: items}; return {results: items};
}, },
}, },
@ -37,3 +36,9 @@ export function initOrgTeamSearchRepoBox() {
showNoResults: false, showNoResults: false,
}); });
} }
export function initOrgTeam() {
if (!document.querySelector('.page-content.organization')) return;
initOrgTeamSettings();
initOrgTeamSearchRepoBox();
}

View File

@ -1,4 +1,3 @@
import $ from 'jquery';
import {POST} from '../modules/fetch.ts'; import {POST} from '../modules/fetch.ts';
import {queryElems, toggleElem} from '../utils/dom.ts'; import {queryElems, toggleElem} from '../utils/dom.ts';
import {initIssueSidebarComboList} from './repo-issue-sidebar-combolist.ts'; import {initIssueSidebarComboList} from './repo-issue-sidebar-combolist.ts';
@ -9,9 +8,8 @@ function initBranchSelector() {
if (!elSelectBranch) return; if (!elSelectBranch) return;
const urlUpdateIssueRef = elSelectBranch.getAttribute('data-url-update-issueref'); const urlUpdateIssueRef = elSelectBranch.getAttribute('data-url-update-issueref');
const $selectBranch = $(elSelectBranch); const elBranchMenu = elSelectBranch.querySelector('.reference-list-menu');
const $branchMenu = $selectBranch.find('.reference-list-menu'); queryElems(elBranchMenu, '.item:not(.no-select)', (el) => el.addEventListener('click', async function (e) {
$branchMenu.find('.item:not(.no-select)').on('click', async function (e) {
e.preventDefault(); e.preventDefault();
const selectedValue = this.getAttribute('data-id'); // eg: "refs/heads/my-branch" const selectedValue = this.getAttribute('data-id'); // eg: "refs/heads/my-branch"
const selectedText = this.getAttribute('data-name'); // eg: "my-branch" const selectedText = this.getAttribute('data-name'); // eg: "my-branch"
@ -29,7 +27,7 @@ function initBranchSelector() {
document.querySelector<HTMLInputElement>(selectedHiddenSelector).value = selectedValue; document.querySelector<HTMLInputElement>(selectedHiddenSelector).value = selectedValue;
elSelectBranch.querySelector('.text-branch-name').textContent = selectedText; elSelectBranch.querySelector('.text-branch-name').textContent = selectedText;
} }
}); }));
} }
function initRepoIssueDue() { function initRepoIssueDue() {

View File

@ -40,7 +40,7 @@ import {initUserSettings} from './features/user-settings.ts';
import {initRepoActivityTopAuthorsChart, initRepoArchiveLinks} from './features/repo-common.ts'; import {initRepoActivityTopAuthorsChart, initRepoArchiveLinks} from './features/repo-common.ts';
import {initRepoMigrationStatusChecker} from './features/repo-migrate.ts'; import {initRepoMigrationStatusChecker} from './features/repo-migrate.ts';
import {initRepoDiffView} from './features/repo-diff.ts'; import {initRepoDiffView} from './features/repo-diff.ts';
import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.ts'; import {initOrgTeam} from './features/org-team.ts';
import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.ts'; import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.ts';
import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.ts'; import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.ts';
import {initRepoEditor} from './features/repo-editor.ts'; import {initRepoEditor} from './features/repo-editor.ts';
@ -166,8 +166,7 @@ onDomReady(() => {
initNotificationCount, initNotificationCount,
initNotificationsTable, initNotificationsTable,
initOrgTeamSearchRepoBox, initOrgTeam,
initOrgTeamSettings,
initRepoActivityTopAuthorsChart, initRepoActivityTopAuthorsChart,
initRepoArchiveLinks, initRepoArchiveLinks,