links.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. const links_data = JSON.parse(links.replace(/"/g, '"'))
  2. function loadDataList(elem, list){
  3. userId = elem.value
  4. if (userId){
  5. let currentLinks = links_data[userId]
  6. // remove event listener of each element by default
  7. if (list.children.length > 0){
  8. for (var element of list.children){
  9. element.removeEventListener('click', elemClick)
  10. }
  11. }
  12. list.innerHTML = ""
  13. currentLinks.forEach((element, index) => {
  14. if (element.length > 0){
  15. data = element.split(':::')
  16. // add of div elements
  17. rowDiv = document.createElement('div')
  18. rowDiv.setAttribute('class', 'row')
  19. rowDivLeft = document.createElement('div')
  20. rowDivLeft.setAttribute('class', 'col-md-11')
  21. rowDivRight = document.createElement('div')
  22. rowDivRight.setAttribute('class', 'col-md-1')
  23. // create link
  24. currentLink = document.createElement('a')
  25. currentLink.setAttribute('href', data[1])
  26. currentLink.innerHTML = 'Link ' + (index + 1) + ': ' + data[0]
  27. // add of elements
  28. rowDivLeft.appendChild(currentLink)
  29. rowDiv.appendChild(rowDivLeft)
  30. rowDiv.appendChild(rowDivRight)
  31. currentLi = document.createElement('li')
  32. currentLi.setAttribute('class', 'list-group-item')
  33. currentLi.appendChild(rowDiv)
  34. list.appendChild(currentLi)
  35. }
  36. });
  37. }
  38. }
  39. function elemClick(event){
  40. event.preventDefault()
  41. currentElem = event.currentTarget
  42. // Add <i class="fas fa-check"></i>
  43. divLeft = currentElem.getElementsByClassName('col-md-1')[0]
  44. if (divLeft.children.length <= 0){
  45. iconElem = document.createElement('li')
  46. iconElem.setAttribute('class', 'fas fa-check')
  47. divLeft.appendChild(iconElem)
  48. // update `li` class element
  49. currentElem.setAttribute('class', 'list-group-item already-used')
  50. }
  51. // retrieve and open link in new tab
  52. link = currentElem.getElementsByTagName('a')[0]
  53. url = link.getAttribute('href')
  54. var win = window.open(url, '_blank');
  55. win.focus();
  56. }
  57. window.addEventListener('DOMContentLoaded', () => {
  58. // Display list of files from day folder
  59. // need to parse as `Array`
  60. const inputElement = document.getElementsByName('userId')[0]
  61. const linksList = document.getElementById('links-list')
  62. loadDataList(inputElement, linksList)
  63. inputElement.addEventListener('change', event => {
  64. event.preventDefault()
  65. currentElem = event.currentTarget
  66. loadDataList(currentElem, linksList)
  67. for (var element of linksList.children){
  68. element.addEventListener('click', elemClick)
  69. }
  70. })
  71. })