Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function attachEvents() {
- let btnLoadPosts = document.getElementById("btnLoadPosts");
- let btnViewPost = document.getElementById("btnViewPost");
- let sel = document.getElementById("posts");
- let postTitleh = document.getElementById("post-title");
- let postBody = document.getElementById("post-body");
- let commentsUl = document.getElementById("post-comments");
- btnLoadPosts.addEventListener("click", loadPosts);
- btnViewPost.addEventListener("click", viewPost);
- let postsObj={}
- var requestOptions = {
- method: 'GET',
- redirect: 'follow'
- };
- function loadPosts() {
- sel.innerHTML = "";
- fetch("http://localhost:3030/jsonstore/blog/posts", requestOptions)
- .then(response => response.json())
- .then(result => {populateSelect(result);
- postsObj=Object.assign({},result)})
- .catch(error => console.log('error', error));
- }
- function populateSelect(o) {
- let arrOfPosts = Object.entries(o);
- arrOfPosts.forEach(p => {
- let post = p[1];
- let title = post.title;
- let opt = document.createElement("option");
- opt.value = post.id;
- opt.textContent = title;
- sel.appendChild(opt)
- });
- }
- function viewPost() {
- let neededId = sel.options[sel.selectedIndex].value;
- getPostDetails(postsObj,neededId);
- //get all coments
- fetch("http://localhost:3030/jsonstore/blog/comments", requestOptions)
- .then(response => response.json())
- .then(result => renderComments(result, neededId))
- .catch(error => console.log('error', error));
- }
- function getPostDetails(data, neededId) {
- //get needed post
- let arr = Object.entries(data);
- let post = arr.find(a => a[0] == neededId);
- postTitleh.textContent = "";
- postTitleh.textContent = post[1].title;
- postBody.textContent = post[1].body;
- }
- function renderComments(data, neededId) {
- commentsUl.innerHTML = "";
- let arrData = Object.entries(data);
- //filter comments
- let relevantComments = arrData.filter(a => a[1].postId == neededId);
- relevantComments.forEach(c => {
- let comLi = document.createElement("li");
- comLi.id = c.id;
- comLi.textContent = c[1].text;
- commentsUl.appendChild(comLi)
- })
- }
- }
- attachEvents();
Add Comment
Please, Sign In to add comment