Files
old-holivud2/app/assets/javascripts/file_upload_progress.js

60 lines
2.0 KiB
JavaScript
Raw Normal View History

2020-05-31 22:38:19 +02:00
App.FileUploadProgress = {
// Creates a new progress bar element
createProgressBar: id => {
// <div class="progress">
const progress = document.createElement("div")
progress.setAttribute("id", `progress_bar_${id}`)
progress.setAttribute("hidden", "hidden")
progress.classList.add("mt-2")
progress.classList.add("progress")
// <div class="progress-bar">
const progressBar = document.createElement("div")
progressBar.setAttribute("role", "progressbar")
progressBar.setAttribute("aria-valuenow", "0")
progressBar.setAttribute("aria-valuemin", "0")
progressBar.setAttribute("aria-valuemax", "100")
progressBar.classList.add("progress-bar")
progress.appendChild(progressBar)
return progress
},
// Unhides an existing progress bar
showProgressBar: id => {
const progressBar = App.FileUploadProgress._findProgressBar(id)
progressBar.removeAttribute("hidden")
progressBar.firstChild.setAttribute("style", "width: 0%")
},
// Updates the progress of an existing progress bar
updateProgressBar: (id, progress) => {
const progressBar = App.FileUploadProgress._findProgressBar(id)
progressBar.firstChild.setAttribute("style", `width: ${progress}%`)
progressBar.firstChild.setAttribute("aria-valuenow", progress)
},
// Shows an error message
showError: (id, error) => {
// <div class="text-danger>...</div>
const errorMsg = document.createElement("div")
errorMsg.classList.add("text-danger")
errorMsg.appendChild( document.createTextNode(error) )
const progressBar = App.FileUploadProgress._findProgressBar(id)
progressBar.parentNode.replaceChild(errorMsg, progressBar)
},
// Removes a progress bar element from the document
removeProgressBar: id => {
const progressBar = App.FileUploadProgress._findProgressBar(id)
progressBar.parentNode.removeChild(progressBar)
},
// Finds a progress bar element by the given ID
_findProgressBar: id => {
return document.getElementById(`progress_bar_${id}`)
}
}