From eea937ab92f9eb23bceb2595aa5cf85f7a12496b Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Thu, 23 Mar 2023 00:52:22 +0800 Subject: [PATCH 01/13] button & git diff-tree command --- modules/git/repo_commit.go | 16 ++++++++ routers/web/repo/pull_review.go | 55 +++++++++++++++++++++++++++ routers/web/web.go | 1 + templates/repo/diff/box.tmpl | 6 +++ web_src/js/features/pull-view-file.js | 15 ++++++++ 5 files changed, 93 insertions(+) diff --git a/modules/git/repo_commit.go b/modules/git/repo_commit.go index 0e1b00ce082e4..f537bd87344dc 100644 --- a/modules/git/repo_commit.go +++ b/modules/git/repo_commit.go @@ -491,3 +491,19 @@ func (repo *Repository) AddLastCommitCache(cacheKey, fullName, sha string) error } return nil } + +// git diff-tree --no-commit-id --name-only -r 4122dc99f61ae52d04bb501ddbf633d07c065967 +func (repo *Repository) GetChangedFilesIn(commitID string) ([]string, error) { + stdout, _, err := NewCommand(repo.Ctx, "diff-tree", "--no-commit-id", "--name-only", "-r").AddDynamicArguments(commitID).RunStdString(&RunOpts{Dir: repo.Path}) + if err != nil { + return nil, err + } + split := strings.Split(stdout, "\000") + + // Because Git will always emit filenames with a terminal NUL ignore the last entry in the split - which will always be empty. + if len(split) > 0 { + split = split[:len(split)-1] + } + + return split, err +} diff --git a/routers/web/repo/pull_review.go b/routers/web/repo/pull_review.go index 90cfd5bfcdb3a..9922d37d93412 100644 --- a/routers/web/repo/pull_review.go +++ b/routers/web/repo/pull_review.go @@ -12,6 +12,7 @@ import ( pull_model "code.gitea.io/gitea/models/pull" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" @@ -293,3 +294,57 @@ func UpdateViewedFiles(ctx *context.Context) { ctx.ServerError("UpdateReview", err) } } + +type viewOrUnviewAllFilesForm struct { + HeadCommitSHA string `json:"headCommitSHA"` + ViewAll bool `json:"viewAll"` +} + +func ViewOrUnviewAllFiles(ctx *context.Context) { + // Find corresponding PR + issue := checkPullInfo(ctx) + if ctx.Written() { + return + } + pull := issue.PullRequest + + var data *viewOrUnviewAllFilesForm + err := json.NewDecoder(ctx.Req.Body).Decode(&data) + if err != nil { + log.Warn("Attempted to view/unview all but could not parse request body: %v", err) + ctx.Resp.WriteHeader(http.StatusBadRequest) + return + } + + // Expect the review to have been now if no head commit was supplied + if data.HeadCommitSHA == "" { + data.HeadCommitSHA = pull.HeadCommitID + } + + gitRepo, err := git.OpenRepository(ctx, pull.HeadRepo.RepoPath()) + if err != nil { + log.Error("unable to open repository: %s Error: %v", pull.HeadRepo.RepoPath(), err) + ctx.Resp.WriteHeader(http.StatusBadRequest) + return + } + + // get the list of changed files in the commit + files, err := gitRepo.GetChangedFilesIn(data.HeadCommitSHA) + if err != nil { + log.Error("unable to get the list of changed files, commitID: %s Error: %v", data.HeadCommitSHA, err) + ctx.Resp.WriteHeader(http.StatusBadRequest) + return + } + updatedFiles := make(map[string]pull_model.ViewedState, len(files)) + state := pull_model.Unviewed + if data.ViewAll { + state = pull_model.Viewed + } + for _, f := range files { + updatedFiles[f] = state + } + if err := pull_model.UpdateReviewState(ctx, ctx.Doer.ID, pull.ID, data.HeadCommitSHA, updatedFiles); err != nil { + ctx.ServerError("UpdateReview", err) + } + // todo redirect +} diff --git a/routers/web/web.go b/routers/web/web.go index 292268dc8055a..742ebef13ea67 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -1070,6 +1070,7 @@ func RegisterRoutes(m *web.Route) { m.Post("/watch", repo.IssueWatch) m.Post("/ref", repo.UpdateIssueRef) m.Post("/viewed-files", repo.UpdateViewedFiles) + m.Post("/view-or-unview-all-files", repo.ViewOrUnviewAllFiles) m.Group("/dependency", func() { m.Post("/add", repo.AddDependency) m.Post("/delete", repo.RemoveDependency) diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 6dafe6f896203..3f67999756741 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -30,6 +30,12 @@ + + {{end}} {{template "repo/diff/whitespace_dropdown" .}} {{template "repo/diff/options_dropdown" .}} diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index 06d78d78c200c..69399a96c6ed5 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -4,6 +4,8 @@ const {csrfToken, pageData} = window.config; const prReview = pageData.prReview || {}; const viewedStyleClass = 'viewed-file-checked-form'; const viewedCheckboxSelector = '.viewed-file-form'; // Selector under which all "Viewed" checkbox forms can be found +const viewAllBtnSelector = '#view-all-btn'; +const unviewAllBtnSelector = '#unview-all-btn'; // Refreshes the summary of viewed files if present @@ -17,12 +19,20 @@ function refreshViewedFilesSummary() { .replace('%[2]d', prReview.numberOfFiles); } +function refreshViewedAndUnviewedButton() { + $(viewAllBtnSelector).removeClass('gt-hidden'); + $(unviewAllBtnSelector).removeClass('gt-hidden'); + if (prReview.numberOfViewedFiles === prReview.numberOfFiles) $(viewAllBtnSelector).addClass('gt-hidden'); + else if (prReview.numberOfViewedFiles === 0) $(unviewAllBtnSelector).addClass('gt-hidden'); +} + // Explicitly recounts how many files the user has currently reviewed by counting the number of checked "viewed" checkboxes // Additionally, the viewed files summary will be updated if it exists export function countAndUpdateViewedFiles() { // The number of files is constant, but the number of viewed files can change because files can be loaded dynamically prReview.numberOfViewedFiles = document.querySelectorAll(`${viewedCheckboxSelector} > input[type=checkbox][checked]`).length; refreshViewedFilesSummary(); + refreshViewedAndUnviewedButton(); } // Initializes a listener for all children of the given html element @@ -48,6 +58,7 @@ export function initViewedCheckboxListenerFor() { // Update viewed-files summary and remove "has changed" label if present refreshViewedFilesSummary(); + refreshViewedAndUnviewedButton(); const hasChangedLabel = form.parentNode.querySelector('.changed-since-last-review'); hasChangedLabel?.parentNode.removeChild(hasChangedLabel); @@ -69,3 +80,7 @@ export function initViewedCheckboxListenerFor() { }); } } + +export function initViewAndUnviewAllButton() { + +} From 988e77d7c1fc008d555ba29fad3496a2feca41d7 Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Fri, 24 Mar 2023 00:44:57 +0800 Subject: [PATCH 02/13] expand and collapse --- modules/git/repo_commit.go | 16 -------- routers/web/repo/pull_review.go | 55 --------------------------- routers/web/web.go | 1 - templates/repo/diff/box.tmpl | 8 ++-- web_src/js/features/pull-view-file.js | 30 ++++++++------- web_src/js/index.js | 4 +- 6 files changed, 24 insertions(+), 90 deletions(-) diff --git a/modules/git/repo_commit.go b/modules/git/repo_commit.go index f537bd87344dc..0e1b00ce082e4 100644 --- a/modules/git/repo_commit.go +++ b/modules/git/repo_commit.go @@ -491,19 +491,3 @@ func (repo *Repository) AddLastCommitCache(cacheKey, fullName, sha string) error } return nil } - -// git diff-tree --no-commit-id --name-only -r 4122dc99f61ae52d04bb501ddbf633d07c065967 -func (repo *Repository) GetChangedFilesIn(commitID string) ([]string, error) { - stdout, _, err := NewCommand(repo.Ctx, "diff-tree", "--no-commit-id", "--name-only", "-r").AddDynamicArguments(commitID).RunStdString(&RunOpts{Dir: repo.Path}) - if err != nil { - return nil, err - } - split := strings.Split(stdout, "\000") - - // Because Git will always emit filenames with a terminal NUL ignore the last entry in the split - which will always be empty. - if len(split) > 0 { - split = split[:len(split)-1] - } - - return split, err -} diff --git a/routers/web/repo/pull_review.go b/routers/web/repo/pull_review.go index 9922d37d93412..90cfd5bfcdb3a 100644 --- a/routers/web/repo/pull_review.go +++ b/routers/web/repo/pull_review.go @@ -12,7 +12,6 @@ import ( pull_model "code.gitea.io/gitea/models/pull" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" @@ -294,57 +293,3 @@ func UpdateViewedFiles(ctx *context.Context) { ctx.ServerError("UpdateReview", err) } } - -type viewOrUnviewAllFilesForm struct { - HeadCommitSHA string `json:"headCommitSHA"` - ViewAll bool `json:"viewAll"` -} - -func ViewOrUnviewAllFiles(ctx *context.Context) { - // Find corresponding PR - issue := checkPullInfo(ctx) - if ctx.Written() { - return - } - pull := issue.PullRequest - - var data *viewOrUnviewAllFilesForm - err := json.NewDecoder(ctx.Req.Body).Decode(&data) - if err != nil { - log.Warn("Attempted to view/unview all but could not parse request body: %v", err) - ctx.Resp.WriteHeader(http.StatusBadRequest) - return - } - - // Expect the review to have been now if no head commit was supplied - if data.HeadCommitSHA == "" { - data.HeadCommitSHA = pull.HeadCommitID - } - - gitRepo, err := git.OpenRepository(ctx, pull.HeadRepo.RepoPath()) - if err != nil { - log.Error("unable to open repository: %s Error: %v", pull.HeadRepo.RepoPath(), err) - ctx.Resp.WriteHeader(http.StatusBadRequest) - return - } - - // get the list of changed files in the commit - files, err := gitRepo.GetChangedFilesIn(data.HeadCommitSHA) - if err != nil { - log.Error("unable to get the list of changed files, commitID: %s Error: %v", data.HeadCommitSHA, err) - ctx.Resp.WriteHeader(http.StatusBadRequest) - return - } - updatedFiles := make(map[string]pull_model.ViewedState, len(files)) - state := pull_model.Unviewed - if data.ViewAll { - state = pull_model.Viewed - } - for _, f := range files { - updatedFiles[f] = state - } - if err := pull_model.UpdateReviewState(ctx, ctx.Doer.ID, pull.ID, data.HeadCommitSHA, updatedFiles); err != nil { - ctx.ServerError("UpdateReview", err) - } - // todo redirect -} diff --git a/routers/web/web.go b/routers/web/web.go index 742ebef13ea67..292268dc8055a 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -1070,7 +1070,6 @@ func RegisterRoutes(m *web.Route) { m.Post("/watch", repo.IssueWatch) m.Post("/ref", repo.UpdateIssueRef) m.Post("/viewed-files", repo.UpdateViewedFiles) - m.Post("/view-or-unview-all-files", repo.ViewOrUnviewAllFiles) m.Group("/dependency", func() { m.Post("/add", repo.AddDependency) m.Post("/delete", repo.RemoveDependency) diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 3f67999756741..abf20fca8f05a 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -30,11 +30,11 @@ - - {{end}} {{template "repo/diff/whitespace_dropdown" .}} diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index 69399a96c6ed5..d80827a692e77 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -4,8 +4,8 @@ const {csrfToken, pageData} = window.config; const prReview = pageData.prReview || {}; const viewedStyleClass = 'viewed-file-checked-form'; const viewedCheckboxSelector = '.viewed-file-form'; // Selector under which all "Viewed" checkbox forms can be found -const viewAllBtnSelector = '#view-all-btn'; -const unviewAllBtnSelector = '#unview-all-btn'; +const expandFilesBtnSelector = '#expand-files-btn'; +const collapseFilesBtnSelector = '#collapse-files-btn'; // Refreshes the summary of viewed files if present @@ -19,20 +19,12 @@ function refreshViewedFilesSummary() { .replace('%[2]d', prReview.numberOfFiles); } -function refreshViewedAndUnviewedButton() { - $(viewAllBtnSelector).removeClass('gt-hidden'); - $(unviewAllBtnSelector).removeClass('gt-hidden'); - if (prReview.numberOfViewedFiles === prReview.numberOfFiles) $(viewAllBtnSelector).addClass('gt-hidden'); - else if (prReview.numberOfViewedFiles === 0) $(unviewAllBtnSelector).addClass('gt-hidden'); -} - // Explicitly recounts how many files the user has currently reviewed by counting the number of checked "viewed" checkboxes // Additionally, the viewed files summary will be updated if it exists export function countAndUpdateViewedFiles() { // The number of files is constant, but the number of viewed files can change because files can be loaded dynamically prReview.numberOfViewedFiles = document.querySelectorAll(`${viewedCheckboxSelector} > input[type=checkbox][checked]`).length; refreshViewedFilesSummary(); - refreshViewedAndUnviewedButton(); } // Initializes a listener for all children of the given html element @@ -58,7 +50,6 @@ export function initViewedCheckboxListenerFor() { // Update viewed-files summary and remove "has changed" label if present refreshViewedFilesSummary(); - refreshViewedAndUnviewedButton(); const hasChangedLabel = form.parentNode.querySelector('.changed-since-last-review'); hasChangedLabel?.parentNode.removeChild(hasChangedLabel); @@ -81,6 +72,19 @@ export function initViewedCheckboxListenerFor() { } } -export function initViewAndUnviewAllButton() { - +export function initExpandFilesButton() { + $(expandFilesBtnSelector).on('click', function() { + for (const box of document.querySelectorAll('.file-content[data-folded="true"]')) { + setFileFolding(box, box.querySelector('.fold-file'), false); + } + }) } + +export function initCollapseFilesButton() { + $(collapseFilesBtnSelector).on('click', function() { + for (const box of document.querySelectorAll('.file-content:not([data-folded="true"])')) { + if (box.getAttribute('id') === 'diff-incomplete') continue; + setFileFolding(box, box.querySelector('.fold-file'), true); + } + }) +} \ No newline at end of file diff --git a/web_src/js/index.js b/web_src/js/index.js index 7d74ee6b944c4..c74490853f230 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -72,7 +72,7 @@ import { initRepoSettingsCollaboration, initRepoSettingSearchTeamBox, } from './features/repo-settings.js'; -import {initViewedCheckboxListenerFor} from './features/pull-view-file.js'; +import {initViewedCheckboxListenerFor, initExpandFilesButton, initCollapseFilesButton} from './features/pull-view-file.js'; import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js'; import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js'; import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.js'; @@ -201,4 +201,6 @@ $(document).ready(() => { initUserAuthWebAuthnRegister(); initUserSettings(); initViewedCheckboxListenerFor(); + initExpandFilesButton(); + initCollapseFilesButton(); }); From f0d421302d6b0201bada905b83a848558f66e1c5 Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Fri, 24 Mar 2023 00:55:02 +0800 Subject: [PATCH 03/13] lint --- web_src/js/features/pull-view-file.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index d80827a692e77..ae847de014d52 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -73,18 +73,18 @@ export function initViewedCheckboxListenerFor() { } export function initExpandFilesButton() { - $(expandFilesBtnSelector).on('click', function() { + document.querySelector(expandFilesBtnSelector)?.addEventListener('click', () => { for (const box of document.querySelectorAll('.file-content[data-folded="true"]')) { setFileFolding(box, box.querySelector('.fold-file'), false); } - }) + }); } export function initCollapseFilesButton() { - $(collapseFilesBtnSelector).on('click', function() { + document.querySelector(collapseFilesBtnSelector)?.addEventListener('click', () => { for (const box of document.querySelectorAll('.file-content:not([data-folded="true"])')) { if (box.getAttribute('id') === 'diff-incomplete') continue; setFileFolding(box, box.querySelector('.fold-file'), true); } - }) -} \ No newline at end of file + }); +} From b77692c536845aca11f633d5f63e4c9f407fffbf Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Fri, 24 Mar 2023 01:00:12 +0800 Subject: [PATCH 04/13] localize --- options/locale/locale_en-US.ini | 2 ++ templates/repo/diff/box.tmpl | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index da4ad47620209..549f4c186be46 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1561,6 +1561,8 @@ pulls.compare_changes_desc = Select the branch to merge into and the branch to p pulls.has_viewed_file = Viewed pulls.has_changed_since_last_review = Changed since your last review pulls.viewed_files_label = %[1]d / %[2]d files viewed +pulls.expand_files = Expand all files +pulls.collapse_files = Collapse all files pulls.compare_base = merge into pulls.compare_compare = pull from pulls.switch_comparison_type = Switch comparison type diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index abf20fca8f05a..6945f72a427bf 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -30,10 +30,10 @@ - - {{end}} From b877317510ed2b90b5ff68f754f3a4d1b72c1873 Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Fri, 24 Mar 2023 16:39:43 +0800 Subject: [PATCH 05/13] merge function --- web_src/js/features/pull-view-file.js | 9 ++++----- web_src/js/index.js | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index ae847de014d52..1fb2e5d9d30c4 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -72,19 +72,18 @@ export function initViewedCheckboxListenerFor() { } } -export function initExpandFilesButton() { +export function initExpandAndCollapseFilesButton() { + // expand btn document.querySelector(expandFilesBtnSelector)?.addEventListener('click', () => { for (const box of document.querySelectorAll('.file-content[data-folded="true"]')) { setFileFolding(box, box.querySelector('.fold-file'), false); } }); -} - -export function initCollapseFilesButton() { + // collapse btn, need to exclude the div of “show more” document.querySelector(collapseFilesBtnSelector)?.addEventListener('click', () => { for (const box of document.querySelectorAll('.file-content:not([data-folded="true"])')) { if (box.getAttribute('id') === 'diff-incomplete') continue; setFileFolding(box, box.querySelector('.fold-file'), true); } }); -} +} \ No newline at end of file diff --git a/web_src/js/index.js b/web_src/js/index.js index c74490853f230..97b80a623b509 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -72,7 +72,7 @@ import { initRepoSettingsCollaboration, initRepoSettingSearchTeamBox, } from './features/repo-settings.js'; -import {initViewedCheckboxListenerFor, initExpandFilesButton, initCollapseFilesButton} from './features/pull-view-file.js'; +import {initViewedCheckboxListenerFor, initExpandAndCollapseFilesButton} from './features/pull-view-file.js'; import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js'; import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js'; import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.js'; @@ -201,6 +201,5 @@ $(document).ready(() => { initUserAuthWebAuthnRegister(); initUserSettings(); initViewedCheckboxListenerFor(); - initExpandFilesButton(); - initCollapseFilesButton(); + initExpandAndCollapseFilesButton(); }); From bc236a5a3ac941b20fa971de8f88564f9fa1d9d6 Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Fri, 24 Mar 2023 16:43:39 +0800 Subject: [PATCH 06/13] lint --- web_src/js/features/pull-view-file.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index 1fb2e5d9d30c4..fd40c432ed715 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -86,4 +86,4 @@ export function initExpandAndCollapseFilesButton() { setFileFolding(box, box.querySelector('.fold-file'), true); } }); -} \ No newline at end of file +} From a9341ca01bfbe6604fe829b17c2c246a0ff38369 Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Sun, 26 Mar 2023 09:01:33 +0800 Subject: [PATCH 07/13] put expand/collapse btn int `...` --- templates/repo/diff/box.tmpl | 6 ------ templates/repo/diff/options_dropdown.tmpl | 4 ++++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 6945f72a427bf..6dafe6f896203 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -30,12 +30,6 @@ - - {{end}} {{template "repo/diff/whitespace_dropdown" .}} {{template "repo/diff/options_dropdown" .}} diff --git a/templates/repo/diff/options_dropdown.tmpl b/templates/repo/diff/options_dropdown.tmpl index 2cb5abcb36d4f..5c351fb824d57 100644 --- a/templates/repo/diff/options_dropdown.tmpl +++ b/templates/repo/diff/options_dropdown.tmpl @@ -12,5 +12,9 @@ {{.locale.Tr "repo.diff.download_patch"}} {{.locale.Tr "repo.diff.download_diff"}} {{end}} + {{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}} + {{.locale.Tr "repo.pulls.expand_files"}} + {{.locale.Tr "repo.pulls.collapse_files"}} + {{end}} From a50806a9565f446c508b688251cd88d6e13221dc Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Mon, 27 Mar 2023 11:53:48 +0800 Subject: [PATCH 08/13] fix init --- web_src/js/features/pull-view-file.js | 22 +++++++++++++++++++++- web_src/js/index.js | 16 ++-------------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index fd40c432ed715..c7fc16d87d195 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -1,4 +1,11 @@ import {setFileFolding} from './file-fold.js'; +import {initDiffFileTree} from './repo-diff-filetree.js'; +import { + initRepoDiffShowMore, + initRepoDiffReviewButton, + initRepoDiffFileViewToggle, + initRepoDiffConversationForm, +} from './repo-diff.js'; const {csrfToken, pageData} = window.config; const prReview = pageData.prReview || {}; @@ -72,7 +79,7 @@ export function initViewedCheckboxListenerFor() { } } -export function initExpandAndCollapseFilesButton() { +function initExpandAndCollapseFilesButton() { // expand btn document.querySelector(expandFilesBtnSelector)?.addEventListener('click', () => { for (const box of document.querySelectorAll('.file-content[data-folded="true"]')) { @@ -87,3 +94,16 @@ export function initExpandAndCollapseFilesButton() { } }); } + +export function initRepoDiffView() { + const expandFilesBtn = document.querySelector(expandFilesBtnSelector); + if (!expandFilesBtn) return; + + initDiffFileTree(); + initRepoDiffShowMore(); + initRepoDiffReviewButton(); + initRepoDiffFileViewToggle(); + initRepoDiffConversationForm(); + initViewedCheckboxListenerFor(); + initExpandAndCollapseFilesButton(); +} diff --git a/web_src/js/index.js b/web_src/js/index.js index 97b80a623b509..16c8fa8ce398d 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -23,14 +23,8 @@ import {initRepoIssueContentHistory} from './features/repo-issue-content.js'; import {initStopwatch} from './features/stopwatch.js'; import {initFindFileInRepo} from './features/repo-findfile.js'; import {initCommentContent, initMarkupContent} from './markup/content.js'; -import {initDiffFileTree} from './features/repo-diff-filetree.js'; import {initUserAuthLinkAccountView, initUserAuthOauth2} from './features/user-auth.js'; -import { - initRepoDiffConversationForm, - initRepoDiffFileViewToggle, - initRepoDiffReviewButton, initRepoDiffShowMore, -} from './features/repo-diff.js'; import { initRepoIssueDue, initRepoIssueList, @@ -72,7 +66,7 @@ import { initRepoSettingsCollaboration, initRepoSettingSearchTeamBox, } from './features/repo-settings.js'; -import {initViewedCheckboxListenerFor, initExpandAndCollapseFilesButton} from './features/pull-view-file.js'; +import {initRepoDiffView} from './features/pull-view-file.js'; import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js'; import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js'; import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.js'; @@ -162,11 +156,6 @@ $(document).ready(() => { initRepoCommentForm(); initRepoEllipsisButton(); initRepoCommitLastCommitLoader(); - initRepoDiffConversationForm(); - initRepoDiffFileViewToggle(); - initRepoDiffReviewButton(); - initRepoDiffShowMore(); - initDiffFileTree(); initRepoEditor(); initRepoGraphGit(); initRepoIssueContentHistory(); @@ -200,6 +189,5 @@ $(document).ready(() => { initUserAuthWebAuthn(); initUserAuthWebAuthnRegister(); initUserSettings(); - initViewedCheckboxListenerFor(); - initExpandAndCollapseFilesButton(); + initRepoDiffView(); }); From 8db0f864d085779a453d000934b7bfc4a561fcd3 Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Mon, 27 Mar 2023 14:49:52 +0800 Subject: [PATCH 09/13] fix lint --- web_src/js/features/pull-view-file.js | 21 ++------------------- web_src/js/features/repo-diff.js | 24 +++++++++++++++++++----- web_src/js/index.js | 2 +- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index c7fc16d87d195..04690c66ae49e 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -1,11 +1,5 @@ import {setFileFolding} from './file-fold.js'; -import {initDiffFileTree} from './repo-diff-filetree.js'; -import { - initRepoDiffShowMore, - initRepoDiffReviewButton, - initRepoDiffFileViewToggle, - initRepoDiffConversationForm, -} from './repo-diff.js'; + const {csrfToken, pageData} = window.config; const prReview = pageData.prReview || {}; @@ -79,7 +73,7 @@ export function initViewedCheckboxListenerFor() { } } -function initExpandAndCollapseFilesButton() { +export function initExpandAndCollapseFilesButton() { // expand btn document.querySelector(expandFilesBtnSelector)?.addEventListener('click', () => { for (const box of document.querySelectorAll('.file-content[data-folded="true"]')) { @@ -95,15 +89,4 @@ function initExpandAndCollapseFilesButton() { }); } -export function initRepoDiffView() { - const expandFilesBtn = document.querySelector(expandFilesBtnSelector); - if (!expandFilesBtn) return; - initDiffFileTree(); - initRepoDiffShowMore(); - initRepoDiffReviewButton(); - initRepoDiffFileViewToggle(); - initRepoDiffConversationForm(); - initViewedCheckboxListenerFor(); - initExpandAndCollapseFilesButton(); -} diff --git a/web_src/js/features/repo-diff.js b/web_src/js/features/repo-diff.js index 56ebe4fc991ef..008c432372e12 100644 --- a/web_src/js/features/repo-diff.js +++ b/web_src/js/features/repo-diff.js @@ -2,12 +2,13 @@ import $ from 'jquery'; import {initCompReactionSelector} from './comp/ReactionSelector.js'; import {initRepoIssueContentHistory} from './repo-issue-content.js'; import {validateTextareaNonEmpty} from './comp/EasyMDE.js'; -import {initViewedCheckboxListenerFor, countAndUpdateViewedFiles} from './pull-view-file.js'; +import {initViewedCheckboxListenerFor, countAndUpdateViewedFiles, initExpandAndCollapseFilesButton} from './pull-view-file.js'; import {initTooltip} from '../modules/tippy.js'; +import {initDiffFileTree} from './repo-diff-filetree.js'; const {csrfToken} = window.config; -export function initRepoDiffReviewButton() { +function initRepoDiffReviewButton() { const $reviewBox = $('#review-box'); const $counter = $reviewBox.find('.review-comments-counter'); @@ -26,7 +27,7 @@ export function initRepoDiffReviewButton() { }); } -export function initRepoDiffFileViewToggle() { +function initRepoDiffFileViewToggle() { $('.file-view-toggle').on('click', function () { const $this = $(this); $this.parent().children().removeClass('active'); @@ -38,7 +39,7 @@ export function initRepoDiffFileViewToggle() { }); } -export function initRepoDiffConversationForm() { +function initRepoDiffConversationForm() { $(document).on('submit', '.conversation-holder form', async (e) => { e.preventDefault(); @@ -157,7 +158,7 @@ function loadMoreFiles(url, callback) { }); } -export function initRepoDiffShowMore() { +function initRepoDiffShowMore() { $(document).on('click', 'a#diff-show-more-files', (e) => { e.preventDefault(); @@ -191,3 +192,16 @@ export function initRepoDiffShowMore() { }); }); } + +export function initRepoDiffView() { + const diffFileList = $('#diff-file-list'); + if (diffFileList.length === 0) return; + + initDiffFileTree(); + initRepoDiffShowMore(); + initRepoDiffReviewButton(); + initRepoDiffFileViewToggle(); + initRepoDiffConversationForm(); + initViewedCheckboxListenerFor(); + initExpandAndCollapseFilesButton(); +} diff --git a/web_src/js/index.js b/web_src/js/index.js index 16c8fa8ce398d..4c7eca90cab90 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -66,7 +66,7 @@ import { initRepoSettingsCollaboration, initRepoSettingSearchTeamBox, } from './features/repo-settings.js'; -import {initRepoDiffView} from './features/pull-view-file.js'; +import {initRepoDiffView} from './features/repo-diff.js'; import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js'; import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js'; import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.js'; From 496d880d6217f9adc45a77fcc9e22e10b8e8bf6a Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Mon, 27 Mar 2023 14:52:29 +0800 Subject: [PATCH 10/13] delete blank line --- web_src/js/features/repo-diff.js | 1 - 1 file changed, 1 deletion(-) diff --git a/web_src/js/features/repo-diff.js b/web_src/js/features/repo-diff.js index 008c432372e12..17934b6d70ff1 100644 --- a/web_src/js/features/repo-diff.js +++ b/web_src/js/features/repo-diff.js @@ -196,7 +196,6 @@ function initRepoDiffShowMore() { export function initRepoDiffView() { const diffFileList = $('#diff-file-list'); if (diffFileList.length === 0) return; - initDiffFileTree(); initRepoDiffShowMore(); initRepoDiffReviewButton(); From f6c900a0ea8be98e457906a9ea7143ff1231f362 Mon Sep 17 00:00:00 2001 From: sillyguodong Date: Mon, 27 Mar 2023 18:39:04 +0800 Subject: [PATCH 11/13] delete if cond --- templates/repo/diff/options_dropdown.tmpl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/templates/repo/diff/options_dropdown.tmpl b/templates/repo/diff/options_dropdown.tmpl index 02b2544f869fc..ced0e060467e1 100644 --- a/templates/repo/diff/options_dropdown.tmpl +++ b/templates/repo/diff/options_dropdown.tmpl @@ -12,9 +12,7 @@ {{.locale.Tr "repo.diff.download_patch"}} {{.locale.Tr "repo.diff.download_diff"}} {{end}} - {{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}} - {{.locale.Tr "repo.pulls.expand_files"}} - {{.locale.Tr "repo.pulls.collapse_files"}} - {{end}} + {{.locale.Tr "repo.pulls.expand_files"}} + {{.locale.Tr "repo.pulls.collapse_files"}} From d53cc692ddc7d2c7e280c1ad938b58b7d0436fcf Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 9 Apr 2023 14:13:19 +0200 Subject: [PATCH 12/13] Update web_src/js/features/pull-view-file.js --- web_src/js/features/pull-view-file.js | 1 - 1 file changed, 1 deletion(-) diff --git a/web_src/js/features/pull-view-file.js b/web_src/js/features/pull-view-file.js index 04690c66ae49e..c6985efadb528 100644 --- a/web_src/js/features/pull-view-file.js +++ b/web_src/js/features/pull-view-file.js @@ -1,6 +1,5 @@ import {setFileFolding} from './file-fold.js'; - const {csrfToken, pageData} = window.config; const prReview = pageData.prReview || {}; const viewedStyleClass = 'viewed-file-checked-form'; From a9b24e2d087df6202c88805ffab50b8473f01042 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 9 Apr 2023 14:16:01 +0200 Subject: [PATCH 13/13] adjust border radius on changed-since-last-review --- web_src/css/review.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_src/css/review.css b/web_src/css/review.css index 0111311d3c346..14668eb24599a 100644 --- a/web_src/css/review.css +++ b/web_src/css/review.css @@ -256,7 +256,7 @@ a.blob-excerpt:hover { .changed-since-last-review { border: 1px var(--color-accent) solid; background-color: var(--color-small-accent); - border-radius: 15px; + border-radius: var(--border-radius); padding: 4px 8px; margin: -8px 0; /* just like other buttons in the diff box header */ font-size: 0.857rem; /* just like .ui.tiny.button */