Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
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();
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)