{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfunction_types.html
More file actions
executable file
·291 lines (268 loc) · 45.9 KB
/
Copy pathfunction_types.html
File metadata and controls
executable file
·291 lines (268 loc) · 45.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>function_types - Boost Library Dashboard</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
<style>
* { box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
max-width: 1600px; margin: 0 auto; padding: 30px 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
}
h1 { text-align: center; color: #fff; font-size: 2.5em; margin-bottom: 10px; text-shadow: 2px 2px 4px rgba(0,0,0,0.2); }
.panel { background: #fff; padding: 30px; margin: 25px 0; border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,0.12), 0 2px 6px rgba(0,0,0,0.08); }
.panel h2 { margin-top: 0; margin-bottom: 20px; color: #1a202c; font-size: 1.6em; border-bottom: 3px solid #667eea; padding-bottom: 15px; }
.panel-row { display: grid; grid-template-columns: 1.2fr 1fr; gap: 20px; align-items: start; }
.chart-container { margin: 25px 0; height: 450px; position: relative; background: #fafafa; border-radius: 8px; padding: 15px; border: 1px solid #e2e8f0; }
canvas { width: 100% !important; height: 100% !important; display: block; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
th { background-color: #f0f0f0; font-weight: 600; }
a { color: #0066cc; text-decoration: none; } a:hover { text-decoration: underline; }
.sortable { cursor: pointer; user-select: none; }
.sort-indicator { margin-left: 5px; color: #666; }
.table-controls { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.table-controls input { padding: 8px; border: 1px solid #ddd; border-radius: 4px; width: 260px; }
.pagination { display: flex; gap: 8px; align-items: center; }
.pagination button { padding: 6px 12px; border: 1px solid #ddd; border-radius: 4px; background: #fff; cursor: pointer; }
.pagination button:disabled { opacity: .5; cursor: not-allowed; }
.library-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-top: 20px; }
.library-item { padding: 12px 16px; border: 2px solid #e2e8f0; border-radius: 8px; background: #f7fafc; text-align: center; }
.tab-button { padding: 10px 20px; margin-right: 5px; cursor: pointer; border: 1px solid #ddd; border-radius: 4px 4px 0 0; background: #fff; font-weight: 600; }
.tab-button.active { background: #f5f5f5; }
.back-link a { color: rgba(255,255,255,0.95); font-weight: 500; padding: 8px 16px; background: rgba(255,255,255,0.15); border-radius: 6px; }
</style>
</head>
<body>
<div class="back-link"><a href="../index.html">← Back to Dashboard</a></div>
<h1>📚 function_types</h1>
<div class="panel">
<h2>Overview</h2>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:30px; align-items:start;">
<div>
<p style="color:#666;">Boost.FunctionTypes provides functionality to classify, decompose and synthesize function, function pointer, function reference and pointer to member types.</p>
<table><tbody>
<tr><td><strong>Created Version:</strong></td><td>boost-1.58.0</td></tr>
<tr><td><strong>Most Recent Modified Version:</strong></td><td>boost-1.91.0</td></tr>
<tr><td><strong>Total Repositories:</strong></td><td>119</td></tr>
<tr><td><strong>Average New Repositories Per Year:</strong></td><td>6.00</td></tr>
<tr><td><strong>Most Recent Year Repository Count:</strong></td><td>3</td></tr>
<tr><td><strong>Most Used Year:</strong></td><td>2014</td></tr>
<tr><td><strong>Average Stars:</strong></td><td>315</td></tr>
<tr><td><strong>Activity Score:</strong></td><td>-0.943</td></tr>
<tr><td><strong>Internal Consumers:</strong></td><td>126</td></tr>
<tr><td><strong>Contributors in Most Recent Version:</strong></td><td>3</td></tr>
<tr><td><strong>Total Contributors:</strong></td><td>20</td></tr>
</tbody></table>
</div>
<div>
<h3>Used Headers</h3>
<div class="table-controls">
<div><label for="search-headers">Search:</label> <input id="search-headers" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-headers">Showing 0-0 of 0</span>
<button id="prev-headers">Previous</button>
<button id="next-headers">Next</button>
</div>
</div>
<table id="table-headers"><thead><tr><th><button type='button' class='sortable' data-key='name' aria-label='Sort by Header'>Header <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='count' aria-label='Sort by Times Included'>Times Included <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
</div>
</div>
<div class="panel">
<h2>Internal Consumers</h2>
<div class="panel-row">
<div>
<h3>Consumer Libraries</h3>
<div class="table-controls">
<div><label for="search-internal">Search:</label> <input id="search-internal" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-internal">Showing 0-0 of 0</span>
<button id="prev-internal">Previous</button>
<button id="next-internal">Next</button>
</div>
</div>
<table id="table-internal"><thead><tr><th><button type='button' class='sortable' data-key='name' aria-label='Sort by Library'>Library <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='depth' aria-label='Sort by Depth'>Depth <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='last_version' aria-label='Sort by Last Version'>Last Version <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
<div class="chart-container"><canvas id="dependentsChart"></canvas></div>
</div>
</div>
<div class="panel">
<h2>External Consumers</h2>
<div class="panel-row">
<div>
<h3>External Repositories</h3>
<div class="table-controls">
<div><label for="search-external">Search:</label> <input id="search-external" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-external">Showing 0-0 of 0</span>
<button id="prev-external">Previous</button>
<button id="next-external">Next</button>
</div>
</div>
<table id="table-external"><thead><tr><th><button type='button' class='sortable' data-key='name' aria-label='Sort by Repository'>Repository <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='stars' aria-label='Sort by Stars'>Stars <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='usage_count' aria-label='Sort by Header Includes'>Header Includes <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='created_at' aria-label='Sort by Created'>Created <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='updated_at' aria-label='Sort by Updated'>Updated <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
<div class="chart-container"><canvas id="usageChart"></canvas></div>
</div>
</div>
<div class="panel">
<h2>Contribution</h2>
<div class="panel-row">
<div>
<h3>Contributors</h3>
<div class="table-controls">
<div><label for="search-contrib">Search:</label> <input id="search-contrib" type="text" placeholder="Filter rows..."></div>
<div class="pagination">
<span id="info-contrib">Showing 0-0 of 0</span>
<button id="prev-contrib">Previous</button>
<button id="next-contrib">Next</button>
</div>
</div>
<table id="table-contrib"><thead><tr><th><button type='button' class='sortable' data-key='version' aria-label='Sort by Version'>Version <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='person' aria-label='Sort by Contributor'>Contributor <span class='sort-indicator'>↕</span></button></th><th><button type='button' class='sortable' data-key='commit_count' aria-label='Sort by Commit Count'>Commit Count <span class='sort-indicator'>↕</span></button></th></tr></thead><tbody></tbody></table>
</div>
<div class="chart-container"><canvas id="commitChart"></canvas></div>
</div>
</div>
<script>
function toNumber(v){ if (v === null || v === undefined || v === '') return 0; const n = Number(v); return Number.isFinite(n) ? n : 0; }
function toText(v){ return (v ?? '').toString().toLowerCase(); }
function toDate(v){ if(!v) return 0; const t = Date.parse(v); return Number.isFinite(t) ? t : 0; }
function esc(s){ if (s == null || s === undefined) return ''; const t = String(s); return t.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,'''); }
function initDataTable(cfg){
const pageSize = 10;
const data = [...cfg.data];
let filtered = [...data];
let page = 1;
let sortKey = cfg.defaultSortKey || cfg.columns[0].key;
let sortAsc = cfg.defaultSortAsc ?? false;
const table = document.getElementById(cfg.tableId);
const tbody = table.querySelector('tbody');
const info = document.getElementById(cfg.infoId);
const prev = document.getElementById(cfg.prevId);
const next = document.getElementById(cfg.nextId);
const search = document.getElementById(cfg.searchId);
function sortValue(row, col){
const v = row[col.key];
if(col.type === 'number') return toNumber(v);
if(col.type === 'date') return toDate(v);
return toText(v);
}
function applyFilter(){
const term = toText(search?.value || '');
if(!term){ filtered = [...data]; return; }
filtered = data.filter(row => cfg.columns.some(c => toText(row[c.key]).includes(term)));
}
function applySort(){
const col = cfg.columns.find(c => c.key === sortKey) || cfg.columns[0];
filtered.sort((a,b) => {
const av = sortValue(a,col), bv = sortValue(b,col);
if(av < bv) return sortAsc ? -1 : 1;
if(av > bv) return sortAsc ? 1 : -1;
return 0;
});
}
function updateIndicators(){
table.querySelectorAll('.sortable').forEach(th => {
const indicator = th.querySelector('.sort-indicator');
if(!indicator) return;
if(th.dataset.key === sortKey) indicator.textContent = sortAsc ? '↑' : '↓';
else indicator.textContent = '↕';
});
}
function render(){
applyFilter();
applySort();
const total = filtered.length;
const totalPages = Math.max(1, Math.ceil(total / pageSize));
if(page > totalPages) page = totalPages;
const start = (page - 1) * pageSize;
const end = Math.min(start + pageSize, total);
tbody.innerHTML = filtered.slice(start, end).map(cfg.rowHtml).join('');
info.textContent = total ? `Showing ${start + 1}-${end} of ${total}` : 'No data available';
prev.disabled = page <= 1;
next.disabled = page >= totalPages;
updateIndicators();
}
table.querySelectorAll('.sortable').forEach(th => {
th.addEventListener('click', () => {
const key = th.dataset.key;
if(sortKey === key) sortAsc = !sortAsc;
else { sortKey = key; sortAsc = true; }
page = 1; render();
});
});
if(search) search.addEventListener('input', () => { page = 1; render(); });
prev.addEventListener('click', () => { if(page > 1){ page -= 1; render(); } });
next.addEventListener('click', () => { page += 1; render(); });
render();
}
const headersRows = [{"name": "include/boost/function_types/parameter_types.hpp", "count": 97}, {"name": "include/boost/function_types/result_type.hpp", "count": 72}, {"name": "include/boost/function_types/function_type.hpp", "count": 68}, {"name": "include/boost/function_types/function_arity.hpp", "count": 63}, {"name": "include/boost/function_types/components.hpp", "count": 29}, {"name": "include/boost/function_types/is_member_function_pointer.hpp", "count": 25}, {"name": "include/boost/function_types/is_callable_builtin.hpp", "count": 25}, {"name": "include/boost/function_types/member_function_pointer.hpp", "count": 21}, {"name": "include/boost/function_types/function_pointer.hpp", "count": 16}, {"name": "include/boost/function_types/is_function.hpp", "count": 14}, {"name": "include/boost/function_types/is_nonmember_callable_builtin.hpp", "count": 12}, {"name": "include/boost/function_types/property_tags.hpp", "count": 11}, {"name": "include/boost/function_types/is_member_pointer.hpp", "count": 10}, {"name": "include/boost/function_types/is_function_pointer.hpp", "count": 9}, {"name": "include/boost/function_types/is_function_reference.hpp", "count": 8}, {"name": "include/boost/function_types/config/config.hpp", "count": 8}, {"name": "include/boost/function_types/detail/pp_loop.hpp", "count": 7}, {"name": "include/boost/function_types/function_reference.hpp", "count": 6}, {"name": "include/boost/function_types/is_member_object_pointer.hpp", "count": 5}, {"name": "include/boost/function_types/detail/cv_traits.hpp", "count": 4}, {"name": "include/boost/function_types/detail/retag_default_cc.hpp", "count": 4}, {"name": "include/boost/function_types/detail/to_sequence.hpp", "count": 2}, {"name": "include/boost/function_types/detail/synthesize.hpp", "count": 2}, {"name": "include/boost/function_types/detail/pp_cc_loop/master.hpp", "count": 1}, {"name": "include/boost/function_types/detail/pp_variate_loop/master.hpp", "count": 1}, {"name": "include/boost/function_types/member_object_pointer.hpp", "count": 1}, {"name": "include/boost/function_types/detail/pp_retag_default_cc/master.hpp", "count": 1}, {"name": "include/boost/function_types/detail/pp_tags/master.hpp", "count": 1}];
const internalRows = [{"name": "compute", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "contract", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "convert", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "functional", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "fusion", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "geometry", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "log", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "spirit", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "tti", "depth": 1, "last_version": "boost-1.92.0"}, {"name": "Unknown(185)", "depth": 2, "last_version": "boost-1.68.0"}, {"name": "Odeint", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "accumulators", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "array", "depth": 2, "last_version": "boost-1.63.0"}, {"name": "circular_buffer", "depth": 2, "last_version": "boost-1.68.0"}, {"name": "container", "depth": 2, "last_version": "boost-1.66.0"}, {"name": "graph", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "hana", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "intrusive", "depth": 2, "last_version": "boost-1.66.0"}, {"name": "iterator", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "msm", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "multi_array", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "parameter", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "phoenix", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "process", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "proto", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "regex", "depth": 2, "last_version": "boost-1.76.0"}, {"name": "serialization", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "type_erasure", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "type_index", "depth": 2, "last_version": "boost-1.66.0"}, {"name": "uBLAS", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "unordered", "depth": 2, "last_version": "boost-1.66.0"}, {"name": "utility", "depth": 2, "last_version": "boost-1.66.0"}, {"name": "uuid", "depth": 2, "last_version": "boost-1.85.0"}, {"name": "variant", "depth": 2, "last_version": "boost-1.66.0"}, {"name": "wave", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "xpressive", "depth": 2, "last_version": "boost-1.92.0"}, {"name": "Tribool", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "algorithm", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "any", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "atomic", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "bimap", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "bind", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "chrono", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "config", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "context", "depth": 3, "last_version": "boost-1.76.0"}, {"name": "coroutine", "depth": 3, "last_version": "boost-1.77.0"}, {"name": "dynamic_bitset", "depth": 3, "last_version": "boost-1.72.0"}, {"name": "endian", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "exception", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "filesystem", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "flyweight", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "foreach", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "format", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "function", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "gil", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "graph_parallel", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "heap", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "histogram", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "icl", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "iostreams", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "lambda", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "lexical_cast", "depth": 3, "last_version": "boost-1.83.0"}, {"name": "local_function", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "locale", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "lockfree", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "move", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "mpi", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "mpl", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "multi_index", "depth": 3, "last_version": "boost-1.90.0"}, {"name": "optional", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "parameter_python", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "parser", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "poly_collection", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "pool", "depth": 3, "last_version": "boost-1.68.0"}, {"name": "program_options", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "property_map", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "property_map_parallel", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "property_tree", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "ptr_container", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "python", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "random", "depth": 3, "last_version": "boost-1.87.0"}, {"name": "range", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "rational", "depth": 3, "last_version": "boost-1.66.0"}, {"name": "signals2", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "smart_ptr", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "system", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "test", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "tokenizer", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "tuple", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "type_traits", "depth": 3, "last_version": "boost-1.55.0"}, {"name": "yap", "depth": 3, "last_version": "boost-1.92.0"}, {"name": "Numeric Conversion", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "assign", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "concept_check", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "coroutine2", "depth": 4, "last_version": "boost-1.76.0"}, {"name": "crc", "depth": 4, "last_version": "boost-1.55.0"}, {"name": "date_time", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "detail", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "dll", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "fiber", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "integer", "depth": 4, "last_version": "boost-1.55.0"}, {"name": "interprocess", "depth": 4, "last_version": "boost-1.76.0"}, {"name": "io", "depth": 4, "last_version": "boost-1.55.0"}, {"name": "math", "depth": 4, "last_version": "boost-1.87.0"}, {"name": "metaparse", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "mqtt5", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "multiprecision", "depth": 4, "last_version": "boost-1.87.0"}, {"name": "nowide", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "polygon", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "ratio", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "scope_exit", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "sort", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "stacktrace", "depth": 4, "last_version": "boost-1.67.0"}, {"name": "static_assert", "depth": 4, "last_version": "boost-1.55.0"}, {"name": "timer", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "typeof", "depth": 4, "last_version": "boost-1.66.0"}, {"name": "units", "depth": 4, "last_version": "boost-1.92.0"}, {"name": "Interval", "depth": 5, "last_version": "boost-1.66.0"}, {"name": "asio", "depth": 5, "last_version": "boost-1.92.0"}, {"name": "conversion", "depth": 5, "last_version": "boost-1.66.0"}, {"name": "thread", "depth": 5, "last_version": "boost-1.92.0"}, {"name": "beast", "depth": 6, "last_version": "boost-1.92.0"}, {"name": "cobalt", "depth": 6, "last_version": "boost-1.92.0"}, {"name": "mysql", "depth": 6, "last_version": "boost-1.92.0"}, {"name": "redis", "depth": 6, "last_version": "boost-1.92.0"}, {"name": "statechart", "depth": 6, "last_version": "boost-1.92.0"}];
const externalRows = [{"name": "MTASZTAKI/ApertusVR", "stars": 177, "usage_count": 1, "created_at": "2016-11-14", "updated_at": "2024-01-16"}, {"name": "NewSpring/Apollos", "stars": 23, "usage_count": 1, "created_at": "2017-10-03", "updated_at": "2019-12-05"}, {"name": "arx/ArxLibertatis", "stars": 1036, "usage_count": 1, "created_at": "2011-01-17", "updated_at": "2024-08-22"}, {"name": "NiranV/Black-Dragon-Viewer", "stars": 23, "usage_count": 3, "created_at": "2024-10-31", "updated_at": "2026-07-01"}, {"name": "bumptop/BumpTop", "stars": 621, "usage_count": 7, "created_at": "2014-10-25", "updated_at": "2024-01-08"}, {"name": "PacktPublishing/CPP-Reactive-Programming", "stars": 143, "usage_count": 2, "created_at": "2018-06-27", "updated_at": "2023-07-06"}, {"name": "lezcano/CPProb", "stars": 21, "usage_count": 4, "created_at": "2016-12-15", "updated_at": "2018-06-08"}, {"name": "lefticus/ChaiScript", "stars": 12, "usage_count": 5, "created_at": "2011-05-24", "updated_at": "2011-06-03"}, {"name": "Xazax-hun/CppQuery", "stars": 11, "usage_count": 3, "created_at": "2014-01-30", "updated_at": "2014-11-02"}, {"name": "Kitware/DaxToolkit", "stars": 24, "usage_count": 3, "created_at": "2012-09-13", "updated_at": "2014-12-18"}, {"name": "Tower-Numid/EncoreMP", "stars": 12, "usage_count": 1, "created_at": "2025-09-19", "updated_at": "2026-08-25"}, {"name": "firebreath/FireBreath", "stars": 591, "usage_count": 3, "created_at": "2010-11-26", "updated_at": "2022-07-28"}, {"name": "dato-code/GraphLab-Create-SDK", "stars": 148, "usage_count": 4, "created_at": "2014-11-24", "updated_at": "2017-12-19"}, {"name": "kayuri/HNC", "stars": 61, "usage_count": 3, "created_at": "2011-10-07", "updated_at": "2025-08-20"}, {"name": "nponeccop/HNC", "stars": 61, "usage_count": 3, "created_at": "2011-10-07", "updated_at": "2025-08-20"}, {"name": "MisterTea/HyperNEAT", "stars": 98, "usage_count": 70, "created_at": "2011-08-23", "updated_at": "2017-09-12"}, {"name": "OpenMPDK/KVCeph", "stars": 58, "usage_count": 4, "created_at": "2019-04-19", "updated_at": "2022-12-26"}, {"name": "OpenMPDK/KVRocks", "stars": 47, "usage_count": 3, "created_at": "2019-09-20", "updated_at": "2022-06-21"}, {"name": "KratosMultiphysics/Kratos", "stars": 1237, "usage_count": 3, "created_at": "2017-02-13", "updated_at": "2026-03-22"}, {"name": "jaller200/LUNIServerProject", "stars": 31, "usage_count": 1, "created_at": "2015-04-12", "updated_at": "2017-07-31"}, {"name": "Kirkezz/Mazes", "stars": 16, "usage_count": 1, "created_at": "2022-09-02", "updated_at": "2025-07-17"}, {"name": "LancasterLogRes/Noted", "stars": 15, "usage_count": 1, "created_at": "2012-06-18", "updated_at": "2013-08-22"}, {"name": "OSVR/OSVR-Core", "stars": 338, "usage_count": 3, "created_at": "2014-10-21", "updated_at": "2019-06-06"}, {"name": "OSVR/OSVR-Unreal", "stars": 89, "usage_count": 3, "created_at": "2015-01-25", "updated_at": "2017-12-01"}, {"name": "diva/OnLook", "stars": 15, "usage_count": 3, "created_at": "2014-10-30", "updated_at": "2014-12-04"}, {"name": "JohnMH/OpenBlox-Legacy", "stars": 11, "usage_count": 1, "created_at": "2014-11-26", "updated_at": "2017-12-21"}, {"name": "rneiss/PocketTorah", "stars": 16, "usage_count": 3, "created_at": "2012-04-02", "updated_at": "2022-08-15"}, {"name": "henryatman/PyMT4", "stars": 13, "usage_count": 3, "created_at": "2018-08-06", "updated_at": "2018-08-06"}, {"name": "sychaichangkun/ROS----ros_comm", "stars": 18, "usage_count": 2, "created_at": "2017-09-26", "updated_at": "2017-09-29"}, {"name": "OculusVR/RakNet", "stars": 3400, "usage_count": 1, "created_at": "2014-06-05", "updated_at": "2021-12-14"}, {"name": "larku/RakNet", "stars": 59, "usage_count": 1, "created_at": "2015-07-26", "updated_at": "2021-02-27"}, {"name": "dato-code/SFrame", "stars": 901, "usage_count": 4, "created_at": "2015-09-03", "updated_at": "2018-09-30"}, {"name": "turi-code/SFrame", "stars": 901, "usage_count": 4, "created_at": "2015-09-03", "updated_at": "2018-09-30"}, {"name": "robosoft-ai/SMACC", "stars": 326, "usage_count": 3, "created_at": "2018-08-10", "updated_at": "2023-04-24"}, {"name": "robosoft-ai/SMACC2", "stars": 369, "usage_count": 3, "created_at": "2020-09-30", "updated_at": "2026-09-05"}, {"name": "b6oy/SP2-Server", "stars": 22, "usage_count": 1, "created_at": "2017-01-24", "updated_at": "2017-01-24"}, {"name": "holgerschmitz/Schnek", "stars": 17, "usage_count": 1, "created_at": "2016-09-23", "updated_at": "2026-02-20"}, {"name": "myiosemail/ShowTimeVideoLive", "stars": 253, "usage_count": 3, "created_at": "2016-06-22", "updated_at": "2016-07-07"}, {"name": "dib-lab/TheGreatGenotyper", "stars": 11, "usage_count": 2, "created_at": "2022-07-20", "updated_at": "2025-01-04"}, {"name": "DrJWCain/VFS", "stars": 43, "usage_count": 4, "created_at": "2018-09-21", "updated_at": "2018-10-27"}, {"name": "WaliDev/WALi-OpenNWA", "stars": 17, "usage_count": 2, "created_at": "2012-11-13", "updated_at": "2018-11-28"}, {"name": "OrfeasZ/ZHMModSDK", "stars": 276, "usage_count": 1, "created_at": "2021-02-04", "updated_at": "2026-09-04"}, {"name": "stlab/adobe_source_libraries", "stars": 0, "usage_count": 1, "created_at": "", "updated_at": ""}, {"name": "ApolloAuto/apollo-platform", "stars": 743, "usage_count": 2, "created_at": "2017-06-30", "updated_at": "2019-07-03"}, {"name": "shenlan-zhejiang/apollo_ros_shenlan", "stars": 13, "usage_count": 2, "created_at": "2023-07-12", "updated_at": "2023-08-20"}, {"name": "gabrielcuvillier/arxwasm", "stars": 41, "usage_count": 1, "created_at": "2018-11-26", "updated_at": "2019-12-03"}, {"name": "yak1ex/ax7z", "stars": 12, "usage_count": 3, "created_at": "2013-03-11", "updated_at": "2018-05-16"}, {"name": "utiasASRL/batch-informed-trees", "stars": 68, "usage_count": 2, "created_at": "2014-10-10", "updated_at": "2018-02-20"}, {"name": "kkodev/boost-ios", "stars": 23, "usage_count": 14, "created_at": "2013-01-09", "updated_at": "2013-04-19"}, {"name": "mz2/boostoniphone", "stars": 44, "usage_count": 16, "created_at": "2012-02-03", "updated_at": "2015-08-26"}, {"name": "homer6/c_reading", "stars": 25, "usage_count": 2, "created_at": "2011-04-30", "updated_at": "2011-04-30"}, {"name": "tegesoft/camp", "stars": 88, "usage_count": 3, "created_at": "2010-04-16", "updated_at": "2020-10-18"}, {"name": "lidaohang/ceph_study", "stars": 466, "usage_count": 4, "created_at": "2018-04-11", "updated_at": "2020-09-27"}, {"name": "openstreetmap/cgimap", "stars": 19, "usage_count": 1, "created_at": "2010-07-21", "updated_at": "2022-07-22"}, {"name": "alanbriolat/clementine-subsonic", "stars": 12, "usage_count": 1, "created_at": "2011-12-05", "updated_at": "2013-02-05"}, {"name": "calibercheats/client", "stars": 13, "usage_count": 2, "created_at": "2016-07-29", "updated_at": "2016-07-24"}, {"name": "cocaine/cocaine-core", "stars": 1034, "usage_count": 1, "created_at": "2011-03-23", "updated_at": "2018-01-22"}, {"name": "TJArk-Robotics/coderelease_2017", "stars": 11, "usage_count": 11, "created_at": "2018-01-30", "updated_at": "2018-02-13"}, {"name": "watson-intu/cpp-sdk", "stars": 17, "usage_count": 6, "created_at": "2016-11-09", "updated_at": "2018-04-16"}, {"name": "sutambe/cpptruths", "stars": 20, "usage_count": 5, "created_at": "2015-03-16", "updated_at": "2019-09-06"}, {"name": "alex-friedl/crossplatform-push-notifications-example", "stars": 17, "usage_count": 4, "created_at": "2017-08-25", "updated_at": "2018-05-14"}, {"name": "cogsys-tuebingen/csapex", "stars": 25, "usage_count": 2, "created_at": "2016-08-08", "updated_at": "2021-02-27"}, {"name": "opencsd/csd-filesystem", "stars": 11, "usage_count": 4, "created_at": "2021-11-04", "updated_at": "2023-12-13"}, {"name": "personalrobotics/dartpy", "stars": 16, "usage_count": 1, "created_at": "2015-04-23", "updated_at": "2018-10-20"}, {"name": "fmihpc/dccrg", "stars": 13, "usage_count": 2, "created_at": "2014-10-29", "updated_at": "2025-06-13"}, {"name": "nitaigao/engine-showcase", "stars": 26, "usage_count": 1, "created_at": "2008-12-05", "updated_at": "2009-07-23"}, {"name": "chardan/exceptional", "stars": 11, "usage_count": 3, "created_at": "2016-09-22", "updated_at": "2018-08-13"}, {"name": "citizenfx/fivem", "stars": 4080, "usage_count": 1, "created_at": "2017-01-16", "updated_at": "2026-03-25"}, {"name": "facebook/folly", "stars": 30534, "usage_count": 2, "created_at": "2012-06-01", "updated_at": "2026-09-10"}, {"name": "AravinthPanch/gesture-recognition-for-human-robot-interaction", "stars": 76, "usage_count": 15, "created_at": "2014-12-09", "updated_at": "2019-10-12"}, {"name": "fungosforks/icq-desktop", "stars": 54, "usage_count": 13, "created_at": "2016-03-15", "updated_at": "2016-03-15"}, {"name": "iTwin/imodel-native", "stars": 26, "usage_count": 3, "created_at": "2022-11-02", "updated_at": "2026-09-11"}, {"name": "exclipy/inline_variant_visitor", "stars": 38, "usage_count": 7, "created_at": "2012-03-15", "updated_at": "2016-09-25"}, {"name": "msesia/knockoffgwas", "stars": 16, "usage_count": 2, "created_at": "2020-07-21", "updated_at": "2022-07-07"}, {"name": "knowrob/knowrob", "stars": 151, "usage_count": 3, "created_at": "2013-04-22", "updated_at": "2025-06-04"}, {"name": "jakeowner/lastbattle", "stars": 55, "usage_count": 12, "created_at": "2017-11-24", "updated_at": "2017-11-24"}, {"name": "CMA-ES/libcmaes", "stars": 357, "usage_count": 3, "created_at": "2014-04-04", "updated_at": "2025-09-15"}, {"name": "beniz/libcmaes", "stars": 348, "usage_count": 3, "created_at": "2014-04-04", "updated_at": "2025-09-15"}, {"name": "aldebaran/libqi", "stars": 71, "usage_count": 15, "created_at": "2011-12-13", "updated_at": "2024-06-17"}, {"name": "bytemaster/mace", "stars": 18, "usage_count": 8, "created_at": "2012-05-14", "updated_at": "2012-10-21"}, {"name": "ArashPartow/math-parser-benchmark-project", "stars": 151, "usage_count": 5, "created_at": "2015-11-05", "updated_at": "2026-04-27"}, {"name": "SciCompMod/memilio", "stars": 70, "usage_count": 1, "created_at": "2021-08-12", "updated_at": "2026-09-03"}, {"name": "infinit/memo", "stars": 117, "usage_count": 1, "created_at": "2017-06-21", "updated_at": "2018-11-13"}, {"name": "xoyojank/nebula3", "stars": 62, "usage_count": 1, "created_at": "2012-11-23", "updated_at": "2012-12-03"}, {"name": "mspublic/openair4G-mirror", "stars": 22, "usage_count": 3, "created_at": "2014-12-21", "updated_at": "2014-12-21"}, {"name": "zerebubuth/openstreetmap-cgimap", "stars": 94, "usage_count": 1, "created_at": "2010-05-08", "updated_at": "2025-08-28"}, {"name": "psoetens/orocos-rtt", "stars": 21, "usage_count": 18, "created_at": "2008-11-20", "updated_at": "2013-11-22"}, {"name": "haozzzzzzzz/osgEarthX", "stars": 77, "usage_count": 3, "created_at": "2015-09-19", "updated_at": "2018-03-29"}, {"name": "FirestormViewer/phoenix-firestorm", "stars": 115, "usage_count": 1, "created_at": "2022-08-12", "updated_at": "2026-09-11"}, {"name": "chronolaw/professional_boost", "stars": 60, "usage_count": 17, "created_at": "2016-01-08", "updated_at": "2020-03-25"}, {"name": "nongeneric/ps3emu", "stars": 24, "usage_count": 1, "created_at": "2018-08-06", "updated_at": "2021-02-27"}, {"name": "svenstaro/pseudoform", "stars": 37, "usage_count": 4, "created_at": "2009-12-27", "updated_at": "2010-05-09"}, {"name": "pyrokitty64/pyrokitty-releases", "stars": 13, "usage_count": 3, "created_at": "2026-02-01", "updated_at": "2026-05-09"}, {"name": "svalaskevicius/qtjs-generator", "stars": 38, "usage_count": 7, "created_at": "2013-01-27", "updated_at": "2024-06-18"}, {"name": "eddelbuettel/rcppstreams", "stars": 17, "usage_count": 2, "created_at": "2014-08-05", "updated_at": "2026-01-28"}, {"name": "vovkasm/react-native-web-image", "stars": 147, "usage_count": 2, "created_at": "2016-11-19", "updated_at": "2023-01-03"}, {"name": "microsoft/react-native-windows", "stars": 17259, "usage_count": 2, "created_at": "2015-12-15", "updated_at": "2026-05-13"}, {"name": "BlackEdder/realtimeplot", "stars": 26, "usage_count": 12, "created_at": "2015-02-16", "updated_at": "2015-02-16"}, {"name": "SANS3R66/roblox-2016-source-code", "stars": 22, "usage_count": 1, "created_at": "2025-03-27", "updated_at": "2026-06-02"}, {"name": "fiveai/ros_comm", "stars": 12, "usage_count": 2, "created_at": "2021-07-15", "updated_at": "2021-08-18"}, {"name": "iamrajee/roskinetic_catkin_ws", "stars": 20, "usage_count": 2, "created_at": "2019-03-12", "updated_at": "2022-03-04"}, {"name": "orocos-toolchain/rtt", "stars": 89, "usage_count": 18, "created_at": "2012-11-27", "updated_at": "2022-06-08"}, {"name": "bastosmichael/semantic-web-crawler", "stars": 13, "usage_count": 1, "created_at": "2012-03-19", "updated_at": "2012-06-02"}, {"name": "mmycly/serverTwo", "stars": 25, "usage_count": 8, "created_at": "2019-03-21", "updated_at": "2019-03-20"}, {"name": "Minoic-Intelligence/shrike", "stars": 16, "usage_count": 2, "created_at": "2025-04-08", "updated_at": "2025-06-27"}, {"name": "uccross/skyhookdm-ceph", "stars": 29, "usage_count": 4, "created_at": "2017-03-09", "updated_at": "2020-07-29"}, {"name": "sofa-framework/sofa", "stars": 1187, "usage_count": 1, "created_at": "2016-05-31", "updated_at": "2026-04-24"}, {"name": "jonaski/strawberry", "stars": 3370, "usage_count": 1, "created_at": "2014-12-29", "updated_at": "2025-12-17"}, {"name": "iritkatriel/streamulus", "stars": 80, "usage_count": 2, "created_at": "2012-04-10", "updated_at": "2022-05-18"}, {"name": "aws/thinkbox-magma", "stars": 13, "usage_count": 2, "created_at": "2022-11-14", "updated_at": "2022-12-16"}, {"name": "fyu/tiny", "stars": 60, "usage_count": 2, "created_at": "2017-07-13", "updated_at": "2018-02-24"}, {"name": "tizonia/tizonia-openmax-il", "stars": 1723, "usage_count": 1, "created_at": "2013-01-01", "updated_at": "2025-07-13"}, {"name": "ddemidov/vexcl", "stars": 718, "usage_count": 3, "created_at": "2012-05-29", "updated_at": "2025-07-19"}, {"name": "secondlife/viewer", "stars": 301, "usage_count": 1, "created_at": "2022-08-05", "updated_at": "2026-09-11"}, {"name": "andyprowl/virtual-concepts", "stars": 54, "usage_count": 3, "created_at": "2014-10-05", "updated_at": "2016-03-19"}, {"name": "wallscavesurvey/walls", "stars": 23, "usage_count": 20, "created_at": "2017-02-18", "updated_at": "2025-09-13"}, {"name": "e4lam/xlkit", "stars": 13, "usage_count": 2, "created_at": "2014-04-27", "updated_at": "2015-10-06"}, {"name": "alucard-dracula/yggdrasil", "stars": 50, "usage_count": 6, "created_at": "2014-08-24", "updated_at": "2026-01-16"}, {"name": "warriorguo/zertcore5", "stars": 52, "usage_count": 1, "created_at": "2014-12-31", "updated_at": "2015-11-05"}];
const contribRows = [{"version": "boost-1.91.0", "person": "Peter Dimov", "commit_count": 4}, {"version": "boost-1.91.0", "person": "Dmitry Arkhipov", "commit_count": 1}, {"version": "boost-1.91.0", "person": "Lastique", "commit_count": 1}, {"version": "boost-1.87.0", "person": "Peter Dimov", "commit_count": 10}, {"version": "boost-1.86.0", "person": "grafikrobot", "commit_count": 5}, {"version": "boost-1.85.0", "person": "grafikrobot", "commit_count": 2}, {"version": "boost-1.77.0", "person": "Peter Dimov", "commit_count": 1}, {"version": "boost-1.76.0", "person": "eldiener", "commit_count": 1}, {"version": "boost-1.75.0", "person": "eldiener", "commit_count": 1}, {"version": "boost-1.73.0", "person": "eldiener", "commit_count": 6}, {"version": "boost-1.70.0", "person": "eldiener", "commit_count": 1}, {"version": "boost-1.70.0", "person": "glenfe", "commit_count": 1}, {"version": "boost-1.70.0", "person": "Mike-Devel", "commit_count": 1}, {"version": "boost-1.69.0", "person": "Mike-Devel", "commit_count": 1}, {"version": "boost-1.66.0", "person": "eldiener", "commit_count": 13}, {"version": "boost-1.66.0", "person": "Peter Dimov", "commit_count": 1}, {"version": "boost-1.63.0", "person": "grafikrobot", "commit_count": 2}, {"version": "boost-1.59.0", "person": "eldiener", "commit_count": 3}, {"version": "boost-1.59.0", "person": "jzmaddock", "commit_count": 1}, {"version": "boost-1.58.0", "person": "Peter Dimov", "commit_count": 2}, {"version": "boost-1.58.0", "person": "eldiener", "commit_count": 1}, {"version": "boost-1.57.0", "person": "danieljames", "commit_count": 1}, {"version": "boost-1.56.0", "person": "morinmorin", "commit_count": 1}, {"version": "boost-1.55.0", "person": "Stephen Kelly", "commit_count": 4}, {"version": "boost-1.55.0", "person": "morinmorin", "commit_count": 1}, {"version": "boost-1.47.0", "person": "danieljames", "commit_count": 2}, {"version": "boost-1.44.0", "person": "danieljames", "commit_count": 4}, {"version": "boost-1.44.0", "person": "swatanabe", "commit_count": 1}, {"version": "boost-1.42.0", "person": "danieljames", "commit_count": 2}, {"version": "boost-1.42.0", "person": "straszheim", "commit_count": 1}, {"version": "boost-1.41.0", "person": "straszheim", "commit_count": 2}, {"version": "boost-1.41.0", "person": "Stefan Seefeld", "commit_count": 1}, {"version": "boost-1.41.0", "person": "Lastique", "commit_count": 1}, {"version": "boost-1.40.0", "person": "straszheim", "commit_count": 2}, {"version": "boost-1.40.0", "person": "vprus", "commit_count": 1}, {"version": "boost-1.38.0", "person": "imikejackson", "commit_count": 2}, {"version": "boost-1.38.0", "person": "tschw", "commit_count": 1}, {"version": "boost-1.38.0", "person": "straszheim", "commit_count": 1}, {"version": "boost-1.37.0", "person": "imikejackson", "commit_count": 1}, {"version": "boost-1.36.0", "person": "danieljames", "commit_count": 2}, {"version": "boost-1.36.0", "person": "hkaiser", "commit_count": 1}, {"version": "boost-1.35.0", "person": "tschw", "commit_count": 36}, {"version": "boost-1.35.0", "person": "Beman Dawes", "commit_count": 2}, {"version": "boost-1.35.0", "person": "danieljames", "commit_count": 1}, {"version": "boost-1.35.0", "person": "Joel de Guzman", "commit_count": 1}, {"version": "boost-1.34.0", "person": "tschw", "commit_count": 1}];
const depVersions = ["boost-1.17.0", "boost-1.18.0", "boost-1.19.0", "boost-1.20.0", "boost-1.21.0", "boost-1.22.0", "boost-1.23.0", "boost-1.24.0", "boost-1.25.0", "boost-1.26.0", "boost-1.27.0", "boost-1.28.0", "boost-1.29.0", "boost-1.30.0", "boost-1.31.0", "boost-1.32.0", "boost-1.33.0", "boost-1.34.0", "boost-1.35.0", "boost-1.36.0", "boost-1.37.0", "boost-1.38.0", "boost-1.39.0", "boost-1.40.0", "boost-1.41.0", "boost-1.42.0", "boost-1.43.0", "boost-1.44.0", "boost-1.45.0", "boost-1.46.0", "boost-1.47.0", "boost-1.48.0", "boost-1.49.0", "boost-1.50.0", "boost-1.51.0", "boost-1.52.0", "boost-1.53.0", "boost-1.54.0", "boost-1.55.0", "boost-1.56.0", "boost-1.57.0", "boost-1.58.0", "boost-1.59.0", "boost-1.60.0", "boost-1.61.0", "boost-1.62.0", "boost-1.63.0", "boost-1.64.0", "boost-1.65.0", "boost-1.66.0", "boost-1.67.0", "boost-1.68.0", "boost-1.69.0", "boost-1.70.0", "boost-1.71.0", "boost-1.72.0", "boost-1.73.0", "boost-1.74.0", "boost-1.75.0", "boost-1.76.0", "boost-1.77.0", "boost-1.78.0", "boost-1.79.0", "boost-1.80.0", "boost-1.81.0", "boost-1.82.0", "boost-1.83.0", "boost-1.84.0", "boost-1.85.0", "boost-1.86.0", "boost-1.87.0", "boost-1.88.0", "boost-1.89.0", "boost-1.90.0", "boost-1.91.0", "boost-1.92.0"];
const depFirst = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 5, 5, 5, 5, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9];
const depAll = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 73, 74, 76, 77, 77, 78, 79, 79, 81, 81, 82, 86, 89, 90, 91, 92, 92, 97, 100, 100, 71, 72, 70, 70, 70, 73, 74, 74, 75, 99, 100, 75, 75, 72, 73, 74, 74, 74, 74, 74, 74, 71, 70, 70, 70, 70, 71, 71, 72, 72, 71, 72, 70, 70, 70, 69, 69];
const usageYears = ["2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026"];
const byCreated = [19, 4, 8, 101, 68, 28, 65, 41, 55, 53, 29, 17, 5, 8, 10, 2, 3, 4, 3];
const byUpdated = [0, 1, 18, 20, 58, 27, 107, 32, 57, 37, 64, 30, 4, 4, 20, 10, 8, 14, 12];
const repoCounts = [2, 1, 4, 9, 13, 5, 19, 11, 12, 12, 8, 4, 2, 4, 6, 1, 1, 3, 1];
const commitVersions = ["boost-1.58.0", "boost-1.59.0", "boost-1.60.0", "boost-1.61.0", "boost-1.62.0", "boost-1.63.0", "boost-1.64.0", "boost-1.65.0", "boost-1.66.0", "boost-1.67.0", "boost-1.68.0", "boost-1.69.0", "boost-1.70.0", "boost-1.71.0", "boost-1.72.0", "boost-1.73.0", "boost-1.74.0", "boost-1.75.0", "boost-1.76.0", "boost-1.77.0", "boost-1.78.0", "boost-1.79.0", "boost-1.80.0", "boost-1.81.0", "boost-1.82.0", "boost-1.83.0", "boost-1.84.0", "boost-1.85.0", "boost-1.86.0", "boost-1.87.0", "boost-1.88.0", "boost-1.89.0", "boost-1.90.0", "boost-1.91.0", "boost-1.92.0"];
const commitCounts = [3, 4, 0, 0, 0, 2, 0, 0, 14, 0, 0, 1, 3, 0, 0, 6, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 5, 10, 0, 0, 0, 6, 0];
initDataTable({
data: headersRows, tableId:'table-headers', searchId:'search-headers',
infoId:'info-headers', prevId:'prev-headers', nextId:'next-headers',
defaultSortKey:'count', defaultSortAsc:false,
columns:[{key:'name',type:'text'},{key:'count',type:'number'}],
rowHtml:(r)=>`<tr><td>${esc(r.name || '')}</td><td>${toNumber(r.count).toLocaleString()}</td></tr>`
});
initDataTable({
data: internalRows, tableId:'table-internal', searchId:'search-internal',
infoId:'info-internal', prevId:'prev-internal', nextId:'next-internal',
defaultSortKey:'depth', defaultSortAsc:true,
columns:[{key:'name',type:'text'},{key:'depth',type:'number'},{key:'last_version',type:'text'}],
rowHtml:(r)=>`<tr><td><a href="${esc((r.name || '').replace(/[^\w\-.]/g,'_'))}.html">${esc(r.name || '')}</a></td><td>${toNumber(r.depth)}</td><td>${esc(r.last_version || '')}</td></tr>`
});
initDataTable({
data: externalRows, tableId:'table-external', searchId:'search-external',
infoId:'info-external', prevId:'prev-external', nextId:'next-external',
defaultSortKey:'stars', defaultSortAsc:false,
columns:[{key:'name',type:'text'},{key:'stars',type:'number'},{key:'usage_count',type:'number'},{key:'created_at',type:'date'},{key:'updated_at',type:'date'}],
rowHtml:(r)=>`<tr><td><a href="https://github.com/${esc(r.name || '')}" target="_blank">${esc(r.name || '')}</a></td><td>${toNumber(r.stars).toLocaleString()}</td><td>${toNumber(r.usage_count).toLocaleString()}</td><td>${esc((r.created_at || '').toString().slice(0,10) || 'N/A')}</td><td>${esc((r.updated_at || '').toString().slice(0,10) || 'N/A')}</td></tr>`
});
initDataTable({
data: contribRows, tableId:'table-contrib', searchId:'search-contrib',
infoId:'info-contrib', prevId:'prev-contrib', nextId:'next-contrib',
defaultSortKey:'commit_count', defaultSortAsc:false,
columns:[{key:'version',type:'text'},{key:'person',type:'text'},{key:'commit_count',type:'number'}],
rowHtml:(r)=>`<tr><td>${esc(r.version || '')}</td><td>${esc(r.person || '')}</td><td>${toNumber(r.commit_count).toLocaleString()}</td></tr>`
});
new Chart(document.getElementById('dependentsChart'), {
type:'bar',
data: { labels: depVersions, datasets:[
{label:'Primary Consumers', data: depFirst, backgroundColor:'rgba(59,130,246,0.7)'},
{label:'Transitive Consumers', data: depAll, backgroundColor:'rgba(16,185,129,0.7)'}
] },
options: { responsive:true, maintainAspectRatio:false, scales: { y: { beginAtZero:true } } }
});
new Chart(document.getElementById('usageChart'), {
type:'bar',
data: { labels: usageYears, datasets:[
{type:'line', label:'Created Repositories', data: repoCounts, borderColor:'rgba(255,99,132,0.8)', fill:false, yAxisID:'y1'},
{label:'Header Includes (New Repos)', data: byCreated, backgroundColor:'rgba(54,162,235,0.6)'},
{label:'Header Includes (Updated Repos)', data: byUpdated, backgroundColor:'rgba(75,192,192,0.6)'}
] },
options: { responsive:true, maintainAspectRatio:false, scales: { y: { beginAtZero:true }, y1: { beginAtZero:true, position:'right', grid: { drawOnChartArea:false } } } }
});
new Chart(document.getElementById('commitChart'), {
type:'bar',
data: { labels: commitVersions, datasets:[{ label:'Commit Count', data: commitCounts, backgroundColor:'rgba(255,99,132,0.6)' }] },
options: { responsive:true, maintainAspectRatio:false, scales: { y: { beginAtZero:true } } }
});
</script>
</body>
</html>
You can’t perform that action at this time.
