[v11.0/forgejo] fix(ui): show commit icon in branch dropdown button when viewing a commit (#7576)
Backport: https://codeberg.org/forgejo/forgejo/pulls/7571 Replaces https://codeberg.org/forgejo/forgejo/pulls/7574 Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7576 Reviewed-by: 0ko <0ko@noreply.codeberg.org> Co-authored-by: Beowulf <beowulf@beocode.eu> Co-committed-by: Beowulf <beowulf@beocode.eu>
This commit is contained in:
		
					parent
					
						
							
								9ebdc09939
							
						
					
				
			
			
				commit
				
					
						722ea4179c
					
				
			
		
					 5 changed files with 52 additions and 25 deletions
				
			
		| 
						 | 
					@ -77,8 +77,10 @@
 | 
				
			||||||
				{{else}}
 | 
									{{else}}
 | 
				
			||||||
					{{if eq $type "tag"}}
 | 
										{{if eq $type "tag"}}
 | 
				
			||||||
						{{svg "octicon-tag"}}
 | 
											{{svg "octicon-tag"}}
 | 
				
			||||||
					{{else}}
 | 
										{{else if eq $type "branch"}}
 | 
				
			||||||
						{{svg "octicon-git-branch"}}
 | 
											{{svg "octicon-git-branch"}}
 | 
				
			||||||
 | 
										{{else}}
 | 
				
			||||||
 | 
											{{svg "octicon-git-commit"}}
 | 
				
			||||||
					{{end}}
 | 
										{{end}}
 | 
				
			||||||
					<strong ref="dropdownRefName" class="tw-ml-2 tw-inline-block gt-ellipsis">{{if and .root.IsViewTag (not .noTag)}}{{.root.TagName}}{{else if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.CommitID}}{{end}}</strong>
 | 
										<strong ref="dropdownRefName" class="tw-ml-2 tw-inline-block gt-ellipsis">{{if and .root.IsViewTag (not .noTag)}}{{.root.TagName}}{{else if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.CommitID}}{{end}}</strong>
 | 
				
			||||||
				{{end}}
 | 
									{{end}}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ import (
 | 
				
			||||||
	"forgejo.org/models/unittest"
 | 
						"forgejo.org/models/unittest"
 | 
				
			||||||
	user_model "forgejo.org/models/user"
 | 
						user_model "forgejo.org/models/user"
 | 
				
			||||||
	"forgejo.org/modules/git"
 | 
						"forgejo.org/modules/git"
 | 
				
			||||||
 | 
						"forgejo.org/modules/indexer/stats"
 | 
				
			||||||
	files_service "forgejo.org/services/repository/files"
 | 
						files_service "forgejo.org/services/repository/files"
 | 
				
			||||||
	"forgejo.org/tests"
 | 
						"forgejo.org/tests"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +37,10 @@ func DeclareGitRepos(t *testing.T) func() {
 | 
				
			||||||
			Filename: "testfile",
 | 
								Filename: "testfile",
 | 
				
			||||||
			Versions: []string{"hello", "hallo", "hola", "native", "ubuntu-latest", "- runs-on: ubuntu-latest", "- runs-on: debian-latest"},
 | 
								Versions: []string{"hello", "hallo", "hola", "native", "ubuntu-latest", "- runs-on: ubuntu-latest", "- runs-on: debian-latest"},
 | 
				
			||||||
		}}),
 | 
							}}),
 | 
				
			||||||
 | 
							newRepo(t, 2, "language-stats-test", []FileChanges{{
 | 
				
			||||||
 | 
								Filename: "main.rs",
 | 
				
			||||||
 | 
								Versions: []string{"fn main() {", "println!(\"Hello World!\");", "}"},
 | 
				
			||||||
 | 
							}}),
 | 
				
			||||||
		newRepo(t, 2, "mentions-highlighted", []FileChanges{
 | 
							newRepo(t, 2, "mentions-highlighted", []FileChanges{
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				Filename:  "history1.md",
 | 
									Filename:  "history1.md",
 | 
				
			||||||
| 
						 | 
					@ -105,5 +110,8 @@ func newRepo(t *testing.T, userID int64, repoName string, fileChanges []FileChan
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := stats.UpdateRepoIndexer(somerepo)
 | 
				
			||||||
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return cleanupFunc
 | 
						return cleanupFunc
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,19 +0,0 @@
 | 
				
			||||||
// @watch start
 | 
					 | 
				
			||||||
// web_src/js/features/common-global.js
 | 
					 | 
				
			||||||
// web_src/css/repo.css
 | 
					 | 
				
			||||||
// @watch end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import {expect} from '@playwright/test';
 | 
					 | 
				
			||||||
import {save_visual, test} from './utils_e2e.ts';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
test('Language stats bar', async ({page}) => {
 | 
					 | 
				
			||||||
  const response = await page.goto('/user2/repo1');
 | 
					 | 
				
			||||||
  expect(response?.status()).toBe(200);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  await expect(page.locator('#language-stats-legend')).toBeVisible();
 | 
					 | 
				
			||||||
  await save_visual(page);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  await page.click('#language-stats-bar');
 | 
					 | 
				
			||||||
  await expect(page.locator('#language-stats-legend')).toBeHidden();
 | 
					 | 
				
			||||||
  await save_visual(page);
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
							
								
								
									
										35
									
								
								tests/e2e/repo-home.test.e2e.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								tests/e2e/repo-home.test.e2e.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					// @watch start
 | 
				
			||||||
 | 
					// web_src/js/components/RepoBranchTagSelector.vue
 | 
				
			||||||
 | 
					// web_src/js/features/common-global.js
 | 
				
			||||||
 | 
					// web_src/css/repo.css
 | 
				
			||||||
 | 
					// @watch end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {expect} from '@playwright/test';
 | 
				
			||||||
 | 
					import {save_visual, test} from './utils_e2e.ts';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test('Language stats bar', async ({page}) => {
 | 
				
			||||||
 | 
					  const response = await page.goto('/user2/language-stats-test');
 | 
				
			||||||
 | 
					  expect(response?.status()).toBe(200);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  await expect(page.locator('#language-stats-legend')).toBeHidden();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  await page.click('#language-stats-bar');
 | 
				
			||||||
 | 
					  await expect(page.locator('#language-stats-legend')).toBeVisible();
 | 
				
			||||||
 | 
					  await save_visual(page);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  await page.click('#language-stats-bar');
 | 
				
			||||||
 | 
					  await expect(page.locator('#language-stats-legend')).toBeHidden();
 | 
				
			||||||
 | 
					  await save_visual(page);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test('Branch selector commit icon', async ({page}) => {
 | 
				
			||||||
 | 
					  const response = await page.goto('/user2/repo1');
 | 
				
			||||||
 | 
					  expect(response?.status()).toBe(200);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  await expect(page.locator('.branch-dropdown-button svg.octicon-git-branch')).toBeVisible();
 | 
				
			||||||
 | 
					  await expect(page.locator('.branch-dropdown-button')).toHaveText('master');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  await page.goto('/user2/repo1/src/commit/65f1bf27bc3bf70f64657658635e66094edbcb4d');
 | 
				
			||||||
 | 
					  await expect(page.locator('.branch-dropdown-button svg.octicon-git-commit')).toBeVisible();
 | 
				
			||||||
 | 
					  await expect(page.locator('.branch-dropdown-button')).toHaveText('65f1bf27bc');
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
| 
						 | 
					@ -54,12 +54,12 @@ const sfc = {
 | 
				
			||||||
    if (this.viewType === 'tree') {
 | 
					    if (this.viewType === 'tree') {
 | 
				
			||||||
      this.isViewTree = true;
 | 
					      this.isViewTree = true;
 | 
				
			||||||
      this.refNameText = this.commitIdShort;
 | 
					      this.refNameText = this.commitIdShort;
 | 
				
			||||||
    } else if (this.viewType === 'tag') {
 | 
					    } else if (this.viewType === 'branch') {
 | 
				
			||||||
      this.isViewTag = true;
 | 
					 | 
				
			||||||
      this.refNameText = this.tagName;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      this.isViewBranch = true;
 | 
					      this.isViewBranch = true;
 | 
				
			||||||
      this.refNameText = this.branchName;
 | 
					      this.refNameText = this.branchName;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      this.isViewTag = true;
 | 
				
			||||||
 | 
					      this.refNameText = this.tagName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    document.body.addEventListener('click', (event) => {
 | 
					    document.body.addEventListener('click', (event) => {
 | 
				
			||||||
| 
						 | 
					@ -252,7 +252,8 @@ export default sfc; // activate IDE's Vue plugin
 | 
				
			||||||
        <template v-if="release">{{ textReleaseCompare }}</template>
 | 
					        <template v-if="release">{{ textReleaseCompare }}</template>
 | 
				
			||||||
        <template v-else>
 | 
					        <template v-else>
 | 
				
			||||||
          <svg-icon v-if="isViewTag" name="octicon-tag"/>
 | 
					          <svg-icon v-if="isViewTag" name="octicon-tag"/>
 | 
				
			||||||
          <svg-icon v-else name="octicon-git-branch"/>
 | 
					          <svg-icon v-else-if="isViewBranch" name="octicon-git-branch"/>
 | 
				
			||||||
 | 
					          <svg-icon v-else name="octicon-git-commit"/>
 | 
				
			||||||
          <strong ref="dropdownRefName" class="tw-ml-2 tw-inline-block gt-ellipsis">{{ refNameText }}</strong>
 | 
					          <strong ref="dropdownRefName" class="tw-ml-2 tw-inline-block gt-ellipsis">{{ refNameText }}</strong>
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
      </span>
 | 
					      </span>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue