mirror of
https://github.com/tiennm99/ghstats.git
synced 2026-05-15 18:58:56 +00:00
feat(card): add contributions area chart card
New 5-contributions.svg renders the last year's contribution calendar as a monthly smooth-filled area chart. Pure Go SVG; no extra API calls — one additional contributionCalendar.weeks block in the existing profile GraphQL query carries the data. - Y-axis mirrored on both sides with nice ticks. - X-axis labels in YY/MM format, every other month to avoid overlap. - Smooth curve via Catmull-Rom interpolation converted to cubic Bezier (d3.curveCatmullRom default tension 0.5). - Missing months between first and last are inserted as zero-count so the chart stays time-continuous.
This commit is contained in:
@@ -38,11 +38,22 @@ type Profile struct {
|
||||
// Commit counts grouped by hour-of-day (0-23) in the configured timezone.
|
||||
Productive [24]int
|
||||
|
||||
// DailyContributions is the raw per-day contribution calendar covering
|
||||
// the most recent year. The area chart aggregates it into monthly
|
||||
// buckets; kept granular here so any downstream card can re-bin freely.
|
||||
DailyContributions []DailyContribution
|
||||
|
||||
// TopRepos are owned repos sorted by stargazer count desc. Populated by
|
||||
// FetchProfile and consumed by FetchProductive.
|
||||
TopRepos []RepoInfo
|
||||
}
|
||||
|
||||
// DailyContribution is a single day in the contributions calendar.
|
||||
type DailyContribution struct {
|
||||
Date time.Time
|
||||
Count int
|
||||
}
|
||||
|
||||
// LangStat is one row in a language breakdown card. Value is repo count or
|
||||
// commit count depending on which slice holds it.
|
||||
type LangStat struct {
|
||||
|
||||
Reference in New Issue
Block a user