mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Implement contributors graph (#27882)
Continuation of https://github.com/go-gitea/gitea/pull/25439. Fixes #847 Before: <img width="1296" alt="image" src="https://github.com/go-gitea/gitea/assets/32161460/24571ac8-b254-43c9-b178-97340f0dc8a9"> ---- After: <img width="1296" alt="image" src="https://github.com/go-gitea/gitea/assets/32161460/c60b2459-9d10-4d42-8d83-d5ef0f45bf94"> --- #### Overview This is the implementation of a requested feature: Contributors graph (#847) It makes Activity page a multi-tab page and adds a new tab called Contributors. Contributors tab shows the contribution graphs over time since the repository existed. It also shows per user contribution graphs for top 100 contributors. Top 100 is calculated based on the selected contribution type (commits, additions or deletions). --- #### Demo (The demo is a bit old but still a good example to show off the main features) <video src="https://github.com/go-gitea/gitea/assets/32161460/9f68103f-8145-4cc2-94bc-5546daae7014" controls width="320" height="240"> <a href="https://github.com/go-gitea/gitea/assets/32161460/9f68103f-8145-4cc2-94bc-5546daae7014">Download</a> </video> #### Features: - Select contribution type (commits, additions or deletions) - See overall and per user contribution graphs for the selected contribution type - Zoom and pan on graphs to see them in detail - See top 100 contributors based on the selected contribution type and selected time range - Go directly to users' profile by clicking their name if they are registered gitea users - Cache the results so that when the same repository is visited again fetching data will be faster --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: hiifong <i@hiif.ong> Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: yp05327 <576951401@qq.com>
This commit is contained in:
		
							
								
								
									
										28
									
								
								web_src/js/features/contributors.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								web_src/js/features/contributors.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| import {createApp} from 'vue'; | ||||
|  | ||||
| export async function initRepoContributors() { | ||||
|   const el = document.getElementById('repo-contributors-chart'); | ||||
|   if (!el) return; | ||||
|  | ||||
|   const {default: RepoContributors} = await import(/* webpackChunkName: "contributors-graph" */'../components/RepoContributors.vue'); | ||||
|   try { | ||||
|     const View = createApp(RepoContributors, { | ||||
|       locale: { | ||||
|         filterLabel: el.getAttribute('data-locale-filter-label'), | ||||
|         contributionType: { | ||||
|           commits: el.getAttribute('data-locale-contribution-type-commits'), | ||||
|           additions: el.getAttribute('data-locale-contribution-type-additions'), | ||||
|           deletions: el.getAttribute('data-locale-contribution-type-deletions'), | ||||
|         }, | ||||
|  | ||||
|         loadingTitle: el.getAttribute('data-locale-loading-title'), | ||||
|         loadingTitleFailed: el.getAttribute('data-locale-loading-title-failed'), | ||||
|         loadingInfo: el.getAttribute('data-locale-loading-info'), | ||||
|       } | ||||
|     }); | ||||
|     View.mount(el); | ||||
|   } catch (err) { | ||||
|     console.error('RepoContributors failed to load', err); | ||||
|     el.textContent = el.getAttribute('data-locale-component-failed-to-load'); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Şahin Akkaya
					Şahin Akkaya