Skip to content

Commit 3f7b0ee

Browse files
deploy: 8493f17
1 parent 0a7a4be commit 3f7b0ee

File tree

10 files changed

+1819
-1648
lines changed

10 files changed

+1819
-1648
lines changed

assets/css/main.css

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/css/main.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/javascript/contributing.js

Lines changed: 167 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
document.addEventListener('DOMContentLoaded', function() {
22
// only load on open issues page for now
3-
var issueSelect = document.querySelector(".open-issues select");
3+
var issueSelect = document.querySelector(".open-issues #label-filter");
44
if (!issueSelect) {
55
return;
66
}
77

8-
issueSelect.onchange = issueSelectHandler;
8+
issueSelect.onchange = function(event) {
9+
issueSelectHandler(event);
10+
applySorting();
11+
};
12+
13+
var sortSelect = document.querySelector(".open-issues #sort-order");
14+
if (sortSelect) {
15+
sortSelect.onchange = function() {
16+
applySorting();
17+
};
18+
}
919

1020
// load issues label when using back button
1121
window.addEventListener('popstate', loadIssues.bind(null, true));
@@ -17,27 +27,35 @@ document.addEventListener('DOMContentLoaded', function() {
1727
function loadIssues(isPopState) {
1828
var params = new URLSearchParams(window.location.search);
1929
var label = params.get('label');
30+
var sort = params.get('sort');
2031

21-
if (!label) {
22-
return;
32+
if (sort) {
33+
var sortSelect = document.querySelector('.open-issues #sort-order');
34+
if (sortSelect) {
35+
sortSelect.value = sort;
36+
}
37+
}
38+
39+
if (label) {
40+
issueSelectHandler(label, isPopState);
41+
var issuesList = document.querySelector('.open-issues #label-filter');
42+
issuesList.value = label;
2343
}
2444

25-
issueSelectHandler(label, isPopState);
26-
var issuesList = document.querySelector('.open-issues select');
27-
issuesList.value = label;
45+
applySorting();
2846
}
2947

3048
function issueSelectHandler(event, isPopState) {
3149
if (event.target) {
32-
var selectedOption = this.options[this.selectedIndex].value;
50+
var selectedOption = event.target.options[event.target.selectedIndex].value;
3351
} else {
3452
// page loads will set the event as just the selected label from params
3553
var selectedOption = event;
3654
}
3755

3856
// don't set params on the back button
3957
if (!isPopState) {
40-
setIssueParams(selectedOption);
58+
setParams();
4159
}
4260

4361
// hide all elements first
@@ -47,17 +65,150 @@ function issueSelectHandler(event, isPopState) {
4765
});
4866

4967
// show the selected options
50-
var selectedOption = selectedOption === 'all' ? 'li' : `.${selectedOption}`;
51-
var items = document.querySelectorAll(`.issues-list ${selectedOption}`);
68+
var selector = selectedOption === 'all' ? 'li' : '.' + selectedOption;
69+
var items = document.querySelectorAll('.issues-list ' + selector);
5270
items.forEach(function(item) {
53-
item.style.display = 'block'
71+
item.style.display = 'block';
5472
item.parentElement.closest('li').style.display = 'block';
5573
});
5674
}
5775

58-
function setIssueParams(label) {
76+
function getIssueDays(element) {
77+
return parseInt(element.dataset.daysOpen, 10) || 0;
78+
}
79+
80+
function applySorting() {
81+
var sortSelect = document.querySelector('.open-issues #sort-order');
82+
if (!sortSelect) return;
83+
84+
var sortOrder = sortSelect.value;
85+
if (sortOrder === 'default') {
86+
// Restore original order by reloading — but simpler to just not sort
87+
// We store original order on first run
88+
restoreOriginalOrder();
89+
setParams();
90+
return;
91+
}
92+
93+
// Sort issues within each library's issues-list
94+
var issuesLists = document.querySelectorAll('.issues-list');
95+
issuesLists.forEach(function(list) {
96+
var items = Array.from(list.querySelectorAll(':scope > li'));
97+
98+
// Store original order if not already stored
99+
if (!list.dataset.originalOrder) {
100+
list.dataset.originalOrder = 'stored';
101+
items.forEach(function(item, index) {
102+
item.dataset.originalIndex = index;
103+
});
104+
}
105+
106+
items.sort(function(a, b) {
107+
var daysA = getIssueDays(a);
108+
var daysB = getIssueDays(b);
109+
if (sortOrder === 'newest') {
110+
return daysA - daysB; // fewer days = newer = first
111+
} else {
112+
return daysB - daysA; // more days = older = first
113+
}
114+
});
115+
116+
// Re-append in sorted order
117+
items.forEach(function(item) {
118+
list.appendChild(item);
119+
});
120+
});
121+
122+
// Sort the library groups by their best matching issue
123+
var topList = document.getElementById('libraries-list');
124+
if (topList) {
125+
var libraryItems = Array.from(topList.querySelectorAll(':scope > li'));
126+
127+
if (!topList.dataset.originalOrder) {
128+
topList.dataset.originalOrder = 'stored';
129+
libraryItems.forEach(function(item, index) {
130+
item.dataset.originalIndex = index;
131+
});
132+
}
133+
134+
libraryItems.sort(function(a, b) {
135+
var bestA = getBestDays(a.querySelectorAll('.issues-list > li'), sortOrder);
136+
var bestB = getBestDays(b.querySelectorAll('.issues-list > li'), sortOrder);
137+
if (sortOrder === 'newest') {
138+
return bestA - bestB;
139+
} else {
140+
return bestB - bestA;
141+
}
142+
});
143+
144+
libraryItems.forEach(function(item) {
145+
topList.appendChild(item);
146+
});
147+
}
148+
149+
setParams();
150+
}
151+
152+
function getBestDays(issues, sortOrder) {
153+
var result = sortOrder === 'newest' ? Infinity : 0;
154+
issues.forEach(function(issue) {
155+
var days = getIssueDays(issue);
156+
if (sortOrder === 'newest') {
157+
result = Math.min(result, days);
158+
} else {
159+
result = Math.max(result, days);
160+
}
161+
});
162+
return result === Infinity ? 0 : result;
163+
}
164+
165+
function restoreOriginalOrder() {
166+
// Restore library-level order
167+
var topList = document.getElementById('libraries-list');
168+
if (topList && topList.dataset.originalOrder) {
169+
var libraryItems = Array.from(topList.querySelectorAll(':scope > li'));
170+
libraryItems.sort(function(a, b) {
171+
return (parseInt(a.dataset.originalIndex) || 0) - (parseInt(b.dataset.originalIndex) || 0);
172+
});
173+
libraryItems.forEach(function(item) {
174+
topList.appendChild(item);
175+
});
176+
}
177+
178+
// Restore issue-level order within each list
179+
var issuesLists = document.querySelectorAll('.issues-list');
180+
issuesLists.forEach(function(list) {
181+
var items = Array.from(list.querySelectorAll(':scope > li'));
182+
items.sort(function(a, b) {
183+
return (parseInt(a.dataset.originalIndex) || 0) - (parseInt(b.dataset.originalIndex) || 0);
184+
});
185+
items.forEach(function(item) {
186+
list.appendChild(item);
187+
});
188+
});
189+
}
190+
191+
function setParams() {
59192
var params = new URLSearchParams(window.location.search);
60-
params.set("label", label);
61-
var newUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}?${params.toString()}`;
62-
window.history.pushState({path:newUrl}, '', newUrl);
193+
194+
var labelSelect = document.querySelector('.open-issues #label-filter');
195+
if (labelSelect && labelSelect.value && labelSelect.value !== 'all') {
196+
params.set("label", labelSelect.value);
197+
} else {
198+
params.delete("label");
199+
}
200+
201+
var sortSelect = document.querySelector('.open-issues #sort-order');
202+
if (sortSelect && sortSelect.value && sortSelect.value !== 'default') {
203+
params.set("sort", sortSelect.value);
204+
} else {
205+
params.delete("sort");
206+
}
207+
208+
var query = params.toString();
209+
var newUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;
210+
if (query) {
211+
newUrl += '?' + query;
212+
}
213+
window.history.pushState({path: newUrl}, '', newUrl);
63214
}

contributing.html

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ <h3>Open Pull Requests</h3>
219219
<ul>
220220

221221

222-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_BLE/pull/200">typing overhaul + pre-commit updates (Open 600 days)</a></li>
222+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_BLE/pull/200">typing overhaul + pre-commit updates (Open 601 days)</a></li>
223223

224224

225225
</ul>
@@ -245,7 +245,7 @@ <h3>Open Pull Requests</h3>
245245

246246

247247

248-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_Layout/pull/87">changes for blit refactor to bitmaptools. (Open 995 days)</a></li>
248+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_Layout/pull/87">changes for blit refactor to bitmaptools. (Open 996 days)</a></li>
249249

250250

251251
</ul>
@@ -278,7 +278,7 @@ <h3>Open Pull Requests</h3>
278278
<ul>
279279

280280

281-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_FRAM/pull/34">allow setting FRAM size (Open 1324 days)</a></li>
281+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_FRAM/pull/34">allow setting FRAM size (Open 1325 days)</a></li>
282282

283283

284284
</ul>
@@ -297,7 +297,7 @@ <h3>Open Pull Requests</h3>
297297

298298

299299

300-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_GPS/pull/94">Added decoding of 'PGTOP' to get the status of the antenna extension … (Open 1201 days)</a></li>
300+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_GPS/pull/94">Added decoding of 'PGTOP' to get the status of the antenna extension … (Open 1202 days)</a></li>
301301

302302

303303
</ul>
@@ -308,7 +308,7 @@ <h3>Open Pull Requests</h3>
308308
<ul>
309309

310310

311-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_ILI9341/pull/43">Added madctl parameter to ILI9341 driver for hardware rotation and RGB/BGR control, enabling faster rendering and more flexibility (Open 230 days)</a></li>
311+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_ILI9341/pull/43">Added madctl parameter to ILI9341 driver for hardware rotation and RGB/BGR control, enabling faster rendering and more flexibility (Open 231 days)</a></li>
312312

313313

314314
</ul>
@@ -356,7 +356,7 @@ <h3>Open Pull Requests</h3>
356356
<ul>
357357

358358

359-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_MAX1704x/pull/6">pretty sure this should not be +1 (Open 1334 days)</a></li>
359+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_MAX1704x/pull/6">pretty sure this should not be +1 (Open 1335 days)</a></li>
360360

361361

362362
</ul>
@@ -452,7 +452,7 @@ <h3>Open Pull Requests</h3>
452452
<ul>
453453

454454

455-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/118">Simple async http requests (Open 1265 days)</a></li>
455+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/118">Simple async http requests (Open 1266 days)</a></li>
456456

457457

458458
</ul>
@@ -463,7 +463,7 @@ <h3>Open Pull Requests</h3>
463463
<ul>
464464

465465

466-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_TCA9548A/pull/56">Add support for PCA9547D devices (Open 466 days)</a></li>
466+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_TCA9548A/pull/56">Add support for PCA9547D devices (Open 467 days)</a></li>
467467

468468

469469
</ul>
@@ -474,7 +474,7 @@ <h3>Open Pull Requests</h3>
474474
<ul>
475475

476476

477-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_TCS34725/pull/46">speed up `color_raw` (Open 10 days)</a></li>
477+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_TCS34725/pull/46">speed up `color_raw` (Open 11 days)</a></li>
478478

479479

480480
</ul>
@@ -485,7 +485,7 @@ <h3>Open Pull Requests</h3>
485485
<ul>
486486

487487

488-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_TMP117/pull/17">Extended library for TMP116, TMP117, TMP119 (Open 698 days)</a></li>
488+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_TMP117/pull/17">Extended library for TMP116, TMP117, TMP119 (Open 699 days)</a></li>
489489

490490

491491
</ul>
@@ -496,7 +496,7 @@ <h3>Open Pull Requests</h3>
496496
<ul>
497497

498498

499-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_USB_Host_Mouse/pull/17">Fix import within Blinka (Open 64 days)</a></li>
499+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_USB_Host_Mouse/pull/17">Fix import within Blinka (Open 65 days)</a></li>
500500

501501

502502
</ul>

contributing/library-infrastructure-issues.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ <h2>Library Infrastructure Issues</h2>
410410
Library has new commits since last release over a month ago
411411
<ul>
412412

413-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_Register_SPI">https://github.com/adafruit/Adafruit_CircuitPython_Register_SPI (862 days)</a></li>
413+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_Register_SPI">https://github.com/adafruit/Adafruit_CircuitPython_Register_SPI (863 days)</a></li>
414414

415415
</ul>
416416
</li>
@@ -419,7 +419,7 @@ <h2>Library Infrastructure Issues</h2>
419419
Library has new commits since last release within the last month
420420
<ul>
421421

422-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_FlipClock">https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_FlipClock (11 days)</a></li>
422+
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_FlipClock">https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_FlipClock (12 days)</a></li>
423423

424424
</ul>
425425
</li>
@@ -430,8 +430,6 @@ <h2>Library Infrastructure Issues</h2>
430430

431431
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_MIDI">https://github.com/adafruit/Adafruit_CircuitPython_MIDI (2 days)</a></li>
432432

433-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_asyncio">https://github.com/adafruit/Adafruit_CircuitPython_asyncio (5 days)</a></li>
434-
435433
</ul>
436434
</li>
437435

@@ -453,8 +451,6 @@ <h2>Library Infrastructure Issues</h2>
453451

454452
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_ICN6211">https://github.com/adafruit/Adafruit_CircuitPython_ICN6211</a></li>
455453

456-
<li><a href="https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font">https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font</a></li>
457-
458454
</ul>
459455
</li>
460456

0 commit comments

Comments
 (0)