load issues on page load, linkable issue labels
This commit is contained in:
parent
b7ff2c01a5
commit
7142a3287d
1 changed files with 42 additions and 2 deletions
|
|
@ -1,10 +1,44 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// only load on open issues page for now
|
||||
var issueSelect = document.querySelector(".open-issues select");
|
||||
if (!issueSelect) {
|
||||
return;
|
||||
}
|
||||
|
||||
issueSelect.onchange = issueSelectHandler;
|
||||
|
||||
// load issues label when using back button
|
||||
window.addEventListener('popstate', loadIssues.bind(null, true));
|
||||
|
||||
// load issues label on page load
|
||||
loadIssues();
|
||||
}, false);
|
||||
|
||||
function issueSelectHandler(event) {
|
||||
var selectedOption = this.options[this.selectedIndex].value;
|
||||
function loadIssues(isPopState) {
|
||||
var params = new URLSearchParams(window.location.search);
|
||||
var label = params.get('label');
|
||||
|
||||
if (!label) {
|
||||
return;
|
||||
}
|
||||
|
||||
issueSelectHandler(label, isPopState);
|
||||
var issuesList = document.querySelector('.open-issues select');
|
||||
issuesList.value = label;
|
||||
}
|
||||
|
||||
function issueSelectHandler(event, isPopState) {
|
||||
if (event.target) {
|
||||
var selectedOption = this.options[this.selectedIndex].value;
|
||||
} else {
|
||||
// page loads will set the event as just the selected label from params
|
||||
var selectedOption = event;
|
||||
}
|
||||
|
||||
// don't set params on the back button
|
||||
if (!isPopState) {
|
||||
setIssueParams(selectedOption);
|
||||
}
|
||||
|
||||
// hide all elements first
|
||||
[].forEach.call(document.querySelectorAll('.issues-list li'), function (element) {
|
||||
|
|
@ -21,3 +55,9 @@ function issueSelectHandler(event) {
|
|||
});
|
||||
}
|
||||
|
||||
function setIssueParams(label) {
|
||||
var params = new URLSearchParams(window.location.search);
|
||||
params.set("label", label);
|
||||
var newUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}?${params.toString()}`;
|
||||
window.history.pushState({path:newUrl}, '', newUrl);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue