Browse Source

分支可编辑

pull/2019/head
wangjr 3 years ago
parent
commit
c16f77e6a3
3 changed files with 54 additions and 24 deletions
  1. +2
    -2
      templates/repo/issue/branch_selector_field.tmpl
  2. +9
    -5
      templates/repo/issue/view_content/sidebar.tmpl
  3. +43
    -17
      web_src/js/index.js

+ 2
- 2
templates/repo/issue/branch_selector_field.tmpl View File

@@ -14,12 +14,12 @@
<div class="ui grid">
<div class="two column row">
<a class="reference column" href="#" data-target="#branch-list">
<span class="text black">
<span class="text ">
{{svg "octicon-git-branch" 16}} {{.i18n.Tr "repo.branches"}}
</span>
</a>
<a class="reference column" href="#" data-target="#tag-list">
<span class="text">
<span class="text black">
<i class="reference tags icon"></i> {{.i18n.Tr "repo.tags"}}
</span>
</a>


+ 9
- 5
templates/repo/issue/view_content/sidebar.tmpl View File

@@ -8,21 +8,24 @@
<span class="text branch-name">{{if .Issue.Ref}}{{$.RefEndName}}{{else}}{{.i18n.Tr "repo.issues.no_ref"}}{{end}}</span>
<i class="dropdown icon"></i>
</div>
<div class="menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/branch">
<div class="menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/ref">
<div class="ui icon search input">
<i class="filter icon"></i>
<input name="search" placeholder="{{.i18n.Tr "repo.filter_branch_and_tag"}}...">
</div>
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div>

<div class="header">
<div class="ui grid">
<div class="two column row">
<a class="reference column" href="#" data-target="#branch-list">
<span class="text black">
<span class="text">
{{svg "octicon-git-branch" 16}} {{.i18n.Tr "repo.branches"}}
</span>
</a>
<a class="reference column" href="#" data-target="#tag-list">
<span class="text">
<span class="text black">
<i class="reference tags icon"></i> {{.i18n.Tr "repo.tags"}}
</span>
</a>
@@ -31,12 +34,12 @@
</div>
<div id="branch-list" class="scrolling menu reference-list-menu">
{{range .Branches}}
<div class="item" data-id="refs/heads/{{.}}" data-name="{{.}}" data-id-selector="#ref_selector" data-href="{{$.RepoLink}}/issues?branch={{.}}">{{.}}</div>
<div class="item" data-id="refs/heads/{{.}}" data-name="{{.}}" data-id-selector="#ref_selector">{{.}}</div>
{{end}}
</div>
<div id="tag-list" class="scrolling menu reference-list-menu" style="display: none">
{{range .Tags}}
<div class="item" data-id="refs/tags/{{.}}" data-name="tags/{{.}}" data-id-selector="#ref_selector" data-href="{{$.RepoLink}}/issues?branch={{.}}">{{.}}</div>
<div class="item" data-id="refs/tags/{{.}}" data-name="tags/{{.}}" data-id-selector="#ref_selector">{{.}}</div>
{{end}}
</div>
</div>
@@ -643,3 +646,4 @@
</div>
{{end}}
{{end}}


+ 43
- 17
web_src/js/index.js View File

@@ -184,11 +184,11 @@ function initBranchSelector() {
});
$selectBranch.find('.reference.column').on('click', function () {
$selectBranch.find('.scrolling.reference-list-menu').css('display', 'none');
$selectBranch.find('.reference .text').removeClass('black');
$selectBranch.find('.reference .text').addClass('black');
$($(this).data('target')).css('display', 'block');
$(this)
.find('.text')
.addClass('black');
.find('.text.black')
.removeClass('black');
return false;
});
}
@@ -231,7 +231,7 @@ function initLabelEdit() {
});
}

function updateIssuesMeta(url, action, issueIds, elementId, isAdd) {
function updateIssuesMeta(url, action, issueIds, elementId, isAdd,ref_b) {
return new Promise((resolve) => {
$.ajax({
type: 'POST',
@@ -241,7 +241,8 @@ function updateIssuesMeta(url, action, issueIds, elementId, isAdd) {
action,
issue_ids: issueIds,
id: elementId,
is_add: isAdd
is_add: isAdd,
ref: ref_b,
},
success: resolve
});
@@ -487,12 +488,14 @@ function initCommentForm() {
const promises = [];
Object.keys(labels).forEach((elementId) => {
const label = labels[elementId];
console.log("label:",label)
const promise = updateIssuesMeta(
label['update-url'],
label.action,
label['issue-id'],
elementId,
label['is-checked']
label['is-checked'],
''
);
promises.push(promise);
});
@@ -526,13 +529,19 @@ function initCommentForm() {
.removeClass('invisible');
$(this).data('is-checked', 'add');
}

console.log("$(this)",$(this))
console.log("$listMenu",$listMenu)
const isRef = '';
// if ($listMenu.data('update-url').includes("ref")){
// isRef = $(this).data('data-name');
// }
updateIssuesMeta(
$listMenu.data('update-url'),
'',
$listMenu.data('issue-id'),
$(this).data('id'),
$(this).data('is-checked')
$(this).data('is-checked'),
''
);
$listMenu.data('action', 'update'); // Update to reload the page when we updated items
return false;
@@ -603,7 +612,8 @@ function initCommentForm() {
'clear',
$listMenu.data('issue-id'),
'',
''
'',
'',
).then(reload);
}

@@ -637,10 +647,16 @@ function initCommentForm() {
initListSubmits('select-reviewers-modify', 'assignees');

function selectItem(select_id, input_id) {
const $menu = $(`${select_id} .menu`);
let $menu;
if (select_id=='.select-branch'){
$menu = $(`${select_id} .menu`).eq(1);
}else{
$menu = $(`${select_id} .menu`);
}
const $list = $(`.ui${select_id}.list`);
const hasUpdateAction = $menu.data('action') === 'update';

$menu.find('.item:not(.no-select)').on('click', function () {
$(this)
.parent()
@@ -651,12 +667,19 @@ function initCommentForm() {

$(this).addClass('selected active');
if (hasUpdateAction) {
let ref = ''
if (select_id=='.select-branch'){
ref = $(this).data('name');
console.log("ref:",ref)
}
console.log("ref:",ref)
updateIssuesMeta(
$menu.data('update-url'),
'',
$menu.data('issue-id'),
$(this).data('id'),
$(this).data('is-checked')
$(this).data('is-checked'),
ref
).then(reload);
}
switch (input_id) {
@@ -696,7 +719,8 @@ function initCommentForm() {
'',
$menu.data('issue-id'),
$(this).data('id'),
$(this).data('is-checked')
$(this).data('is-checked'),
''
).then(reload);
}

@@ -709,6 +733,7 @@ function initCommentForm() {
// Milestone and assignee
selectItem('.select-milestone', '#milestone_id');
selectItem('.select-assignee', '#assignee_id');
selectItem('.select-branch', '');
}

function initInstall() {
@@ -811,9 +836,9 @@ function initIssueComments() {
const issueId = $(this).data('issue-id');
const id = $(this).data('id');
const isChecked = $(this).data('is-checked');
const ref = $(this).data('name');
event.preventDefault();
updateIssuesMeta(url, '', issueId, id, isChecked).then(reload);
updateIssuesMeta(url, '', issueId, id, isChecked,ref).then(reload);
});

$(document).on('click', (event) => {
@@ -2900,12 +2925,13 @@ $(document).ready(async () => {
})
.get()
.join();
const {url} = this.dataset;
console.log("this:",this)

if (elementId === '0' && url.substr(-9) === '/assignee') {
elementId = '';
action = 'clear';
}
updateIssuesMeta(url, action, issueIDs, elementId, '').then(() => {
updateIssuesMeta(url, action, issueIDs, elementId, '','').then(() => {
// NOTICE: This reset of checkbox state targets Firefox caching behaviour, as the checkboxes stay checked after reload
if (action === 'close' || action === 'open') {
// uncheck all checkboxes


Loading…
Cancel
Save