results.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const toggle = ele => ele.style.display = ele.style.display === 'none' ? 'block' : 'none'
  2. const toggleClass = (ele, class1, class2) => elem.className = elem.className === class1 ? class2 : class1
  3. // Download endpoint response as a file using a POST request
  4. const downloadContent = path => {
  5. const csrfToken = document.querySelector('[name=csrfmiddlewaretoken]').value
  6. const res = await fetch('/admin/download', {
  7. method: 'POST',
  8. body: `path=${path}`,
  9. headers: {
  10. 'Content-type': 'application/x-www-form-urlencoded',
  11. 'X-CSRFToken': csrfToken
  12. }
  13. }).then(async res => {
  14. if (res.status === 200) {
  15. // Try to find out the filename from the content disposition `filename` value
  16. const disposition = res.headers['content-disposition']
  17. // expe is find from django
  18. const filename = `${expe_name}_${disposition.split('=')[1]}`
  19. const blob = await res.blob()
  20. saveAs(blob, filename)
  21. }
  22. })
  23. }
  24. window.addEventListener('DOMContentLoaded', () => {
  25. // Display list of files from day folder
  26. document.getElementsByClassName('date-folder-list').forEach(item => {
  27. item.addEventListener('click', event => {
  28. event.preventDefault()
  29. currentElem = event.currentTarget
  30. // get list element
  31. list = currentElem.parentElement.nextElementSibling
  32. // display or hide list elements
  33. toggle(list)
  34. // toggle arrow class for display effect
  35. iconElem = currentElem.children[0]
  36. toggleClass(iconElem, 'fas fa-arrow-circle-right', 'fas fa-arrow-circle-down')
  37. })
  38. })
  39. document.getElementsByClassName('download-list').forEach(downloadElem => {
  40. downloadElem.addEventListener('click', event => {
  41. event.preventDefault()
  42. currentElem = event.currentTarget
  43. pathDownload = currentElem.getAttribute('data-download-path')
  44. downloadContent(pathDownload)
  45. })
  46. })
  47. })