From 887eba6b476c87f13022fcdd21c31b8245d69ea5 Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Sat, 26 Feb 2022 11:05:42 +0100 Subject: [PATCH 1/8] fetched projects and pull requests --- .gitignore | 4 ++++ code/index.html | 10 ++++++-- code/script.js | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..98c4e264 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ + + +code/secret.js + diff --git a/code/index.html b/code/index.html index 2fb5e0ae..6056d060 100644 --- a/code/index.html +++ b/code/index.html @@ -8,13 +8,19 @@ +

GitHub Tracker

Projects:

-
+
+
+
+
+ +
- + diff --git a/code/script.js b/code/script.js index e69de29b..5db977dd 100644 --- a/code/script.js +++ b/code/script.js @@ -0,0 +1,64 @@ +//DOM SELECTORS + +const projectsContainer = document.getElementById('projects') +const userContainer = document.getElementById('user-container') + +//APIS TO FETCH FROM +const username = 'Thereese' +let reponame +const API_URL = `https://api.github.com/users/${username}/repos` +const API_URL_PR = `https://api.github.com/repos/Technigo/${reponame}/pulls` +//let reponame + +const options = { + method: 'GET', + headers: { + Authorization: 'token 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' // you need to paste your token over here. + + } + } + console.log(API_TOKEN)// 'HERE_WILL_BE_YOUR_TOKEN' + +const getUser = () => { + fetch (`https://api.github.com/users/${username}`, options) + .then((res) => res.json()) + .then((data) => { + userContainer.innerHTML= + `

${data.login}

+ ` + + + console.log(data) + }) +} + +getUser() + +//fetch all repos,filter technigo +const getRepos = () => { + fetch (API_URL, options) + .then((res) => res.json()) + .then((data) => { + const filterTechnigoProjects = data.filter((repo) => repo.fork && repo.name.startsWith("project")) + filterTechnigoProjects.forEach(repo => { + console.log(repo.name) + projectsContainer.innerHTML+= + `

${repo.name}

` + }) + console.log(filterTechnigoProjects, "här") + getPullRequests(filterTechnigoProjects) + })} + +getRepos() + +const getPullRequests = (filterTechnigoProjects) => { + filterTechnigoProjects.forEach(repo => { + fetch (`https://api.github.com/repos/Technigo/${repo.name}/pulls`) + .then((res) => res.json()) + .then((data) => { + + console.log(data) + }) + }) +} + \ No newline at end of file From d077c424101187a7b1818962fe6b2b104e57b9f8 Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Sat, 26 Feb 2022 13:23:04 +0100 Subject: [PATCH 2/8] fixes authentification --- .gitignore | 3 --- code/index.html | 10 +++++----- code/script.js | 10 +++++----- code/style.css | 36 +++++++++++++++++++++++++++++++++++- 4 files changed, 45 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 98c4e264..143f9792 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1 @@ - - code/secret.js - diff --git a/code/index.html b/code/index.html index 6056d060..9eda1cf1 100644 --- a/code/index.html +++ b/code/index.html @@ -8,13 +8,13 @@ -
-

GitHub Tracker

-

Projects:

+
+

background image?

