Advertisement
pacho_the_python

Untitled

Apr 4th, 2023
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let song = {
  3.         songGenre: () => document.getElementById('genre'),
  4.         songName: () => document.getElementById('name'),
  5.         songAuthor: () => document.getElementById('author'),
  6.         songPublishDate: () => document.getElementById('date'),
  7.     }
  8.     let totalLikes = 0
  9.  
  10.     const addBtn = document.getElementById('add-btn')
  11.     const likeParagraph = document.querySelector('#total-likes .likes p')
  12.     const savedContainer = Array.from(document.getElementsByClassName('saved-container'))[0]
  13.     const allHitsContainer = Array.from(document.getElementsByClassName('all-hits-container'))[0]
  14.  
  15.     addBtn.addEventListener('click', addSong)
  16.  
  17.     let genre = ''
  18.     let name = ''
  19.     let author = ''
  20.     let publishDate = ''
  21.  
  22.     function addSong(e) {
  23.         e.preventDefault()
  24.  
  25.         genre = song.songGenre().value
  26.         name = song.songName().value
  27.         author = song.songAuthor().value
  28.         publishDate = song.songPublishDate().value
  29.  
  30.         if (genre === '' ||
  31.             name === '' ||
  32.             author === '' ||
  33.             publishDate === '') {
  34.             return
  35.         }
  36.  
  37.         let divInfo = document.createElement('div')
  38.         divInfo.classList.add('hits-info')
  39.  
  40.         let imgElement = document.createElement('img')
  41.         imgElement.src = './static/img/img.png'
  42.         divInfo.appendChild(imgElement)
  43.  
  44.         let genreH2 = document.createElement('h2')
  45.         genreH2.textContent = `Genre: ${genre}`
  46.         divInfo.appendChild(genreH2)
  47.  
  48.         let nameH2 = document.createElement('h2')
  49.         nameH2.textContent = `Name: ${name}`
  50.         divInfo.appendChild(nameH2)
  51.  
  52.         let authorH2 = document.createElement('h2')
  53.         authorH2.textContent = `Author: ${author}`
  54.         divInfo.appendChild(authorH2)
  55.  
  56.         let dateH3 = document.createElement('h3')
  57.         dateH3.textContent = `Date: ${publishDate}`
  58.         divInfo.appendChild(dateH3)
  59.  
  60.         let saveBtn = createButton('save-btn', 'Save song', saveSong)
  61.         let likeBtn = createButton('like-btn', 'Like song', likeSong)
  62.         let deleteBtn = createButton('delete-btn', 'Delete', deleteSong)
  63.         divInfo.appendChild(saveBtn)
  64.         divInfo.appendChild(likeBtn)
  65.         divInfo.appendChild(deleteBtn)
  66.         allHitsContainer.appendChild(divInfo)
  67.  
  68.         song.songGenre().value = ''
  69.         song.songName().value = ''
  70.         song.songAuthor().value = ''
  71.         song.songPublishDate().value = ''
  72.     }
  73.  
  74.     function saveSong(saveEvent) {
  75.         let parentDivElement = saveEvent.currentTarget.parentElement
  76.         Array.from(parentDivElement.querySelectorAll('button')).forEach(el => el.remove())
  77.         let deleteBtn = createButton('delete-btn', 'Delete', deleteSong)
  78.         parentDivElement.appendChild(deleteBtn)
  79.         savedContainer.appendChild(parentDivElement)
  80.     }
  81.  
  82.     function likeSong(likeEvent) {
  83.         let likeElement = likeEvent.currentTarget
  84.         totalLikes += 1
  85.         likeElement.disabled = true
  86.         //console.log(likeParagraph)
  87.         likeParagraph.textContent = `Total Likes: ${totalLikes}`
  88.  
  89.     }
  90.  
  91.     function deleteSong(deleteEvent) {
  92.         let deleteElement = deleteEvent.currentTarget.parentElement
  93.         deleteElement.remove()
  94.     }
  95.  
  96.     function createButton(someClass, someContent, eventFunction) {
  97.         let btn = document.createElement("button")
  98.         btn.classList.add(someClass)
  99.         btn.textContent = someContent
  100.         btn.addEventListener("click", eventFunction)
  101.         return btn
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement