diff options
author | zeripath <art27@cantab.net> | 2021-03-12 16:07:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-13 00:07:23 +0800 |
commit | ccfb205ad126ac6fa3490e43a8075947e05a731a (patch) | |
tree | 9c363e6174cfb3ab2e454f14c80d3984c341ad2a | |
parent | 855a4f476e848dcb60422d299f003e69adbdc79a (diff) | |
download | gitea-ccfb205ad126ac6fa3490e43a8075947e05a731a.tar.gz gitea-ccfb205ad126ac6fa3490e43a8075947e05a731a.zip |
Fix excluding more than two labels on issues list (#14962)
* Fix excluding more than two labels on issues list
Fix #14840
Signed-off-by: Andrew Thornton <art27@cantab.net>
* refactor DRY
* fix multiple-label filter on milestone issuelist
* Apply suggestions from code review
Co-authored-by: jaqra <48099350+jaqra@users.noreply.github.com>
* Update web_src/js/index.js
Co-authored-by: Norwin Roosen <git@nroo.de>
Co-authored-by: jaqra <48099350+jaqra@users.noreply.github.com>
-rw-r--r-- | templates/repo/issue/milestone_issues.tmpl | 2 | ||||
-rw-r--r-- | web_src/js/index.js | 30 |
2 files changed, 13 insertions, 19 deletions
diff --git a/templates/repo/issue/milestone_issues.tmpl b/templates/repo/issue/milestone_issues.tmpl index c2c81682ff..4f4a91b211 100644 --- a/templates/repo/issue/milestone_issues.tmpl +++ b/templates/repo/issue/milestone_issues.tmpl @@ -54,7 +54,7 @@ <span class="info">{{.i18n.Tr "repo.issues.filter_label_exclude" | Safe}}</span> <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a> {{range .Labels}} - <a class="item label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}">{{if .IsExcluded}}{{svg "octicon-circle-slash"}}{{else if contain $.SelLabelIDs .ID}}{{svg "octicon-check"}}{{end}}<span class="label color" style="background-color: {{.Color}}"></span> {{.Name | RenderEmoji}}</a> + <a class="item label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.QueryString}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}">{{if .IsExcluded}}{{svg "octicon-circle-slash"}}{{else if contain $.SelLabelIDs .ID}}{{svg "octicon-check"}}{{end}}<span class="label color" style="background-color: {{.Color}}"></span> {{.Name | RenderEmoji}}</a> {{end}} </div> </div> diff --git a/web_src/js/index.js b/web_src/js/index.js index cda08870a5..ccd9276059 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -3753,18 +3753,21 @@ function initIssueList() { fullTextSearch: true }); + function excludeLabel (item) { + const href = $(item).attr('href'); + const id = $(item).data('label-id'); + + const regStr = `labels=((?:-?[0-9]+%2c)*)(${id})((?:%2c-?[0-9]+)*)&`; + const newStr = 'labels=$1-$2$3&'; + + window.location = href.replace(new RegExp(regStr), newStr); + } + $('.menu a.label-filter-item').each(function () { $(this).on('click', function (e) { if (e.altKey) { e.preventDefault(); - - const href = $(this).attr('href'); - const id = $(this).data('label-id'); - - const regStr = `labels=(-?[0-9]+%2c)*(${id})(%2c-?[0-9]+)*&`; - const newStr = 'labels=$1-$2$3&'; - - window.location = href.replace(new RegExp(regStr), newStr); + excludeLabel(this); } }); }); @@ -3772,17 +3775,8 @@ function initIssueList() { $('.menu .ui.dropdown.label-filter').on('keydown', (e) => { if (e.altKey && e.keyCode === 13) { const selectedItems = $('.menu .ui.dropdown.label-filter .menu .item.selected'); - if (selectedItems.length > 0) { - const item = $(selectedItems[0]); - - const href = item.attr('href'); - const id = item.data('label-id'); - - const regStr = `labels=(-?[0-9]+%2c)*(${id})(%2c-?[0-9]+)*&`; - const newStr = 'labels=$1-$2$3&'; - - window.location = href.replace(new RegExp(regStr), newStr); + excludeLabel($(selectedItems[0])); } } }); |