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