diff --git a/alfi.txt b/alfi.txt new file mode 100644 index 000000000..8ab9d8d2b --- /dev/null +++ b/alfi.txt @@ -0,0 +1 @@ +Week 1 Homework diff --git a/homework/index.js b/homework/index.js index d3a97645e..db6d101fe 100644 --- a/homework/index.js +++ b/homework/index.js @@ -31,14 +31,114 @@ } function main(url) { + fetchJSON(url, (err, data) => { const root = document.getElementById('root'); if (err) { createAndAppend('div', root, { text: err.message, class: 'alert-error' }); } else { - createAndAppend('pre', root, { text: JSON.stringify(data, null, 2) }); + const rootContainer = document.getElementById("root"); + const header = document.createElement("header"); + header.className = "header"; + const titleHeader = document.createElement("p"); + titleHeader.innerHTML = "HYF Repositories: "; + const repoSelector = document.createElement("select"); + repoSelector.className = "repo-selector"; + header.appendChild(titleHeader); + header.appendChild(repoSelector); + + const container = document.createElement("div"); + container.className = "container"; + + const containerLeft = document.createElement("div"); + containerLeft.className = "left-div"; + containerLeft.className += " whiteframe"; + + const containerRight = document.createElement("div"); + containerRight.className = "right-div"; + containerRight.className += " whiteframe"; + + const table = document.createElement("table"); + const tableBody = document.createElement("tbody"); + table.appendChild(tableBody); + containerLeft.appendChild(table); + const removeAllChildren = (parent) => { + while (parent.firstChild) { + parent.removeChild(parent.firstChild); + } + }; + const contributorHeader = document.createElement("p"); + contributorHeader.className = "contributor-header"; + contributorHeader.innerHTML = "Contributors"; + const contributorList = document.createElement("ul"); + contributorList.className = "contributor-list"; + containerRight.appendChild(contributorHeader); + containerRight.appendChild(contributorList); + + container.appendChild(containerLeft); + container.appendChild(containerRight); + rootContainer.appendChild(header); + rootContainer.appendChild(container); + + + const repos = document.querySelector(".repo-selector"); + data.sort(function (a, b) { + return a.name.localeCompare(b.name); + }); + + repos.innerHTML = data.map( + (repo, i) => `` + ).join(""); + + const tableRow = document.createElement("tr"); + tableBody.appendChild(tableRow); + + const makeRow = (label, content) => { + const tableRow = document.createElement("tr"); + tableBody.appendChild(tableRow); + const tableData = document.createElement("td"); + const repoName = document.createElement("td"); + tableRow.appendChild(tableData); + tableRow.appendChild(repoName); + tableData.innerHTML = label; + tableData.className = "label"; + repoName.innerHTML = content; + }; + const createContributorItems = (url) => { + fetch(url) + .then(response => response.json()) + .then(data => { + contributorList.innerHTML = data.map((item, i) => + `