From 3c5060765407dd6bf93d80a3bd97b820f6bf74fb Mon Sep 17 00:00:00 2001 From: Emelie Date: Tue, 28 Sep 2021 11:42:09 +0200 Subject: [PATCH 1/8] first api fetch and doughnut chart. --- code/TO DO-LIST | 0 code/chart.js | 24 +++++++++++++++++++++++- code/index.html | 35 ++++++++++++++++++----------------- code/script.js | 22 ++++++++++++++++++++++ code/style.css | 4 ++-- 5 files changed, 65 insertions(+), 20 deletions(-) create mode 100644 code/TO DO-LIST diff --git a/code/TO DO-LIST b/code/TO DO-LIST new file mode 100644 index 00000000..e69de29b diff --git a/code/chart.js b/code/chart.js index 92e85a30..f3a572b1 100644 --- a/code/chart.js +++ b/code/chart.js @@ -1,4 +1,26 @@ //DOM-selector for the canvas 👇 -const ctx = document.getElementById('chart').getContext('2d') +const ctx = document.getElementById("chart").getContext("2d") //"Draw" the chart here 👇 + +const drawChart = (amount) => { + const config = { + type: "doughnut", + data: { + labels: ["finished projects", "projects left"], + datasets: [ + { + label: "My First Dataset", + data: [amount, 20 - 4], + backgroundColor: [ + "rgb(255, 99, 132)", + "rgb(54, 162, 235)", + "rgb(255, 205, 86)", + ], + hoverOffset: 4, + }, + ], + }, + } + const myChart = new Chart(ctx, config) +} diff --git a/code/index.html b/code/index.html index 2fb5e0ae..4c2c2ed7 100644 --- a/code/index.html +++ b/code/index.html @@ -1,21 +1,22 @@ - - - - - Project GitHub Tracker - - - -

GitHub Tracker

-

Projects:

-
+ + + + + Project GitHub Tracker + + + + +

GitHub Tracker

+

Projects:

