mirror of https://github.com/go-gitea/gitea.git
Add "n commits" link to contributors in contributors graph page (#32799)
Fixes Issue #29365 and inherit PR #29429 - I should extend the #29429 fork but the fork is not synced, so I created another PR. - Use `silenced` class for the link, as in #29847 --------- Co-authored-by: Ben Chang <ben_chang@htc.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
00e2b339b6
commit
c9487a755b
|
@ -1,6 +1,7 @@
|
||||||
{{if .Permission.CanRead ctx.Consts.RepoUnitTypeCode}}
|
{{if .Permission.CanRead ctx.Consts.RepoUnitTypeCode}}
|
||||||
<div id="repo-contributors-chart"
|
<div id="repo-contributors-chart"
|
||||||
data-repo-link="{{.RepoLink}}"
|
data-repo-link="{{.RepoLink}}"
|
||||||
|
data-repo-default-branch-name="{{.Repository.DefaultBranch}}"
|
||||||
data-locale-filter-label="{{ctx.Locale.Tr "repo.contributors.contribution_type.filter_label"}}"
|
data-locale-filter-label="{{ctx.Locale.Tr "repo.contributors.contribution_type.filter_label"}}"
|
||||||
data-locale-contribution-type-commits="{{ctx.Locale.Tr "repo.contributors.contribution_type.commits"}}"
|
data-locale-contribution-type-commits="{{ctx.Locale.Tr "repo.contributors.contribution_type.commits"}}"
|
||||||
data-locale-contribution-type-additions="{{ctx.Locale.Tr "repo.contributors.contribution_type.additions"}}"
|
data-locale-contribution-type-additions="{{ctx.Locale.Tr "repo.contributors.contribution_type.additions"}}"
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import {SvgIcon} from '../svg.ts';
|
import {SvgIcon} from '../svg.ts';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
import {
|
import {
|
||||||
Chart,
|
Chart,
|
||||||
Title,
|
Title,
|
||||||
|
@ -26,6 +27,7 @@ import {sleep} from '../utils.ts';
|
||||||
import 'chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm';
|
import 'chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm';
|
||||||
import {fomanticQuery} from '../modules/fomantic/base.ts';
|
import {fomanticQuery} from '../modules/fomantic/base.ts';
|
||||||
import type {Entries} from 'type-fest';
|
import type {Entries} from 'type-fest';
|
||||||
|
import {pathEscapeSegments} from '../utils/url.ts';
|
||||||
|
|
||||||
const customEventListener: Plugin = {
|
const customEventListener: Plugin = {
|
||||||
id: 'customEventListener',
|
id: 'customEventListener',
|
||||||
|
@ -65,6 +67,10 @@ export default {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
repoDefaultBranchName: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data: () => ({
|
data: () => ({
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
|
@ -100,6 +106,15 @@ export default {
|
||||||
.slice(0, 100);
|
.slice(0, 100);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getContributorSearchQuery(contributorEmail: string) {
|
||||||
|
const min = dayjs(this.xAxisMin).format('YYYY-MM-DD');
|
||||||
|
const max = dayjs(this.xAxisMax).format('YYYY-MM-DD');
|
||||||
|
const params = new URLSearchParams({
|
||||||
|
'q': `after:${min}, before:${max}, author:${contributorEmail}`,
|
||||||
|
});
|
||||||
|
return `${this.repoLink}/commits/branch/${pathEscapeSegments(this.repoDefaultBranchName)}/search?${params.toString()}`;
|
||||||
|
},
|
||||||
|
|
||||||
async fetchGraphData() {
|
async fetchGraphData() {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
try {
|
try {
|
||||||
|
@ -167,7 +182,7 @@ export default {
|
||||||
// for details.
|
// for details.
|
||||||
user.max_contribution_type += 1;
|
user.max_contribution_type += 1;
|
||||||
|
|
||||||
filteredData[key] = {...user, weeks: filteredWeeks};
|
filteredData[key] = {...user, weeks: filteredWeeks, email: key};
|
||||||
}
|
}
|
||||||
|
|
||||||
return filteredData;
|
return filteredData;
|
||||||
|
@ -215,7 +230,7 @@ export default {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
updateOtherCharts({chart}: {chart: Chart}, reset?: boolean = false) {
|
updateOtherCharts({chart}: {chart: Chart}, reset: boolean = false) {
|
||||||
const minVal = chart.options.scales.x.min;
|
const minVal = chart.options.scales.x.min;
|
||||||
const maxVal = chart.options.scales.x.max;
|
const maxVal = chart.options.scales.x.max;
|
||||||
if (reset) {
|
if (reset) {
|
||||||
|
@ -381,7 +396,7 @@ export default {
|
||||||
<div class="ui top attached header tw-flex tw-flex-1">
|
<div class="ui top attached header tw-flex tw-flex-1">
|
||||||
<b class="ui right">#{{ index + 1 }}</b>
|
<b class="ui right">#{{ index + 1 }}</b>
|
||||||
<a :href="contributor.home_link">
|
<a :href="contributor.home_link">
|
||||||
<img class="ui avatar tw-align-middle" height="40" width="40" :src="contributor.avatar_link">
|
<img class="ui avatar tw-align-middle" height="40" width="40" :src="contributor.avatar_link" alt="">
|
||||||
</a>
|
</a>
|
||||||
<div class="tw-ml-2">
|
<div class="tw-ml-2">
|
||||||
<a v-if="contributor.home_link !== ''" :href="contributor.home_link"><h4>{{ contributor.name }}</h4></a>
|
<a v-if="contributor.home_link !== ''" :href="contributor.home_link"><h4>{{ contributor.name }}</h4></a>
|
||||||
|
@ -389,7 +404,11 @@ export default {
|
||||||
{{ contributor.name }}
|
{{ contributor.name }}
|
||||||
</h4>
|
</h4>
|
||||||
<p class="tw-text-12 tw-flex tw-gap-1">
|
<p class="tw-text-12 tw-flex tw-gap-1">
|
||||||
<strong v-if="contributor.total_commits">{{ contributor.total_commits.toLocaleString() }} {{ locale.contributionType.commits }}</strong>
|
<strong v-if="contributor.total_commits">
|
||||||
|
<a class="silenced" :href="getContributorSearchQuery(contributor.email)">
|
||||||
|
{{ contributor.total_commits.toLocaleString() }} {{ locale.contributionType.commits }}
|
||||||
|
</a>
|
||||||
|
</strong>
|
||||||
<strong v-if="contributor.total_additions" class="text green">{{ contributor.total_additions.toLocaleString() }}++ </strong>
|
<strong v-if="contributor.total_additions" class="text green">{{ contributor.total_additions.toLocaleString() }}++ </strong>
|
||||||
<strong v-if="contributor.total_deletions" class="text red">
|
<strong v-if="contributor.total_deletions" class="text red">
|
||||||
{{ contributor.total_deletions.toLocaleString() }}--</strong>
|
{{ contributor.total_deletions.toLocaleString() }}--</strong>
|
||||||
|
|
|
@ -8,6 +8,7 @@ export async function initRepoContributors() {
|
||||||
try {
|
try {
|
||||||
const View = createApp(RepoContributors, {
|
const View = createApp(RepoContributors, {
|
||||||
repoLink: el.getAttribute('data-repo-link'),
|
repoLink: el.getAttribute('data-repo-link'),
|
||||||
|
repoDefaultBranchName: el.getAttribute('data-repo-default-branch-name'),
|
||||||
locale: {
|
locale: {
|
||||||
filterLabel: el.getAttribute('data-locale-filter-label'),
|
filterLabel: el.getAttribute('data-locale-filter-label'),
|
||||||
contributionType: {
|
contributionType: {
|
||||||
|
|
Loading…
Reference in New Issue