From 3d96df7673e3cd96f60843295e61a4d4bae89a72 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Wed, 1 Dec 2021 12:45:32 +0100 Subject: [PATCH 01/44] css and javascript styles --- index.html | 12 ++++++++++++ javascript.js | 0 style.css | 0 3 files changed, 12 insertions(+) create mode 100644 index.html create mode 100644 javascript.js create mode 100644 style.css diff --git a/index.html b/index.html new file mode 100644 index 00000000..56efbdba --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + + Document + + + + + \ No newline at end of file diff --git a/javascript.js b/javascript.js new file mode 100644 index 00000000..e69de29b diff --git a/style.css b/style.css new file mode 100644 index 00000000..e69de29b From cd82989b7bf8c81091454b07eec1fb2da89b4663 Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Wed, 1 Dec 2021 12:49:40 +0100 Subject: [PATCH 02/44] title added --- index.html | 2 +- package-lock.json | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 package-lock.json diff --git a/index.html b/index.html index 56efbdba..73a01e1b 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Document + Blog with API diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..2ba638e2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "blog-with-api", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} From 6a27cd8c6b0b25132b11233ac48006c246922f60 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Wed, 1 Dec 2021 13:11:46 +0100 Subject: [PATCH 03/44] javsa --- index.html | 5 ++++- javascript.js | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 56efbdba..aa42effd 100644 --- a/index.html +++ b/index.html @@ -4,9 +4,12 @@ + + + Document - + \ No newline at end of file diff --git a/javascript.js b/javascript.js index e69de29b..536575df 100644 --- a/javascript.js +++ b/javascript.js @@ -0,0 +1,7 @@ +// fetch("http://localhost:3000/posts") +// .then((request)=>{ +// return request.json() +// }) +// .then((info)=>{ +// console.log(info) +// }) \ No newline at end of file From 8d7b4797ed8e8ce260def5fee2fcae28fec56c19 Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Wed, 1 Dec 2021 13:15:22 +0100 Subject: [PATCH 04/44] nav bar --- index.html | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 56efbdba..ad30d525 100644 --- a/index.html +++ b/index.html @@ -4,9 +4,16 @@ - Document + + Blog with API - +
+ +
\ No newline at end of file From 03808f2f77f55b9e4303d9d36b4287857d6672e2 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Wed, 1 Dec 2021 14:53:47 +0100 Subject: [PATCH 05/44] filter posts --- index.html | 3 ++- javascript.js | 38 +++++++++++++++++++++++++++++++------- style.css | 18 ++++++++++++++++++ 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index aa42effd..38ea3aea 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,7 @@ Document - + +
\ No newline at end of file diff --git a/javascript.js b/javascript.js index 536575df..a8fad7d0 100644 --- a/javascript.js +++ b/javascript.js @@ -1,7 +1,31 @@ -// fetch("http://localhost:3000/posts") -// .then((request)=>{ -// return request.json() -// }) -// .then((info)=>{ -// console.log(info) -// }) \ No newline at end of file + +fetch("http://localhost:3000/posts") +.then((request)=>{ +return request.json() +}) +.then((info)=>{ + info.forEach(element => { + const { title, body, id } = element + const titleP = document.createElement("p") + titleP.textContent= `${title}` + titleP.setAttribute("class", "title") + const bodyP= document.createElement("p") + bodyP.textContent=`${body}` + bodyP.setAttribute("class", "body") + const divPost= document.createElement("div") + divPost.setAttribute("id", `${id}`) + // divPost.setAttribute("id", "contentPost") + divPost.appendChild(titleP) + divPost.appendChild(bodyP) + document.getElementById("contentBlog").appendChild(divPost) + divPost.addEventListener("click", (e)=>{ + const infoPosts= info.filter(post=> {console.log(divPost.id); if(post.id == divPost.id) { + return post}}) + console.log(infoPosts) + }) + }); + + // addeventListener + // + // console.log(info.map(probando=> {if(probando.userId === 1) return probando})) +}) diff --git a/style.css b/style.css index e69de29b..ad4b51ad 100644 --- a/style.css +++ b/style.css @@ -0,0 +1,18 @@ +.navbar{ + display: flex; + flex-direction: column; + font-size: 3em; + font-weight: bold; +} +/* .contentofBlog{ + display: grid; + grid-template-columns: 1fr 1fr; + border: solid 2px black; +} */ +.contentPost{ + border: 1px solid black; +} +.title{ + font-weight: bold; + color: blueviolet; +} \ No newline at end of file From df38378b5afd76683ed8a47d5cc17c890dc6daa4 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Wed, 1 Dec 2021 15:34:40 +0100 Subject: [PATCH 06/44] Info fbjson --- javascript.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/javascript.js b/javascript.js index a8fad7d0..8304498f 100644 --- a/javascript.js +++ b/javascript.js @@ -1,4 +1,9 @@ - +const informacion= { + title:"", + id:"", + userId:"", + body:"" +} fetch("http://localhost:3000/posts") .then((request)=>{ return request.json() @@ -18,14 +23,16 @@ return request.json() divPost.appendChild(titleP) divPost.appendChild(bodyP) document.getElementById("contentBlog").appendChild(divPost) - divPost.addEventListener("click", (e)=>{ - const infoPosts= info.filter(post=> {console.log(divPost.id); if(post.id == divPost.id) { + divPost.addEventListener("click", ()=>{ + infoPosts= info.filter(post=> {if(post.id == divPost.id) { return post}}) - console.log(infoPosts) + // console.log(infoPosts) + informacion.title= infoPosts[0].title + informacion.id= infoPosts[0].id + informacion.userId= infoPosts[0].userId + informacion.body=infoPosts[0].body + console.log(informacion) + // console.log(infoPosts[0].userId) }) - }); - - // addeventListener - // - // console.log(info.map(probando=> {if(probando.userId === 1) return probando})) + }); }) From a971d5c34820b61ea71d29486e8e69d99c61cf89 Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Wed, 1 Dec 2021 16:29:11 +0100 Subject: [PATCH 07/44] modal --- index.html | 19 +++++++++++++++++-- javascript.js | 33 +++++++++++++++++++++++++++++++++ style.css | 2 +- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 38ea3aea..ab57fab3 100644 --- a/index.html +++ b/index.html @@ -1,16 +1,31 @@ + - - + + + + Document + + +
+ + + +
+ + + \ No newline at end of file diff --git a/javascript.js b/javascript.js index 8304498f..7c938048 100644 --- a/javascript.js +++ b/javascript.js @@ -33,6 +33,39 @@ return request.json() informacion.body=infoPosts[0].body console.log(informacion) // console.log(infoPosts[0].userId) + modal() }) }); }) + +function modal() { + document.querySelector(".main-modal") + + let modalMain = ` +} \ No newline at end of file diff --git a/style.css b/style.css index ad4b51ad..524490e0 100644 --- a/style.css +++ b/style.css @@ -1,7 +1,7 @@ .navbar{ display: flex; flex-direction: column; - font-size: 3em; + font-size: 5em; font-weight: bold; } /* .contentofBlog{ From 5ae6eeeab8303e6ed6fa49781a7eb93f64d1a0c6 Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Wed, 1 Dec 2021 16:46:37 +0100 Subject: [PATCH 08/44] fixed cnds --- index.html | 15 ++++++++++----- javascript.js | 30 ++++++++++-------------------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/index.html b/index.html index ab57fab3..652cf98c 100644 --- a/index.html +++ b/index.html @@ -6,9 +6,14 @@ - - - + + + + Document @@ -17,14 +22,14 @@ -
+
- + diff --git a/javascript.js b/javascript.js index 7c938048..23f6b1fe 100644 --- a/javascript.js +++ b/javascript.js @@ -39,7 +39,6 @@ return request.json() }) function modal() { - document.querySelector(".main-modal") let modalMain = ` - - - - - + modalMain += `` + modalMain += `` + modalMain += `` + modalMain += `` + document.querySelector(".main-modal").appendChild(modalMain) + } \ No newline at end of file From 0dcedafaf444eab2a5465a82fb8544beceada03e Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Wed, 1 Dec 2021 16:47:07 +0100 Subject: [PATCH 09/44] css --- index.html | 36 +++++++++++++++++++++++++++++++++--- javascript.js | 5 ++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 38ea3aea..aadc5a3e 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,43 @@ - + - + + + + Document - + +
+ + + + +
+
\ No newline at end of file diff --git a/javascript.js b/javascript.js index 8304498f..a6f2c59d 100644 --- a/javascript.js +++ b/javascript.js @@ -4,6 +4,7 @@ const informacion= { userId:"", body:"" } + fetch("http://localhost:3000/posts") .then((request)=>{ return request.json() @@ -32,7 +33,9 @@ return request.json() informacion.userId= infoPosts[0].userId informacion.body=infoPosts[0].body console.log(informacion) - // console.log(infoPosts[0].userId) }) }); }) +function modal(){ + +} From 8295ed91ef8e2f7c53146722f3f5471144f9048b Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Thu, 2 Dec 2021 14:22:04 +0100 Subject: [PATCH 10/44] fetch of users --- db.json | 19 +++++++++++++++++++ index.html | 43 ++++++++++++++++++++----------------------- javascript.js | 44 ++++++++++++++++++++------------------------ 3 files changed, 59 insertions(+), 47 deletions(-) create mode 100644 db.json diff --git a/db.json b/db.json new file mode 100644 index 00000000..f2ae48df --- /dev/null +++ b/db.json @@ -0,0 +1,19 @@ +{ + "posts": [ + { + "id": 1, + "title": "json-server", + "author": "typicode" + } + ], + "comments": [ + { + "id": 1, + "body": "some comment", + "postId": 1 + } + ], + "profile": { + "name": "typicode" + } +} \ No newline at end of file diff --git a/index.html b/index.html index 64131571..f98a0434 100644 --- a/index.html +++ b/index.html @@ -14,35 +14,32 @@ Document -
- - - - - + + + + + + + + + + + + diff --git a/javascript.js b/javascript.js index cede39ca..495a5b34 100644 --- a/javascript.js +++ b/javascript.js @@ -1,109 +1,144 @@ //! Variables, const -var ones = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']; -var tens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']; -var teens = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']; -var first= document.createElement("div") -first.setAttribute("id", "contentFull") -var second= document.createElement("div") -second.setAttribute("id", "contentFull") -var third= document.createElement("div") -third.setAttribute("id", "contentFull") -var fourth= document.createElement("div") -fourth.setAttribute("id", "contentFull") -var five= document.createElement("div") -five.setAttribute("id", "contentFull") -var six= document.createElement("div") -six.setAttribute("id", "contentFull") -var seven= document.createElement("div") -seven.setAttribute("id", "contentFull") -var eight= document.createElement("div") -eight.setAttribute("id", "contentFull") -var nine= document.createElement("div") -nine.setAttribute("id", "contentFull") -var ten= document.createElement("div") -ten.setAttribute("id", "contentFull") +var ones = [ + '', + 'one', + 'two', + 'three', + 'four', + 'five', + 'six', + 'seven', + 'eight', + 'nine' +]; +var tens = [ + '', + '', + 'twenty', + 'thirty', + 'forty', + 'fifty', + 'sixty', + 'seventy', + 'eighty', + 'ninety' +]; +var teens = [ + 'ten', + 'eleven', + 'twelve', + 'thirteen', + 'fourteen', + 'fifteen', + 'sixteen', + 'seventeen', + 'eighteen', + 'nineteen' +]; +var first = document.createElement('div'); +first.setAttribute('id', 'contentFull'); +var second = document.createElement('div'); +second.setAttribute('id', 'contentFull'); +var third = document.createElement('div'); +third.setAttribute('id', 'contentFull'); +var fourth = document.createElement('div'); +fourth.setAttribute('id', 'contentFull'); +var five = document.createElement('div'); +five.setAttribute('id', 'contentFull'); +var six = document.createElement('div'); +six.setAttribute('id', 'contentFull'); +var seven = document.createElement('div'); +seven.setAttribute('id', 'contentFull'); +var eight = document.createElement('div'); +eight.setAttribute('id', 'contentFull'); +var nine = document.createElement('div'); +nine.setAttribute('id', 'contentFull'); +var ten = document.createElement('div'); +ten.setAttribute('id', 'contentFull'); -const information= { - title:"", - id:"", - userId:"", - body:"", - name:"", - email:"", -} +const information = { + title: '', + id: '', + userId: '', + body: '', + name: '', + email: '' +}; //! Functions -// -function callDataFetch(){ -fetch("http://localhost:3000/posts") -.then((request)=>{ -return request.json() -}) -.then((info)=>{ - info.forEach(element => { - const { title, body, id} = element - const numtoletters= convert_tens_hundreds(id) - loadPage(title, numtoletters, body, id) - if(id <= 10){ - first.innerHTML += contentFUll - }else if(id > 10 && id <= 20){ - second.innerHTML += contentFUll - } else if(id > 20 && id <=30){ - third.innerHTML += contentFUll - }else if(id >30 && id <= 40){ - fourth.innerHTML += contentFUll - }else if(id >40 && id <= 50){ - five.innerHTML += contentFUll - }else if(id >50 && id <= 60){ - six.innerHTML += contentFUll - }else if(id > 60 && id<= 70){ - seven.innerHTML += contentFUll - }else if (id > 70 && id<= 80){ - eight.innerHTML+= contentFUll - }else if(id >80 && id <= 90){ - nine.innerHTML += contentFUll - }else if(id >90 && id <=100){ - ten.innerHTML+= contentFUll - } - }); -}) +// +function callDataFetch() { + fetch('http://localhost:3000/posts') + .then(request => { + return request.json(); + }) + .then(info => { + info.forEach(element => { + const { title, body, id } = element; + const numtoletters = convert_tens_hundreds(id); + loadPage(title, numtoletters, body, id); + if (id <= 10) { + first.innerHTML += contentFUll; + } else if (id > 10 && id <= 20) { + second.innerHTML += contentFUll; + } else if (id > 20 && id <= 30) { + third.innerHTML += contentFUll; + } else if (id > 30 && id <= 40) { + fourth.innerHTML += contentFUll; + } else if (id > 40 && id <= 50) { + five.innerHTML += contentFUll; + } else if (id > 50 && id <= 60) { + six.innerHTML += contentFUll; + } else if (id > 60 && id <= 70) { + seven.innerHTML += contentFUll; + } else if (id > 70 && id <= 80) { + eight.innerHTML += contentFUll; + } else if (id > 80 && id <= 90) { + nine.innerHTML += contentFUll; + } else if (id > 90 && id <= 100) { + ten.innerHTML += contentFUll; + } + }); + }); } // to call again the btn -function btncall(){ - fetch("http://localhost:3000/posts") - .then((request)=>{ - return request.json() - }) - .then((info)=>{ - info.forEach(element => { - const { title, body, id} = element - const numtoletters= convert_tens_hundreds(id) - loadPage(title, numtoletters, body, id) - setTimeout(() => { - $(`#${id}`).on("click", ()=>{ - console.log($(`#${id}`)[0].id) - infoPosts= info.filter(post=> {if(post.id == $(`#${id}`)[0].id) { - return post}}) - // console.log($(ostia)) - information.title= infoPosts[0].title - information.id= infoPosts[0].id - information.userId= infoPosts[0].userId - information.body=infoPosts[0].body - fetchUsersInfo(information.userId) - comments(information.userId) - // $("#myModal").modal('show'); - setTimeout(() => { - llamada() - }, 400); - console.log(infoPosts) - }) - }, 00); - }); - }) - } +function btncall() { + fetch('http://localhost:3000/posts') + .then(request => { + return request.json(); + }) + .then(info => { + info.forEach(element => { + const { title, body, id } = element; + const numtoletters = convert_tens_hundreds(id); + loadPage(title, numtoletters, body, id); + setTimeout(() => { + $(`#${id}`).on('click', () => { + infoPosts = info.filter(post => { + if (post.id == $(`#${id}`)[0].id) { + return post; + } + }); + // console.log($(ostia)) + information.title = infoPosts[0].title; + information.id = infoPosts[0].id; + information.userId = infoPosts[0].userId; + information.body = infoPosts[0].body; + fetchUsersInfo(information.userId); + comments(information.userId); + // $("#myModal").modal('show'); + setTimeout(() => { + llamada(); + // llamadaEdit() + }, 400); + }); + }, 00); + }); + }); +} // Modal call -function llamada(){ - $("#myModal").modal('show'); +function llamada() { + $('#myModal').modal('show'); } function beginmodal() { @@ -121,11 +156,12 @@ function beginmodal() {
- @@ -142,75 +178,115 @@ function beginmodal() { document.getElementById('bodyFetch').innerHTML = information.body; const deleteBtn = document.getElementById('deleteBtn'); deleteBtn.addEventListener('click', deleteComment); + editPost(); } -function deleteComment() { - let deletePost = document.querySelector(".prueba").id - - fetch(`http://localhost:3000/posts/${deletePost}`, { - method: 'DELETE', - }) - .then(request => { - return request.json(); - }) - .then(response => { - alert(`Post ID ${deletePost} deleted`) - }); +function editPost() { + document.querySelector( + '#modalContentEdit' + ).innerHTML = `
+ + + +
+ +
+ + +
`; + + + document.getElementById('titleEdit').value = document.getElementById('title').innerHTML; + document.getElementById('contentEdit').value = document.getElementById('bodyFetch').innerHTML; - + // let saveEditBtn = document.querySelector('#saveEdit'); + // saveEditBtn.addEventListener('click', fetchPost) + document.querySelector('#saveEdit').addEventListener("click", ()=>{ + fetchPost() + }) } -function fetchUsersInfo(idposts){ -fetch("http://localhost:3000/users") -.then((request)=>{ -return request.json() -}) -.then((info)=>{ - var infoUsers= info.filter((userFetch)=>{ - if(userFetch.id == idposts) - return userFetch +function fetchPost() { + + editPost = information.id + + fetch(`http://localhost:3000/posts/${editPost}`, { + method: 'PATCH', + body: JSON.stringify({ + title:` ${document.getElementById('titleEdit').value}`, + body: `${document.getElementById('contentEdit').value}` + }), + headers: { + 'Content-type': 'application/json; charset=UTF-8' + } }) - information.name= infoUsers[0].name - information.email=infoUsers[0].email -}) + .then(response => response.json()) + .then(json => console.log(json)); } -function comments (postId){ - fetch("http://localhost:3000/comments") - .then((request)=>{ - return request.json() +function deleteComment() { + let deletePost = document.querySelector('.prueba').id; + + fetch(`http://localhost:3000/posts/${deletePost}`, { + method: 'DELETE' }) - .then((response)=>{ - var postComment= response.filter((element)=>{ - // console.log(element) - if(element.postId == postId) - return element + .then(request => { + return request.json(); }) - beginmodal() - postComment.forEach(element=>{ - const{name, email, body}= element - let divComment = document.createElement("div") - divComment.setAttribute("class", "infoName") - divComment.innerHTML= name - console.log(divComment) - document.getElementById("comments").appendChild(divComment) - let divCommentEmail = document.createElement("div") - divCommentEmail.setAttribute("class", "infoEmail") - divCommentEmail.innerHTML= `Email: ${email}` - // console.log(divComment) - let divCommentBody = document.createElement("div") - divCommentBody.setAttribute("class", "infoBody") - divCommentBody.innerHTML= body - // console.log(divComment) - document.getElementById("comments").appendChild(divCommentBody) - document.getElementById("comments").appendChild(divCommentEmail) + .then(response => { + alert(`Post ID ${deletePost} deleted`); + }); +} + +function fetchUsersInfo(idposts) { + fetch('http://localhost:3000/users') + .then(request => { + return request.json(); }) - }) - } + .then(info => { + var infoUsers = info.filter(userFetch => { + if (userFetch.id == idposts) return userFetch; + }); + information.name = infoUsers[0].name; + information.email = infoUsers[0].email; + }); +} +function comments(postId) { + fetch('http://localhost:3000/comments') + .then(request => { + return request.json(); + }) + .then(response => { + var postComment = response.filter(element => { + // console.log(element) + if (element.postId == postId) return element; + }); + beginmodal(); + postComment.forEach(element => { + const { name, email, body } = element; + let divComment = document.createElement('div'); + divComment.setAttribute('class', 'infoName'); + divComment.innerHTML = name; + document.getElementById('comments').appendChild(divComment); + let divCommentEmail = document.createElement('div'); + divCommentEmail.setAttribute('class', 'infoEmail'); + divCommentEmail.innerHTML = `Email: ${email}`; + // console.log(divComment) + let divCommentBody = document.createElement('div'); + divCommentBody.setAttribute('class', 'infoBody'); + divCommentBody.innerHTML = body; + // console.log(divComment) + document.getElementById('comments').appendChild(divCommentBody); + document + .getElementById('comments') + .appendChild(divCommentEmail); + }); + }); +} -function loadPage(title,id, body, idbutton){ - contentFUll=` +function loadPage(title, id, body, idbutton) { + contentFUll = `
@@ -224,32 +300,36 @@ function loadPage(title,id, body, idbutton){
${body}
-
` + `; } function convert_tens_hundreds(num) { if (num < 10) return ones[num]; else if (num >= 10 && num < 20) return teens[num - 10]; - else if(num == 100){ return ones[Math.floor(num / 100)] + "hundred" + convert_tens_hundreds(num % 100);} - else { - return tens[Math.floor(num / 10)] + "" + ones[num % 10]; + else if (num == 100) { + return ( + ones[Math.floor(num / 100)] + + 'hundred' + + convert_tens_hundreds(num % 100) + ); + } else { + return tens[Math.floor(num / 10)] + '' + ones[num % 10]; } - } - +} -function chargeInf(data){ - callDataFetch() - document.getElementById("dataContent").appendChild(data) - btncall() +function chargeInf(data) { + callDataFetch(); + document.getElementById('dataContent').appendChild(data); + btncall(); } -function changeData(other){ - $("#contentFull").remove() - document.getElementById("dataContent").appendChild(other) - btncall() +function changeData(other) { + $('#contentFull').remove(); + document.getElementById('dataContent').appendChild(other); + btncall(); } -function buttons(){ - contentbtnfunc= ` +function buttons() { + contentbtnfunc = ` @@ -258,14 +338,12 @@ function buttons(){ - ` - document.getElementById("centerbtn").innerHTML = contentbtnfunc + `; + document.getElementById('centerbtn').innerHTML = contentbtnfunc; } - - -window.onload = function(){ - // All code comes here - chargeInf(first) - buttons() -} +window.onload = function () { + // All code comes here + chargeInf(first); + buttons(); +}; diff --git a/style.css b/style.css index a91242ed..859c3751 100644 --- a/style.css +++ b/style.css @@ -15,4 +15,8 @@ .title{ font-weight: bold; color: blueviolet; + } + + .modalEdit { + display: none; } \ No newline at end of file From d3170b38d401c72b5185365376682480b9b55754 Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Thu, 9 Dec 2021 16:33:12 +0100 Subject: [PATCH 37/44] test --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 2b8a81aa..ca27d3ba 100644 --- a/index.html +++ b/index.html @@ -80,7 +80,7 @@ - + sdfsdf
From 9ed41d818cb03596a19bbfe18454d3d2123264d1 Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Thu, 9 Dec 2021 16:35:21 +0100 Subject: [PATCH 38/44] javas --- javascript.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript.js b/javascript.js index 495a5b34..255c4021 100644 --- a/javascript.js +++ b/javascript.js @@ -226,7 +226,7 @@ function fetchPost() { function deleteComment() { let deletePost = document.querySelector('.prueba').id; - + console.log("kajsdb") fetch(`http://localhost:3000/posts/${deletePost}`, { method: 'DELETE' }) From a075a92c767c588ffe65ffd78393bedf5a7b44cc Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Thu, 9 Dec 2021 16:40:00 +0100 Subject: [PATCH 39/44] p --- index.html | 53 ----------------------------------------------------- 1 file changed, 53 deletions(-) diff --git a/index.html b/index.html index ca27d3ba..a171254d 100644 --- a/index.html +++ b/index.html @@ -53,56 +53,3 @@
- - - - - - From 778fb5d9af8f48f4b92beaf80fa2b4092203bf82 Mon Sep 17 00:00:00 2001 From: MarcelDurganteDev Date: Thu, 9 Dec 2021 16:53:25 +0100 Subject: [PATCH 40/44] mr --- javascript.js | 439 ++++++++++++++++++++++++++++---------------------- 1 file changed, 247 insertions(+), 192 deletions(-) diff --git a/javascript.js b/javascript.js index 1926e9dd..fe486a9a 100644 --- a/javascript.js +++ b/javascript.js @@ -1,107 +1,146 @@ -//! Variables, const -var ones = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']; -var tens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']; -var teens = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']; -var first= document.createElement("div") -first.setAttribute("id", "contentFull") -var second= document.createElement("div") -second.setAttribute("id", "contentFull") -var third= document.createElement("div") -third.setAttribute("id", "contentFull") -var fourth= document.createElement("div") -fourth.setAttribute("id", "contentFull") -var five= document.createElement("div") -five.setAttribute("id", "contentFull") -var six= document.createElement("div") -six.setAttribute("id", "contentFull") -var seven= document.createElement("div") -seven.setAttribute("id", "contentFull") -var eight= document.createElement("div") -eight.setAttribute("id", "contentFull") -var nine= document.createElement("div") -nine.setAttribute("id", "contentFull") -var ten= document.createElement("div") -ten.setAttribute("id", "contentFull") -const information= { - title:"", - id:"", - userId:"", - body:"", - name:"", - email:"", -} + +///! Variables, const +var ones = [ + '', + 'one', + 'two', + 'three', + 'four', + 'five', + 'six', + 'seven', + 'eight', + 'nine' +]; +var tens = [ + '', + '', + 'twenty', + 'thirty', + 'forty', + 'fifty', + 'sixty', + 'seventy', + 'eighty', + 'ninety' +]; +var teens = [ + 'ten', + 'eleven', + 'twelve', + 'thirteen', + 'fourteen', + 'fifteen', + 'sixteen', + 'seventeen', + 'eighteen', + 'nineteen' +]; +var first = document.createElement('div'); +first.setAttribute('id', 'contentFull'); +var second = document.createElement('div'); +second.setAttribute('id', 'contentFull'); +var third = document.createElement('div'); +third.setAttribute('id', 'contentFull'); +var fourth = document.createElement('div'); +fourth.setAttribute('id', 'contentFull'); +var five = document.createElement('div'); +five.setAttribute('id', 'contentFull'); +var six = document.createElement('div'); +six.setAttribute('id', 'contentFull'); +var seven = document.createElement('div'); +seven.setAttribute('id', 'contentFull'); +var eight = document.createElement('div'); +eight.setAttribute('id', 'contentFull'); +var nine = document.createElement('div'); +nine.setAttribute('id', 'contentFull'); +var ten = document.createElement('div'); +ten.setAttribute('id', 'contentFull'); + +const information = { + title: '', + id: '', + userId: '', + body: '', + name: '', + email: '' +}; //! Functions -// -function callDataFetch(){ -fetch("http://localhost:3000/posts") -.then((request)=>{ -return request.json() -}) -.then((info)=>{ - info.forEach(element => { - const { title, body, id} = element - const numtoletters= convert_tens_hundreds(id) - loadPage(title, numtoletters, body, id) - if(id <= 10){ - first.innerHTML += contentFUll - }else if(id > 10 && id <= 20){ - second.innerHTML += contentFUll - } else if(id > 20 && id <=30){ - third.innerHTML += contentFUll - }else if(id >30 && id <= 40){ - fourth.innerHTML += contentFUll - }else if(id >40 && id <= 50){ - five.innerHTML += contentFUll - }else if(id >50 && id <= 60){ - six.innerHTML += contentFUll - }else if(id > 60 && id<= 70){ - seven.innerHTML += contentFUll - }else if (id > 70 && id<= 80){ - eight.innerHTML+= contentFUll - }else if(id >80 && id <= 90){ - nine.innerHTML += contentFUll - }else if(id >90 && id <=100){ - ten.innerHTML+= contentFUll - } - }); -}) +// +function callDataFetch() { + fetch('http://localhost:3000/posts') + .then(request => { + return request.json(); + }) + .then(info => { + info.forEach(element => { + const { title, body, id } = element; + const numtoletters = convert_tens_hundreds(id); + loadPage(title, numtoletters, body, id); + if (id <= 10) { + first.innerHTML += contentFUll; + } else if (id > 10 && id <= 20) { + second.innerHTML += contentFUll; + } else if (id > 20 && id <= 30) { + third.innerHTML += contentFUll; + } else if (id > 30 && id <= 40) { + fourth.innerHTML += contentFUll; + } else if (id > 40 && id <= 50) { + five.innerHTML += contentFUll; + } else if (id > 50 && id <= 60) { + six.innerHTML += contentFUll; + } else if (id > 60 && id <= 70) { + seven.innerHTML += contentFUll; + } else if (id > 70 && id <= 80) { + eight.innerHTML += contentFUll; + } else if (id > 80 && id <= 90) { + nine.innerHTML += contentFUll; + } else if (id > 90 && id <= 100) { + ten.innerHTML += contentFUll; + } + }); + }); } // to call again the btn -function btncall(){ - fetch("http://localhost:3000/posts") - .then((request)=>{ - return request.json() - }) - .then((info)=>{ - info.forEach(element => { - const { title, body, id} = element - const numtoletters= convert_tens_hundreds(id) - loadPage(title, numtoletters, body, id) - setTimeout(() => { - $(`#${id}`).on("click", ()=>{ - console.log($(`#${id}`)[0].id) - infoPosts= info.filter(post=> {if(post.id == $(`#${id}`)[0].id) { - return post}}) - information.title= infoPosts[0].title - information.id= infoPosts[0].id - information.userId= infoPosts[0].userId - information.body=infoPosts[0].body - fetchUsersInfo(information.userId) - comments(information.userId) - setTimeout(() => { - llamada() - }, 400); - console.log(infoPosts) - }) - }, 10); - }); - }) - } +function btncall() { + fetch('http://localhost:3000/posts') + .then(request => { + return request.json(); + }) + .then(info => { + info.forEach(element => { + const { title, body, id } = element; + const numtoletters = convert_tens_hundreds(id); + loadPage(title, numtoletters, body, id); + setTimeout(() => { + $(`#${id}`).on('click', () => { + infoPosts = info.filter(post => { + if (post.id == $(`#${id}`)[0].id) { + return post; + } + }); + // console.log($(ostia)) + information.title = infoPosts[0].title; + information.id = infoPosts[0].id; + information.userId = infoPosts[0].userId; + information.body = infoPosts[0].body; + fetchUsersInfo(information.userId); + comments(information.userId); + // $("#myModal").modal('show'); + setTimeout(() => { + llamada(); + // llamadaEdit() + }, 400); + }); + }, 00); + }); + }); +} // Modal call -function llamada(){ - $("#myModal").modal('show'); +function llamada() { + $('#myModal').modal('show'); } function beginmodal() { @@ -117,13 +156,14 @@ function beginmodal() {
+ - @@ -140,10 +180,32 @@ function beginmodal() { document.getElementById('bodyFetch').innerHTML = information.body; const deleteBtn = document.getElementById('deleteBtn'); deleteBtn.addEventListener('click', deleteComment); - $(function () { - $('[data-toggle="tooltip"]').tooltip() + editPost(); +} + +function editPost() { + document.querySelector( + '#modalContentEdit' + ).innerHTML = `
+ + + +
+ +
+ + +
`; + + + document.getElementById('titleEdit').value = document.getElementById('title').innerHTML; + document.getElementById('contentEdit').value = document.getElementById('bodyFetch').innerHTML; + + // let saveEditBtn = document.querySelector('#saveEdit'); + // saveEditBtn.addEventListener('click', fetchPost) + document.querySelector('#saveEdit').addEventListener("click", ()=>{ + fetchPost() }) - } function fetchPost() { @@ -166,75 +228,67 @@ function fetchPost() { function deleteComment() { let deletePost = document.querySelector('.prueba').id; - console.log("kajsdb") + fetch(`http://localhost:3000/posts/${deletePost}`, { - method: 'DELETE', - }) - .then(request => { - return request.json(); + method: 'DELETE' }) - .then(response => { - clase.innerHTML=`${response} ` - // alert(`Post ID ${deletePost} deleted`) - }); - - + .then(request => { + return request.json(); + }) + .then(response => { + alert(`Post ID ${deletePost} deleted`); + }); } -function fetchUsersInfo(idposts){ -fetch("http://localhost:3000/users") -.then((request)=>{ -return request.json() -}) -.then((info)=>{ - var infoUsers= info.filter((userFetch)=>{ - if(userFetch.id == idposts) - return userFetch - }) - information.name= infoUsers[0].name - information.email=infoUsers[0].email -}) +function fetchUsersInfo(idposts) { + fetch('http://localhost:3000/users') + .then(request => { + return request.json(); + }) + .then(info => { + var infoUsers = info.filter(userFetch => { + if (userFetch.id == idposts) return userFetch; + }); + information.name = infoUsers[0].name; + information.email = infoUsers[0].email; + }); } -function comments (postId){ - fetch("http://localhost:3000/comments") - .then((request)=>{ - return request.json() - }) - .then((response)=>{ - var postComment= response.filter((element)=>{ - // console.log(element) - if(element.postId == postId) - return element - }) - beginmodal() - postComment.forEach(element=>{ - const{name, email, body}= element - let divComment = document.createElement("div") - divComment.setAttribute("class", "infoName") - divComment.innerHTML= name - console.log(divComment) - document.getElementById("comments").appendChild(divComment) - let divCommentEmail = document.createElement("div") - divCommentEmail.setAttribute("class", "infoEmail") - // divCommentEmail.innerHTML= `Email: ${email}` - // console.log(divComment) - let divCommentBody = document.createElement("div") - divCommentBody.setAttribute("class", "infoBody") - divCommentBody.innerHTML= ` - ` - // console.log(divComment) - document.getElementById("comments").appendChild(divCommentBody) - document.getElementById("comments").appendChild(divCommentEmail) +function comments(postId) { + fetch('http://localhost:3000/comments') + .then(request => { + return request.json(); }) - }) - } - + .then(response => { + var postComment = response.filter(element => { + // console.log(element) + if (element.postId == postId) return element; + }); + beginmodal(); + postComment.forEach(element => { + const { name, email, body } = element; + let divComment = document.createElement('div'); + divComment.setAttribute('class', 'infoName'); + divComment.innerHTML = name; + document.getElementById('comments').appendChild(divComment); + let divCommentEmail = document.createElement('div'); + divCommentEmail.setAttribute('class', 'infoEmail'); + divCommentEmail.innerHTML = `Email: ${email}`; + // console.log(divComment) + let divCommentBody = document.createElement('div'); + divCommentBody.setAttribute('class', 'infoBody'); + divCommentBody.innerHTML = body; + // console.log(divComment) + document.getElementById('comments').appendChild(divCommentBody); + document + .getElementById('comments') + .appendChild(divCommentEmail); + }); + }); +} -function loadPage(title,id, body, idbutton){ - contentFUll=` +function loadPage(title, id, body, idbutton) { + contentFUll = `
@@ -248,32 +302,36 @@ function loadPage(title,id, body, idbutton){
${body}
-
` + `; } function convert_tens_hundreds(num) { if (num < 10) return ones[num]; else if (num >= 10 && num < 20) return teens[num - 10]; - else if(num == 100){ return ones[Math.floor(num / 100)] + "hundred" + convert_tens_hundreds(num % 100);} - else { - return tens[Math.floor(num / 10)] + "" + ones[num % 10]; + else if (num == 100) { + return ( + ones[Math.floor(num / 100)] + + 'hundred' + + convert_tens_hundreds(num % 100) + ); + } else { + return tens[Math.floor(num / 10)] + '' + ones[num % 10]; } - } - +} -function chargeInf(data){ - callDataFetch() - document.getElementById("dataContent").appendChild(data) - btncall() +function chargeInf(data) { + callDataFetch(); + document.getElementById('dataContent').appendChild(data); + btncall(); } -function changeData(other){ - $("#contentFull").remove() - document.getElementById("dataContent").appendChild(other) - btncall() +function changeData(other) { + $('#contentFull').remove(); + document.getElementById('dataContent').appendChild(other); + btncall(); } -function buttons(){ - contentbtnfunc= ` +function buttons() { + contentbtnfunc = ` @@ -282,15 +340,12 @@ function buttons(){ - ` - document.getElementById("centerbtn").innerHTML = contentbtnfunc + `; + document.getElementById('centerbtn').innerHTML = contentbtnfunc; } - - -window.onload = function(){ - // All code comes here - chargeInf(first) - buttons() - -} +window.onload = function () { + // All code comes here + chargeInf(first); + buttons(); +}; From de845aab89a8cdf802e5da552d6e4933d27ff694 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Thu, 9 Dec 2021 17:00:33 +0100 Subject: [PATCH 41/44] buttons boostrap --- javascript.js | 75 ++++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/javascript.js b/javascript.js index fe486a9a..e63737a4 100644 --- a/javascript.js +++ b/javascript.js @@ -156,14 +156,13 @@ function beginmodal() {
- + @@ -254,38 +253,42 @@ function fetchUsersInfo(idposts) { }); } -function comments(postId) { - fetch('http://localhost:3000/comments') - .then(request => { - return request.json(); - }) - .then(response => { - var postComment = response.filter(element => { - // console.log(element) - if (element.postId == postId) return element; - }); - beginmodal(); - postComment.forEach(element => { - const { name, email, body } = element; - let divComment = document.createElement('div'); - divComment.setAttribute('class', 'infoName'); - divComment.innerHTML = name; - document.getElementById('comments').appendChild(divComment); - let divCommentEmail = document.createElement('div'); - divCommentEmail.setAttribute('class', 'infoEmail'); - divCommentEmail.innerHTML = `Email: ${email}`; - // console.log(divComment) - let divCommentBody = document.createElement('div'); - divCommentBody.setAttribute('class', 'infoBody'); - divCommentBody.innerHTML = body; - // console.log(divComment) - document.getElementById('comments').appendChild(divCommentBody); - document - .getElementById('comments') - .appendChild(divCommentEmail); - }); - }); -} +function comments (postId){ + fetch("http://localhost:3000/comments") + .then((request)=>{ + return request.json() + }) + .then((response)=>{ + var postComment= response.filter((element)=>{ + // console.log(element) + if(element.postId == postId) + return element + }) + beginmodal() + postComment.forEach(element=>{ + const{name, email, body}= element + let divComment = document.createElement("div") + divComment.setAttribute("class", "infoName") + divComment.innerHTML= name + console.log(divComment) + document.getElementById("comments").appendChild(divComment) + let divCommentEmail = document.createElement("div") + divCommentEmail.setAttribute("class", "infoEmail") + // divCommentEmail.innerHTML= `Email: ${email}` + // console.log(divComment) + let divCommentBody = document.createElement("div") + divCommentBody.setAttribute("class", "infoBody") + divCommentBody.innerHTML= ` + ` + // console.log(divComment) + document.getElementById("comments").appendChild(divCommentBody) + document.getElementById("comments").appendChild(divCommentEmail) + }) + }) + } + function loadPage(title, id, body, idbutton) { contentFUll = ` From cfefe91f1e3e762e97cc0df7d1dee006a7e62391 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Fri, 10 Dec 2021 10:23:03 +0100 Subject: [PATCH 42/44] json server comment --- Blog With API.pdf | Bin 0 -> 36162 bytes javascript.js | 1 + 2 files changed, 1 insertion(+) create mode 100644 Blog With API.pdf diff --git a/Blog With API.pdf b/Blog With API.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8dc5cd33761202b73040a0b72f60bd70d9b949d GIT binary patch literal 36162 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]GL~f(OXog& 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 literal 0 HcmV?d00001 diff --git a/javascript.js b/javascript.js index e63737a4..b581ead7 100644 --- a/javascript.js +++ b/javascript.js @@ -1,4 +1,5 @@ +// json-server --watch data/db.json ///! Variables, const var ones = [ From dd6ee7b0c838d9c11c14ffe647cee62ea40a9906 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Fri, 10 Dec 2021 10:31:08 +0100 Subject: [PATCH 43/44] without console logs --- javascript.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/javascript.js b/javascript.js index b581ead7..41027fcc 100644 --- a/javascript.js +++ b/javascript.js @@ -1,4 +1,5 @@ +//! Json to onload the server in local-Host // json-server --watch data/db.json ///! Variables, const @@ -121,7 +122,6 @@ function btncall() { return post; } }); - // console.log($(ostia)) information.title = infoPosts[0].title; information.id = infoPosts[0].id; information.userId = infoPosts[0].userId; @@ -163,7 +163,7 @@ function beginmodal() { - @@ -261,7 +261,6 @@ function comments (postId){ }) .then((response)=>{ var postComment= response.filter((element)=>{ - // console.log(element) if(element.postId == postId) return element }) @@ -271,19 +270,17 @@ function comments (postId){ let divComment = document.createElement("div") divComment.setAttribute("class", "infoName") divComment.innerHTML= name - console.log(divComment) document.getElementById("comments").appendChild(divComment) let divCommentEmail = document.createElement("div") divCommentEmail.setAttribute("class", "infoEmail") - // divCommentEmail.innerHTML= `Email: ${email}` - // console.log(divComment) let divCommentBody = document.createElement("div") divCommentBody.setAttribute("class", "infoBody") - divCommentBody.innerHTML= ` - ` - // console.log(divComment) + ` + $(function () { + $('[data-toggle="tooltip"]').tooltip() + }) document.getElementById("comments").appendChild(divCommentBody) document.getElementById("comments").appendChild(divCommentEmail) }) From f9845404cb86473090cae33540e520b13d68db54 Mon Sep 17 00:00:00 2001 From: Erick Ayala Date: Fri, 10 Dec 2021 10:45:14 +0100 Subject: [PATCH 44/44] id changed to object, to see the info --- javascript.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/javascript.js b/javascript.js index 41027fcc..c073482d 100644 --- a/javascript.js +++ b/javascript.js @@ -178,8 +178,9 @@ function beginmodal() { 'userName' ).innerHTML = `Name: ${information.name}`; document.getElementById('bodyFetch').innerHTML = information.body; - const deleteBtn = document.getElementById('deleteBtn'); - deleteBtn.addEventListener('click', deleteComment); + document.getElementById('deleteBtn').addEventListener('click', ()=>{ + deleteComment() + }); editPost(); } @@ -227,8 +228,7 @@ function fetchPost() { } function deleteComment() { - let deletePost = document.querySelector('.prueba').id; - + deletePost = information.id fetch(`http://localhost:3000/posts/${deletePost}`, { method: 'DELETE' })