+
- - + +
- - - - \ No newline at end of file + + + + diff --git a/code/script.js b/code/script.js index e69de29b..c50afcf6 100644 --- a/code/script.js +++ b/code/script.js @@ -0,0 +1,22 @@ +const USER = "waliem" +const REPOS_URL = `https://api.github.com/users/waliem/repos` + +const projectsContainer = document.getElementById("projects") + +const getRepos = () => { + fetch(REPOS_URL) + .then((response) => response.json()) + .then((data) => { + console.log(data) + // data.forEach((repo) => console.log(repo.name)) + const forkedRepos = data.filter( + (repo) => repo.fork && repo.name.startsWith("project-") + ) + forkedRepos.forEach( + (repo) => (projectsContainer.innerHTML += `

${repo.name}

`) + ) + drawChart(forkedRepos.length) + }) +} + +getRepos() diff --git a/code/style.css b/code/style.css index 7c8ad447..cdd04595 100644 --- a/code/style.css +++ b/code/style.css @@ -1,3 +1,3 @@ body { - background: #FFECE9; -} \ No newline at end of file + background: whitesmoke; +} From ccbd122f74e028dcca3ea7f8a79a89cc0ae77fa4 Mon Sep 17 00:00:00 2001 From: Emelie Date: Tue, 28 Sep 2021 21:56:34 +0200 Subject: [PATCH 2/8] added getUserInfo and getPullRequest fetches and functions working on making them fetch the correct data --- code/chart.js | 2 +- code/index.html | 2 ++ code/script.js | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/code/chart.js b/code/chart.js index f3a572b1..e4f95585 100644 --- a/code/chart.js +++ b/code/chart.js @@ -11,7 +11,7 @@ const drawChart = (amount) => { datasets: [ { label: "My First Dataset", - data: [amount, 20 - 4], + data: [amount, 20 - 6], backgroundColor: [ "rgb(255, 99, 132)", "rgb(54, 162, 235)", diff --git a/code/index.html b/code/index.html index 4c2c2ed7..9ec749f0 100644 --- a/code/index.html +++ b/code/index.html @@ -13,6 +13,8 @@

GitHub Tracker

Projects:

+
+
diff --git a/code/script.js b/code/script.js index c50afcf6..0429ba4f 100644 --- a/code/script.js +++ b/code/script.js @@ -1,22 +1,65 @@ const USER = "waliem" -const REPOS_URL = `https://api.github.com/users/waliem/repos` +const REPOS_URL = `https://api.github.com/users/${USER}/repos` +const USER_INFO_URL = `https://api.github.com/users/${USER}` +// let repoName = repo.name const projectsContainer = document.getElementById("projects") +const userContainer = document.getElementById("user-info") + +const getUserInfo = () => { + fetch(USER_INFO_URL) + .then((response) => response.json()) + .then((data) => { + console.log("USER DATA HERE", data) + userContainer.html += `

User name: ${data.name}

+ User profile picture` + }) +} const getRepos = () => { fetch(REPOS_URL) .then((response) => response.json()) .then((data) => { console.log(data) - // data.forEach((repo) => console.log(repo.name)) - const forkedRepos = data.filter( + let forkedRepos = data.filter( (repo) => repo.fork && repo.name.startsWith("project-") ) forkedRepos.forEach( (repo) => (projectsContainer.innerHTML += `

${repo.name}

`) ) drawChart(forkedRepos.length) + getPullRequests(forkedRepos) }) } +//Remember to pass along your filtered repos as an argument when +//you are calling this function + +const getPullRequests = (forkedRepos) => { + forkedRepos.forEach((repo) => { + fetch( + `https://api.github.com/repos/technigo/${repo.name}/pulls?per_page=100` + ) + .then((res) => res.json()) + .then((data) => { + const myPr = data.filter((pull) => pull.user.login === repo.owner.login) + console.log("MY PRs", myPr) + + fetch(`https://api.github.com/repos/${USER}/${repo.name}/commits`) + .then((res) => res.json()) + .then((data) => { + console.log(data) + const filterCommits = data.filter( + (repo = repo.commit.committer.name === "Emelie") + ) + }) + + //2. Now you're able to get the commits for each repo by using + // the commits_url as an argument to call another function + //3. You can also get the comments for each PR by calling + // another function with the review_comments_url as argument + }) + }) +} +getUserInfo() getRepos() From 004d528188df9fba8c388e41e4c2615c132c6e58 Mon Sep 17 00:00:00 2001 From: Emelie Date: Wed, 29 Sep 2021 18:13:32 +0200 Subject: [PATCH 3/8] structured the js fetches for the blue requirements and started with the CSS styling --- code/index.html | 8 +++---- code/script.js | 63 +++++++++++++++++++++++++++++-------------------- code/style.css | 48 ++++++++++++++++++++++++++++++++++++- 3 files changed, 89 insertions(+), 30 deletions(-) diff --git a/code/index.html b/code/index.html index 9ec749f0..d00895c1 100644 --- a/code/index.html +++ b/code/index.html @@ -9,12 +9,12 @@ -

GitHub Tracker

-

Projects:

-
- +

My GitHub Tracker

+

Projects:

+
+
diff --git a/code/script.js b/code/script.js index 0429ba4f..30515b54 100644 --- a/code/script.js +++ b/code/script.js @@ -10,9 +10,11 @@ const getUserInfo = () => { fetch(USER_INFO_URL) .then((response) => response.json()) .then((data) => { - console.log("USER DATA HERE", data) - userContainer.html += `

User name: ${data.name}

- User profile picture` + console.log("USER DATA", data) + userContainer.innerHTML += ` + User profile picture +

Emelie Lindblom

+

Username: ${data.login}

` }) } @@ -20,46 +22,57 @@ const getRepos = () => { fetch(REPOS_URL) .then((response) => response.json()) .then((data) => { - console.log(data) + console.log("MY REPOS", data) let forkedRepos = data.filter( (repo) => repo.fork && repo.name.startsWith("project-") ) forkedRepos.forEach( - (repo) => (projectsContainer.innerHTML += `

${repo.name}

`) + (repo) => + (projectsContainer.innerHTML += ` +
+ ${repo.name}

Default branch: ${ + repo.default_branch + }

+

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

+

Commits:

`) ) + drawChart(forkedRepos.length) getPullRequests(forkedRepos) }) } -//Remember to pass along your filtered repos as an argument when -//you are calling this function - const getPullRequests = (forkedRepos) => { forkedRepos.forEach((repo) => { - fetch( - `https://api.github.com/repos/technigo/${repo.name}/pulls?per_page=100` - ) + const PULLS_URL = `https://api.github.com/repos/technigo/${repo.name}/pulls?per_page=100` + + fetch(PULLS_URL) .then((res) => res.json()) .then((data) => { - const myPr = data.filter((pull) => pull.user.login === repo.owner.login) - console.log("MY PRs", myPr) + // console.log(`Mother repo for project ${repo.name}`, data) - fetch(`https://api.github.com/repos/${USER}/${repo.name}/commits`) - .then((res) => res.json()) - .then((data) => { - console.log(data) - const filterCommits = data.filter( - (repo = repo.commit.committer.name === "Emelie") - ) - }) + const myPulls = data.find( + (pull) => pull.user.login === repo.owner.login + ) + // console.log(myPulls) - //2. Now you're able to get the commits for each repo by using - // the commits_url as an argument to call another function - //3. You can also get the comments for each PR by calling - // another function with the review_comments_url as argument + getMyCommits(myPulls.commits_url, repo.name) + + // fetch(`https://api.github.com/repos/${USER}/${repo.name}/commits`) + // .then((res) => res.json()) + // .then((data) => { }) }) } + +const getMyCommits = (myCommitsUrl, myRepoName) => { + fetch(myCommitsUrl) + .then((res) => res.json()) + .then((data) => { + document.getElementById(`commit-${myRepoName}`).innerHTML += data.length + console.log("my commits!", data) + }) +} + getUserInfo() getRepos() diff --git a/code/style.css b/code/style.css index cdd04595..93cf5b8d 100644 --- a/code/style.css +++ b/code/style.css @@ -1,3 +1,49 @@ body { - background: whitesmoke; + background: #222222; + display: flex; + flex-direction: column; + color: #e9e1ce; +} + +h1 { + align-self: center; +} + +#user-info { + display: flex; + column-gap: 2em; +} + +#profile-name { + flex-direction: column; +} + +img { + border-radius: 50%; + width: 25%; +} + +#projects { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + column-gap: 1rem; + row-gap: 1rem; + margin: 10px 0px 20px 0px; +} + +.project-box { + border: 1px solid black; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + padding: 10px 0px 0px 20px; +} + +a { + font-size: 25px; + color: #e9e1ce; + text-decoration: none; +} + +#chart { + width: 70%; } From 2e44d866c2ef207f3f1a232ea1bd230cc37d5338 Mon Sep 17 00:00:00 2001 From: Emelie Date: Fri, 1 Oct 2021 16:45:29 +0200 Subject: [PATCH 4/8] changed styling and colors, added boxshadows and github icons etc. --- .DS_Store | Bin 0 -> 6148 bytes code/.DS_Store | Bin 0 -> 6148 bytes code/Octocat.png | Bin 0 -> 2131769 bytes code/chart.js | 8 +--- code/index.html | 22 +++++++-- code/script.js | 23 ++++----- code/style.css | 118 +++++++++++++++++++++++++++++++++++++++++++---- 7 files changed, 138 insertions(+), 33 deletions(-) create mode 100644 .DS_Store create mode 100644 code/.DS_Store create mode 100644 code/Octocat.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b3bf82c8b29652c2274b6b4eb50fbd448247639b GIT binary patch literal 6148 zcmeHK&2G~`5S~o~tWzO!K%z%qxK&kJXr&&I+>jo6Kti~J14XS}N7Rz*trCZ*4MBbl z`VxH(o`A=JZ+5p4{kxW^nvrI|+1Z)3_gib%Lqw`O%2tWmM5LjNjR4Ip!sDzrq~SeH zpyD}p3UiniCPkko6q$bpc<-8YNQN@%U)#SejII2!Viz)tOUJ_#zt6wYlOi8hoz8F7 zSZF?a{6y=PZar;%iI2=Uu99jr>?VWH+ducLRU)x*`U$1XWm&3{CS_k&4jp;PdFJ7*` z**Q2qJ)3-={`l$kLg7QT^33BUoWqzc@LN163sZiDkK+USK-;uMJ$eURp<~LfQFVc+ zf2l%OL>LeTgn{{Gz#oNraeiM>-b@$}2L2NRd_IIw#>ivs&>kIVYzYA5-$*O4?XN#D zWCt+vSUZFVqFgG_r7B-yC|@}!myYqs$JY*BIw|{P%;TS|e1)QX;h{nsPAYOJtuP=A zTxDRvb=!RZZ{J=2UrmypFdz&(Cr!9ThI;9WL-R#}D*I)1x_1q*Q z)9Hw=MCD#cPLjFjCie`JOaPeXx_<)H0F+q-OBGfHCeNj8*^VC(p0P28SRlq4cj#|< z>wqet3j8(&3Rk6U;GePvc%RjU#eo!+2$Rdh^Ei;g@kv zizAscvY#`N_8BSW9`b;CVa$T{r0f(KvCN!C%wU0)op+gA|2cgc&Yvxy!d%Dn9dQSX z$e42<+sHYMoucK8?QS=~JsBgiXPD;Z5uLL0RB^?Xt(akttCO{TXQn+Y>A&C#=aw@; zE+2E8n@1QcYB;rTu*Y7W@t9*&(B;|!v{=`1i8eau=CTphUNWk&tM(@q;F&E}t~%6O z6;K6Kfe!^_e+XCvLyw6=yLGU#R{&y(!`9fAUjyL;9z&0bLq4GyMkbn-)LIo#1vVAfb={hr{}-R%|2Ik6Qw3Ckf2Dva zwK}aPQ}So)R&sLI1}xVsV&a!Lv=mnUIJONrijP>V@mU}ZV(2k($Pt?U2v`}kQU!ig Ffp-d)!0P}2 literal 0 HcmV?d00001 diff --git a/code/Octocat.png b/code/Octocat.png new file mode 100644 index 0000000000000000000000000000000000000000..91057da49614551224149b182ae0fc2d843e9368 GIT binary patch literal 2131769 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 literal 0 HcmV?d00001 diff --git a/code/chart.js b/code/chart.js index e4f95585..6f63cca9 100644 --- a/code/chart.js +++ b/code/chart.js @@ -7,16 +7,12 @@ const drawChart = (amount) => { const config = { type: "doughnut", data: { - labels: ["finished projects", "projects left"], + labels: ["Finished projects", "Projects left"], datasets: [ { label: "My First Dataset", data: [amount, 20 - 6], - backgroundColor: [ - "rgb(255, 99, 132)", - "rgb(54, 162, 235)", - "rgb(255, 205, 86)", - ], + backgroundColor: ["rgb(255, 92, 88)", "rgb(242, 141, 138)"], hoverOffset: 4, }, ], diff --git a/code/index.html b/code/index.html index d00895c1..413cc708 100644 --- a/code/index.html +++ b/code/index.html @@ -7,16 +7,30 @@ Project GitHub Tracker + + + + + -

My GitHub Tracker

+
+

GITHUB TRACKER

+ +
+
-

Projects:

- -
+
diff --git a/code/script.js b/code/script.js index 30515b54..a402ce07 100644 --- a/code/script.js +++ b/code/script.js @@ -1,7 +1,6 @@ const USER = "waliem" const REPOS_URL = `https://api.github.com/users/${USER}/repos` const USER_INFO_URL = `https://api.github.com/users/${USER}` -// let repoName = repo.name const projectsContainer = document.getElementById("projects") const userContainer = document.getElementById("user-info") @@ -12,9 +11,8 @@ const getUserInfo = () => { .then((data) => { console.log("USER DATA", data) userContainer.innerHTML += ` - User profile picture -

Emelie Lindblom

-

Username: ${data.login}

` + User profile picture +

${data.login}

Front end developer student

` }) } @@ -34,7 +32,7 @@ const getRepos = () => { repo.default_branch }

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

