Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions src/pages/ContentScripts/features/repo-pr-tooltip/gitee-index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import features from '../../../../feature-manager';
import View, { PRDetail } from './view';
import elementReady from 'element-ready';
import { getRepoName, isPublicRepoWithMeta } from '../../../../helpers/get-gitee-repo-info';
import { createRoot } from 'react-dom/client';
import {
getPROpened,
getPRMerged,
getPRReviews,
getMergedCodeAddition,
getMergedCodeDeletion,
} from '../../../../api/repo';
import { RepoMeta, metaStore } from '../../../../api/common';

import React from 'react';
import $ from 'jquery';
import { getPlatform } from '../../../../helpers/get-platform';
import isGitee from '../../../../helpers/is-gitee';
import { GiteeNativePopover } from '../../components/GiteeNativePopover';

const featureId = features.getFeatureID(import.meta.url);
let repoName: string;
let PRDetail: PRDetail = {
PROpened: null,
PRMerged: null,
PRReviews: null,
mergedCodeAddition: null,
mergedCodeDeletion: null,
};
let meta: RepoMeta;
let platform: string;
const getData = async () => {
PRDetail.PROpened = await getPROpened(platform, repoName);
PRDetail.PRMerged = await getPRMerged(platform, repoName);
PRDetail.PRReviews = await getPRReviews(platform, repoName);
PRDetail.mergedCodeAddition = await getMergedCodeAddition(platform, repoName);
PRDetail.mergedCodeDeletion = await getMergedCodeDeletion(platform, repoName);
meta = (await metaStore.get(platform, repoName)) as RepoMeta;
};

const init = async (): Promise<void> => {
platform = getPlatform();
repoName = getRepoName();
await getData();

if (Object.keys(PRDetail.mergedCodeAddition || {}).length === 0) {
PRDetail.mergedCodeAddition = null;
}
if (Object.keys(PRDetail.mergedCodeDeletion || {}).length === 0) {
PRDetail.mergedCodeDeletion = null;
}

await elementReady('a.item[href*="/pulls"]');
const $prTab = $('a.item[href*="/pulls"]');
const placeholderElement = $('<div class="NativePopover" />').appendTo('body')[0];
createRoot(placeholderElement).render(
<GiteeNativePopover anchor={$prTab} width={340} arrowPosition="bottom">
<View currentRepo={repoName} PRDetail={PRDetail} meta={meta} />
</GiteeNativePopover>
);
};

const restore = async () => {};

features.add(featureId, {
asLongAs: [isGitee, isPublicRepoWithMeta],
awaitDomReady: false,
init,
restore,
});
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ const init = async (): Promise<void> => {
platform = getPlatform();
repoName = getRepoName();
await getData();

await elementReady('#pull-requests-tab');
const $prTab = $('#pull-requests-tab');
const placeholderElement = $('<div class="NativePopover" />').appendTo('body')[0];
Expand Down
48 changes: 29 additions & 19 deletions src/pages/ContentScripts/features/repo-pr-tooltip/view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ import { RepoMeta } from '../../../../api/common';
import TooltipTrigger from '../../../../components/TooltipTrigger';
import { useTranslation } from 'react-i18next';
import '../../../../helpers/i18n';
const githubTheme = getGithubTheme();
import isGithub from '../../../../helpers/is-github';
const theme = isGithub() ? getGithubTheme() : 'light';
export interface PRDetail {
PROpened: any;
PRMerged: any;
Expand Down Expand Up @@ -56,6 +57,7 @@ const View = ({ currentRepo, PRDetail, meta }: Props): JSX.Element | null => {
if (isNull(PRDetail) || isAllNull(PRDetail)) return null;

const onClick = (curMonth: string, params: any) => {
if (!isGithub()) return;
const seriesIndex = params.seriesIndex;
let type;
if (seriesIndex === 0) {
Expand Down Expand Up @@ -87,31 +89,39 @@ const View = ({ currentRepo, PRDetail, meta }: Props): JSX.Element | null => {
</div>

<PRChart
theme={githubTheme as 'light' | 'dark'}
theme={theme as 'light' | 'dark'}
width={330}
height={200}
data={generatePRChartData(PRDetail, meta.updatedAt)}
onClick={onClick}
/>

<div
className="chart-title"
style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
}}
>
<div style={{ marginRight: '5px' }}>{t('merged_lines_popup_title')}</div>
<TooltipTrigger iconColor="grey" size={13} content={t('icon_tip', { icon_content: '$t(merged_lines_icon)' })} />
</div>
{PRDetail.mergedCodeAddition && PRDetail.mergedCodeDeletion && (
<>
<div
className="chart-title"
style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
}}
>
<div style={{ marginRight: '5px' }}>{t('merged_lines_popup_title')}</div>
<TooltipTrigger
iconColor="grey"
size={13}
content={t('icon_tip', { icon_content: '$t(merged_lines_icon)' })}
/>
</div>

<MergedLinesChart
theme={githubTheme as 'light' | 'dark'}
width={330}
height={200}
data={generateMergedLinesChartData(PRDetail, meta.updatedAt)}
/>
<MergedLinesChart
theme={theme as 'light' | 'dark'}
width={330}
height={200}
data={generateMergedLinesChartData(PRDetail, meta.updatedAt)}
/>
</>
)}
</>
);
};
Expand Down
1 change: 1 addition & 0 deletions src/pages/ContentScripts/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import './features/repo-header-labels/gitee-index.tsx';
import './features/repo-fork-tooltip';
import './features/repo-star-tooltip';
import './features/repo-pr-tooltip';
import './features/repo-pr-tooltip/gitee-index.tsx';
import './features/repo-issue-tooltip';
import './features/perceptor-tab';
import './features/perceptor-layout';
Expand Down
Loading