From b9c9b3a3e4fa5fcb22663c065a1b2251126322cb Mon Sep 17 00:00:00 2001 From: zhourun <12264651+zrzrzzr@user.noreply.gitee.com> Date: Mon, 23 Oct 2023 22:38:40 +0800 Subject: [PATCH] update developer network metrics --- config/routes.ts | 11 +++- src/pages/DeveloperMetrics/index.tsx | 93 ++++++++++++++++++++++++++++ src/pages/PrivilegeEvents/index.tsx | 89 ++++++++++++++++++++++++++ 3 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 src/pages/DeveloperMetrics/index.tsx create mode 100644 src/pages/PrivilegeEvents/index.tsx diff --git a/config/routes.ts b/config/routes.ts index 65957df..73d26cc 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -30,7 +30,16 @@ icon: 'Github', component: './RepositoriesManager', }, - + { + path: '/privilege_events', + name: 'privilege_events', + component: './PrivilegeEvents/index.tsx' + }, + { + path: '/developer_events', + name: 'developer_events', + component: './DeveloperMetrics/index.tsx' + }, { path: '/networkmetrics', name: 'networkmetrics', diff --git a/src/pages/DeveloperMetrics/index.tsx b/src/pages/DeveloperMetrics/index.tsx new file mode 100644 index 0000000..14bab4e --- /dev/null +++ b/src/pages/DeveloperMetrics/index.tsx @@ -0,0 +1,93 @@ +import React, { useEffect, useState } from 'react'; + +interface ICountMetricsData { + author_name: string; + commit_num: number; + line_of_code: number; +} + +interface IDeveloperNetworkMetricsData { + author_name: string; + degree_centrality: number; + eigenvector_centrality: number; +} + +const DataComponent: React.FC = () => { + const [countMetricsData, setCountMetricsData] = useState([]); + const [developerNetworkMetricsData, setDeveloperNetworkMetricsData] = useState([]); + + useEffect(() => { + fetchCountMetricsData(); + fetchDeveloperNetworkMetricsData(); + }, []); + + const fetchCountMetricsData = async () => { + try { + const response = await fetch('http://127.0.0.1:5000/metrics/api/count_metrics', { + method: 'GET' + }); + const jsonData = await response.json(); + setCountMetricsData(jsonData); + } catch (error) { + console.log(error); + } + }; + + const fetchDeveloperNetworkMetricsData = async () => { + try { + const response = await fetch('http://127.0.0.1:5000/metrics/api/developer_network_metrics', { + method: 'GET' + }); + const jsonData = await response.json(); + setDeveloperNetworkMetricsData(jsonData); + } catch (error) { + console.log(error); + } + }; + + return ( +
+

Count Metrics

+ + + + + + + + + + {countMetricsData.map((item, index) => ( + + + + + + ))} + +
Author NameCommit NumLine of Code
{item.author_name}{item.commit_num}{item.line_of_code}
+ +

Developer Network Metrics

+ + + + + + + + + + {developerNetworkMetricsData.map((item, index) => ( + + + + + + ))} + +
Author NameDegree CentralityEigenvector Centrality
{item.author_name}{item.degree_centrality}{item.eigenvector_centrality}
+
+ ); +}; + +export default DataComponent; \ No newline at end of file diff --git a/src/pages/PrivilegeEvents/index.tsx b/src/pages/PrivilegeEvents/index.tsx new file mode 100644 index 0000000..9fc4a79 --- /dev/null +++ b/src/pages/PrivilegeEvents/index.tsx @@ -0,0 +1,89 @@ +import React, { useEffect, useState } from 'react'; + +interface IDataItem { + actor_login: string; + added_to_project: string; + converted_note_to_issue: string; + deployed: string; + deployment_environment_changed: string; + locked: string; + merged: string; + moved_columns_in_project: string; + pinned: string; + removed_from_project: string; + review_dismissed: string; + transferred: string; + unlocked: string; + unpinned: string; + user_blocked: string; +} + +const DataComponent: React.FC = () => { + const [data, setData] = useState([]); + + useEffect(() => { + fetchData(); + }, []); + + const fetchData = async () => { + try { + const response = await fetch('http://127.0.0.1:5000/metrics/api/privilege_events', { + method: 'GET' + }); + const jsonData = await response.json(); + setData(jsonData); + } catch (error) { + console.log(error); + } + }; + + return ( +
+

Data Component

+ + + + + + + + + + + + + + + + + + + + + + {data.map((item, index) => ( + + + + + + + + + + + + + + + + + + ))} + +
actor_loginadded_to_projectconverted_note_to_issuedeployeddeployment_environment_changedlockedmergedmoved_columns_in_projectpinnedremoved_from_projectreview_dismissedtransferredunlockedunpinneduser_blocked
{item.actor_login}{item.added_to_project}{item.converted_note_to_issue}{item.deployed}{item.deployment_environment_changed}{item.locked}{item.merged}{item.moved_columns_in_project}{item.pinned}{item.removed_from_project}{item.review_dismissed}{item.transferred}{item.unlocked}{item.unpinned}{item.user_blocked}
+
+ ); +}; + +export default DataComponent; \ No newline at end of file