js code for getting results from fetch and parsing to display results w/ links.
Sat Oct 24 2020 19:02:43 GMT+0000 (Coordinated Universal Time)
Saved by @jlang #javascript
var repoNameEl = document.querySelector('#repo-name');
var issueContainerEl = document.querySelector('#issues-container');
var limitWarningEl = document.querySelector('#limit-warning');
var getRepoName = function () {
// Where is this value coming from?
// TODO: from the URL and returns a string.
var queryString = document.location.search;
//splits string into array.
var repoName = queryString.split('=')[1];//takes second element of array/repor name
if (repoName) {
repoNameEl.textContent = repoName;
getRepoIssues(repoName); //calls repo issues for that repo
} else {
// Under what condition will this run?
// TODO: Write your answer here
document.location.replace('./index.html');
}
};
var getRepoIssues = function (repo) {
var apiUrl = 'https://api.github.com/repos/' + repo + '/issues?direction=asc';
fetch(apiUrl).then(function (response) {
if (response.ok) {
response.json().then(function (data) {
displayIssues(data);
// What is this checking for? Under what condition will this be `true`?
// TODO: link is a response from the github there are more than 30 issues.
if (response.headers.get('Link')) {
displayWarning(repo);
}
});
} else {
document.location.replace('./index.html');
}
});
};
var displayIssues = function (issues) {
// Is there a difference between this and `!issues.length`?
// TODO: Write your answer here
if (issues.length === 0) {
issueContainerEl.textContent = 'This repo has no open issues!';
return;
}
for (var i = 0; i < issues.length; i++) {
var issueEl = document.createElement('a');
issueEl.classList = 'list-item flex-row justify-space-between align-center';
issueEl.setAttribute('href', issues[i].html_url);
issueEl.setAttribute('target', '_blank');
var titleEl = document.createElement('span');
titleEl.textContent = issues[i].title;
issueEl.appendChild(titleEl);
var typeEl = document.createElement('span');
if (issues[i].pull_request) {
typeEl.textContent = '(Pull request)';
} else {
typeEl.textContent = '(Issue)';
}
issueEl.appendChild(typeEl);
issueContainerEl.appendChild(issueEl);
}
};
// What does this function do?
// TODO: if 'link' is returned, this runs to create a link to the issues.
var displayWarning = function (repo) {
limitWarningEl.textContent = 'To see more than 30 issues, visit ';
var linkEl = document.createElement('a');
linkEl.textContent = 'GitHub.com';
linkEl.setAttribute('href', 'https://github.com/' + repo + '/issues');
linkEl.setAttribute('target', '_blank');
// Where does this appear on the page?
// TODO: appends it to the bottom of the page
limitWarningEl.appendChild(linkEl);
};
getRepoName();



Comments