From c0adfbdfc6d02d84f7cf576d15c3f993ea3dd294 Mon Sep 17 00:00:00 2001 From: jikrana Date: Thu, 27 Aug 2026 12:42:02 +0530 Subject: [PATCH 1/2] feat: add organization filter for stats on Overview page --- src/pages/OverviewPage.jsx | 43 +++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/src/pages/OverviewPage.jsx b/src/pages/OverviewPage.jsx index 12eec18..4e35e01 100644 --- a/src/pages/OverviewPage.jsx +++ b/src/pages/OverviewPage.jsx @@ -16,6 +16,7 @@ export default function OverviewPage() { const { orgs, model, totalRepo, isComplete, loading, runFullExplore } = useApp() const navigate = useNavigate() const [open, setOpen] = useState(false) + const [orgFilter, setOrgFilter] = useState('All Organizations') const infoRef = useRef(null) useEffect(() => { @@ -35,16 +36,26 @@ export default function OverviewPage() { const { totalRepos } = model const isMulti = orgs.length > 1 - const totalStars = totalRepos.reduce((s, r) => s + r.stargazers_count, 0) - const totalForks = totalRepos.reduce((s, r) => s + r.forks_count, 0) - const activeRepos = totalRepos.filter(r => r.activityClassification === 'Thriving' || r.activityClassification === 'Active').length + + const filteredRepos = orgFilter === 'All Organizations' + ? totalRepos + : totalRepos.filter(r => r.orgLogin === orgFilter) + + const totalStars = filteredRepos.reduce((s, r) => s + r.stargazers_count, 0) + const totalForks = filteredRepos.reduce((s, r) => s + r.forks_count, 0) + const activeRepos = filteredRepos.filter(r => r.activityClassification === 'Thriving' || r.activityClassification === 'Active').length const langMap = {} - totalRepos.forEach(r => { if (r.language) langMap[r.language] = (langMap[r.language] || 0) + 1 }) + filteredRepos.forEach(r => { if (r.language) langMap[r.language] = (langMap[r.language] || 0) + 1 }) const langs = Object.entries(langMap).sort((a, b) => b[1] - a[1]).slice(0, 7) const langTotal = langs.reduce((s, [, c]) => s + c, 0) - const topRepos = [...totalRepos].sort((a, b) => b.healthScore - a.healthScore).slice(0, 5) + const topRepos = [...filteredRepos].sort((a, b) => b.healthScore - a.healthScore).slice(0, 5) + + useEffect(() => { + setOrgFilter('All Organizations') + }, [orgs]) + const NavCard = ({ to, label, sub }) => (
+ {/* Org filter for stats */} + {isMulti && ( +
+ +
+ )} {/* Stats */}
- + - +
{/* Language + top repos */} From 5140863cd09aab9e30547cbb5feb9366f3f83b74 Mon Sep 17 00:00:00 2001 From: jikrana Date: Thu, 27 Aug 2026 13:26:38 +0530 Subject: [PATCH 2/2] fix: address CodeRabbit review comments on org filter PR --- src/pages/OverviewPage.jsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pages/OverviewPage.jsx b/src/pages/OverviewPage.jsx index 4e35e01..5cbf64a 100644 --- a/src/pages/OverviewPage.jsx +++ b/src/pages/OverviewPage.jsx @@ -31,6 +31,10 @@ export default function OverviewPage() { } }, []) + useEffect(() => { + setOrgFilter('All Organizations') + }, [orgs]) + if(loading) return if (!model) return null @@ -52,9 +56,7 @@ export default function OverviewPage() { const topRepos = [...filteredRepos].sort((a, b) => b.healthScore - a.healthScore).slice(0, 5) - useEffect(() => { - setOrgFilter('All Organizations') - }, [orgs]) + const NavCard = ({ to, label, sub }) => ( @@ -145,7 +147,10 @@ export default function OverviewPage() { { + const total = orgFilter === 'All Organizations' ? totalRepo : filteredRepos.length + return total > 0 ? Math.round(activeRepos / total * 100) : 0 + })()}% of total`} />