-

Commits:

`) +

Commits:

`) ) drawChart(forkedRepos.length) @@ -49,18 +47,17 @@ const getPullRequests = (forkedRepos) => { fetch(PULLS_URL) .then((res) => res.json()) .then((data) => { - // console.log(`Mother repo for project ${repo.name}`, data) - const myPulls = data.find( (pull) => pull.user.login === repo.owner.login ) - // console.log(myPulls) - - getMyCommits(myPulls.commits_url, repo.name) - // fetch(`https://api.github.com/repos/${USER}/${repo.name}/commits`) - // .then((res) => res.json()) - // .then((data) => { + if (myPulls) { + getMyCommits(myPulls.commits_url, repo.name) + } else { + document.getElementById( + `commit-${repo.name}` + ).innerHTML = `No pull request or commits done` + } }) }) } diff --git a/code/style.css b/code/style.css index 93cf5b8d..168f50fd 100644 --- a/code/style.css +++ b/code/style.css @@ -1,49 +1,147 @@ body { - background: #222222; + background: #f8e2cf; display: flex; flex-direction: column; - color: #e9e1ce; + color: black; + font-family: "Montserrat", sans-serif; + /* background-size: cover; */ +} + +header { + display: flex; + justify-content: center; } h1 { align-self: center; + font-size: 25px; } #user-info { display: flex; - column-gap: 2em; + justify-content: center; } #profile-name { flex-direction: column; + margin-left: 10px; } -img { +.profile-img { border-radius: 50%; width: 25%; + height: 25%; + align-self: center; +} + +.github-icon { + width: 20%; + height: auto; } #projects { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + /* opacity: 60%; */ column-gap: 1rem; row-gap: 1rem; - margin: 10px 0px 20px 0px; + margin: 30px 0px 20px 0px; } .project-box { - border: 1px solid black; + background: #ff5c58; border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; - padding: 10px 0px 0px 20px; + padding: 10px 0px 10px 20px; + box-shadow: 10px 10px 5px rgb(155, 155, 155); + -moz-box-shadow: 10px 10px 5px rgb(155, 155, 155); + -webkit-box-shadow: 10px 10px 5px rgb(155, 155, 155); + -khtml-box-shadow: 10px 10px 5px rgb(155, 155, 155); } a { font-size: 25px; - color: #e9e1ce; + color: black; text-decoration: none; + text-transform: capitalize; +} + +a:hover { + color: white; +} + +.project-box:hover { + opacity: 100%; +} + +.chart-box { + width: 80%; + display: flex; + align-self: center; } -#chart { - width: 70%; +/* ---- media queries tablet ---- */ + +@media (min-width: 668px) and (max-width: 1024px) { + h1 { + font-size: 40px; + } + + h2 { + font-size: 30px; + } + + .profile-img { + padding-left: 20px; + } + + #profile-name { + padding-left: 10px; + align-self: center; + } + + .titel-project { + font-size: 35px; + font-weight: bolder; + } + + .chart-box { + width: 60%; + align-self: center; + } +} + +/* ---- media queries desktop ---- */ + +@media (min-width: 1025px) { + #user-info { + justify-content: center; + } + #profile-name { + align-self: center; + margin-left: 20px; + } + + h1 { + font-size: 60px; + } + + h2 { + font-size: 40px; + } + + .profile-img { + width: 20%; + } + + #projects { + grid-template-columns: repeat(auto-fit, minmax(400px, 2fr)); + max-width: 80%; + align-self: center; + margin-top: 60px; + } + + .chart-box { + width: 25%; + } } From d344561a2c9603562a12f914a66c0e730ce76072 Mon Sep 17 00:00:00 2001 From: Emelie Date: Fri, 1 Oct 2021 18:43:37 +0200 Subject: [PATCH 5/8] final styling, csmall tweaks --- code/index.html | 5 --- code/script.js | 8 ++-- code/style.css | 100 ++++++++++++++++++++++++++++++++---------------- 3 files changed, 70 insertions(+), 43 deletions(-) diff --git a/code/index.html b/code/index.html index 413cc708..bb244704 100644 --- a/code/index.html +++ b/code/index.html @@ -14,11 +14,6 @@ href="https://fonts.googleapis.com/css2?family=Montserrat:wght@100&display=swap" rel="stylesheet" /> -
diff --git a/code/script.js b/code/script.js index a402ce07..47956cdc 100644 --- a/code/script.js +++ b/code/script.js @@ -12,7 +12,7 @@ const getUserInfo = () => { console.log("USER DATA", data) userContainer.innerHTML += ` User profile picture -

${data.login}

Front end developer student

` +

${data.login}

Front end developer student

Based in Gothenburg

` }) } @@ -28,9 +28,9 @@ const getRepos = () => { (repo) => (projectsContainer.innerHTML += `
- ${repo.name}

Default branch: ${ - repo.default_branch - }

+ ${ + repo.name + }

Default branch: ${repo.default_branch}

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

Commits:

`) ) diff --git a/code/style.css b/code/style.css index 168f50fd..ab6b7898 100644 --- a/code/style.css +++ b/code/style.css @@ -7,31 +7,27 @@ body { /* background-size: cover; */ } -header { +#user-info { display: flex; justify-content: center; } -h1 { +.profile-img { + border-radius: 50%; + width: 30%; + height: 30%; align-self: center; - font-size: 25px; -} - -#user-info { - display: flex; - justify-content: center; + box-shadow: 8px 8px 8px rgb(114, 114, 114); } #profile-name { flex-direction: column; - margin-left: 10px; + margin-left: 20px; } -.profile-img { - border-radius: 50%; - width: 25%; - height: 25%; - align-self: center; +header { + display: flex; + justify-content: center; } .github-icon { @@ -39,10 +35,22 @@ h1 { height: auto; } +h1 { + align-self: center; + font-size: 25px; +} + +h2 { + font-size: 20px; +} + +h3 { + font-size: 12px; +} + #projects { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); - /* opacity: 60%; */ column-gap: 1rem; row-gap: 1rem; margin: 30px 0px 20px 0px; @@ -59,19 +67,29 @@ h1 { -khtml-box-shadow: 10px 10px 5px rgb(155, 155, 155); } +.project-box:hover { + background-color: #bf3d39; + -webkit-transition: 0.3s ease-in-out; + transition: 0.3s ease-in-out; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + a { - font-size: 25px; + font-size: 15px; color: black; text-decoration: none; text-transform: capitalize; } -a:hover { - color: white; +.usr-name:hover { + color: #ff5c58; + text-transform: lowercase; } -.project-box:hover { - opacity: 100%; +a:hover { + color: #f8e2cf; } .chart-box { @@ -83,16 +101,9 @@ a:hover { /* ---- media queries tablet ---- */ @media (min-width: 668px) and (max-width: 1024px) { - h1 { - font-size: 40px; - } - - h2 { - font-size: 30px; - } - .profile-img { - padding-left: 20px; + width: 25%; + height: 25%; } #profile-name { @@ -100,9 +111,16 @@ a:hover { align-self: center; } - .titel-project { - font-size: 35px; - font-weight: bolder; + h1 { + font-size: 40px; + } + + h2 { + font-size: 30px; + } + + a { + font-size: 25px; } .chart-box { @@ -117,6 +135,16 @@ a:hover { #user-info { justify-content: center; } + + .github-icon { + width: 15%; + height: auto; + } + + .profile-img { + width: 20%; + } + #profile-name { align-self: center; margin-left: 20px; @@ -130,8 +158,8 @@ a:hover { font-size: 40px; } - .profile-img { - width: 20%; + h3 { + font-size: 20px; } #projects { @@ -141,6 +169,10 @@ a:hover { margin-top: 60px; } + a { + font-size: 20px; + } + .chart-box { width: 25%; } From b2341f2d39fb821431f1a351eb2ace9da02f0241 Mon Sep 17 00:00:00 2001 From: Emelie Lindblom <84201089+waliem@users.noreply.github.com> Date: Sun, 3 Oct 2021 15:57:21 +0200 Subject: [PATCH 6/8] Update README.md --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1613a3b0..ffa2c32c 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,11 @@ # 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. +This project is about making a github tracker for our technigo projects. it is fetched with API ## 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? +it took some time to manage to get the api fetches working and displaying in a correct way, but I'm porud that it is working now. if I had more time I would add some more features such as perhaps a searchbar or more data to display inside. ## 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. +https://waliem-github-tracker.netlify.app/ From 4cd6d2f1866ac0716a9c431988b4ba7afead4264 Mon Sep 17 00:00:00 2001 From: Emelie Lindblom <84201089+waliem@users.noreply.github.com> Date: Sun, 3 Oct 2021 15:57:40 +0200 Subject: [PATCH 7/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ffa2c32c..207e4408 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This project is about making a github tracker for our technigo projects. it is f ## The problem -it took some time to manage to get the api fetches working and displaying in a correct way, but I'm porud that it is working now. if I had more time I would add some more features such as perhaps a searchbar or more data to display inside. +it took some time to manage to get the api fetches working and displaying in a correct way, but I'm proud that it is working now. if I had more time I would add some more features such as perhaps a searchbar or more data to display inside. ## View it live From dde54209dc95b03e1a622fbdd15463615b17d1ed Mon Sep 17 00:00:00 2001 From: Emelie Date: Sun, 3 Oct 2021 16:04:11 +0200 Subject: [PATCH 8/8] cleaned up the code and added comments for clarification --- code/index.html | 1 + code/script.js | 8 +++++--- code/style.css | 1 - 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/index.html b/code/index.html index bb244704..81b6edc6 100644 --- a/code/index.html +++ b/code/index.html @@ -15,6 +15,7 @@ rel="stylesheet" /> +

GITHUB TRACKER

diff --git a/code/script.js b/code/script.js index 47956cdc..c7b6f3a8 100644 --- a/code/script.js +++ b/code/script.js @@ -5,22 +5,22 @@ const USER_INFO_URL = `https://api.github.com/users/${USER}` const projectsContainer = document.getElementById("projects") const userContainer = document.getElementById("user-info") +// function for getting my user info const getUserInfo = () => { fetch(USER_INFO_URL) .then((response) => response.json()) .then((data) => { - console.log("USER DATA", data) userContainer.innerHTML += ` User profile picture

${data.login}

Front end developer student

Based in Gothenburg

` }) } +// function for getting all my repos and filter them to get only technigo projects and displaying them in inner html const getRepos = () => { fetch(REPOS_URL) .then((response) => response.json()) .then((data) => { - console.log("MY REPOS", data) let forkedRepos = data.filter( (repo) => repo.fork && repo.name.startsWith("project-") ) @@ -40,6 +40,7 @@ const getRepos = () => { }) } +//function for fetching my pull requests const getPullRequests = (forkedRepos) => { forkedRepos.forEach((repo) => { const PULLS_URL = `https://api.github.com/repos/technigo/${repo.name}/pulls?per_page=100` @@ -50,7 +51,7 @@ const getPullRequests = (forkedRepos) => { const myPulls = data.find( (pull) => pull.user.login === repo.owner.login ) - + // if/else conditon if I do not have any pull requests or commits it will display "no PR or commits done" if (myPulls) { getMyCommits(myPulls.commits_url, repo.name) } else { @@ -62,6 +63,7 @@ const getPullRequests = (forkedRepos) => { }) } +// function for getting the number of commits const getMyCommits = (myCommitsUrl, myRepoName) => { fetch(myCommitsUrl) .then((res) => res.json()) diff --git a/code/style.css b/code/style.css index ab6b7898..d2995094 100644 --- a/code/style.css +++ b/code/style.css @@ -4,7 +4,6 @@ body { flex-direction: column; color: black; font-family: "Montserrat", sans-serif; - /* background-size: cover; */ } #user-info {