Showing
11 changed files
with
117 additions
and
75 deletions
src/client/js/getTrend.js
0 → 100644
| 1 | +const trendBox = document.getElementById("jsGotoTrend"); | ||
| 2 | +const trendRepoBox = document.getElementById("jsGotoTrendRepos"); | ||
| 3 | +const indicator = document.getElementById("jsIndicator"); | ||
| 4 | +const URL = "https://api.trending-github.com/github/repositories?period=daily"; | ||
| 5 | + | ||
| 6 | + | ||
| 7 | +const handleRepo = (list) =>{ | ||
| 8 | + indicator.style.display = "none"; | ||
| 9 | + list.forEach(element => { | ||
| 10 | + const anchor = document.createElement("a"); | ||
| 11 | + anchor.href = element.url; | ||
| 12 | + anchor.target = "_blank" | ||
| 13 | + anchor.innerHTML = `<span class="repoName">${element.name}</span> : ${element.description} - <span class="repoStar">${element.stars} stars</span>` | ||
| 14 | + trendRepoBox.appendChild(anchor); | ||
| 15 | + }); | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | + | ||
| 19 | +const getTrend=()=>{ | ||
| 20 | + const response = fetch(URL).then(function(response){ | ||
| 21 | + return response.json(); | ||
| 22 | + }).then(function(data){ | ||
| 23 | + const trendRepoList = data.slice(0,3); | ||
| 24 | + handleRepo(trendRepoList); | ||
| 25 | + }); | ||
| 26 | + | ||
| 27 | +}; | ||
| 28 | + | ||
| 29 | +const init=()=>{ | ||
| 30 | + getTrend(); | ||
| 31 | +}; | ||
| 32 | + | ||
| 33 | +if(trendBox){ | ||
| 34 | + init(); | ||
| 35 | +}; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
src/client/js/githubInfo.js
0 → 100644
| 1 | +const userContributionsBox = document.querySelector(".user-status__contributions"); | ||
| 2 | +const totalContributionIndicator = document.getElementById("jsTotalContributions"); | ||
| 3 | + | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +const handleImage = () =>{ | ||
| 7 | + const total = totalContributionIndicator.innerText; | ||
| 8 | + console.log(total); | ||
| 9 | +}; | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +const getGithubRepo = () =>{ | ||
| 13 | + console.log("Get Api here"); | ||
| 14 | +}; | ||
| 15 | + | ||
| 16 | +const init=()=>{ | ||
| 17 | + handleImage(); | ||
| 18 | + getGithubRepo(); | ||
| 19 | +}; | ||
| 20 | + | ||
| 21 | +if(userContributionsBox){ | ||
| 22 | + init(); | ||
| 23 | +}; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
src/client/js/search.js
0 → 100644
| 1 | +const form = document.querySelector(".home-search__form"); | ||
| 2 | +const input = document.getElementById("jsInput"); | ||
| 3 | + | ||
| 4 | +const handleSearch = (event) => { | ||
| 5 | + event.preventDefault(); | ||
| 6 | + const text = input.value; | ||
| 7 | + const link = document.createElement("a"); | ||
| 8 | + link.href = `https://www.google.com/search?q=${text}`; | ||
| 9 | + link.target = "_blank"; | ||
| 10 | + form.appendChild(link); | ||
| 11 | + link.click(); | ||
| 12 | + input.value = ""; | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +if(form){ | ||
| 17 | + form.addEventListener("submit", handleSearch); | ||
| 18 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -13,60 +13,13 @@ const getQuote = async (req, res) => { | ... | @@ -13,60 +13,13 @@ const getQuote = async (req, res) => { |
| 13 | return { quote, author }; | 13 | return { quote, author }; |
| 14 | }; | 14 | }; |
| 15 | 15 | ||
| 16 | -const gitTrend = async (req, res) => { | ||
| 17 | - const url = | ||
| 18 | - "https://api.trending-github.com/github/repositories?period=daily"; | ||
| 19 | - const trendData = await axios.get(url).then(function (response) { | ||
| 20 | - return response.data; | ||
| 21 | - }); | ||
| 22 | - const name0 = trendData[0].name; | ||
| 23 | - const description0 = trendData[0].description; | ||
| 24 | - const Url0 = trendData[0].url; | ||
| 25 | - const stars0 = trendData[0].stars; | ||
| 26 | - const name1 = trendData[1].name; | ||
| 27 | - const description1 = trendData[1].description; | ||
| 28 | - const Url1 = trendData[1].url; | ||
| 29 | - const stars1 = trendData[1].stars; | ||
| 30 | - const name2 = trendData[2].name; | ||
| 31 | - const description2 = trendData[2].description; | ||
| 32 | - const Url2 = trendData[2].url; | ||
| 33 | - const stars2 = trendData[2].stars; | ||
| 34 | - | ||
| 35 | - return { | ||
| 36 | - name0, | ||
| 37 | - description0, | ||
| 38 | - Url0, | ||
| 39 | - stars0, | ||
| 40 | - name1, | ||
| 41 | - description1, | ||
| 42 | - Url1, | ||
| 43 | - stars1, | ||
| 44 | - name2, | ||
| 45 | - description2, | ||
| 46 | - Url2, | ||
| 47 | - stars2, | ||
| 48 | - }; | ||
| 49 | -}; | ||
| 50 | 16 | ||
| 51 | export const handleHome = async (req, res) => { | 17 | export const handleHome = async (req, res) => { |
| 52 | const quote = await getQuote(); | 18 | const quote = await getQuote(); |
| 53 | - const trend = await gitTrend(); | ||
| 54 | res.render("home", { | 19 | res.render("home", { |
| 55 | pageTitle: "Home", | 20 | pageTitle: "Home", |
| 56 | quote: quote.quote, | 21 | quote: quote.quote, |
| 57 | - author: quote.author, | 22 | + author: quote.author |
| 58 | - name0: trend.name0, | ||
| 59 | - description0: trend.description0, | ||
| 60 | - Url0: trend.Url0, | ||
| 61 | - stars0: trend.stars0, | ||
| 62 | - name1: trend.name1, | ||
| 63 | - description1: trend.description1, | ||
| 64 | - Url1: trend.Url1, | ||
| 65 | - stars1: trend.stars1, | ||
| 66 | - name2: trend.name2, | ||
| 67 | - description2: trend.description2, | ||
| 68 | - Url2: trend.Url2, | ||
| 69 | - stars2: trend.stars2, | ||
| 70 | }); | 23 | }); |
| 71 | }; | 24 | }; |
| 72 | 25 | ||
| ... | @@ -76,7 +29,7 @@ export const getUserDetail = async (req, res) => { | ... | @@ -76,7 +29,7 @@ export const getUserDetail = async (req, res) => { |
| 76 | const quote = await getQuote(); | 29 | const quote = await getQuote(); |
| 77 | const user = await User.findById(id); | 30 | const user = await User.findById(id); |
| 78 | const repo = await getRepos(); | 31 | const repo = await getRepos(); |
| 79 | - const totalCon = await getContributions(); | 32 | + const totalCon = await getContributions(user.githubName); |
| 80 | res.render("userDetail", { | 33 | res.render("userDetail", { |
| 81 | pagetTitle: "User Detail", | 34 | pagetTitle: "User Detail", |
| 82 | quote: quote.quote, | 35 | quote: quote.quote, |
| ... | @@ -203,7 +156,7 @@ export const logout = (req, res) => { | ... | @@ -203,7 +156,7 @@ export const logout = (req, res) => { |
| 203 | res.redirect("/"); | 156 | res.redirect("/"); |
| 204 | }; | 157 | }; |
| 205 | 158 | ||
| 206 | -const getRepos = async(req,res) =>{ | 159 | +const getRepos = async() =>{ |
| 207 | const url = "https://api.github.com/users/lsj8706/repos?sort=updated&per_page=2"; | 160 | const url = "https://api.github.com/users/lsj8706/repos?sort=updated&per_page=2"; |
| 208 | const latelyRepos = await axios.get(url).then(function(response){ | 161 | const latelyRepos = await axios.get(url).then(function(response){ |
| 209 | return response.data; | 162 | return response.data; |
| ... | @@ -221,9 +174,8 @@ const getRepos = async(req,res) =>{ | ... | @@ -221,9 +174,8 @@ const getRepos = async(req,res) =>{ |
| 221 | }; | 174 | }; |
| 222 | }; | 175 | }; |
| 223 | 176 | ||
| 224 | -const getContributions = async(req, res) =>{ | 177 | +const getContributions = async(username) =>{ |
| 225 | const token = process.env.GH_SECRET_SH; | 178 | const token = process.env.GH_SECRET_SH; |
| 226 | - const username = 'lsj8706' | ||
| 227 | const headers = { | 179 | const headers = { |
| 228 | 'Authorization': `bearer ${token}`, | 180 | 'Authorization': `bearer ${token}`, |
| 229 | }; | 181 | }; | ... | ... |
| ... | @@ -8,6 +8,9 @@ block content | ... | @@ -8,6 +8,9 @@ block content |
| 8 | .home-quote | 8 | .home-quote |
| 9 | h2=quote | 9 | h2=quote |
| 10 | h3=author | 10 | h3=author |
| 11 | + .home-search | ||
| 12 | + form.home-search__form | ||
| 13 | + input(type="text" id="jsInput" placeholder="Google 검색") | ||
| 11 | .home-link | 14 | .home-link |
| 12 | if !loggedUser | 15 | if !loggedUser |
| 13 | a(href="/join") Join | 16 | a(href="/join") Join |
| ... | @@ -15,13 +18,10 @@ block content | ... | @@ -15,13 +18,10 @@ block content |
| 15 | else | 18 | else |
| 16 | a(href=`/users/${loggedUser._id}`) My profile | 19 | a(href=`/users/${loggedUser._id}`) My profile |
| 17 | 20 | ||
| 18 | - .gotoTrend | 21 | + .gotoTrend#jsGotoTrend |
| 19 | h2 Today's Trending Repositories | 22 | h2 Today's Trending Repositories |
| 20 | - .gotoTrend-repos | 23 | + .gotoTrend-repos#jsGotoTrendRepos |
| 21 | - a(href=Url0) | 24 | + span#jsIndicator Waiting.... |
| 22 | - p=name0+": "+description0+" - "+stars0+" stars" | 25 | +block scripts |
| 23 | - a(href=Url1) | 26 | + script(src="/static/js/getTrend.js") |
| 24 | - p=name1+": "+description1+" - "+stars1+" stars" | 27 | + script(src="/static/js/search.js") |
| 25 | - a(href=Url2) | ||
| 26 | - p=name2+": "+description2+" - "+stars2+" stars" | ||
| 27 | - | ... | ... |
| ... | @@ -37,18 +37,19 @@ block content | ... | @@ -37,18 +37,19 @@ block content |
| 37 | hr | 37 | hr |
| 38 | .user-status | 38 | .user-status |
| 39 | .user-status__contributions | 39 | .user-status__contributions |
| 40 | - a(href=Url0, style={color:'grey'}) | 40 | + span#jsTotalContributions=totalContributions |
| 41 | - p=totalContributions | ||
| 42 | img(src=`http://ghchart.rshah.org/${user.githubName}` alt="Name Your Github chart") | 41 | img(src=`http://ghchart.rshah.org/${user.githubName}` alt="Name Your Github chart") |
| 43 | .user-status__character | 42 | .user-status__character |
| 44 | - h3 Your step | commit numbers | 43 | + h3 Your step |
| 45 | img(src="https://preview.free3d.com/img/2019/12/2269306250288170045/1oe8ymrc-900.jpg" alt="character" style="height:200px; width:250px;") | 44 | img(src="https://preview.free3d.com/img/2019/12/2269306250288170045/1oe8ymrc-900.jpg" alt="character" style="height:200px; width:250px;") |
| 46 | .user-repositories | 45 | .user-repositories |
| 47 | .user-repo | 46 | .user-repo |
| 48 | - h3 REPO 1 | 47 | + a(href=firstRepoUrl) |
| 49 | - a(href=Url0, style={color:'grey'}) | 48 | + h3 REPO 1 |
| 50 | - p=fitstRepoName+": "+firstRepoUrl | 49 | + p=fitstRepoName |
| 51 | br | 50 | br |
| 52 | - h3 REPO 2 | 51 | + a(href=secondRepoUrl) |
| 53 | - a(href=Url0, style={color:'grey'}) | 52 | + h3 REPO 2 |
| 54 | - p=secondRepoName+": "+secondRepoUrl | 53 | + p=secondRepoName |
| 54 | +block scripts | ||
| 55 | + script(src="/static/js/githubInfo.js") | ... | ... |
| ... | @@ -2,7 +2,12 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin"); | ... | @@ -2,7 +2,12 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin"); |
| 2 | const path = require("path"); | 2 | const path = require("path"); |
| 3 | 3 | ||
| 4 | module.exports = { | 4 | module.exports = { |
| 5 | - entry: "./src/client/js/main.js", | 5 | + entry: { |
| 6 | + main: "./src/client/js/main.js", | ||
| 7 | + getTrend: "./src/client/js/getTrend.js", | ||
| 8 | + githubInfo: "./src/client/js/githubInfo.js", | ||
| 9 | + search: "./src/client/js/search.js", | ||
| 10 | + }, | ||
| 6 | mode: "development", | 11 | mode: "development", |
| 7 | watch: true, | 12 | watch: true, |
| 8 | plugins: [ | 13 | plugins: [ |
| ... | @@ -11,7 +16,7 @@ module.exports = { | ... | @@ -11,7 +16,7 @@ module.exports = { |
| 11 | }), | 16 | }), |
| 12 | ], | 17 | ], |
| 13 | output: { | 18 | output: { |
| 14 | - filename: "js/main.js", | 19 | + filename: "js/[name].js", |
| 15 | path: path.resolve(__dirname, "assets"), | 20 | path: path.resolve(__dirname, "assets"), |
| 16 | clean: true, | 21 | clean: true, |
| 17 | }, | 22 | }, | ... | ... |
-
Please register or login to post a comment