+
-
+
-
+
diff --git a/code/script.js b/code/script.js index 5db977dd..0f2ed2bb 100644 --- a/code/script.js +++ b/code/script.js @@ -13,11 +13,11 @@ const API_URL_PR = `https://api.github.com/repos/Technigo/${reponame}/pulls` const options = { method: 'GET', headers: { - Authorization: 'token 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' // you need to paste your token over here. + Authorization: 'API_TOKEN' } } - console.log(API_TOKEN)// 'HERE_WILL_BE_YOUR_TOKEN' + console.log(API_TOKEN) const getUser = () => { fetch (`https://api.github.com/users/${username}`, options) @@ -25,7 +25,7 @@ const getUser = () => { .then((data) => { userContainer.innerHTML= `

${data.login}

- ` + ` console.log(data) @@ -53,10 +53,10 @@ getRepos() const getPullRequests = (filterTechnigoProjects) => { filterTechnigoProjects.forEach(repo => { - fetch (`https://api.github.com/repos/Technigo/${repo.name}/pulls`) + fetch (`https://api.github.com/repos/Technigo/${repo.name}/pulls`, options) .then((res) => res.json()) .then((data) => { - + console.log(data) }) }) diff --git a/code/style.css b/code/style.css index 7c8ad447..d8bf6b52 100644 --- a/code/style.css +++ b/code/style.css @@ -1,3 +1,37 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} body { - background: #FFECE9; + background: #e2e7e8; +} + +header { + background:grey; +} + +main { + display: flex; + flex-direction: column; + justify-content: center; +} + +.user-container { + background:lightpink; + display: flex; + flex-direction: column; + align-items: center; +} + +.user-image { + border-radius: 100%; + width: 20%; +} + +.projects { + color: green; + display: flex; + flex-direction: column; + align-items: center; } \ No newline at end of file From e7bebfca471c00dbc14348edd42b0cad1d719e0c Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Sun, 27 Feb 2022 01:29:49 +0100 Subject: [PATCH 3/8] update css, html, js plus picture --- code/bakgrund.jpeg | Bin 0 -> 29188 bytes code/index.html | 6 +++--- code/script.js | 41 +++++++++++++++++++++++++++++++------ code/style.css | 49 ++++++++++++++++++++++++++++++++++++--------- 4 files changed, 78 insertions(+), 18 deletions(-) create mode 100644 code/bakgrund.jpeg diff --git a/code/bakgrund.jpeg b/code/bakgrund.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..65a6467e752f699a71941671546eb268e3e9966c GIT binary patch literal 29188 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 literal 0 HcmV?d00001 diff --git a/code/index.html b/code/index.html index 9eda1cf1..921cae8e 100644 --- a/code/index.html +++ b/code/index.html @@ -6,13 +6,13 @@ Project GitHub Tracker + -
-

background image?

+
+
-
diff --git a/code/script.js b/code/script.js index 0f2ed2bb..ba4f1299 100644 --- a/code/script.js +++ b/code/script.js @@ -24,7 +24,7 @@ const getUser = () => { .then((res) => res.json()) .then((data) => { userContainer.innerHTML= - `

${data.login}

+ `

${data.login}

` @@ -32,7 +32,8 @@ const getUser = () => { }) } -getUser() +//getUser() + //fetch all repos,filter technigo const getRepos = () => { @@ -42,8 +43,15 @@ const getRepos = () => { const filterTechnigoProjects = data.filter((repo) => repo.fork && repo.name.startsWith("project")) filterTechnigoProjects.forEach(repo => { console.log(repo.name) + let projectID = repo.id projectsContainer.innerHTML+= - `

${repo.name}

` + `
+

${repo.name}

+

Default branch: ${repo.default_branch}

+

Latest push: ${new Date(repo.pushed_at).toDateString()}

+
+ ` + }) console.log(filterTechnigoProjects, "här") getPullRequests(filterTechnigoProjects) @@ -53,12 +61,33 @@ getRepos() const getPullRequests = (filterTechnigoProjects) => { filterTechnigoProjects.forEach(repo => { - fetch (`https://api.github.com/repos/Technigo/${repo.name}/pulls`, options) + fetch (`https://api.github.com/repos/Technigo/${repo.name}/pulls?per_page=100`, options) .then((res) => res.json()) .then((data) => { + console.log(data, 'pr') + const filterMyPull = data.find((pull) => pull.user.login === repo.owner.login) + if (filterMyPull) { + getCommits(filterMyPull.commits_url, repo.name) + } else { + projectsContainer.innerHTML += + + `

No PR made

` - console.log(data) + + } + + + console.log(filterMyPull) }) }) } - \ No newline at end of file + +const getCommits = (URL, repoName) => { + fetch(URL, options) + .then ((res) => res.json()) + .then (data => { + projectsContainer.innerHTML += + `

Number of commits: ${data.length}

` + }) +} + getUser() \ No newline at end of file diff --git a/code/style.css b/code/style.css index d8bf6b52..34ce68c4 100644 --- a/code/style.css +++ b/code/style.css @@ -5,12 +5,25 @@ } body { background: #e2e7e8; + font-family: "Oxygen", sans-serif; } -header { - background:grey; +.hero { + background-image: url(./bakgrund.jpeg) ; + background-position: left bottom; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; + position: relative; + height: 300px; + width: 100%; + display: flex; + justify-content: center; + align-items: flex-end; + padding: 5%; } + main { display: flex; flex-direction: column; @@ -18,20 +31,38 @@ main { } .user-container { - background:lightpink; display: flex; - flex-direction: column; - align-items: center; + flex-direction: row; + align-items: baseline; + justify-content: flex-end; } .user-image { border-radius: 100%; - width: 20%; + width: 30%; + margin-left: 20px; } .projects { color: green; - display: flex; - flex-direction: column; + display: inline-grid; + grid-template-columns: 1fr; + justify-items: center; + + +} +repocard { + display: block; align-items: center; -} \ No newline at end of file + margin: 20, 20; + +} +.repocard a { + text-decoration: none; + color: gray +} + +a:hover { + color: darkgreen; +} + From 8e6cdff68d6a042a8f88734d16ca871c15355940 Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Mon, 28 Feb 2022 00:40:14 +0100 Subject: [PATCH 4/8] new code to all files --- code/chart.js | 21 +++++++++++ code/index.html | 19 ++++++---- code/script.js | 94 ++++++++++++++++++++++--------------------------- code/style.css | 78 ++++++++++++++++++++++++++++++---------- 4 files changed, 137 insertions(+), 75 deletions(-) diff --git a/code/chart.js b/code/chart.js index 92e85a30..217ae8a9 100644 --- a/code/chart.js +++ b/code/chart.js @@ -2,3 +2,24 @@ const ctx = document.getElementById('chart').getContext('2d') //"Draw" the chart here 👇 + +const drawChart = (amount) => { + const config = { + type: "doughnut", + data: { + labels: ["Completed projects", "Projects left to build"], + datasets: [{ + label: "My Technigo projects", + data: [amount, 19 - amount], + backgroundColor: ["rgb(7,145,96)", "rgba(90, 112, 55, 0.1)"], + borderColor: ["rgb(0,0,0)"], + borderWidth: 0.3, + hoverOffset: 4, + }, + ], + }, + }; + +const projectsChart = new Chart(ctx, config); +} + \ No newline at end of file diff --git a/code/index.html b/code/index.html index 921cae8e..1823957b 100644 --- a/code/index.html +++ b/code/index.html @@ -7,19 +7,26 @@ Project GitHub Tracker + -
-
+
+

| github tracker

+
+
+ +
+
-
- +
+
+ +
+
- - diff --git a/code/script.js b/code/script.js index ba4f1299..82600e90 100644 --- a/code/script.js +++ b/code/script.js @@ -2,92 +2,84 @@ const projectsContainer = document.getElementById('projects') const userContainer = document.getElementById('user-container') +const userInfo = document.getElementById('user-info') +const userImg = document.getElementById('user-img') //APIS TO FETCH FROM const username = 'Thereese' let reponame const API_URL = `https://api.github.com/users/${username}/repos` const API_URL_PR = `https://api.github.com/repos/Technigo/${reponame}/pulls` -//let reponame + const options = { - method: 'GET', + method: 'GET', headers: { - Authorization: 'API_TOKEN' - - } + Authorization: 'API_TOKEN' } - console.log(API_TOKEN) +} + +//FETCH USERNAME AND PROFILEPIC const getUser = () => { - fetch (`https://api.github.com/users/${username}`, options) + fetch (`https://api.github.com/users/${username}`, options) .then((res) => res.json()) .then((data) => { - userContainer.innerHTML= - `

${data.login}

- ` - - - console.log(data) + userImg.innerHTML= + `` + userInfo.innerHTML= + `

${data.name}

+

| ${data.login}

` }) } -//getUser() - -//fetch all repos,filter technigo +//FETCH REPOS AND FILTER TECHNIGOPROJECTS. DATA TO PROJECTCONTAINER. const getRepos = () => { - fetch (API_URL, options) + fetch (API_URL, options) .then((res) => res.json()) .then((data) => { - const filterTechnigoProjects = data.filter((repo) => repo.fork && repo.name.startsWith("project")) - filterTechnigoProjects.forEach(repo => { - console.log(repo.name) - let projectID = repo.id - projectsContainer.innerHTML+= - `
-

${repo.name}

-

Default branch: ${repo.default_branch}

-

Latest push: ${new Date(repo.pushed_at).toDateString()}

-
- ` + const filterTechnigoProjects = data.filter((repo) => repo.fork && repo.name.startsWith("project")) + filterTechnigoProjects.forEach(repo => { + let projectID = repo.id + projectsContainer.innerHTML+= + `
+

${repo.name}

+

Default branch: ${repo.default_branch}

+

Latest push: ${new Date(repo.pushed_at).toDateString()}

+

Commits:

+
` }) - console.log(filterTechnigoProjects, "här") getPullRequests(filterTechnigoProjects) - })} + drawChart(filterTechnigoProjects.length) + }) +} getRepos() - +//FETCH PULLREQUESTS, SORT AND RETURN DATA OR COMMENT const getPullRequests = (filterTechnigoProjects) => { - filterTechnigoProjects.forEach(repo => { - fetch (`https://api.github.com/repos/Technigo/${repo.name}/pulls?per_page=100`, options) - .then((res) => res.json()) - .then((data) => { - console.log(data, 'pr') + filterTechnigoProjects.forEach(repo => { + fetch (`https://api.github.com/repos/Technigo/${repo.name}/pulls?per_page=100`, options) + .then((res) => res.json()) + .then((data) => { const filterMyPull = data.find((pull) => pull.user.login === repo.owner.login) if (filterMyPull) { - getCommits(filterMyPull.commits_url, repo.name) + getCommits(filterMyPull.commits_url, repo.name) } else { - projectsContainer.innerHTML += - - `

No PR made

` - - + document.getElementById(`commit-${repo.name}`).innerHTML = + '

No pull requests made

' } - - - console.log(filterMyPull) - }) - }) + }) + }) } const getCommits = (URL, repoName) => { - fetch(URL, options) + fetch(URL, options) .then ((res) => res.json()) .then (data => { - projectsContainer.innerHTML += - `

Number of commits: ${data.length}

` + document.getElementById(`commit-${repoName}`).innerHTML += data.length; }) } - getUser() \ No newline at end of file +getUser() + \ No newline at end of file diff --git a/code/style.css b/code/style.css index 34ce68c4..cd55e085 100644 --- a/code/style.css +++ b/code/style.css @@ -8,22 +8,23 @@ body { font-family: "Oxygen", sans-serif; } -.hero { +.title { background-image: url(./bakgrund.jpeg) ; background-position: left bottom; background-repeat: no-repeat; background-size: cover; background-attachment: fixed; position: relative; - height: 300px; + height: 220px; width: 100%; - display: flex; - justify-content: center; - align-items: flex-end; + display: grid; + justify-content: center; + align-items: center; padding: 5%; + font-size: 1.4rem; + text-align: center; } - main { display: flex; flex-direction: column; @@ -31,32 +32,48 @@ main { } .user-container { - display: flex; - flex-direction: row; - align-items: baseline; - justify-content: flex-end; + display: grid; + grid-template-columns: 1fr; + justify-content: center; + background-color: rgba(148,182,165,0.8); } .user-image { + max-width: 20vw; border-radius: 100%; - width: 30%; - margin-left: 20px; + padding-top: 20px; +} + +.user-img { + display: flex; + justify-content: center; + padding-top: 10px; +} + +.user-info { + display: grid; + padding-bottom: 40px; + justify-items: center; } .projects { - color: green; + color: black; display: inline-grid; grid-template-columns: 1fr; justify-items: center; - - + padding: 5%; } -repocard { + +.repocard { display: block; align-items: center; - margin: 20, 20; - + text-align: center; + padding: 20px; + margin: 10px; + width: 100%; + background-color: rgba(148,182,165,0.1); } + .repocard a { text-decoration: none; color: gray @@ -66,3 +83,28 @@ a:hover { color: darkgreen; } +.chart-wrapper { + display: grid; + justify-items: center; + width: 100%; + background-color: rgba(148,182,165,0.5); +} + +.chart-container { + display: grid; + justify-items: center; + padding: 5%; + max-width: 450px; +} + + +@media (min-width: 769px) { +.projects { + grid-template-columns: 1fr 1fr; + column-gap: 25px; +} + +.title { +font-size: 1.9rem; +} +} \ No newline at end of file From aa1b78ecb256062de02c4ab755036c732bb3d4ca Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Mon, 28 Feb 2022 08:45:38 +0100 Subject: [PATCH 5/8] changed readme-file --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1613a3b0..7c033fb9 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ # GitHub Tracker -Replace this readme with your own information about your project. - -Start by briefly describing the assignment in a sentence or two. Keep it short and to the point. +A really tricky project, happy that everything is working! With more time I would have worked +more with the styling and added some more fetched information, maybe a different kind of chart. ## The problem -Describe how you approached to problem, and what tools and techniques you used to solve it. How did you plan? What technologies did you use? If you had more time, what would be next? +Create a github tracker fetching information from my GitHub-profile. ## View it live -Every project should be deployed somewhere. Be sure to include the link to the deployed project so that the viewer can click around and see what it's all about. + From d7da3c51e65cbddc3c64e21b3d73817c0a9f7a59 Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Mon, 28 Feb 2022 08:52:17 +0100 Subject: [PATCH 6/8] fixed broken link --- code/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/script.js b/code/script.js index 82600e90..d4e46101 100644 --- a/code/script.js +++ b/code/script.js @@ -44,7 +44,7 @@ const getRepos = () => { let projectID = repo.id projectsContainer.innerHTML+= `
-

${repo.name}

+

${repo.name}

Default branch: ${repo.default_branch}

Latest push: ${new Date(repo.pushed_at).toDateString()}

Commits:

From 413164178d27261467c0260d8da58295ac1c1dfd Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Mon, 28 Feb 2022 08:56:09 +0100 Subject: [PATCH 7/8] updated readme-file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c033fb9..9822b44a 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,4 @@ Create a github tracker fetching information from my GitHub-profile. ## View it live - +https://affectionate-williams-5dc753.netlify.app From a2dca4c802e173b3cac47152c6106ad755253f8e Mon Sep 17 00:00:00 2001 From: Therese Nyman Date: Sun, 1 May 2022 19:48:14 +0200 Subject: [PATCH 8/8] new netlify-link --- .DS_Store | Bin 0 -> 6148 bytes README.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..01625912d654f181b4393c80d202bb2d9e546436 GIT binary patch literal 6148 zcmeH~F^LWILo3EBZM)-ySy`wq8Z(Te9ES6D!Ft zGBE%h|QedILw&$at|7ZGN^Z%knsT7a` zZ>E3^r?1nIFO_HO%j)FR3$i9#Co44l2!sp@Qs7?| Fcmh=m5}*J8 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 9822b44a..b78841a4 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,4 @@ Create a github tracker fetching information from my GitHub-profile. ## View it live -https://affectionate-williams-5dc753.netlify.app +https://thereese-githubtracker.netlify.app