summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2019-12-02 04:50:36 +0100
committertechknowlogick <techknowlogick@gitea.io>2019-12-01 22:50:36 -0500
commit66028d58f9ed3f69a82b84360784f8e6ccbcd582 (patch)
tree2d2b9df042d5a0f8f1968a65bd1b9e5ade909ee6 /models
parent668eaf95d581f68507523563d0701000a4505055 (diff)
downloadgitea-66028d58f9ed3f69a82b84360784f8e6ccbcd582.tar.gz
gitea-66028d58f9ed3f69a82b84360784f8e6ccbcd582.zip
[UI] IssuePage multi repo select (#8741)
* Make repository list @ issues/PR page persist Will partially fix #6355 * Enable multiple selections in repo list @ issues/PR page Part of issue #6355 * Add RepoIDs to UserIssueStatsOptions to make "type" count correct when selecting one/multiple repos. * Replace variable "repo" with list "repos[]" and enable multiple selections of repositories from list by including/excluding RepoIDs in list. * * Remove redundant code * Add 'All' button Improves functionality of the page, so that backtracking is not necessary to reset the page * Remove redundant variable Completely replace 'RepoID' with 'RepoIDs' and remove redundant code * Add RepoIDs to label link * Revert part of code to previous version to troubleshoot build failure * Implement old and new pieces of code whilst adhering to multi select * Attempt to join the two versions Last commit passed tests but doesn't work in practice, this works in practice and hopefully passes the tests. * Update tests to desired state * Fix pagination implementation and tests * Pass repoIDs as `repos=[1,2,3...]` instead of several `repos[]=..` * Update tests file to reflect new functionality * Update template with new `repos` format * Implement new solution to show constant "total issues" count for "All" button * Correct behavior when passing zero to array * Comment out test url returning 404 This keeps returning 404 in the test despite working in practice, for the sake of running more tests I am commenting it out * Comment out another test url returning 404 Last attempt, if more tests crash I will uncomment the urls and request assistance. * Reenable tests and test fix * Re-enable tests * Make selecting "In your repositories" reset selection as passing IDs of repos belonging to other profiles causes breakage * Remove unnecessary (with multi-selection enable) code * Drop repo from repo map and total count if permission denied * Remove extra parenthesis * make template work again * find bug! * forgot the '#' at bugfixing * delete unused RepoID * compile regex only one time * make fmt * local variable = capital letter lower * check if repos query pattern is correct * pagination remove last , - make regex work again * use Replace instead of ReplaceAll; del delete * fix test * how did this test binary got in?!? dont forgot the "-p" at git add * ! * dont replace -> cut fisrt & last string Co-Authored-By: zeripath <art27@cantab.net> * jet another regex dont mind as long as it has the same result and is performatn ... Co-Authored-By: zeripath <art27@cantab.net> * dont use nonexisting repo for test * exclude /issues?type=created_by from test * add table to querys use same syntax in each query (table.colum) * add new issue for test * dont make a workaround or something else this need a refactor itself and is out of scope for this PR * fix misspell * CI.redo() * englisch txt update Co-Authored-By: zeripath <art27@cantab.net> * add sugestions * Tweak & Fix * CI.restart()
Diffstat (limited to 'models')
-rw-r--r--models/fixtures/issue.yml2
-rw-r--r--models/fixtures/issue_assignees.yml4
-rw-r--r--models/issue.go18
-rw-r--r--models/issue_test.go2
4 files changed, 15 insertions, 11 deletions
diff --git a/models/fixtures/issue.yml b/models/fixtures/issue.yml
index 585242a14d..541e5faf61 100644
--- a/models/fixtures/issue.yml
+++ b/models/fixtures/issue.yml
@@ -96,4 +96,4 @@
is_closed: false
is_pull: true
created_unix: 946684820
- updated_unix: 978307180 \ No newline at end of file
+ updated_unix: 978307180
diff --git a/models/fixtures/issue_assignees.yml b/models/fixtures/issue_assignees.yml
index 1be07df7d4..2e89b2b0b3 100644
--- a/models/fixtures/issue_assignees.yml
+++ b/models/fixtures/issue_assignees.yml
@@ -6,3 +6,7 @@
id: 2
assignee_id: 1
issue_id: 6
+-
+ id: 3
+ assignee_id: 2
+ issue_id: 6
diff --git a/models/issue.go b/models/issue.go
index 310971c45f..a3597f1585 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -1402,7 +1402,7 @@ func GetIssueStats(opts *IssueStatsOptions) (*IssueStats, error) {
// UserIssueStatsOptions contains parameters accepted by GetUserIssueStats.
type UserIssueStatsOptions struct {
UserID int64
- RepoID int64
+ RepoIDs []int64
UserRepoIDs []int64
FilterMode int
IsPull bool
@@ -1416,19 +1416,19 @@ func GetUserIssueStats(opts UserIssueStatsOptions) (*IssueStats, error) {
cond := builder.NewCond()
cond = cond.And(builder.Eq{"issue.is_pull": opts.IsPull})
- if opts.RepoID > 0 {
- cond = cond.And(builder.Eq{"issue.repo_id": opts.RepoID})
+ if len(opts.RepoIDs) > 0 {
+ cond = cond.And(builder.In("issue.repo_id", opts.RepoIDs))
}
switch opts.FilterMode {
case FilterModeAll:
- stats.OpenCount, err = x.Where(cond).And("is_closed = ?", false).
+ stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
Count(new(Issue))
if err != nil {
return nil, err
}
- stats.ClosedCount, err = x.Where(cond).And("is_closed = ?", true).
+ stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
Count(new(Issue))
if err != nil {
@@ -1450,14 +1450,14 @@ func GetUserIssueStats(opts UserIssueStatsOptions) (*IssueStats, error) {
return nil, err
}
case FilterModeCreate:
- stats.OpenCount, err = x.Where(cond).And("is_closed = ?", false).
- And("poster_id = ?", opts.UserID).
+ stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
+ And("issue.poster_id = ?", opts.UserID).
Count(new(Issue))
if err != nil {
return nil, err
}
- stats.ClosedCount, err = x.Where(cond).And("is_closed = ?", true).
- And("poster_id = ?", opts.UserID).
+ stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
+ And("issue.poster_id = ?", opts.UserID).
Count(new(Issue))
if err != nil {
return nil, err
diff --git a/models/issue_test.go b/models/issue_test.go
index d16c1de25d..d369b0acf5 100644
--- a/models/issue_test.go
+++ b/models/issue_test.go
@@ -180,7 +180,7 @@ func TestGetUserIssueStats(t *testing.T) {
{
UserIssueStatsOptions{
UserID: 1,
- RepoID: 1,
+ RepoIDs: []int64{1},
FilterMode: FilterModeAll,
},
IssueStats{