github-pulse 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/AGENTS.md +45 -0
- data/README.md +186 -0
- data/Rakefile +4 -0
- data/exe/github-pulse +6 -0
- data/github-pulse-report.html +330 -0
- data/lib/github/pulse/analyzer.rb +438 -0
- data/lib/github/pulse/cli.rb +78 -0
- data/lib/github/pulse/date_helpers.rb +19 -0
- data/lib/github/pulse/gh_client.rb +247 -0
- data/lib/github/pulse/git_analyzer.rb +167 -0
- data/lib/github/pulse/github_client.rb +115 -0
- data/lib/github/pulse/html_reporter.rb +747 -0
- data/lib/github/pulse/reporter.rb +132 -0
- data/lib/github/pulse/version.rb +7 -0
- data/lib/github/pulse.rb +15 -0
- data/sig/github/pulse.rbs +6 -0
- metadata +134 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4a836b363e6f499b12bc8db9798d6078bdfb0781630448bb8567caae68e74a6c
|
4
|
+
data.tar.gz: 99282f2274e362f811e2e326c5d275cd277135ba843c2386a0674cdeedb84c28
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b9d36bdc5f2219309e2a64a353abe142f0e14790ed8fab4575a2421f64af4747ed57126932113c929bbd8c642a31014c986e018e262e52acfe31819b687a3a4d
|
7
|
+
data.tar.gz: 0a2a8495c71ba1fe33327f6e53d8bbc8914725ca3d7ec1196f178ab84116012fe917bc8d4f0b604d4ff7a377166e9c56c6cb30b6d907c2978a32af9cfc58734e
|
data/AGENTS.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# Repository Guidelines
|
2
|
+
|
3
|
+
## Project Structure & Module Organization
|
4
|
+
- lib/github/pulse: Core library code (CLI, analyzers, clients, reporters). Example: `lib/github/pulse/cli.rb`.
|
5
|
+
- exe/: Executable entrypoint (`exe/github-pulse`).
|
6
|
+
- bin/: Dev helpers (`bin/setup`, `bin/console`).
|
7
|
+
- pkg/: Built gem artifacts (created by build tasks).
|
8
|
+
- Rakefile, Gemfile, *.gemspec: Build and dependency configuration.
|
9
|
+
|
10
|
+
## Build, Test, and Development Commands
|
11
|
+
- Install deps: `bin/setup` (runs `bundle install`).
|
12
|
+
- Run CLI locally: `exe/github-pulse analyze [REPO_PATH] [--repo owner/name] [--format json|pretty|html] [--since YYYY-MM-DD] [--until YYYY-MM-DD]`.
|
13
|
+
- Build gem: `rake build` (outputs to `pkg/`).
|
14
|
+
- Install gem locally: `bundle exec rake install`.
|
15
|
+
- Release (maintainers): `rake release`.
|
16
|
+
- Console: `bin/console` to experiment with `Github::Pulse` APIs.
|
17
|
+
|
18
|
+
## Coding Style & Naming Conventions
|
19
|
+
- Ruby 3.1+, 2-space indentation, frozen string literals (`# frozen_string_literal: true`).
|
20
|
+
- Namespace modules under `Github::Pulse`; place files at `lib/github/pulse/<name>.rb`.
|
21
|
+
- Method and file names: snake_case; classes/modules: CamelCase.
|
22
|
+
- No linter is enforced; follow existing style and keep methods small and composable.
|
23
|
+
|
24
|
+
## Testing Guidelines
|
25
|
+
- This repository currently has no test suite. If adding tests, prefer RSpec:
|
26
|
+
- Directory: `spec/` mirroring `lib/` paths (e.g., `spec/github/pulse/analyzer_spec.rb`).
|
27
|
+
- Naming: `*_spec.rb`. Run with `bundle exec rspec`.
|
28
|
+
- For manual verification, run:
|
29
|
+
- Local git: `exe/github-pulse analyze . --format=pretty`.
|
30
|
+
- With GitHub data: set `GITHUB_TOKEN` or authenticate `gh`, then `--format=html` and open the generated report.
|
31
|
+
|
32
|
+
## Commit & Pull Request Guidelines
|
33
|
+
- Commits: concise imperative subject (<= 72 chars), body with rationale and user-visible impact. Group related changes.
|
34
|
+
- Branches: use descriptive names like `feature/report-html`, `fix/commit-stats`.
|
35
|
+
- Pull Requests must include:
|
36
|
+
- Clear description, checklist of changes, and rationale.
|
37
|
+
- Linked issue (if applicable).
|
38
|
+
- Usage proof: sample command and excerpt of output (JSON/HTML path).
|
39
|
+
- Notes on backward compatibility and dependency changes.
|
40
|
+
|
41
|
+
## Security & Configuration Tips
|
42
|
+
- GitHub access: provide `--token`, set `GITHUB_TOKEN`, or authenticate `gh`.
|
43
|
+
- Do not commit tokens or secrets. Prefer environment variables and `.gitignore`d files.
|
44
|
+
- Local analysis requires a valid `.git` repo; GitHub data requires network access and auth.
|
45
|
+
|
data/README.md
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
# GitHub Pulse
|
2
|
+
|
3
|
+
GitHub Pulse is a Ruby gem that analyzes GitHub repository activity to provide insights into team contributions, including pull requests, lines of code, and commit activity. It generates visualization-ready JSON output perfect for creating charts and dashboards.
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
- **Pull Request Analysis**: Track PRs by teammate over time
|
8
|
+
- **Lines of Code Analysis**: See current code ownership by contributor
|
9
|
+
- **Commit Activity**: Monitor commit patterns and frequency
|
10
|
+
- **PR Cycle Time**: Weekly p50/p90/max merge times
|
11
|
+
- **PR Size Mix**: Small/medium/large PR composition over time
|
12
|
+
- **Open PR Aging**: Buckets of aging open PRs
|
13
|
+
- **Commit Heatmap**: Activity by weekday and hour
|
14
|
+
- **Local Git Support**: Analyze repositories directly from local git data
|
15
|
+
- **GitHub API Integration**: Enhanced data when GitHub token is provided
|
16
|
+
- **Visualization-Ready Output**: JSON formatted for easy chart generation
|
17
|
+
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
Add this line to your application's Gemfile:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
gem 'github-pulse'
|
24
|
+
```
|
25
|
+
|
26
|
+
And then execute:
|
27
|
+
|
28
|
+
$ bundle install
|
29
|
+
|
30
|
+
Or install it yourself as:
|
31
|
+
|
32
|
+
$ gem install github-pulse
|
33
|
+
|
34
|
+
## Usage
|
35
|
+
|
36
|
+
### Basic Usage
|
37
|
+
|
38
|
+
Analyze the current directory (must be a git repository):
|
39
|
+
|
40
|
+
```bash
|
41
|
+
github-pulse analyze
|
42
|
+
```
|
43
|
+
|
44
|
+
### With GitHub API Access
|
45
|
+
|
46
|
+
For enhanced data including pull requests and detailed statistics, you have three options:
|
47
|
+
|
48
|
+
#### Option 1: Use GitHub CLI (Recommended)
|
49
|
+
If you have the GitHub CLI installed and authenticated, the gem will automatically use it:
|
50
|
+
|
51
|
+
```bash
|
52
|
+
# Install and authenticate gh CLI (one-time setup)
|
53
|
+
brew install gh # or your package manager
|
54
|
+
gh auth login
|
55
|
+
|
56
|
+
# Then just run the analyzer
|
57
|
+
github-pulse analyze
|
58
|
+
```
|
59
|
+
|
60
|
+
#### Option 2: Use Environment Variable
|
61
|
+
```bash
|
62
|
+
export GITHUB_TOKEN=your_github_token
|
63
|
+
github-pulse analyze
|
64
|
+
```
|
65
|
+
|
66
|
+
#### Option 3: Pass Token Directly
|
67
|
+
```bash
|
68
|
+
github-pulse analyze --token=your_github_token
|
69
|
+
```
|
70
|
+
|
71
|
+
### Analyze a Specific Repository
|
72
|
+
|
73
|
+
```bash
|
74
|
+
# Local repository
|
75
|
+
github-pulse analyze /path/to/repo
|
76
|
+
|
77
|
+
# With GitHub repository specified
|
78
|
+
github-pulse analyze --repo=owner/repository --token=your_token
|
79
|
+
```
|
80
|
+
|
81
|
+
### Date Filtering
|
82
|
+
|
83
|
+
Analyze activity within a specific time period:
|
84
|
+
|
85
|
+
```bash
|
86
|
+
github-pulse analyze --since=2024-01-01 --until=2024-12-31
|
87
|
+
```
|
88
|
+
|
89
|
+
### Output Options
|
90
|
+
|
91
|
+
```bash
|
92
|
+
# Pretty-printed JSON (default: compact JSON)
|
93
|
+
github-pulse analyze --format=pretty
|
94
|
+
|
95
|
+
# Custom output file (default: github-pulse-report.json)
|
96
|
+
github-pulse analyze --output=my-report.json
|
97
|
+
|
98
|
+
# Interactive HTML report
|
99
|
+
github-pulse analyze --format=html
|
100
|
+
|
101
|
+
# Tune PR size buckets (total additions+deletions)
|
102
|
+
github-pulse analyze --format=html --small_threshold 50 --medium_threshold 250
|
103
|
+
```
|
104
|
+
|
105
|
+
## Output Format
|
106
|
+
|
107
|
+
The gem generates a comprehensive JSON report with the following structure:
|
108
|
+
|
109
|
+
```json
|
110
|
+
{
|
111
|
+
"metadata": {
|
112
|
+
"analyzed_at": "2024-01-15T10:30:00Z",
|
113
|
+
"repository": { /* repository details */ },
|
114
|
+
"period": { "since": "2024-01-01", "until": "2024-12-31" }
|
115
|
+
},
|
116
|
+
"pull_requests": {
|
117
|
+
"username": {
|
118
|
+
"total_prs": 15,
|
119
|
+
"merged": 12,
|
120
|
+
"open": 2,
|
121
|
+
"closed": 1,
|
122
|
+
"total_additions": 500,
|
123
|
+
"total_deletions": 200,
|
124
|
+
"pull_requests": [ /* detailed PR list */ ]
|
125
|
+
}
|
126
|
+
},
|
127
|
+
"commits": {
|
128
|
+
"email@example.com": {
|
129
|
+
"total_commits": 50,
|
130
|
+
"total_additions": 1000,
|
131
|
+
"total_deletions": 300,
|
132
|
+
"commits": [ /* detailed commit list */ ]
|
133
|
+
}
|
134
|
+
},
|
135
|
+
"lines_of_code": {
|
136
|
+
"email@example.com": 5000
|
137
|
+
},
|
138
|
+
"commit_activity": {
|
139
|
+
"2024-01-01": 5,
|
140
|
+
"2024-01-02": 3
|
141
|
+
},
|
142
|
+
"visualization_data": {
|
143
|
+
"pull_requests_timeline": [ /* ready for stacked bar chart */ ],
|
144
|
+
"lines_of_code_chart": [ /* ready for bar chart */ ],
|
145
|
+
"commit_activity_chart": [ /* ready for line chart */ ],
|
146
|
+
"commits_timeline": [ /* ready for stacked area chart */ ],
|
147
|
+
"lines_changed_timeline": [ /* weekly additions/deletions by author */ ],
|
148
|
+
"pr_cycle_time_timeline": [ /* weekly p50/p90/max days */ ],
|
149
|
+
"pr_size_mix_timeline": [ /* weekly small/medium/large PR counts */ ],
|
150
|
+
"open_prs_aging": { /* aging buckets for open PRs */ },
|
151
|
+
"commit_activity_heatmap": [[ /* 7x24 grid of commit counts */ ]]
|
152
|
+
}
|
153
|
+
}
|
154
|
+
```
|
155
|
+
|
156
|
+
## Visualization Data
|
157
|
+
|
158
|
+
The `visualization_data` section contains pre-formatted data ready for charting libraries:
|
159
|
+
|
160
|
+
- **pull_requests_timeline**: Data for stacked bar charts showing PRs by author over time
|
161
|
+
- **lines_of_code_chart**: Bar chart data showing current code ownership
|
162
|
+
- **commit_activity_chart**: Line chart data for overall repository activity
|
163
|
+
- **commits_timeline**: Stacked area chart data for commits by author over time
|
164
|
+
- **lines_changed_timeline**: Weekly additions/deletions by author (GitHub stats)
|
165
|
+
- **pr_cycle_time_timeline**: Weekly median/percentile merge times (days)
|
166
|
+
- **pr_size_mix_timeline**: Weekly mix of small/medium/large PRs
|
167
|
+
- **open_prs_aging**: Counts of open PRs bucketed by age
|
168
|
+
- **commit_activity_heatmap**: 7 rows (Sun–Sat) x 24 columns (hours)
|
169
|
+
|
170
|
+
## Requirements
|
171
|
+
|
172
|
+
- Ruby 3.1 or higher
|
173
|
+
- Git (for local repository analysis)
|
174
|
+
- GitHub personal access token (optional, for enhanced features)
|
175
|
+
|
176
|
+
## Development
|
177
|
+
|
178
|
+
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
179
|
+
|
180
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
181
|
+
|
182
|
+
Note: Some PR metrics (size, timestamps) are richer when authenticated via GitHub CLI (`gh auth login`) or with `GITHUB_TOKEN`. Octokit list endpoints may omit additions/deletions; the HTML report will gracefully degrade when fields are unavailable.
|
183
|
+
|
184
|
+
## Contributing
|
185
|
+
|
186
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/usiegj00/github-pulse.
|
data/Rakefile
ADDED
data/exe/github-pulse
ADDED
@@ -0,0 +1,330 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>GitHub Pulse Report - usiegj00/github-pulse</title>
|
7
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
8
|
+
<script src="https://cdn.jsdelivr.net/npm/date-fns@2.29.3/index.min.js"></script>
|
9
|
+
<style>
|
10
|
+
* {
|
11
|
+
margin: 0;
|
12
|
+
padding: 0;
|
13
|
+
box-sizing: border-box;
|
14
|
+
}
|
15
|
+
body {
|
16
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
|
17
|
+
line-height: 1.6;
|
18
|
+
color: #333;
|
19
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
20
|
+
min-height: 100vh;
|
21
|
+
padding: 20px;
|
22
|
+
}
|
23
|
+
.container {
|
24
|
+
max-width: 1400px;
|
25
|
+
margin: 0 auto;
|
26
|
+
background: rgba(255, 255, 255, 0.95);
|
27
|
+
border-radius: 20px;
|
28
|
+
padding: 30px;
|
29
|
+
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
|
30
|
+
}
|
31
|
+
h1 {
|
32
|
+
color: #2d3748;
|
33
|
+
margin-bottom: 10px;
|
34
|
+
font-size: 2.5em;
|
35
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
36
|
+
-webkit-background-clip: text;
|
37
|
+
-webkit-text-fill-color: transparent;
|
38
|
+
}
|
39
|
+
.subtitle {
|
40
|
+
color: #718096;
|
41
|
+
margin-bottom: 30px;
|
42
|
+
font-size: 1.1em;
|
43
|
+
}
|
44
|
+
.stats-grid {
|
45
|
+
display: grid;
|
46
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
47
|
+
gap: 20px;
|
48
|
+
margin-bottom: 40px;
|
49
|
+
}
|
50
|
+
.stat-card {
|
51
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
52
|
+
color: white;
|
53
|
+
padding: 20px;
|
54
|
+
border-radius: 15px;
|
55
|
+
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
|
56
|
+
}
|
57
|
+
.stat-value {
|
58
|
+
font-size: 2em;
|
59
|
+
font-weight: bold;
|
60
|
+
margin-bottom: 5px;
|
61
|
+
}
|
62
|
+
.stat-label {
|
63
|
+
opacity: 0.9;
|
64
|
+
font-size: 0.9em;
|
65
|
+
text-transform: uppercase;
|
66
|
+
letter-spacing: 1px;
|
67
|
+
}
|
68
|
+
.charts-grid {
|
69
|
+
display: grid;
|
70
|
+
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
|
71
|
+
gap: 30px;
|
72
|
+
margin-bottom: 30px;
|
73
|
+
}
|
74
|
+
.chart-container {
|
75
|
+
background: white;
|
76
|
+
padding: 25px;
|
77
|
+
border-radius: 15px;
|
78
|
+
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
|
79
|
+
}
|
80
|
+
.chart-title {
|
81
|
+
font-size: 1.3em;
|
82
|
+
color: #2d3748;
|
83
|
+
margin-bottom: 20px;
|
84
|
+
font-weight: 600;
|
85
|
+
}
|
86
|
+
canvas {
|
87
|
+
max-height: 400px;
|
88
|
+
}
|
89
|
+
.contributors-table {
|
90
|
+
background: white;
|
91
|
+
border-radius: 15px;
|
92
|
+
padding: 25px;
|
93
|
+
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
|
94
|
+
margin-top: 30px;
|
95
|
+
}
|
96
|
+
table {
|
97
|
+
width: 100%;
|
98
|
+
border-collapse: collapse;
|
99
|
+
}
|
100
|
+
th {
|
101
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
102
|
+
color: white;
|
103
|
+
padding: 12px;
|
104
|
+
text-align: left;
|
105
|
+
font-weight: 600;
|
106
|
+
}
|
107
|
+
td {
|
108
|
+
padding: 12px;
|
109
|
+
border-bottom: 1px solid #e2e8f0;
|
110
|
+
}
|
111
|
+
tr:hover {
|
112
|
+
background-color: #f7fafc;
|
113
|
+
}
|
114
|
+
.progress-bar {
|
115
|
+
width: 100%;
|
116
|
+
height: 20px;
|
117
|
+
background: #e2e8f0;
|
118
|
+
border-radius: 10px;
|
119
|
+
overflow: hidden;
|
120
|
+
}
|
121
|
+
.progress-fill {
|
122
|
+
height: 100%;
|
123
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
124
|
+
border-radius: 10px;
|
125
|
+
transition: width 0.3s ease;
|
126
|
+
}
|
127
|
+
.metadata {
|
128
|
+
background: #f7fafc;
|
129
|
+
padding: 15px;
|
130
|
+
border-radius: 10px;
|
131
|
+
margin-bottom: 30px;
|
132
|
+
display: flex;
|
133
|
+
justify-content: space-between;
|
134
|
+
flex-wrap: wrap;
|
135
|
+
gap: 20px;
|
136
|
+
}
|
137
|
+
.metadata-item {
|
138
|
+
display: flex;
|
139
|
+
align-items: center;
|
140
|
+
gap: 10px;
|
141
|
+
}
|
142
|
+
.metadata-label {
|
143
|
+
font-weight: 600;
|
144
|
+
color: #4a5568;
|
145
|
+
}
|
146
|
+
.no-data {
|
147
|
+
text-align: center;
|
148
|
+
padding: 40px;
|
149
|
+
color: #718096;
|
150
|
+
font-style: italic;
|
151
|
+
}
|
152
|
+
</style>
|
153
|
+
</head>
|
154
|
+
<body>
|
155
|
+
<div class="container">
|
156
|
+
<h1>GitHub Pulse Report</h1>
|
157
|
+
<div class="subtitle">Repository Activity Analysis</div>
|
158
|
+
|
159
|
+
<div class="metadata"><div class="metadata-item"><span class="metadata-label">Repository:</span> usiegj00/github-pulse</div><div class="metadata-item"><span class="metadata-label">Analyzed:</span> August 08, 2025 at 06:39 PM</div></div>
|
160
|
+
<div class="stats-grid">
|
161
|
+
<div class="stat-card">
|
162
|
+
<div class="stat-value">1</div>
|
163
|
+
<div class="stat-label">Contributors</div>
|
164
|
+
</div>
|
165
|
+
<div class="stat-card">
|
166
|
+
<div class="stat-value">1</div>
|
167
|
+
<div class="stat-label">Total Commits</div>
|
168
|
+
</div>
|
169
|
+
<div class="stat-card">
|
170
|
+
<div class="stat-value">0</div>
|
171
|
+
<div class="stat-label">Pull Requests</div>
|
172
|
+
</div>
|
173
|
+
<div class="stat-card">
|
174
|
+
<div class="stat-value">301</div>
|
175
|
+
<div class="stat-label">Lines of Code</div>
|
176
|
+
</div>
|
177
|
+
<div class="stat-card">
|
178
|
+
<div class="stat-value">+2,039</div>
|
179
|
+
<div class="stat-label">Additions</div>
|
180
|
+
</div>
|
181
|
+
<div class="stat-card">
|
182
|
+
<div class="stat-value">-0</div>
|
183
|
+
<div class="stat-label">Deletions</div>
|
184
|
+
</div>
|
185
|
+
</div>
|
186
|
+
|
187
|
+
|
188
|
+
<div class="charts-grid">
|
189
|
+
<div class="chart-container">
|
190
|
+
<h3 class="chart-title">Daily Commit Activity</h3>
|
191
|
+
<canvas id="commitActivityChart"></canvas>
|
192
|
+
</div>
|
193
|
+
|
194
|
+
<div class="chart-container">
|
195
|
+
<h3 class="chart-title">Lines of Code by Contributor</h3>
|
196
|
+
<canvas id="linesOfCodeChart"></canvas>
|
197
|
+
</div>
|
198
|
+
|
199
|
+
<div class="chart-container">
|
200
|
+
<h3 class="chart-title">Commits Over Time</h3>
|
201
|
+
<canvas id="commitsTimelineChart"></canvas>
|
202
|
+
</div>
|
203
|
+
|
204
|
+
|
205
|
+
<div class="chart-container"><div class="no-data">No pull requests data available</div></div>
|
206
|
+
<div class="chart-container"><div class="no-data">No pull requests data available</div></div>
|
207
|
+
<div class="chart-container"><div class="no-data">No PR cycle time data available</div></div>
|
208
|
+
<div class="chart-container"><div class="no-data">No PR size data available</div></div>
|
209
|
+
<div class="chart-container"><div class="no-data">No open PRs</div></div>
|
210
|
+
</div>
|
211
|
+
<div class="chart-container">
|
212
|
+
<h3 class="chart-title">Commit Activity Heatmap</h3>
|
213
|
+
<div style="overflow:auto">
|
214
|
+
<table>
|
215
|
+
<thead>
|
216
|
+
<tr><th></th><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th><th>14</th><th>15</th><th>16</th><th>17</th><th>18</th><th>19</th><th>20</th><th>21</th><th>22</th><th>23</th></tr>
|
217
|
+
</thead>
|
218
|
+
<tbody>
|
219
|
+
<tr><th style="position:sticky;left:0;background:#fff;">Sun</th><td title="Sun 0:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 1:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 2:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 3:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 4:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 5:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 6:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 7:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 8:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 9:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 10:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 11:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 12:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 13:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 14:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 15:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 16:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 17:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 18:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 19:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 20:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 21:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 22:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sun 23:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td></tr><tr><th style="position:sticky;left:0;background:#fff;">Mon</th><td title="Mon 0:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 1:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 2:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 3:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 4:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 5:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 6:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 7:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 8:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 9:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 10:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 11:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 12:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 13:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 14:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 15:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 16:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 17:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 18:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 19:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 20:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 21:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 22:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Mon 23:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td></tr><tr><th style="position:sticky;left:0;background:#fff;">Tue</th><td title="Tue 0:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 1:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 2:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 3:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 4:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 5:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 6:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 7:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 8:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 9:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 10:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 11:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 12:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 13:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 14:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 15:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 16:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 17:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 18:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 19:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 20:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 21:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 22:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Tue 23:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td></tr><tr><th style="position:sticky;left:0;background:#fff;">Wed</th><td title="Wed 0:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 1:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 2:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 3:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 4:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 5:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 6:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 7:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 8:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 9:00 — 1" style="background: rgba(102,126,234,0.19); text-align:center; font-size: 12px;">1</td><td title="Wed 10:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 11:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 12:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 13:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 14:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 15:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 16:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 17:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 18:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 19:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 20:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 21:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 22:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Wed 23:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td></tr><tr><th style="position:sticky;left:0;background:#fff;">Thu</th><td title="Thu 0:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 1:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 2:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 3:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 4:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 5:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 6:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 7:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 8:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 9:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 10:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 11:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 12:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 13:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 14:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 15:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 16:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 17:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 18:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 19:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 20:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 21:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 22:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Thu 23:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td></tr><tr><th style="position:sticky;left:0;background:#fff;">Fri</th><td title="Fri 0:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 1:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 2:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 3:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 4:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 5:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 6:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 7:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 8:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 9:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 10:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 11:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 12:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 13:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 14:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 15:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 16:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 17:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 18:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 19:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 20:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 21:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 22:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Fri 23:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td></tr><tr><th style="position:sticky;left:0;background:#fff;">Sat</th><td title="Sat 0:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 1:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 2:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 3:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 4:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 5:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 6:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 7:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 8:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 9:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 10:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 11:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 12:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 13:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 14:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 15:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 16:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 17:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 18:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 19:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 20:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 21:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 22:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td><td title="Sat 23:00 — 0" style="background: rgba(102,126,234,0.1); text-align:center; font-size: 12px;">0</td></tr>
|
220
|
+
</tbody>
|
221
|
+
</table>
|
222
|
+
</div>
|
223
|
+
</div>
|
224
|
+
|
225
|
+
|
226
|
+
<div class="contributors-table">
|
227
|
+
<h3 class="chart-title">Contributor Statistics</h3>
|
228
|
+
<table>
|
229
|
+
<thead>
|
230
|
+
<tr>
|
231
|
+
<th>Contributor</th>
|
232
|
+
<th>Commits</th>
|
233
|
+
<th>Activity</th>
|
234
|
+
<th>Additions</th>
|
235
|
+
<th>Deletions</th>
|
236
|
+
<th>Current Lines</th>
|
237
|
+
<th>Pull Requests</th>
|
238
|
+
</tr>
|
239
|
+
</thead>
|
240
|
+
<tbody>
|
241
|
+
<tr>
|
242
|
+
<td>248302+usiegj00@users.noreply.github.com</td>
|
243
|
+
<td>1</td>
|
244
|
+
<td>
|
245
|
+
<div class="progress-bar">
|
246
|
+
<div class="progress-fill" style="width: 100%"></div>
|
247
|
+
</div>
|
248
|
+
</td>
|
249
|
+
<td>+2,039</td>
|
250
|
+
<td>-0</td>
|
251
|
+
<td>301 lines</td>
|
252
|
+
<td>0 PRs</td>
|
253
|
+
</tr>
|
254
|
+
|
255
|
+
</tbody>
|
256
|
+
</table>
|
257
|
+
</div>
|
258
|
+
|
259
|
+
</div>
|
260
|
+
|
261
|
+
<script>
|
262
|
+
new Chart(document.getElementById('commitActivityChart'), {
|
263
|
+
type: 'line',
|
264
|
+
data: {
|
265
|
+
labels: ['2025-08-06'],
|
266
|
+
datasets: [{
|
267
|
+
label: 'Commits',
|
268
|
+
data: [1],
|
269
|
+
borderColor: '#667eea',
|
270
|
+
backgroundColor: 'rgba(102, 126, 234, 0.1)',
|
271
|
+
tension: 0.4,
|
272
|
+
fill: true
|
273
|
+
}]
|
274
|
+
},
|
275
|
+
options: {
|
276
|
+
responsive: true,
|
277
|
+
maintainAspectRatio: false,
|
278
|
+
plugins: {
|
279
|
+
legend: { display: false }
|
280
|
+
},
|
281
|
+
scales: {
|
282
|
+
y: { beginAtZero: true }
|
283
|
+
}
|
284
|
+
}
|
285
|
+
});
|
286
|
+
|
287
|
+
new Chart(document.getElementById('linesOfCodeChart'), {
|
288
|
+
type: 'bar',
|
289
|
+
data: {
|
290
|
+
labels: ['248302+usiegj00@users.noreply.github.com'],
|
291
|
+
datasets: [{
|
292
|
+
label: 'Lines of Code',
|
293
|
+
data: [301],
|
294
|
+
backgroundColor: [
|
295
|
+
'#667eea', '#764ba2', '#f093fb', '#f5576c',
|
296
|
+
'#4facfe', '#00f2fe', '#43e97b', '#fa709a'
|
297
|
+
]
|
298
|
+
}]
|
299
|
+
},
|
300
|
+
options: {
|
301
|
+
responsive: true,
|
302
|
+
maintainAspectRatio: false,
|
303
|
+
plugins: {
|
304
|
+
legend: { display: false }
|
305
|
+
},
|
306
|
+
scales: {
|
307
|
+
y: { beginAtZero: true }
|
308
|
+
}
|
309
|
+
}
|
310
|
+
});
|
311
|
+
|
312
|
+
new Chart(document.getElementById('commitsTimelineChart'), {
|
313
|
+
type: 'bar',
|
314
|
+
data: {
|
315
|
+
labels: ['2025-08-04'],
|
316
|
+
datasets: [{"label":"248302+usiegj00@users.noreply.github.com","data":[1],"backgroundColor":"#667eea","borderColor":"#667eea"}]
|
317
|
+
},
|
318
|
+
options: {
|
319
|
+
responsive: true,
|
320
|
+
maintainAspectRatio: false,
|
321
|
+
scales: {
|
322
|
+
x: { stacked: true },
|
323
|
+
y: { stacked: true, beginAtZero: true }
|
324
|
+
}
|
325
|
+
}
|
326
|
+
});
|
327
|
+
|
328
|
+
</script>
|
329
|
+
</body>
|
330
|
+
</html>
|