63 lines
2.3 KiB
JavaScript
63 lines
2.3 KiB
JavaScript
const issuesDiv = document.querySelector("#issues");
|
|
const issuesHolderDiv = document.querySelector("#issues-holder");
|
|
|
|
async function updateIssues() {
|
|
let fetchResult = await (await fetch('/relay/hub_issues')).json()
|
|
if (fetchResult.length > 0) {
|
|
issuesDiv.removeAttribute("hidden");
|
|
issuesHolderDiv.innerHTML = '';
|
|
fetchResult.forEach((issue) => {
|
|
let issueDiv = document.createElement("div");
|
|
issueDiv.classList.add("issue");
|
|
let detailsDiv = document.createElement("div");
|
|
detailsDiv.classList.add("issue-details");
|
|
issueDiv.append(detailsDiv);
|
|
|
|
let titleSpan = document.createElement("a");
|
|
titleSpan.href = issue.url;
|
|
titleSpan.classList.add("issue-title");
|
|
detailsDiv.append(titleSpan);
|
|
titleSpan.innerText = issue.title;
|
|
|
|
|
|
let descriptionSpan = document.createElement("span");
|
|
descriptionSpan.classList.add("issue-description");
|
|
detailsDiv.append(descriptionSpan);
|
|
let desc = () => {
|
|
let body = issue.body.replaceAll("\r", "").replaceAll("\n", " ");
|
|
if (body.length > 100) {
|
|
return body.slice(0, 100) + "..."
|
|
} else {
|
|
return body
|
|
}
|
|
};
|
|
descriptionSpan.innerText = desc();
|
|
|
|
let dataDiv = document.createElement("div");
|
|
dataDiv.classList.add("issue-data");
|
|
issueDiv.append(dataDiv);
|
|
|
|
let statusSpan = document.createElement("span");
|
|
statusSpan.classList.add("issue-status");
|
|
dataDiv.append(statusSpan);
|
|
statusSpan.innerText = issue.state;
|
|
switch (issue.state) {
|
|
case 'open':
|
|
statusSpan.style.color = "#ff8f8f";
|
|
break
|
|
case 'closed':
|
|
statusSpan.style.color = "#8fff91";
|
|
break
|
|
}
|
|
|
|
let timeSpan = document.createElement("span");
|
|
statusSpan.classList.add("issue-time");
|
|
dataDiv.append(timeSpan);
|
|
timeSpan.innerText = issue.updated_at;
|
|
|
|
issuesHolderDiv.append(issueDiv)
|
|
})
|
|
} else issuesDiv.setAttribute("hidden", "true");
|
|
}
|
|
|
|
window.updateLoop.push(updateIssues);
|