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="ui grid">
<div class="two column row"> <div class="two column row">
<a class="reference column" href="#" data-target="#branch-list"> <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"}} {{svg "octicon-git-branch" 16}} {{.i18n.Tr "repo.branches"}}
</span> </span>
</a> </a>
<a class="reference column" href="#" data-target="#tag-list"> <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"}} <i class="reference tags icon"></i> {{.i18n.Tr "repo.tags"}}
</span> </span>
</a> </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> <span class="text branch-name">{{if .Issue.Ref}}{{$.RefEndName}}{{else}}{{.i18n.Tr "repo.issues.no_ref"}}{{end}}</span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</div> </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"> <div class="ui icon search input">
<i class="filter icon"></i> <i class="filter icon"></i>
<input name="search" placeholder="{{.i18n.Tr "repo.filter_branch_and_tag"}}..."> <input name="search" placeholder="{{.i18n.Tr "repo.filter_branch_and_tag"}}...">
</div> </div>
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div>

<div class="header"> <div class="header">
<div class="ui grid"> <div class="ui grid">
<div class="two column row"> <div class="two column row">
<a class="reference column" href="#" data-target="#branch-list"> <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"}} {{svg "octicon-git-branch" 16}} {{.i18n.Tr "repo.branches"}}
</span> </span>
</a> </a>
<a class="reference column" href="#" data-target="#tag-list"> <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"}} <i class="reference tags icon"></i> {{.i18n.Tr "repo.tags"}}
</span> </span>
</a> </a>
@@ -31,12 +34,12 @@
</div> </div>
<div id="branch-list" class="scrolling menu reference-list-menu"> <div id="branch-list" class="scrolling menu reference-list-menu">
{{range .Branches}} {{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}} {{end}}
</div> </div>
<div id="tag-list" class="scrolling menu reference-list-menu" style="display: none"> <div id="tag-list" class="scrolling menu reference-list-menu" style="display: none">
{{range .Tags}} {{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}} {{end}}
</div> </div>
</div> </div>
@@ -643,3 +646,4 @@
</div> </div>
{{end}} {{end}}
{{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('.reference.column').on('click', function () {
$selectBranch.find('.scrolling.reference-list-menu').css('display', 'none'); $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).data('target')).css('display', 'block');
$(this) $(this)
.find('.text')
.addClass('black');
.find('.text.black')
.removeClass('black');
return false; 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) => { return new Promise((resolve) => {
$.ajax({ $.ajax({
type: 'POST', type: 'POST',
@@ -241,7 +241,8 @@ function updateIssuesMeta(url, action, issueIds, elementId, isAdd) {
action, action,
issue_ids: issueIds, issue_ids: issueIds,
id: elementId, id: elementId,
is_add: isAdd
is_add: isAdd,
ref: ref_b,
}, },
success: resolve success: resolve
}); });
@@ -487,12 +488,14 @@ function initCommentForm() {
const promises = []; const promises = [];
Object.keys(labels).forEach((elementId) => { Object.keys(labels).forEach((elementId) => {
const label = labels[elementId]; const label = labels[elementId];
console.log("label:",label)
const promise = updateIssuesMeta( const promise = updateIssuesMeta(
label['update-url'], label['update-url'],
label.action, label.action,
label['issue-id'], label['issue-id'],
elementId, elementId,
label['is-checked']
label['is-checked'],
''
); );
promises.push(promise); promises.push(promise);
}); });
@@ -526,13 +529,19 @@ function initCommentForm() {
.removeClass('invisible'); .removeClass('invisible');
$(this).data('is-checked', 'add'); $(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( updateIssuesMeta(
$listMenu.data('update-url'), $listMenu.data('update-url'),
'', '',
$listMenu.data('issue-id'), $listMenu.data('issue-id'),
$(this).data('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 $listMenu.data('action', 'update'); // Update to reload the page when we updated items
return false; return false;
@@ -603,7 +612,8 @@ function initCommentForm() {
'clear', 'clear',
$listMenu.data('issue-id'), $listMenu.data('issue-id'),
'', '',
''
'',
'',
).then(reload); ).then(reload);
} }


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


function selectItem(select_id, input_id) { 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 $list = $(`.ui${select_id}.list`);
const hasUpdateAction = $menu.data('action') === 'update'; const hasUpdateAction = $menu.data('action') === 'update';

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


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


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


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


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

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


Loading…
Cancel
Save