diff --git a/src/pages/OverviewPage.jsx b/src/pages/OverviewPage.jsx
index 12eec18..5cbf64a 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(() => {
@@ -30,21 +31,33 @@ export default function OverviewPage() {
}
}, [])
+ useEffect(() => {
+ setOrgFilter('All Organizations')
+ }, [orgs])
+
if(loading) return
if (!model) return null
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)
+
+
+
const NavCard = ({ to, label, sub }) => (
+ {/* Org filter for stats */}
+ {isMulti && (
+
+
+
+ )}
{/* Stats */}
-
+
-
+ {
+ const total = orgFilter === 'All Organizations' ? totalRepo : filteredRepos.length
+ return total > 0 ? Math.round(activeRepos / total * 100) : 0
+ })()}% of total`}
+ />
{/* Language + top repos */}